안드로이드가 JAVA를 선택한 이유?

나그네나그네의 이미지

최근 (사실 꽤 전부터 -_-;;) 안드로이드 스마트폰 플랫폼이 대단한 주목을 받고 있습니다

안드로이드 플랫폼에서 대단히 인상깊은 것은 다름아닌 앱을 JAVA로 개발할 수 있다는 것인데요

왜 구글은 하필 C++이나 C, 아니면 다른 언어를 제쳐두고 JAVA를 선택했을까요?

JAVA는 Oracle과(혹은 개발될 시기엔 SUN이었나요?) 분쟁의 소유도 있을 뿐더러, Dalvik이라는 virtual machine 위에서 프로그램이 돌아가니 퍼포먼스 면이나 배터리 소모 면에서 기존의 프로그램보다 더 불리할 수도 있는데도, JAVA를 앱용 언어로 채택한 이유가 궁금합니다.

cleansugar의 이미지

가상머신 덕에 하드웨어 업체의 영향력이 덜 미치고, 이미 모바일은 자바가 대세였습니다.

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com

익명 사용자의 이미지

C를 제대로 사용하려면 포인터와 같은 메모리 번지를 처리하는 개념이 필요합니다.

이걸 잘못 사용하면 프로그램에는 치명적이죠. 자바에서는 메모리 할당을 VM이
알아서 처리해줍니다. 그러면 프로그램 짜기는 훨씬 수월해집니다.

복잡한 메모리 관리만 떠넘겨도 프로그래머 입장에서는 골치 아픈 일꺼리를
상당히 줄이는 셈이니까요.

leeted의 이미지

상상이나 했겠습니까.

구글이 생각하기에도 외통수라고 생각하고 있을듯.

iris의 이미지

C같은 것으로 네이티브 어플리케이션을 만들어 실행하도록 했다면 성능은 더 좋았을 것입니다.
그렇지만 이렇게 되면 특정 하드웨어 플랫폼에 종속되는 결과를 낳습니다. OS야 다양한 플랫폼에 맞춰 만들면 되지만, 앱까지 따로 만드는건 여러모로 불편합니다.
(과거 Windows CE/Pocket PC 기반의 문제이기도 했습니다.)

안드로이드는 모든 앱을 가상 머신 위에서 실행하도록 하여 하드웨어 플랫폼이 바뀌어도 그에 맞는 OS/VM만 있으면 앱을 따로 개발할 필요는 없도록 했습니다.
개방형 환경을 지향하더라도 개발자에게 무분별한 플랫폼 환경을 전부 신경쓰라고 한다면 당연히 외면을 받을 수 없기에 더 적극적인 방법을 꾀한 것으로 볼 수 있습니다.

물론 이 구조 역시 미묘한 플랫폼(스마트폰/패드 등) 차이에 따른 파편화 문제나 성능 최적화에 불리한 VM 구조의 한계 등 문제는 이미 충분히 드러나 있습니다.
그래서 안드로이드도 부분적으로 네이티브 어플리케이션을 허용하는 등 변화는 있습니다. 다만 안드로이드가 개방형을 지향하는 한 VM을 쓰는 구조는 쉽게 바뀌기 어렵습니다.

=================================

이 세상은 썩어있다!
- F도 F시 시가지 정복 프로젝트

홈페이지: 언더그라운드 웹진 18禁.net - www.18gold.net

랜덤여신의 이미지

다른 이유를 다 배제하고 언어의 생산성만 놓고 보면, 자바를 선택함으로써 얻을 수 있는 개발자의 코드 생산성 향상이, C나 C++를 선택하여 얻는 기계적 성능 향상보다 가치가 크다고 생각했기 때문에 자바를 선택한 것이겠지요. 사실 저는 자바도 불편해 죽겠습니다만... 그나마 C나 C++보다는 나으니까요.

하지만 아이폰 앱 스토어의 성공에서 알 수 있듯, 비록 오브젝티브 C가 제가 보기에는 상당히 추합니다만, 미려한 개발 도구와 괜찮은 프레임워크, 그리고 '돈이 되는' 플랫폼에 이끌리는 무수한 개발자의 피땀어린 노력이, 언어의 생산성 따위보다 우위에 있다는 것을 다시 한번 알 수 있었습니다. 씁쓸합니다만...

참, 그리고 자바 개발자의 수가 많고 인기가 높은 것도 그 이유가 됩니다. 100% 신뢰할 만한 자료는 물론 아닙니다만, 티오베(TIOBE) 지표에 따르면 2011년 12월 현재, 자바가 1위고, C가 2위, C++가 3위입니다.

sblade의 이미지

그렇다고 봐야겠네요. :-) Java로 안할 이유가 별로 없기도 하고.

아래 링크를 보면 대강 스토리가 나오는데
http://www.appleinsider.com/articles/11/08/06/google_fighting_to_suppress_evidence_android_willfully_infringed_upon_oracles_java.html

Android inc 의 창립자인 Andy Rubin 이 회사 창립하기 전 만든 회사가 Danger inc 이고 Java기반 mobile platform 을 만들던 회사였습니다. (나중에 Microsoft 가 Danger inc 를 인수해서 sidekick을 내놓습니다.). Andy Rubin 이 여길 떠나서 Android inc 를 만들면서부터 이미 Java 로 시작한 상태였죠.

위 링크를 보면 이미 2005년부터 Java licensing 문제에 관해 고민한 모양인데, 옵션 중 하나가 Java 로 하던걸 다 버리고 Microsoft CLR (.net/C#) 가상머신으로 넘어가는 것인걸 보면, 가상 머신 위에서 돌아가지 않는 언어는 애초에 옵션이 아니었던 모양입니다. 말이 되는게 objected-oriented 가 아닌 언어는 애초에 고려대상이 안될테고, 퍼포먼스 문제 때문에 interpreted 언어들을 제하고, 사람들이 많이 쓰는걸 고르고 나면 C++, C#, Java 정도가 남는데, Qt 같은 매우 잘 짜여진 외부 라이브러리 없이, C++ 로 "끔찍한" 코드를 쓰기 얼마나 쉬운지를 생각하면 Java를 고를만 하죠. 코딩이 하드웨어에 덜의존하고, 뭐 퍼포먼스야 하드웨어가 나아질수록 자연스럽게 올라갈 것이고, eclipse 같은 tooling이 매우 잘 되어 있고, 그전부터 mobile 에서 많이들 써 왔구요.

최근에 어쩌다 공개된 Lindholm email 이라고 불리는 것의 내용을 보면 (http://m.paidcontent.org/article/419-the-e-mail-that-google-really-really-doesnt-want-a-jury-to-see/)

“What we’ve actually been asked to do by Larry [Page] and Sergey [Brin] is to investigate what technical alternatives exist to Java for Android and Chrome. We’ve been over a bunch of these and think they all suck. We conclude that we need to negotiate a license for Java under the terms we need.”

Java 의 대안을 최근에 또 고민한 모양인데 "(alternatives) all suck" 이라고 결론지은 모양입니다.

cleansugar의 이미지

유용함++

추천 버튼이 없네요

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com

leeted의 이미지

sun이 자바에 대한 소유권을 포기하지 않아서

욕도 많이 먹고 gnu 정식 패키지로 등록도 안되고 있긴 했지만

설마 오라클이 꿀꺽 할줄이야!