¿Por qué se eligió Java para Android?

46

¿Por qué se eligió Java para Android, en lugar de algo como C ++? He escuchado que Java usa mucha memoria y supongo que el uso bajo de memoria sería bastante importante en los dispositivos móviles. ¿Existe alguna ventaja real de usar Java en lugar de un lenguaje como C ++ en un dispositivo móvil?

cgt
fuente
29
Punto menor, Android no fue iniciado por Google. Google compró Android, incluido su uso de Java.
Ingeniero mundial
2
@ZJR: los principales lenguajes en uso en Google siempre han sido Java, Python y C ++. Java siempre estuvo allí incluso antes de Android.
UncleZeiv
15
Android usa el lenguaje Java y NO la máquina virtual Java, hay una gran diferencia , incluso usa su propio formato de código de bytes. ¡Esta pregunta es errónea en su intención y no es constructiva de ninguna manera!
8
@JarrodRoberson Creo que es constructivo siempre y cuando no se convierta en una
guerra de llamas
55
Estoy reabriendo en base a una discusión Meta sobre cuestiones de importancia histórica . Las preguntas sobre la historia del desarrollo de software y los temas relevantes son sobre el tema aquí y agregan valor. Dada la redacción de esta pregunta y sus respuestas, creo que esta es una buena opción para esta comunidad.
Thomas Owens

Respuestas:

40

Este artículo arroja algo de luz sobre la situación. El enlace más pertinente dentro de ese artículo es este . Por lo tanto, tiene una base de instalación masiva con muchos programadores que conocen el idioma y se enseña ampliamente en las universidades. C ++ se eliminó del plan de estudios de mi escuela, Java todavía está aquí. Java tiene Java ME que tiene una base de instalación masiva en otros teléfonos celulares. El Pantec Ease que tengo en mi bolsillo ahora tiene una pequeña taza de café en la esquina de la pantalla. ¿A alguien le importa adivinar qué es eso?

Esta respuesta en Stack Overflow también lo cubre bastante bien.

Resumen de la respuesta SO:

Java es un lenguaje conocido, los desarrolladores lo saben y no tienen que aprenderlo

es más difícil dispararte con java que con código c, c ++ ya que no tiene aritmética de puntero

se ejecuta en un vm, por lo que no es necesario volver a compilarlo para cada teléfono y es fácil de proteger

gran cantidad de herramientas de desarrollo para java (ver primero)

varios teléfonos móviles ya usaban java me, por lo que java era conocido en la industria

la diferencia de velocidad no es un problema para la mayoría de las aplicaciones, si fuera así, debe codificar en el ensamblaje

Ingeniero mundial
fuente
1
Ah, me ganaste, así que lo agregaré a tu lista. Encontré esta otra pregunta SO que agrega otra razón por la que se eligió Java (es un lenguaje administrado). - stackoverflow.com/questions/5605575/…
Shauna
1
Gracias, esto respondió mi pregunta. No tener que volver a compilar para cada dispositivo Android que se ejecuta en realidad parece un gran profesional para elegir Java. No sé por qué no pensé en eso. ¡Gracias!
CGT
2
Dada la cantidad de dispositivos Android en los que el mercado se ha astillado, sería casi imposible lidiar con lo contrario.
Ingeniero mundial
3
Esto es correcto, pero podrían haber elegido cualquier idioma. Podrían haber escrito uno nuevo incluso; ellos construyeron la VM. Sin embargo, Java tiene la ventaja de una especificación de VM claramente definida.
Michael K
18

Me arriesgaré a adivinar que Google elige Java por familiaridad, por lo menos. Muchos de los proyectos de Google giran al menos conceptos de esquemas de Java (GWT por ejemplo).

Además, es un lenguaje ampliamente enseñado en las escuelas técnicas (a diferencia de, por ejemplo, Javascript (que Android también admite celosamente)). Java ciertamente no es el mejor lenguaje para un dispositivo móvil en términos de rendimiento y producción, pero es bien conocido.

También recuerda que Android llegó un poco tarde a la fiesta. Obligar a los desarrolladores a usar C ++, un lenguaje de compilación de bajo nivel, dificultaría la generación de un factor 'wow' y, como mínimo, Android necesitaba números (de aplicaciones) y destello para despegar.

Jeffrey Sweeney
fuente
3
Me gusta tu idea sobre el desarrollo de la aplicación. Nunca había pensado en eso antes, pero tiene sentido. +1
Russell
66
Creo que la aversión a C ++ sobre Java en este caso tiene menos que ver con la ostentación y el factor sorpresa, y más con la capacidad de los desarrolladores para escribir aplicaciones de forma más rápida y fácil para el mercado. En el momento en que se escribió la especificación, el conocimiento común era que el éxito del iPhone se correlacionaba con el éxito de Apple al hacer que el desarrollo de aplicaciones fuera atractivo para los desarrolladores. C ++ habría sido un poco difícil de tragar para la mayoría de los desarrolladores, por lo que valió la pena la pérdida mínima de rendimiento de Java.
maple_shaft
8
@maple_shaft: ¿en serio? Siempre me pareció que el éxito del iPhone fue a pesar de lo poco atractivo que era el desarrollo de aplicaciones, ¡no por lo atractivo que era!
Carson63000
3
@maple_shaft: Tengo que estar de acuerdo con Carson aquí. El desarrollo de iOS es una pesadilla. Hay una razón que nadie fuera del ecosistema de Apple está usando Objective-C, y eso es incluso antes táctil en términos francamente malos de Apple para cuando llegue el momento de tratar de implementar la aplicación que ha creado ...
Mason Wheeler
@ Jeffrey, ¿por qué dices que Android es compatible con JavaScript?
Pacerier
9

No estoy seguro de por qué se eligió exactamente Java, pero probablemente fue por varias razones

  1. Para capturar al gran grupo de desarrolladores que están familiarizados y usan Java

  2. Llene el vacío móvil en Java, donde las tecnologías como J2ME, donde falta Java.

En segundo lugar, no hay Java Virtual Machine especificada para Android. En cambio, todo el código Java se compila para ejecutarse en Dalvik , que es una máquina virtual optimizada y liviana diseñada específicamente para ejecutarse en entornos móviles. Supuestamente mejora la duración de la batería y maximiza el uso eficiente de los recursos.

árbol de arce
fuente