Warum wurde Java für Android ausgewählt?

46

Warum wurde Java für Android anstelle von C ++ gewählt? Ich habe gehört, dass Java ziemlich viel Speicher benötigt und ich würde davon ausgehen, dass eine geringe Speichernutzung auf Mobilgeräten sehr wichtig ist. Gibt es einen echten Vorteil bei der Verwendung von Java anstelle einer Sprache wie C ++ auf einem mobilen Gerät?

cgt
quelle
29
Kleiner Punkt, Android wurde nicht von Google gestartet. Google hat Android einschließlich Java gekauft.
Weltingenieur
2
@ZJR: Die bei Google verwendeten Hauptsprachen waren immer Java, Python und C ++. Java war schon vor Android immer dabei.
UncleZeiv
15
Android verwendet die Java- Sprache und NICHT die Java Virtual Machine, es gibt einen großen Unterschied , es verwendet sogar ein eigenes Bytecode-Format. Diese Frage ist in ihrer Absicht fehlerhaft und in keiner Weise konstruktiv!
8
@JarrodRoberson Ich denke, es ist konstruktiv, solange es sich nicht in einen Flammenkrieg verwandelt, ABER die Community spricht ...
maple_shaft
5
Ich werde aufgrund einer Metadiskussion über Fragen von historischer Bedeutung wiedereröffnen . Fragen zur Geschichte der Softwareentwicklung und zu relevanten Themen sind hier aktuell und bringen Mehrwert. Angesichts des Wortlauts dieser Frage und ihrer Antworten finde ich, dass diese Frage gut zu dieser Community passt.
Thomas Owens

Antworten:

40

Dieser Artikel beleuchtet die Situation. Der relevanteste Link in diesem Artikel ist dieser . Sie haben also eine riesige Installationsbasis mit vielen Programmierern, die die Sprache beherrschen und an den Universitäten weit verbreitet sind. C ++ wurde aus dem Lehrplan meiner Schule gestrichen, Java ist immer noch hier. Java hat Java ME, das eine massive Installationsbasis auf anderen Handys hat. Die Pantec Ease, die ich gerade in der Tasche habe, hat eine kleine Kaffeetasse in der Ecke des Bildschirms. Möchte jemand raten, was das ist?

Diese Antwort auf Stack Overflow deckt es auch ziemlich gut ab.

Zusammenfassung der SO-Antwort:

Java ist eine bekannte Sprache, Entwickler wissen es und müssen es nicht lernen

Es ist schwieriger, sich mit Java zu fotografieren als mit C, C ++ - Code, da es keine Zeigerarithmetik gibt

es läuft in einem VM, so dass es nicht für jedes Telefon neu kompiliert werden muss und einfach zu sichern ist

große Anzahl von Entwicklungswerkzeugen für Java (siehe erstes)

Einige Handys verwendeten Java bereits, daher war Java in der Branche bekannt

Der Geschwindigkeitsunterschied ist für die meisten Anwendungen kein Problem. Wenn dies der Fall wäre, sollten Sie in der Assembly codieren

Weltingenieur
quelle
1
Ah, du hast mich geschlagen, also werde ich nur zu deiner Liste hinzufügen. Ich habe diese andere SO-Frage gefunden, die einen weiteren Grund hinzufügt, warum Java ausgewählt wurde (es ist eine verwaltete Sprache). - stackoverflow.com/questions/5605575/…
Shauna
1
Danke, das hat meine Frage beantwortet. Nicht für jedes Android-Gerät neu kompilieren zu müssen, scheint tatsächlich ein großer Profi für die Auswahl von Java zu sein. Ich weiß nicht, warum ich nicht daran gedacht habe. Vielen Dank!
cgt
2
Angesichts der Anzahl der Android-Geräte, auf die der Markt zersplittert ist, wäre es nahezu unmöglich, mit anderen Geräten umzugehen.
Weltingenieur
3
Das ist richtig, aber sie hätten jede Sprache wählen können. Sie hätten sogar eine neue schreiben können; Sie bauten die VM. Java hat jedoch den Vorteil einer klar definierten VM-Spezifikation.
Michael K
18

Ich gehe die Vermutung ein, dass Google Java aus Gründen der Vertrautheit gewählt hat, wenn nicht anders. In vielen Google-Projekten geht es zumindest um Konzepte von Java-Schaltplänen (z. B. GWT).

Darüber hinaus ist es eine Sprache, die an technischen Schulen weit verbreitet ist (im Gegensatz zu Javascript (das Android ebenfalls eifrig unterstützt)). Java ist sicherlich nicht die beste Sprache für ein mobiles Gerät in Bezug auf Leistung und Produktion, aber es ist allgemein bekannt.

Denken Sie auch daran, dass Android ein wenig zu spät zur Party kam. Das Erzwingen der Verwendung von C ++, einer Kompilierungssprache auf niedriger Ebene, würde es schwieriger machen, einen "Wow" -Faktor zu generieren, und nicht zuletzt benötigte Android Zahlen (von Apps) und Schnelligkeit, um auf den Markt zu kommen.

Jeffrey Sweeney
quelle
3
Ich mag deine Idee über die App-Entwicklung. Daran habe ich noch nie gedacht, aber es macht Sinn. +1
Russell
6
Ich denke, die Abneigung gegen C ++ über Java hat in diesem Fall weniger mit Auffälligkeit und Wow-Faktor zu tun, als vielmehr mit der Fähigkeit der Entwickler, schneller und einfacher Apps für den Markt zu schreiben. Zum Zeitpunkt der Erstellung der Spezifikation war allgemein bekannt, dass der Erfolg des iPhones mit dem Erfolg von Apple korrelierte, die App-Entwicklung für Entwickler attraktiv zu machen. C ++ wäre für die meisten Entwickler etwas zu schwierig gewesen, sodass sich der minimale Leistungsverlust von Java durchaus gelohnt hat.
maple_shaft
8
@maple_shaft: wirklich ?? Ich hatte immer den Eindruck, dass der Erfolg des iPhones trotz seiner unattraktiven App-Entwicklung nicht aufgrund seiner Attraktivität zu spüren war!
Carson63000
3
@maple_shaft: Muss Carson hier zustimmen. iOS-Entwicklung ist ein Albtraum. Es gibt einen Grund, warum niemand außerhalb des Apple-Ökosystems Objective-C verwendet, und das ist, bevor Sie überhaupt auf die schlechten Begriffe von Apple eingehen, wenn es darum geht, die von Ihnen erstellte App tatsächlich zu implementieren ...
Mason Wheeler
@ Jeffrey, warum sagst du, dass Android JavaScript unterstützt?
Pacerier
9

Ich bin nicht sicher, warum genau Java ausgewählt wurde, aber wahrscheinlich aus mehreren Gründen

  1. Erfassen der großen Gruppe von Entwicklern, die mit Java vertraut sind und es verwenden

  2. Füllen Sie die Lücke in Java für Mobilgeräte, in denen Technologien wie J2ME fehlen.

Zweitens ist für Android keine Java Virtual Machine angegeben. Stattdessen wird der gesamte Java-Code für die Ausführung auf Dalvik kompiliert , einer leichten, optimierten VM, die speziell für die Ausführung in mobilen Umgebungen entwickelt wurde. Es soll die Batterielebensdauer verlängern und den Ressourceneinsatz maximieren.

maple_shaft
quelle