domingo, 14 de abril de 2013

Porque usar JDK de Oracle para desarrollar Android.


Si nos dirigimos a la página para descargar el SDK:


y hacemos click en "SYSTEM REQUIREMENTS" podemos observar una nota que dice que algunas versiones de Linux incluyen un compilador de Java GNU (como OpenDK) y que el SDK no soporta dichos compiladores.
Por otro lado, al hacer click sobre el link que dice “JDK 6” nos lleva a la pagina de Oracle para bajar la JDK de Sun.

Esto sugiere, que más allá de cuales sean las razones, oficialmente no es soportada ninguna otra JDK que la de Oracle

Una de las razones de esto puede venir del problema de la compilación de Android.

Cuando nosotros bajamos el código fuente de Android para compilarlo, y leemos las especificaciones que debe tener nuestro entorno para poder compilar el sistema operativo Android, nos encontramos con esta página:


En donde nos aclara que para compilar Android se necesita JDK 6 de Sun. Esto quiere decir que todas las bibliotecas Java de la API de Android están compiladas con el compilador Java de Sun.
Si observamos el diagrama del Sistema operativo, podemos ver que todo lo que esta en azul, que son programas y bibliotecas Java, estarán compiladas con JDK de Sun.

Cuando nosotros hacemos una aplicación, y compilamos en nuestra PC nuestro código Java con OpenJDK, estaremos haciendo un programa que esta compilado con un compilador (OpenJDK) pero que ciertas partes del mismo (Cuando usamos Clases de la API de Android) utiliza código compilado con JDK de Sun.

Conclusión

Debido a que los compiladores son diferentes, optimizan diferente, etc, es altamente probable que una aplicación que utilice bytecode generado por 2 compiladores diferentes, tengan conflicto.