Perché Java è stato scelto per Android?


46

Perché Java è stato scelto per Android, invece di qualcosa come C ++? Ho sentito che Java utilizza molta memoria e presumo che un basso utilizzo della memoria sarebbe piuttosto importante sui dispositivi mobili. C'è qualche reale vantaggio nell'usare Java invece di un linguaggio come C ++ su un dispositivo mobile?


29
Punto minore, Android non è stato avviato da Google. Google ha acquistato Android incluso l'uso di Java.
Ingegnere mondiale

2
@ZJR: le principali lingue in uso su Google sono sempre state Java, Python e C ++. Java era sempre presente anche prima di Android.
UncleZeiv

15
Android utilizza Java Language e NON Java Virtual Machine, c'è una grande differenza , usa persino il proprio formato di codice byte. Questa domanda è imperfetta nel suo intento e non è costruttiva in nessun modo!

8
@JarrodRoberson Penso che sia costruttivo fintanto che non si trasforma in una fiamma, ma la comunità parla ...
maple_shaft

5
Sto riaprendo sulla base di una discussione Meta su questioni di importanza storica . Le domande sulla storia dello sviluppo del software e argomenti pertinenti sono qui sull'argomento e aggiungono valore. Data la formulazione di questa domanda e le sue risposte, penso che questa domanda sia adatta per questa comunità.
Thomas Owens

Risposte:


40

Questo articolo fa luce sulla situazione. Il collegamento più pertinente all'interno di tale articolo è questo . Quindi hai un'enorme base di installazione con molti programmatori che conoscono la lingua ed è ampiamente insegnata nelle università. Il C ++ è stato eliminato dal curriculum della mia scuola, Java è ancora qui. Java ha Java ME che ha un'enorme base di installazione su altri telefoni cellulari. Il Pantec Ease che ho in tasca in questo momento ha una piccola tazza di caffè nell'angolo dello schermo. Qualcuno vuole indovinare di cosa si tratta?

Questa risposta su Stack Overflow lo copre anche abbastanza bene.

Riepilogo della risposta SO:

java è una lingua conosciuta, gli sviluppatori lo sanno e non devono impararlo

è più difficile spararsi con Java che con il codice c, c ++ poiché non ha aritmetica del puntatore

funziona in un vm, quindi non c'è bisogno di ricompilarlo per ogni telefono là fuori e facile da proteggere

gran numero di strumenti di sviluppo per java (vedi prima)

diversi telefoni cellulari hanno già usato Java me, quindi Java era conosciuto nel settore

la differenza di velocità non è un problema per la maggior parte delle applicazioni, se fosse necessario codificare in assembly


1
Ah, mi hai battuto, quindi aggiungerò solo alla tua lista. Ho trovato quest'altra domanda SO che aggiunge un altro motivo per cui è stato scelto Java (è un linguaggio gestito). - stackoverflow.com/questions/5605575/…
Shauna

1
Grazie, questo ha risposto alla mia domanda. Non dover ricompilare per ogni diverso dispositivo Android in esecuzione in realtà sembra un grande professionista per scegliere Java. Non so perché non ci abbia pensato. Grazie!
CGT

2
Dato il numero di dispositivi Android in cui il mercato si è frammentato, sarebbe quasi impossibile gestire diversamente.
Ingegnere mondiale

3
Questo è corretto, ma avrebbero potuto scegliere qualsiasi lingua. Avrebbero potuto scriverne uno nuovo anche; hanno costruito la VM. Java ha comunque il vantaggio di una specifica VM chiaramente definita.
Michael K,

18

Intendo ipotizzare che Google scelga Java per familiarità, se non altro. Molti dei progetti di Google ruotano almeno su concetti di schemi Java (GWT per esempio).

Inoltre, è una lingua ampiamente insegnata nelle scuole tecniche (a differenza di dire, Javascript (che Android supporta anche con zelo)). Java non è certamente il miglior linguaggio per un dispositivo mobile in termini di prestazioni e produzione, ma è ben noto.

Ricorda anche che Android è arrivato un po 'tardi alla festa. Costringere gli sviluppatori a usare il C ++, un linguaggio di compilazione di basso livello, renderebbe più difficile generare un fattore "wow" e, se non altro, Android aveva bisogno di numeri (di app) e di appariscenza per decollare.


3
Mi piace la tua idea sullo sviluppo di app. Non ci avevo mai pensato prima, ma ha senso. +1
Russell

6
Penso che l'avversione al C ++ su Java in questo caso abbia meno a che fare con la bontà e il fattore wow, e più a che fare con la capacità per gli sviluppatori di scrivere più rapidamente e facilmente app per il mercato. Al momento della stesura della specifica, la conoscenza comune era che il successo di iPhone era correlato al successo di Apple nel rendere lo sviluppo di app attraente per gli sviluppatori. Il C ++ sarebbe stato un po 'troppo difficile da ingoiare per la maggior parte degli sviluppatori, quindi ne è valsa la pena la minima perdita di prestazioni di Java.
maple_shaft

8
@maple_shaft: davvero ?? mi è sempre sembrato che il successo di iPhone fosse nonostante lo sviluppo di app poco attraente, non per quanto fosse attraente!
Carson63000,

3
@maple_shaft: devo essere d'accordo con Carson qui. Lo sviluppo di iOS è un incubo. C'è un motivo per cui nessuno al di fuori dell'ecosistema Apple sta usando Objective-C, e questo è ancora prima che tocchi persino i termini malvagi di Apple per quando si tratta davvero di provare a distribuire l'app che hai creato ...
Mason Wheeler

@Jeffrey, perché dici che Android supporta JavaScript?
Pacerier,

9

Non sono sicuro del motivo per cui è stato scelto esattamente Java, ma probabilmente è stato per una serie di motivi

  1. Per acquisire il folto gruppo di sviluppatori che hanno familiarità e utilizzano Java

  2. Colmare il divario mobile in Java dove tecnologie come J2ME in cui manca Java.

In secondo luogo, non è stata specificata Java Virtual Machine per Android. Invece, tutto il codice Java viene compilato per l'esecuzione su Dalvik , che è una macchina virtuale leggera e ottimizzata appositamente progettata per l'esecuzione in ambienti mobili. Presumibilmente migliora la durata della batteria e massimizza l'uso efficiente delle risorse.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.