¿Sería aconsejable continuar con Java para el desarrollo futuro de aplicaciones de Android o deberíamos esperar algo más?

Con más del 80 por ciento de participación de mercado, Android es el sistema operativo móvil dominante en la actualidad. Se ejecuta en innumerables modelos de teléfonos inteligentes y tabletas, así como en muchos otros dispositivos. A juzgar por esto, uno pensaría que programar para Android es simple y fácil. ¿O es eso?

Hace unos años, Miley Cyrus todavía cantaba música country, Justin Bieber llevaba su famoso corte de pelo “Bieber”, Malcolm todavía tocaba en AC / DC y el desarrollo de Android era bastante complejo . Los desarrolladores de Android tuvieron muchos problemas para desarrollar incluso las aplicaciones más simples posibles para el sistema operativo Android.

¿Por qué? Bueno, mi querido lector, los problemas estaban en todas partes:

  • IDE con errores: ¿alguna vez ha intentado reparar su automóvil con una pala? ¿O trató de recoger chicas mientras conducía el Yugo de 40 años de su abuelo? En el mundo de Android, teníamos un IDE oficial para el desarrollo de Android: Eclipse, que tenía muchos problemas y podía volverte loco en 10 minutos. El complemento ADT de Eclipse era defectuoso, lento y hostil para proyectos más complejos. Rápidamente nos cansamos de eso y oramos por un milagro.
  • Fragmentación del sistema operativo: Gingerbread (2.3.7) ocupaba una cuota de mercado considerable (al menos 15-20 por ciento) de las versiones del sistema operativo Android. Como ya sabe, Android se sometió a una revisión completa con la versión 4.0 (Ice Cream Sandwich) : obtuvimos nuevos elementos de interfaz de usuario, nuevas API para hardware del dispositivo, nuevas densidades de pantalla … Esto nos llevó a tener que tener cuidado de optimizar y programar nuestras aplicaciones para funciona bien en las versiones nuevas y antiguas de Android. Todo esto afectó enormemente nuestro proceso de desarrollo y resultó en un tiempo de desarrollo prolongado con más errores y fallas.
  • Emuladores lentos: necesitamos probar nuestras aplicaciones en diferentes versiones del sistema operativo Android y dimensiones de la pantalla, por lo que tenemos que comprar al menos 20 dispositivos Android diferentes. ¿Suena loco? OK, entonces podemos usar emuladores . Pero, ¿alguna vez has tratado de usar el emulador de Android predeterminado? Es tan dolorosamente lento que pronto se encontrará contando los autos estacionados frente a su oficina mientras su aplicación se implementa en su emulador.
  • IU: las aplicaciones de Android eran aburridas. Si cometes una blasfemia y echas un vistazo a las aplicaciones de iOS, verás que están llenas de vida y colores. Todo es animado, transformador, de izquierda a derecha, de derecha a izquierda, etc. Nuestras aplicaciones eran estáticas, y si hubiéramos querido enriquecer nuestra experiencia de usuario, el viejo Gingerbread pronto habría matado todas nuestras esperanzas y deseos.

¡Pero eso fue así en 2013!

Un nuevo comienzo

Todo cambió el año pasado, y los cambios estaban ocurriendo tan rápido que fácilmente podrías perderlos de vista y preguntarte: “¿Cuándo sucedió esto?” Lo que es aún más importante es el hecho de que todo el ecosistema de Android experimentó muchas mejoras: obtuvimos un nuevo hardware (relojes inteligentes), un nuevo software (Gradle, Android Studio), un nuevo sistema operativo (Android 5.0 Lollipop).

Todos contribuyeron: Google, fabricantes de dispositivos, desarrolladores. Todos tenían el mismo objetivo y se hacían la misma pregunta: “Bien, ahora tenemos un sistema operativo estable, miles de millones de aplicaciones con miles de millones de usuarios, ¿cómo podemos simplificar y mejorar aún más Android? ¿Cómo podemos mejorar el proceso de desarrollo? ”Aquí es donde el acceso abierto y los principios de fuente abierta han demostrado su verdadero potencial: todos pueden hacer un cambio. Una mejora. Algo nuevo.

Es difícil resumir todos los cambios, pero he hecho una lista de las cosas que son (en mi opinión) las más importantes:

1. ESTUDIO DE ANDROID

Nuestro IDE favorito para el desarrollo de Android finalmente se estabilizó con la versión 1.0. No entraré en demasiados detalles sobre por qué AS es excelente para el proceso de desarrollo porque ya hemos cubierto este tema en dos de nuestras publicaciones de blog (primera y segunda). Solo diré que el complemento Eclipse ADT está oficialmente en desuso y le recomiendo que migre todas sus aplicaciones a Android Studio. ¡Viva el rey!

2. GRADLE

Gradle es una herramienta de automatización de proyectos que ha reemplazado a Apache Ant como un sistema de compilación principal para aplicaciones de Android. Ha ganado una gran popularidad entre los desarrolladores de Android porque podemos automatizar casi todo con él, desde dividir nuestras aplicaciones en diferentes tipos, firmar con la configuración correcta, incrementar nuestros números de compilación, definir dependencias externas y mucho más.

Debido a eso, se ha convertido en una especie de herramienta de “administración”, con la que definimos y mantenemos la configuración de nuestro proyecto. Gradle es también una de las principales razones del creciente número de bibliotecas de automatización de pruebas y servidores de compilación automatizados, que han llevado el proceso de desarrollo de integración continua (CI) al sistema operativo Android. Pero no todo es tan color de rosa: Gradle también es muy criticado por su velocidad de ejecución . Puede ser muy lento en proyectos complejos, pero esperamos que este problema se solucione en las próximas versiones y lanzamientos.

3. LOLLIPOP

Google dijo que Lollipop fue la mayor mejora del sistema operativo Android desde el comienzo de la humanidad, y tenían razón. Cada parte de Android ha sufrido algunas modificaciones y mejoras, pero aún no hemos visto cómo reaccionarán los usuarios ante los cambios. Tuvimos muchos problemas con la actualización de dispositivos más antiguos a Lollipop, pero esperamos que esto se solucione en las próximas versiones.

4. LOLLIPOP EN EL EXTERIOR – DISEÑO DE MATERIAL

Se ha escrito mucho sobre la nueva y brillante interfaz de usuario de Android, llamada Diseño de materiales. Es una de las innovaciones más importantes en el sistema operativo Android en los últimos años, que ha cambiado por completo la apariencia de nuestras aplicaciones. Lo que más me gusta de Material Design es el cambio completo de los principios de UX: todo es importante . No existen detalles pequeños que puedan ignorarse. Tenemos que responder a cada interacción del usuario, hacer clic, tocar, etc. Porque, como dice Google, el movimiento proporciona significado . Tenemos que ser audaces, adoptar nuevos colores vivos, usar animaciones en cada paso, fuentes grandes, simplemente, agregamos vida a nuestras aplicaciones . Además, Material Design se ajusta completamente al ecosistema de Android y se adapta a diferentes tamaños de pantalla. Es por eso que nuestras aplicaciones tienen un aspecto similar pero no el mismo en diferentes plataformas.

5. LOLLIPOP EN EL INTERIOR – ARTE

Todo el mundo habla de diseño, componentes de la interfaz de usuario, animaciones, colores … Pero somos desarrolladores y estamos interesados ​​en lo que hay debajo del capó. Y, vaya, el motor es pura belleza: un nuevo sistema de tiempo de ejecución, llamado ART. Solo para el registro, ART no es algo nuevo: se introdujo como un sistema de tiempo de ejecución secundario en Kitkat. Con la introducción de Lollipop, se convirtió en el sistema primario que reemplazó por completo a Dalvik. El ARTE es excelente debido a varias cosas, pero mencionaré solo dos de ellas:

  • Utiliza la compilación AOT (por adelantado) , lo que significa que compila el lenguaje intermedio (código de bytes Dalvik) en un binario dependiente del sistema. Esto da como resultado un tiempo de ejecución más corto de nuestras aplicaciones, menos uso de CPU y menos consumo de batería . Por otro lado, el proceso de instalación es bastante más largo.
  • Proporciona soporte multidex fuera de la caja. Los archivos dex de Dalvik tenían un defecto importante: solo podían contener 65.356 métodos. Tuvimos que organizar nuestras aplicaciones de Android de manera que el recuento de métodos no supere esta limitación. Aunque este número puede parecer bastante grande, si tiene en cuenta los servicios de Google Play (que se necesitan en casi todas las aplicaciones) y algunas bibliotecas externas, podría superar fácilmente este límite. ART organiza su aplicación de manera que rompa el código de bytes en múltiples archivos dex que se empaquetan en un solo APK.

4. ANDROID ESTÁ EN TODAS PARTES

Hemos comenzado a desarrollar aplicaciones para relojes inteligentes, televisores y automóviles, pero ¿por qué detenerse allí? Si está sentado en su habitación y tomando una taza de café caliente, tómese un minuto y mire a su alrededor. Probablemente verá al menos cinco cosas que ejecutarán el sistema operativo Android en los próximos años: TV, computadora portátil, tableta, cámara, bicicleta, electrodomésticos de cocina, termostatos, automóviles, etc. Android comenzó como un experimento y ha demostrado que se puede ejecutar en cada elemento que pueda contener un pequeño microprocesador.

5. CALIDAD AUMENTADA DE LOS SMARTPHONES

Los teléfonos inteligentes siguen siendo dispositivos centrales para el sistema operativo Android. Durante mucho tiempo, tuvimos problemas con su calidad general. Los dispositivos Android más antiguos eran mucho más feos y lentos que los iPhones más antiguos: iOS siempre se sintió más fluido. Esto fue especialmente cierto para dispositivos más baratos producidos por una multitud de fabricantes chinos.

Afortunadamente, la calidad y la velocidad de los teléfonos inteligentes Android han aumentado constantemente, por lo que hoy tenemos una gran cantidad de dispositivos nuevos que son adecuados para el presupuesto y las necesidades de todos. No importa si desea un teléfono móvil con una excelente resolución de cámara, diseño, procesador o batería; lo tenemos todo.

Mi favorito personal es Motorola Mobility (actualmente una subsidiaria de la compañía china de tecnología informática Lenovo) con su gran línea de teléfonos inteligentes: Moto X, Moto G y Moto E, que de hecho tienen una muy buena relación calidad / precio. Además, un equipo de Google está trabajando en un teléfono inteligente modular. El Proyecto Ara tiene como objetivo sacudir completamente el mundo de Android y, si todo va bien, probablemente lo hará.

Proyecto Ara partes

¿Que sigue?

Alejándose de Java

Como finalmente hemos solucionado la mayoría de nuestros problemas con IDEs y versiones de SO, podemos cambiar nuestro enfoque a otros problemas de Android.

En mi humilde opinión, el problema más importante es el problema central del desarrollo de Android: Java. Lo siento, Java Harmony. Que es básicamente Java 7. O Java 6. Pero no es Java. No me malinterpreten: creo firmemente que Java es un buen lenguaje de programación, pero también creo que es el momento adecuado para pensar fuera de la caja. Necesitamos comenzar a buscar otros lenguajes de programación que reemplacen a Java como el idioma principal para el desarrollo de Android.

Solo mire a nuestro competidor más importante: Apple. Han introducido un lenguaje completamente nuevo llamado Swift que combina las mejores características de varios otros lenguajes (como Python, Ruby o C #). Ya necesitamos mucho más tiempo que los desarrolladores de iOS para desarrollar la misma aplicación, y ahora seremos aún más lentos.

Por eso necesitamos algo nuevo. Ya tenemos algunas ideas sobre qué lenguaje podría reemplazar a Java. Mis ojos están puestos en Groovy. Su sintaxis es bastante similar a Java (en realidad, está construida sobre Java) y ya tenemos algunos prototipos que funcionan. Además, no olvide que es el idioma principal de Gradle, entonces, ¿por qué no usarlo en el desarrollo de Android? ¿O tal vez Scala (que está ganando rápidamente nuevos usuarios) o Kotlin (Jake Wharton escribió recientemente una gran descripción de Kotlin para Android)?

MEJORARSE EN LA GESTIÓN DE DB

También me gustaría señalar un problema más: la API de administración de bases de datos . Si cometes blasfemia una vez más y echas un vistazo a nuestros competidores, iOS (Core Data, para ser más precisos), verás que tienen métodos y GUI realmente buenos para crear objetos de base de datos, métodos CRUD, oyentes de cambio de base de datos. Pero si observa la API de Android predeterminada, todavía no hemos llegado lejos de escribir comandos SQL, lo que afecta en gran medida nuestro proceso de desarrollo.

La depuración de errores de SQL no es tan fácil: lleva mucho tiempo y no tenemos GUI para ver los datos de nuestra base de datos. Aunque hay algunas buenas bibliotecas ORM (como GreenDAO, ActiveAndroid o SugarORM), todas tienen sus propios problemas. Nunca estuve completamente satisfecho con ellos: han sido complejos de usar o faltaba algo (como los oyentes de cambio de base de datos). Mi mente está puesta en Realm para Android y DBFlow, que espero resuelva todos mis problemas y también tenga tiempos de ejecución más cortos.

Conclusión

Mucho ha cambiado en los últimos años para Android. Ha evolucionado desde un sistema operativo simple para teléfonos inteligentes y ahora está alimentando muchos otros dispositivos. El tiempo dirá qué será de él. Quién sabe, tal vez incluso programaremos reactores de fusión nuclear con él. O terminadores. Los terminadores son más divertidos.

Estamos viviendo en una era donde todos poseen un teléfono inteligente y hay una gran posibilidad de que el teléfono se ejecute en Android.

Hay muchas posibilidades para los desarrolladores de aplicaciones de Android. Todo el mundo sabe que el conocimiento básico de Java es obligatorio para construir cualquier aplicación en Android.
(Aquí no estoy considerando algunas herramientas automatizadas de arrastrar y soltar). Puede utilizar la biblioteca nativa de Android para mejorar la experiencia del usuario y proporcionar funciones fáciles de usar y funciones avanzadas.

Si desea explorar más, también puede ampliar su experiencia más allá del desarrollo de aplicaciones. Aprende el desarrollo de juegos de Android. Use java y c ++, explore la biblioteca nativa de OpenGL para representar contenido 2D / 3D en pantalla, aprenda a trabajar con motores de juegos como unity3d. Sin lugar a dudas, el desarrollo del juego para Android tendrá un futuro brillante por delante.

Gracias por A2A.