Java API와 Android API의 비교

Comparison of Java and Android API

이 문서에서는 프로그래밍 언어 Java와 운영 체제 Android의 애플리케이션 프로그래밍 인터페이스(API)와 가상 머신(VM)을 비교합니다.

대부분의 안드로이드 애플리케이션은 Java와 유사한 언어로 작성되지만 Java API와 Android API 사이에는 몇 가지 차이가 있습니다. Android는 기존 Java 가상 머신(JVM)에 의해 Java 바이트 코드를 실행하지 않고 이전 버전의 Android 가상 머신새로운 버전의 Android Runtime(ART)에 의해 실행됩니다.머신 코드를 포함한 ELF(Executable and Linkable Format) 실행 파일에 Dalvik이 실행하는 코드와 동일합니다.

Java Archive(JAR) 파일의 Java 바이트 코드는 Android 장치에서 실행되지 않습니다.대신 Java 클래스는 자체 바이트 코드 형식으로 컴파일되어 Android용으로 설계된 특수 가상 머신(VM)인 Dalvik(또는 새로운 ART로 컴파일된 버전)에서 실행됩니다.스택 머신(스택 기반 아키텍처)인 Java VM과 달리 Dalvik VM은 레지스터 머신(레지스터 기반 아키텍처)입니다.

Dalvik은 다른 표준 [1]VM과 차별화되는 몇 가지 특성을 가지고 있습니다.

  • VM은 공간 사용을 줄이도록 설계되었습니다.
  • 인터프리터를 단순화하기 위해 32비트 인덱스만 사용하도록 상수 풀이 수정되었습니다.
  • 표준 Java 바이트코드는 8비트스택 명령을 실행합니다.로컬 변수는 별도의 지시에 따라 오퍼랜드스택으로 복사하거나 오퍼랜드스택에서 복사해야 합니다.대신 Dalvik은 로컬 변수에서 직접 작동하는 자체 16비트 명령 세트를 사용합니다.로컬 변수는 보통 4비트 가상 레지스터 필드에 의해 선택됩니다.

Dalvik 가상 머신에 의해 로드된 바이트 코드는 Java 바이트 코드가 아니며 Dalvik이 클래스를 로드하는 방식 때문에 라이브러리 패키지를 jar 파일로 로드할 수 없습니다.Android 라이브러리를 로드하려면 다른 절차를 사용해야 합니다. Android 라이브러리는dex파일을 [2]로드하기 전에 응용 프로그램 개인 내부 스토리지 영역에 복사해야 합니다.

시스템 속성

Java SE 클래스의 경우와 마찬가지로System, AndroidSystemclass를 사용하면 시스템 속성을 검색할 수 있습니다.그러나 Java 가상 머신에서 정의된 일부 필수 속성은 Android에서 의미가 없거나 의미가 다릅니다.예를 들어 다음과 같습니다.

  • java.version속성은 Android에서 사용되지 않기 때문에 0을 반환합니다.
  • java.specification.version사용하는 Android 버전과는 무관하게 0.9를 반환합니다.
  • java.class.version사용하는 Android 버전에 관계없이 50을 반환합니다.
  • user.dirAndroid에서는 다른 의미를 가집니다.
  • user.home그리고.user.nameAndroid에는 속성이 없습니다.

클래스 라이브러리

현재 버전의 Android는 최신 Java 언어 및 라이브러리(전체 그래픽 사용자 인터페이스(GUI) 프레임워크는 아님)를 사용하며 이전 버전에서 사용하던 Apache Harmony Java 구현이 아닙니다.최신 버전의 Android에서 작동하는 Java 8 소스 코드는 이전 버전의 [3]Android에서 작동하도록 만들 수 있습니다.

java.disc 패키지

기본적으로는 기본 출력 스트림입니다.System.out그리고.System.err아무것도 [4]출력하지 않고, 개발자는 이 기능을 사용할 것을 권장합니다.LoglogCat [5]툴에 Strings를 기록합니다.이것은 적어도 HoneyComb에서 변경되어 로그 콘솔에도 출력됩니다.

그래픽스 및 위젯 라이브러리

Android는 Abstract Window Toolkit이나 Swing 라이브러리사용하지 않습니다.사용자 인터페이스는 View 개체를 사용하여 구축됩니다.Android는 Swing과 유사한 프레임워크를 사용합니다.View보다 s가 아니라JComponents. 단, Android 위젯은 JavaBeans가 아닙니다: Android 응용 프로그램Context작성 시 위젯에 제공해야 합니다.

룩앤필

Android 위젯 라이브러리는 플러그 가능한 모양과 느낌 아키텍처를 지원하지 않습니다.Android 위젯의 모양과 느낌이 위젯에 포함되어야 합니다.그러나 응용프로그램의 [6]스타일 및 테마를 설정하는 기능은 제한됩니다.

레이아웃 관리자

어떤 컨테이너 위젯에도 레이아웃 매니저를 적용할 수 있는 Swing과 달리 Android 레이아웃 동작은 컨테이너에 [7]인코딩됩니다.

java.beans 패키지

Android에는 일부만 포함되어 있습니다.java.beans패키지 ( )PropertyChangeEvent및 관련 클래스).

「 」를 참조해 주세요.

레퍼런스

  1. ^ Rose, John (2008-05-31). "with Android and Dalvik at Google I/O". Archived from the original on 2008-06-04. Retrieved 2008-06-08.
  2. ^ Fred Chung (2011-07-28). "Custom Class Loading in Dalvik". Google. Archived from the original on 2014-02-18. Retrieved 2011-11-27.
  3. ^ "Use Java 8 language features and APIs". Android Developers. Retrieved 2021-01-23.
  4. ^ "Android Debug Bridge". Google. Retrieved 2009-05-31. By default, the Android system sends stdout and stderr (System.out and System.err) output to /dev/null.
  5. ^ "Reading and Writing Logs". Google. Archived from the original on 2011-11-22. Retrieved 2011-11-27.
  6. ^ "Applying Styles and Themes". Google. Archived from the original on 2014-03-28. Retrieved 2011-09-03.
  7. ^ "Common Layout Objects". Google. Retrieved 2011-09-03.