¿Por qué Android usa Java? Sé que hay un NDK para Android, pero ¿por qué no pueden simplemente compilar el código C ++ en el sistema Android?

Solo estoy especulando un poco aquí, pero después de haber programado en C ++ durante 20 años más o menos y Java durante los últimos 10 años, una cosa que definitivamente puedo pensar es la seguridad del código. Hay muchas vulnerabilidades de seguridad (cosas como desbordamientos de búfer, inyección de código en la pila, etc.) que son mucho más difíciles para Java pero muy fáciles en C ++. Además, la administración de memoria es mucho más fácil en Java que C ++. También descubrí que Java era una curva de aprendizaje más corta que C ++ (¿tal vez porque tenía más experiencia cuando la aprendí?).

Otra cosa que consideré al elegir C ++ o Java para un nuevo proyecto hace unos 6 años fue el soporte de la biblioteca. Hay bibliotecas estándar en Java para E / S de socket y archivos, manipulación de fecha / hora, criptografía, MIDI (música), y así sucesivamente. Algunos de estos existen (en Boost, por ejemplo) para C ++, pero de ninguna manera son omnipresentes, ni hay nada cerca de la amplitud de soporte de biblioteca que existe para Java. Tampoco hay miles de bibliotecas de código abierto (piense en la mayoría de los proyectos de Apache) escritas en Java. Entonces, hay muchas más cosas para elegir que con C ++.

Nuevamente, dado que no estaba (ni remotamente) involucrado con esta decisión, estas son especulaciones de mi parte, pero informadas de mis propias decisiones.

Java es omnipresente. Java es simple Java es extensible. Además, Java se reúne para bytecode, lo que implica que una VM más actual y mejor puede estar implícita en el futuro, para dar nuevos elementos o eficiencias, sin descartar todo el trabajo pasado, por lo que los desarrolladores de Java India usaron Java porque se sabe que Java es compatible con casi todos plataforma móvil.

Java es fácil y ubicuo. Google sabe que muchas personas que escriben aplicaciones van a estar recién salidas de su curso de ‘aprender a hacer aplicaciones en 24 horas’, y necesitan comenzar fácilmente. Java es un buen compromiso entre ser un lenguaje ‘adecuado’ adecuado para proyectos masivos y razonablemente fácil de comenzar.

La popularidad de Java. Mucha gente sabe cómo escribir código para Java. Se sabe que Java es compatible con casi todas las plataformas móviles. Creo que la popularidad del idioma en ese momento acelerará la cantidad de aplicaciones que existen en Android.

Creo que solo alguien involucrado en la decisión puede decirte sus motivos reales. Sin embargo, si tuviera que adivinar, diría que intentaban abrir el desarrollo de Android al mayor grupo posible de desarrolladores. Los únicos lenguajes que tienen una base de desarrolladores más amplia que Java no son realmente plataformas de desarrollo completas, por ejemplo, JavaScript y PHP.

Java es ubicuo. Java es fácil Java es extensible. Y Java se compila en bytecode, lo que significa que se puede construir una VM mejor y más nueva en el futuro, para proporcionar nuevas características o eficiencias, sin tirar todo el trabajo anterior.

Como geeks, nos gustaría adherirnos a la idea de que había muchas razones técnicas para elegir Java como lenguaje de programación para Android.

Pero por mucho que haya razones técnicas para elegir Java, también hubo muchas razones no técnicas.

  1. Andy Rubin había comenzado a trabajar en Android alrededor de 2005
  2. Alrededor de 2005 Java fue uno de los lenguajes de programación más florecientes
  3. Eso hizo que Andy Rubin eligiera Java.

Tengo un video detallado sobre esto en mi canal de YouTube que algunos de ustedes encontrarán interesante.

Por qué no?

En primer lugar, Android no solo se ejecuta en procesadores ARM, sino también en MIPS e Intel, probablemente más. Así que compilar C ++ no va a funcionar, y de hecho los juegos escritos con el NDK no.

En segundo lugar, incluso si era solo ARM, tienes ARM de 32 bits y 64 bits, que son cosas muy diferentes.

Tercero, como dice Ryan, Java es fácil y ubicuo. Google sabe que muchas personas que escriben aplicaciones van a estar recién salidas de su curso de ‘aprender a hacer aplicaciones en 24 horas’, y necesitan comenzar fácilmente. Java es un buen compromiso entre ser un lenguaje ‘adecuado’ adecuado para proyectos masivos y razonablemente fácil de comenzar.

El código C ++ no es portátil, es por CPU. Java es una compilación una vez, ejecuta en cualquier lugar el lenguaje. Por lo tanto, con un código repetitivo de C ++ que se ocupa del modo de recuperación, etc. y de la Máquina virtual Java, las aplicaciones pueden ejecutarse en cualquier lugar. La JVM es la mejor máquina virtual del planeta y Java es un lenguaje bastante fuerte (hoy en día 1.1 veces más lento que c ++)

La popularidad de Java. Mucha gente sabe cómo escribir código para Java. Se sabe que Java es compatible con casi todas las plataformas móviles. Creo que la popularidad del idioma en ese momento acelerará la cantidad de aplicaciones que existen en Android.

Soy un desarrollador de Java y me tomo una semana para saber cómo desarrollar en Android para un proyecto en la empresa para la que trabajo.