program story

Android가 Java를 사용하는 이유는 무엇입니까?

inputbox 2020. 7. 27. 07:54
반응형

Android가 Java를 사용하는 이유는 무엇입니까? [닫은]


좋아, 이것은 실제로 Google의 누군가에게 요청해야하지만 다른 의견을 원합니다.

안드로이드조차도 네이티브 코드 애플리케이션을 지원하며 주요 개발 툴은 자바이다. 그런데 왜? 휴대 기기에서 코드를 해석하기에는 너무 느리지 않습니까? Froyo를 소개하면서 구글은 새로운 JIT 컴파일러가 2-5 배 더 빠른 애플리케이션을 달성 할 수 있다고 말했다. 이것은 원시 코드보다 Java를 사용하는 것이 2 배나 느리다는 것을 의미합니다.

예, 가상 컴퓨터가 프로그램을 더 잘 제어 할 수 있기 때문에 관리되는 코드 응용 프로그램을 사용하는 것이 시스템 안정성 측면에서 더 안전하다는 것을 알고 있습니다. 그러나 여전히이 성능 저하는 엄청 나며, 그 이유를 알 수 없습니다.


일부 요점 :

  1. 자바는 알려진 언어이며, 개발자는 그것을 알고 배우지 않아도됩니다.

  2. 포인터 산술이 없기 때문에 C / C ++ 코드보다 Java로 자신을 촬영하는 것이 더 어렵습니다.

  3. VM에서 실행되므로 모든 전화에 대해 다시 컴파일 할 필요가 없으며 보안이 쉽습니다.

  4. Java를위한 많은 개발 도구 (포인트 1 참조)

  5. 여러 휴대 전화에서 이미 Java ME를 사용 했으므로 Java는 업계에서 알려져있었습니다.

  6. 속도 차이는 대부분의 어플리케이션에서 문제가되지 않습니다. 만약 당신이 낮은 수준의 언어로 코딩해야한다면


바이트 코드 수준에서 Android는 Java를 사용하지 않습니다. 소스는 Java이지만 JVM을 사용하지 않습니다.


휴대 전화와 같은 기기에서는 시스템 안정성 향상이 매우 중요 합니다.

보안 이 더욱 중요합니다. Android 환경을 통해 사용자는 반 신뢰성 앱을 실행하여 탁월한 보안 성없이 진정으로 불쾌한 방법으로 전화를 이용할 수 있습니다. 가상 머신에서 모든 앱을 실행하면 VM 구현에 결함이없는 한 어떤 앱도 OS 커널을 이용할 수 없습니다. VM 구현은 아마도 규모가 작고 작고 잘 정의 된 보안 영역을 가지고 있습니다.

가상 머신의 코드로 프로그램을 컴파일 할 때 새 하드웨어를 위해 다시 컴파일 할 필요는 없습니다. 전화 칩 시장은 다양하고 빠르게 변하기 때문에 큰 문제입니다.

또한 Java를 사용하면 사람들이 작성하는 앱이 자체적으로 악용 될 가능성이 줄어 듭니다. 버퍼 오버런 없음, 포인터 오류 등 ...


네이티브 코드는 Java 코드보다 빠를 필요는 없습니다. 기본 코드가 더 빠르게 실행될 수 있음을 보여주는 프로필 데이터는 어디에 있습니까?

왜 Java인가?

  • Android는 다양한 하드웨어 플랫폼에서 실행됩니다. 실제 이점을 보려면 이러한 서로 다른 플랫폼 각각에 대해 기본 코드를 컴파일하고 최적화해야합니다.

  • 이미 Java에 능숙한 많은 개발자가 있습니다.

  • Java는 개발자가보다 쉽게 ​​생활 할 수 있도록 많은 라이브러리와 도구를 제공하는 거대한 오픈 소스 지원을 제공합니다.

  • Java는 메모리 누수, 잘못된 포인터 사용 등과 같은 기본 코드 고유의 많은 문제로부터 사용자를 보호합니다.

  • Java를 통해 샌드 박스 응용 프로그램을 만들고 더 나은 보안 모델을 만들 수 있으므로 하나의 나쁜 앱이 전체 OS를 중단시킬 수 없습니다.


우선 구글에 따르면 안드로이드는 자바를 사용하지 않는다. 이것이 바로 오라클이 Google을 고소하는 이유입니다. 오라클은 안드로이드가 일부 Java 기술을 침해한다고 주장하지만 구글은 Dalvik이라고 말합니다.

둘째, 1995 년부터 Java 바이트 코드 인터프리터를 보지 못했습니다.

실제 벤치 마크로 성능 추측을 백업 할 수 있습니까? 귀하가 제공 한 부정확 한 배경 정보를 감안할 때 귀하의 추정 범위는 정당하지 않은 것 같습니다.


자바는 구글이 안드로이드에서 그것을 사용하는 것에 대해 설득력있는 주장을 가지고있다. 엄청난 개발자 기반이있다. 이러한 모든 개발자는 모바일 플랫폼을 위해 개발할 준비가되었습니다.

기술적으로 말해서 Android는 순수한 Java를 사용하지 않습니다 .


다른 곳에서 살펴본 것처럼 주요 문제는 Android가 휴대용 하드웨어로 설계되어 다양한 하드웨어에서 실행될 수 있다는 것입니다. 또한 많은 기존 모바일 개발자에게 친숙한 프레임 워크와 언어를 기반으로합니다.

마지막으로, 미래에 대한 내기-하드웨어가 개선됨에 따라 성능 문제가 무엇이든 관계없이 개발자가 추상화에 대해 코드를 작성하도록하여 Google은 기본 OS를 훨씬 쉽게 추출하고 변경할 수 있습니다. 개발자는 POSIX / Unix API로 코딩했습니다.

대부분의 응용 프로그램에서 기본적으로 VM 기반 언어를 사용하는 오버 헤드는 크지 않습니다 (Twitter와 같은 웹 서비스를 사용하는 앱의 병목 현상은 대부분 네트워킹 임). Palm WebOS는 이것을 보여줍니다. Java가 아닌 JavaScript를 기본 언어로 사용합니다.

거의 모든 VM JIT가 원시 코드로 컴파일되는 경우 원시 코드 속도는 종종 원시 속도와 비슷합니다. 고급 언어로 인한 많은 지연은 다른 요소 (복잡한 개체 런타임, 경계 검사를 통해 메모리 액세스를 검사하는 '안전성'등)보다 VM 오버 헤드와 관련이 적습니다.

또한 응용 프로그램을 작성하는 데 사용 된 언어에 관계없이 많은 실제 작업이 하위 수준 API에서 수행됩니다. 최상위 언어는 종종 API 호출을 연결하는 것입니다.

물론이 규칙에는 전화 하드웨어의 한계를 뛰어 넘는 게임, 오디오 및 그래픽 응용 프로그램이 많이 있습니다. iOS에서도 개발자들은 종종 이러한 영역에서 속도를 얻기 위해 C / C ++로 드롭 다운합니다.


The new JIT is running the applications 2 - 5 times faster than the old dalvikVM (both JAVA). So comparison is not C over JAVA, but JIT over dalvikVM.


First of all it's about the same thing will windows mobile or the iPhone, the .net framework needs its own VM as well as cocoa.

And even if the performance is not at the best, because it's an interpretation of byte code, android brings the entire java community as potential developers. More applications, more clients, etc.

To finish, no performance is not that bad, that's why java is used even on smaller devices (see JavaMe).

참고URL : https://stackoverflow.com/questions/3560963/why-does-android-use-java

반응형