Dlaczego wybrano Javę na Androida?

46

Dlaczego Java została wybrana na Androida zamiast C ++? Słyszałem, że Java zużywa sporo pamięci i przypuszczam, że niskie zużycie pamięci byłoby bardzo ważne na urządzeniach mobilnych. Czy jest jakaś korzyść z używania Javy zamiast języka takiego jak C ++ na urządzeniu mobilnym?

Cgt
źródło
29
Drobny punkt, Android nie został uruchomiony przez Google. Google kupił Androida, w tym jego Javę.
Inżynier świata
2
@ZJR: głównymi językami używanymi w Google zawsze były Java, Python i C ++. Java była tam zawsze, nawet przed Androidem.
UncleZeiv
15
Android używa Java Język i NIE wirtualna maszyna Java, istnieje duża różnica , to nawet używa własnego formatu kodu bajtowego. To pytanie jest błędne w swojej intencji i nie jest konstruktywne w żaden sposób!
8
@JarrodRoberson Myślę, że jest konstruktywny, dopóki nie przekształca się w płomień ognia, ALE społeczność mówi ...
maple_shaft
5
Ponownie otwieram w oparciu o dyskusję Meta dotyczącą pytań o znaczeniu historycznym . Pytania dotyczące historii rozwoju oprogramowania i odpowiednich tematów są tutaj tematyczne i stanowią wartość dodaną. Biorąc pod uwagę treść tego pytania i jego odpowiedzi, myślę, że to pytanie dobrze pasuje do tej społeczności.
Thomas Owens

Odpowiedzi:

40

Ten artykuł rzuca nieco światła na sytuację. Najbardziej odpowiedni link w tym artykule jest następujący . Masz więc ogromną bazę instalacyjną z wieloma programistami, którzy znają język i jest powszechnie nauczany na uniwersytetach. C ++ został usunięty z programu nauczania mojej szkoły, Java wciąż tu jest. Java ma Java ME, który ma ogromną bazę instalacyjną na innych telefonach komórkowych. Model Pantec Easy, który mam teraz w kieszeni, ma mały kubek kawy w rogu ekranu. Czy ktoś chce zgadnąć, co to jest?

Ta odpowiedź na temat przepełnienia stosu również całkiem dobrze ją obejmuje.

Podsumowanie odpowiedzi SO:

java to znany język, programiści go znają i nie muszą się go uczyć

trudniej jest strzelać w java niż w kod c, c ++, ponieważ nie ma on arytmetyki wskaźnika

działa w vm, więc nie trzeba go ponownie kompilować dla każdego telefonu i łatwo go zabezpieczyć

duża liczba narzędzi programistycznych dla java (patrz pierwszy)

kilka telefonów komórkowych już używało java ja, więc java była znana w branży

różnica prędkości nie jest problemem dla większości aplikacji, gdyby tak było, należy kodować w asemblerze

Inżynier świata
źródło
1
Ach, pobiłeś mnie, więc dodam tylko do twojej listy. Znalazłem inne pytanie SO, które dodaje kolejny powód, dla którego wybrano Javę (jest to język zarządzany). - stackoverflow.com/questions/5605575/…
Shauna
1
Dzięki, to odpowiedziało na moje pytanie. Brak konieczności ponownej kompilacji dla każdego innego urządzenia z Androidem wydaje się być wielkim profesjonalistą w wyborze Javy. Nie wiem, dlaczego o tym nie pomyślałem. Dzięki!
cgt
2
Biorąc pod uwagę, na ile urządzeń z Androidem rozpadł się rynek, w przeciwnym razie byłoby prawie niemożliwe.
Inżynier świata
3
To prawda, ale mogli wybrać dowolny język. Mogliby nawet napisać nowy; zbudowali maszynę wirtualną. Java ma jednak zaletę jasno zdefiniowanej specyfikacji VM.
Michael K
18

Zaryzykuję przypuszczenie, że Google wybrał Javę dla znajomości, jeśli nic więcej. Wiele projektów Google dotyczy przynajmniej koncepcji schematów Java (na przykład GWT).

Ponadto jest to język powszechnie nauczany w szkołach technicznych (w przeciwieństwie do powiedzmy Javascript (który Android także gorliwie obsługuje)). Java z pewnością nie jest najlepszym językiem dla urządzeń mobilnych pod względem wydajności i produkcji, ale jest dobrze znana.

Pamiętaj też, że Android przyszedł na imprezę trochę późno. Zmuszenie programistów do korzystania z C ++, języka kompilacji niskiego poziomu, utrudniłoby wygenerowanie czynnika „wow”, a jeśli nic więcej, Android potrzebował liczby (aplikacji) i błyskotliwości, aby zejść z ziemi.

Jeffrey Sweeney
źródło
3
Podoba mi się twój pomysł na rozwój aplikacji. Nigdy wcześniej o tym nie myślałem, ale ma to sens. +1
Russell
6
Myślę, że awersja do C ++ w stosunku do Javy w tym przypadku ma mniej wspólnego z krzykliwością i współczynnikiem wow, a bardziej z zdolnością programistów do szybszego i łatwiejszego pisania aplikacji na rynek. W momencie pisania specyfikacji powszechnie wiadomo, że sukces iPhone'a był skorelowany ze skutecznością Apple w tworzeniu atrakcyjnych aplikacji dla programistów. C ++ byłoby trochę zbyt trudne do przełknięcia dla większości programistów, więc minimalna utrata wydajności Java była tego warta.
wałek klonowy
8
@maple_shaft: naprawde ?? zawsze wydawało mi się, że sukces iPhone'a był pomimo tego, jak bardzo atrakcyjne było tworzenie aplikacji UN, nie z powodu jego atrakcyjności!
Carson63000,
3
@maple_shaft: Muszę się zgodzić z Carsonem tutaj. Rozwój iOS to koszmar. Jest powód, nikt poza ekosystem Apple jest przy użyciu Objective-C, i to zanim jeszcze dotknąć na wręcz złych warunkach Apple'a, gdy chodzi o rzeczywiście próbuje wdrożyć utworzoną aplikację ...
Mason Wheeler
@Jeffrey, dlaczego mówisz, że Android obsługuje JavaScript?
Pacerier,
9

Nie jestem pewien, dlaczego dokładnie wybrano Javę, ale prawdopodobnie z wielu powodów

  1. Aby uchwycić dużą grupę programistów, którzy znają i używają Java

  2. Wypełnij lukę mobilną w Javie, gdzie brakuje technologii takich jak J2ME.

Po drugie, nie określono Java Virtual Machine dla Androida. Zamiast tego cały kod Java jest kompilowany do działania na Dalvik , który jest lekką, zoptymalizowaną maszyną wirtualną zaprojektowaną specjalnie do działania w środowiskach mobilnych. Podobno wydłuża żywotność baterii i maksymalizuje efektywne wykorzystanie zasobów.

wałek klonowy
źródło