viernes, 20 de diciembre de 2013

Java pende de Android

Un tema recurrente en las entradas de blog es "Java is dead" o Java es el nuevo COBOL.  Aquí va mi opinión sobre el tema.

Primero no veo por donde podría morir pronto Java.  Son demasiadas las aplicaciones y las empresas que dependen de Java para que eso ocurra.  Quizás, en 10 años más se dejara de usar Java para desarrollar nuevas aplicaciones y, en 20, se dejara de mantener aplicaciones viejas.

"Java es el nuevo COBOL" tiene un poco más de peso.  La evolución del lenguaje se puso lentísima, hay un especie de statu-quo entre JEE y la suite Spring y no aparecen frameworks Java nuevos.  Si comparo con lo que pasa en la comunidad Scala, Java es  aburrido.  No obstante, el lenguaje se sigue usando para crear aplicaciones entretenidas y me refiero a su uso en el mundo móvil, el cual mantiene vivo el lenguaje.

Para argumentar voy a usar el indice TIOBE.  En este indice, las curvas de C# y Visual Basic, lenguajes competidores a Java en Windows, están francamente a la baja en los últimos años.  Al mismo tiempo, Objective-C, el viejo lenguaje que Apple refloto para iOS, iPhone e iPad, salio de la oscuridad y compite con los lenguajes más populares.  Esta claro que Java se sostiene gracias a Android, sino estaría dando la misma curva descendiente que C# y Visual Basic.

Y Oracle esta demandando a Google por el uso de Java en Android!  En este juicio, Oracle perdió la primera ronda pero va por la apelación.  Los argumentos que usan, como la legitimidad de usar Copyrights para las definiciones de las API's estándares, podrían obligar a Google pagar varios billones de dolares de compensación:  hay que recordar que Oracle pidió 6 billones de dolares para evitar entrar a juicio.

Google no puede quedarse los brazos cruzados:
  • Lanzo dos lenguajes, Go para system programming y Dart para interfaz al usuario.  Dart entro en el proceso de estandarización con ECMA, el mismo grupo de Javascript y C#
  • Creo las chrome-apps que son una forma de desarrollar aplicaciones desktop con Javascript/Dart, CSS y HTML.  Estaría pronto listo una forma de empaquetar chrome-apps para Android e iOS.
  • Tiene AngularJS y Angular Dart, frameworks MVC para aplicaciones single-page en browser,
  • Puso Chrome como el browser por defecto en Android 4.4
  • Sigue empujando ChromeOS como sistema operativo para notebook, y desktop, a pesar que Android es un SO muy capaz para PC.  Tienen un porcentaje de mercado lo suficientemente interesante para crear interes en sus chrome-apps y todas las nuevas API's.
  • Junto el grupo de desarrollo Android con el de ChromeOS y varias figuras históricas detrás del robotcito, como Andy Rubin, se fueron a otros proyectos en Google.
A mi, no me falta mas signos: están contados los días de Java como lenguaje preferido para aplicaciones Android.  Si con un lenguaje decente (no estoy hablando de Javascript) puedo desarrollar aplicaciones en Android, iOS, Desktop y Web, no tengo donde perderme.

En resumen, si Oracle se sale con la suya en el juicio:
  • Dart va a reemplazar Java para desarrollo en Android,
  • Java estará estancado en el servidor de aplicación como COBOL lo es en mainframe CICS.
Por mi parte, es bastante poco lo que desarrollo ahora con Java.  Y si el desarrollo sobre browser conquista el mundo móvil, tengo la alternativa de usar Scala-js.

Update: 28/01/2014: las chrome-apps se pueden ejecutar en desktops, iOS y Android