맨위로가기

달빅 (소프트웨어)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

달빅은 댄 본스타인이 개발한 안드로이드 운영체제에서 자바 코드를 실행하기 위해 설계된 가상 머신이다. 자바 가상 머신과 달리 레지스터 머신 기반 아키텍처를 사용하며, 자바 바이트코드를 달빅 명령어 집합으로 변환하여 실행한다. 2008년 아파치 라이선스 2.0으로 오픈 소스화되었으며, 오라클은 달빅 개발 과정에서 자바 API 저작권을 침해했다며 구글을 소송했으나, 구글이 오라클의 특허를 침해하지 않았다는 판결을 받았다. 안드로이드 4.4 킷캣부터는 ART(안드로이드 런타임)로 대체되었고, 안드로이드 5.0 롤리팝에서 완전히 ART로 전환되었다.

더 읽어볼만한 페이지

  • 자바 가상 머신 - 핫스팟 (가상 머신)
    핫스팟은 오라클의 자바 런타임 환경에 포함된 가상 머신으로, 반복되는 코드 영역을 최적화하는 JIT 컴파일러이며, 1999년 출시 후 GNU GPL 라이선스로 사용 가능하다.
  • 자바 가상 머신 - 안드로이드 런타임
    안드로이드 런타임(ART)은 안드로이드 운영 체제에서 애플리케이션 실행을 위한 런타임 환경이며, AOT 컴파일을 통해 실행 효율성을 높이고 전력 소비를 줄이는 장점을 가진다.
  • 안드로이드 (운영체제) - 구글 어시스턴트
    구글 어시스턴트는 2016년 구글에서 개발한 인공지능 음성 비서 서비스로, 양방향 대화 지원, 다양한 기기 및 플랫폼 확장성, 인터넷 검색, 일정 관리, 홈 오토메이션 제어 등의 기능을 제공하지만 개인정보 보호 문제에 대한 비판도 존재한다.
  • 안드로이드 (운영체제) - 웨어 OS
    웨어 OS는 구글이 개발한 스마트워치용 운영 체제로, 구글 서비스 통합, 음성 제어, 피트니스 추적 등의 기능을 제공하며 안드로이드 및 iOS 기기와 연동되고, 핏비트 인수 후 디자인 개선 및 피트니스 기능 통합, 삼성 갤럭시 워치 시리즈 탑재 등을 통해 지속적으로 발전하고 있다.
달빅 (소프트웨어) - [IT 관련 정보]에 관한 문서
개요
개발자단 본스타인
운영 체제리눅스 커널
플랫폼안드로이드
라이선스아파치 라이선스 2.0
웹사이트https://source.android.com/devices/tech/dalvik/index.html
역사
대체안드로이드 런타임
상태더 이상 유지 관리되거나 사용할 수 없음 (현재 버전의 안드로이드에서)

2. 역사

달빅은 댄 본스타인이 아이슬란드달비크라는 마을의 이름을 따서 명명했다. 달빅은 자바 코드를 실행하기 위해 매우 적은 RAM과 CPU를 가진 내장 장치를 위해 설계되었으며, 초기에는 C++, 자바스크립트, 자바를 주요 언어로 지원했다. 안드로이드 네이티브 개발 키트는 C++ 지원의 길을 열었으며, 달빅의 첫 공개 릴리스 이후 존재해 왔다.[8]

본스타인은 여러 프로세스에서 실행 파일과 라이브러리를 메모리 매핑하고, 레지스터 기반 의미론을 갖춘 더 빠른 인터프리터를 구축하는 것이 바이트 정렬 명령어 집합 및 가상 머신의 초기 설계를 주도했다고 밝혔다. Danger에서 사이드킥에서 J2ME를 사용한 경험을 통해 본스타인은 안드로이드에 비해 지나치게 단순화되고 제약이 많다는 것을 알게 되었다. 썬이 계획했던 격리와 같은 개선 사항은 프로세스 격리를 불가능하게 만들었는데, 이는 안드로이드의 장치 내 보안 모델을 깨뜨렸기 때문이다. 달빅 VM의 경우 본스타인은 특히 더블린 트리니티 칼리지의 브라이언 데이비스 등이 저술한 *레지스터 머신의 사례*에서 영감을 얻었다.[8]

달빅은 2008년 Apache License v2로 안드로이드 오픈 소스 프로젝트의 나머지 부분과 함께 오픈 소스화되었다.[9] 달빅은 개발자 본스타인의 조상이 거주했던 아이슬란드의 에이야피요르두르에 있는 달빅이라는 어촌에서 이름을 따왔다.

2. 1. 오라클과의 소송

2010년 8월 12일, 썬 마이크로시스템즈를 인수하여 자바에 대한 권리를 소유하고 있던 오라클은 구글이 안드로이드를 개발하면서 자바 관련 지적 재산권을 침해했다며 소송을 제기했다.[24][25][26] 오라클은 구글이 달빅을 개발하는 과정에서 자바 API 저작권을 침해했다고 주장했다.

2012년 5월, 배심원단은 구글이 오라클의 특허를 침해하지 않았다고 판결했으며, 재판장은 구글이 사용한 자바 API의 구조는 저작권 보호 대상이 아니라고 판결했다.[27][28] 양측은 복사된 9줄의 코드에 대해 법정 손해 배상금을 0USD로 합의했다.[29][30]

3. 아키텍처

자바 가상 머신과 달리 달빅 VM은 스택 머신 대신 레지스터 머신 기반 아키텍처를 사용하는데, 이는 더 적고 복잡한 가상 머신 명령어를 필요로 한다.[10] 달빅 프로그램은 Android API를 사용하여 자바로 작성되며, 자바 바이트코드로 컴파일되고 필요에 따라 달빅 명령어로 변환된다.

`dx`라는 도구는 자바 .class 파일을 .dex 형식으로 변환하는 데 사용된다. 여러 클래스가 단일 .dex 파일에 포함된다. 여러 클래스 파일에서 사용되는 중복된 문자열 및 기타 상수는 공간을 절약하기 위해 .dex 출력에 한 번만 포함된다. 자바 바이트코드는 또한 달빅 VM에서 사용되는 대체 명령 집합으로 변환된다. 압축되지 않은 .dex 파일은 일반적으로 동일한 .class 파일에서 파생된 데이터 압축된 자바 아카이브 (JAR)보다 크기가 몇 퍼센트 작다.[10]

달빅 실행 파일은 모바일 장치에 설치될 때 다시 수정될 수 있다. 추가적인 최적화를 얻기 위해 특정 데이터에서 바이트 순서가 바뀔 수 있고, 간단한 자료 구조함수 라이브러리연결 인라인될 수 있으며, 빈 클래스 객체는 단락될 수 있다.

낮은 메모리 요구 사항에 맞게 최적화된 달빅은 다른 표준 VM과 차별화되는 특정 특징이 있다:[11]


  • VM은 더 적은 공간을 사용하도록 축소되었다.
  • 상수 풀은 32비트 인덱스만 사용하여 인터프리터를 단순화하도록 수정되었다.
  • 표준 자바 바이트코드는 8비트 스택 명령어를 실행한다. 로컬 변수는 별도의 명령어를 통해 피연산자 스택에서 복사하거나 복사해야 한다. 대신 달빅은 로컬 변수에서 직접 작동하는 자체 16비트 명령 집합을 사용한다. 로컬 변수는 일반적으로 4비트 "가상 레지스터" 필드로 선택된다. 이렇게 하면 달빅의 명령어 수가 줄어들고 인터프리터 속도가 빨라진다.


구글에 따르면 달빅의 설계는 장치가 여러 VM 인스턴스를 효율적으로 실행할 수 있도록 한다.[12]

안드로이드 2.2 "프로요"에서는 트레이스 기반 JIT (Just-in-Time) 컴파일을 달빅에 도입하여, 애플리케이션이 실행될 때마다 지속적으로 프로파일링하고 바이트코드의 빈번하게 실행되는 짧은 세그먼트를 동적으로 컴파일하여 네이티브 머신 코드로 변환함으로써 애플리케이션 실행을 최적화했다. 달빅이 애플리케이션의 나머지 바이트코드를 해석하는 동안, "트레이스"라고 불리는 짧은 바이트코드 세그먼트의 네이티브 실행은 상당한 성능 향상을 제공한다.[13][14][15]

4. 성능

스택 머신레지스터 머신 기반 방식의 상대적 장점에 대한 논쟁은 계속되고 있다.[16]

일반적으로 스택 기반 머신은 스택에 데이터를 로드하고 조작하기 위해 명령어를 사용해야 하므로, 동일한 고급 프로그래밍 언어를 구현하기 위해 레지스터 머신보다 더 많은 명령어가 필요하다. 하지만 레지스터 머신의 명령어는 소스 및 대상 레지스터를 인코딩해야 하므로 더 커지는 경향이 있다. 이 차이는 연산 코드 디스패치가 비용이 많이 드는 VM 인터프리터에게 중요하며, JIT 컴파일과 유사하게 관련된 다른 요인도 있다.

오라클이 2010년에 ARMv7 장치에서 표준 비그래픽 Java 벤치마크로 테스트한 결과, Java SE 임베디드의 HotSpot VM이 Android 2.2의 JIT 기반 Dalvik VM보다 2~3배 빨랐다.[17] 2012년 학술 벤치마크에서는 동일한 Android 보드에서 HotSpot과 Dalvik 사이의 3배 차이를 확인했으며, Dalvik 코드가 Hotspot보다 작지 않다는 점도 언급했다.[18]

2014년 기준으로, Android 장치에서 수행된 벤치마크는 네이티브 애플리케이션과 Dalvik 애플리케이션 간에 최대 100배의 성능 차이를 보여준다.[19]

5. 라이선스

달빅은 아파치 라이선스 2.0의 조건에 따라 배포된다.[21] 일부에서는 달빅이 표준 자바 런타임을 기반으로 개발된 것이 아니라 클린룸 설계를 통해 구현되었으며, 이는 표준 에디션 또는 오픈 소스 에디션 자바 런타임에서 저작권 기반 라이선스 제한을 상속받지 않는다는 것을 의미한다고 주장한다.[22] 오라클과 일부 평론가들은 이에 반박한다.[23]

6. 대체 기술

달빅은 ART VM으로 대체되었다.[38] 한편, 구글은 오라클과의 소송 과정(2010년 8월 제기)에서 아파치 재단의 하모니를 달빅 개발 시 사용했다고 언급했다.[38]

참조

[1] 웹사이트 Debugging ART Garbage Collection https://source.andro[...] 2015-10-06
[2] Journal Journal entry http://uke.livejourn[...]
[3] 웹사이트 Google Calling: Inside Android, the gPhone SDK https://web.archive.[...] 2008-02-05
[4] 웹사이트 "'ART' experiment in Android KitKat improves battery life and speeds up apps" https://www.engadget[...] Engadget 2013-11-06
[5] 웹사이트 Experimental Google ART runtime in Android KitKat can bring twice faster app executions http://www.phonearen[...] 2013-11-07
[6] Youtube Live Q&A with Dan Bornstein, Creator of the Dalvik VM https://www.youtube.[...] 2015-09-29
[7] Youtube Google I/O 2008 - Dalvik Virtual Machine Internals https://www.youtube.[...] 2008-06-04
[8] 논문 The case for virtual register machines https://www.scss.tcd[...] 2003-06-08
[9] 간행물 Android SDK Open For Code https://www.wired.co[...] 2007-11-12
[10] 웹사이트 Presentation of Dalvik VM Internals https://web.archive.[...] 2010-08-16
[11] 웹사이트 with Android and Dalvik at Google I/O https://web.archive.[...] 2008-06-08
[12] 웹사이트 What is Android? http://developer.and[...] 2009-04-19
[13] 웹사이트 A JIT Compiler for Android's Dalvik VM https://web.archive.[...] 2010-05-01
[14] 웹사이트 Google Android developer explains more about Dalvik and the JIT in Froyo http://www.androidce[...] 2010-05-26
[15] 웹사이트 Nexus One Is Running Android 2.2 Froyo. How Fast Is It Compared To 2.1? Oh, Only About 450% Faster http://www.androidpo[...] 2010-05-21
[16] 웹사이트 Virtual Machine Showdown: Stack Versus Registers http://www.usenix.or[...] 2009-12-22
[17] 웹사이트 Java SE Embedded Performance Versus Android 2.2 https://web.archive.[...] Oracle Corporation 2011-09-04
[18] 서적 Proceedings of the 10th International Workshop on Java Technologies for Real-time and Embedded Systems - JTRES '12 Association for Computing Machinery
[19] 웹사이트 Top AndEBench Scores http://www.eembc.org[...] www.eembc.org 2014-03-23
[20] 서적 MobileWireless Middleware, Operating Systems, and Applications 2009-04-29
[21] 웹사이트 Downloading the Source Tree - Android Open Source https://web.archive.[...] Android.git.kernel.org 2012-06-07
[22] 간행물 Google and Oracle 'Experts' Clash over Android's Java Mimic https://www.wired.co[...]
[23] 웹사이트 The real history of Java and Android, as told by Google https://www.zdnet.co[...] ZDNet 2011-11-27
[24] 웹사이트 Oracle Sues Google Over Java in Android Devices http://www.digitaltr[...] digitaltrends.com 2011-08-08
[25] 웹사이트 Oracle sues Google over Java use in Android http://www.computerw[...] 2010-08-13
[26] 웹사이트 Oracle Sues Google Over Android Java Use https://www.pcmag.co[...] Ziff Davis 2010-08-13
[27] 웹사이트 Jury clears Google of infringing on Oracle's patents https://www.zdnet.co[...] 2012-05-25
[28] 웹사이트 Google wins crucial API ruling, Oracle's case decimated https://arstechnica.[...] 2012-06-01
[29] 웹사이트 Oracle agrees to 'zero' damages in Google lawsuit, eyes appeal https://web.archive.[...] 2012-06-20
[30] 웹사이트 Update on the Oracle Versus Google Trial http://www.xda-devel[...] 2012-05-16
[31] 웹사이트 What is Android? https://code.google.[...] code.google.com
[32] 웹사이트 What is Android?: Android Runtime https://code.google.[...] Google 2007-11-12
[33] Journal Journal entry http://uke.livejourn[...]
[34] 웹사이트 Google Calling: Inside Android, the gPhone SDK http://www.onlamp.co[...] onlamp.com
[35] 웹사이트 with Android and Dalvik at Google I/O http://blogs.oracle.[...] 2008-05-31
[36] 웹인용 What is Android?: Android Runtime http://code.google.c[...] 구글 2007-11-12
[37] 웹사이트 Journal entry http://uke.livejourn[...]
[38] 간행물 아이피 날리지 로그 - 지식재산 핫 이슈, 오라클VS구글 안드로이드 600일간의 특허공방 히스토리 http://customer.wips[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com