La adquisición de Sun por parte de Oracle ha provocado que la gente se preocupe por el futuro de Java, ya sea que Oracle pueda continuar manteniendo la apertura de Java y ante el surgimiento de varios lenguajes livianos como Ruby, Python o PHP. ¿Java puede seguir manteniendo su popularidad en el campo del desarrollo?
Hace 14 años, cuando un genio del marketing de Sun cambió el nombre de un lenguaje experimental multiplataforma de Oak, que simboliza la solidez, a Java, que está lleno de fragancia, tal vez no hubiera pensado que este lenguaje tendría el potencial de convertirse en un lenguaje popular. Gloria posterior. De hecho, si Sun ahora quiere cambiar el nombre de este lenguaje para reflejar con precisión su posición en la industria informática, parece que Oak es más vívido. Hoy en día, aunque el lenguaje Java no está floreciendo en todas partes, ha aparecido en muchas ocasiones y dispositivos, y goza de la reputación de funcionamiento estable y bien diseñado. Puede que el código Java no domine todas las computadoras o todas las plataformas, pero está cerca de hacerlo; convertirse en Un lenguaje universal está a nuestro alcance.
James Gosling, el padre de Java, destacó este punto cuando subió al escenario para hablar en la conferencia OpenWorld organizada por Oracle. Sacó una presentación de diapositivas de JavaFX con una letanía de estadísticas: más de 850 millones de computadoras de escritorio habilitadas para Java y alrededor de 10 mil millones de dispositivos habilitados para Java. De hecho, las máquinas virtuales Java son comunes en dispositivos electrónicos: lectores de libros electrónicos Kindle, reproductores de discos Blu-ray y teléfonos inteligentes (incluidos los menos inteligentes), etc. Las aplicaciones de iPhone se ejecutan en miles de iPhones, pero Java está integrado en 2.600 millones de teléfonos, desde teléfonos no tan inteligentes que puedes comprar por 20 dólares hasta teléfonos BlackBerry y Android de última generación. Nada está incluido.
Invitar a Gosling a hablar en la conferencia OpenWorld es sólo una de las formas en que el director de Oracle, Larry Ellison, espera asegurar a los ingenieros que el lenguaje tiene un futuro brillante. Oracle quiere adquirir Sun Microsystems, pero todavía tiene que esperar a que los reguladores europeos aprueben la decisión. El gobierno de Estados Unidos ha dado luz verde, pero los funcionarios del gobierno europeo aún no han aceptado el acuerdo debido a preocupaciones sobre el desarrollo de MySQL. Tanto Gosling como el presidente de Sun, McNealy, dijeron que una vez que se complete la fusión y adquisición, Java recibirá más atención y recursos de Oracle que antes.
A corto plazo, la señal que transmitió Ellison puede no ser muy importante, porque ahora que Java se ha convertido en un clima, no es fácil cambiar la dirección del desarrollo. Por supuesto, algunas personas creen que el modelo de negocio de Oracle es tan diferente que inevitablemente realizará cambios importantes en cada parte del ecosistema Java. En general, por cada razón por la que Java podría cambiar, existen igualmente buenas razones por las que Oracle podría querer mantener el status quo.
Las aplicaciones de nivel empresarial son el principal campo de batalla
Java encontró por primera vez su lugar en el lado del servidor, y esta área sigue siendo el lugar principal donde se espera que se vean las máquinas virtuales Java en el futuro. Para todos los productos de Oracle, los servidores grandes también son el hogar principal, por lo que tiene sentido que aparezca este par. Aunque los programadores de PHP prefieren MySQL, para aplicaciones empresariales con uso intensivo de datos, muchos de los proyectos más críticos todavía utilizan Java integrado en una arquitectura basada en Oracle, y esta situación no debería cambiar pronto.
Sun dijo que el servidor de aplicaciones GlassFish se descarga más de 1 millón de veces al mes y que las plataformas más antiguas como Tomcat siguen siendo comunes. Debido a que la tecnología es muy apreciada, rápida y verdaderamente multiplataforma, las grandes empresas (como bancos y compañías de seguros) tienen una gran demanda de desarrolladores de Java.
Sin embargo, Java ya no se considera la sintaxis más reciente y genial. Algunos programadores se han quejado de la estructura de los lenguajes escritos estáticamente y han cambiado a lenguajes más nuevos o más simples, como Ruby, Python o PHP. Muchas de las aplicaciones web más simples de hoy en día se desarrollan en estos lenguajes porque el código que escriben es fácil de modificar y se pueden crear prototipos rápidamente. Sin embargo, estos nuevos lenguajes fáciles de usar a menudo dependen de Java: los desarrolladores de Ruby a menudo usan JRuby (un lenguaje Ruby basado en Java) porque la máquina virtual Java puede manejar mejor tareas pesadas y liberar múltiples subprocesos. Jython (lenguaje Python basado en Java) es similar.
Java está incorporando ahora algunas de las últimas técnicas de programación para frenar la intrusión de estos nuevos lenguajes. Grails imita claramente muchos de los patrones declarativos simples de Ruby on Rails; el marco de trabajo de Grails combina complementos de script como Groovy con un middleware de base de datos llamado Hibernate. El propio Groovy agrega numerosas opciones dinámicas para facilitar la interpretación del código y puede vincularse directamente a cualquier parte de la interfaz de programación de aplicaciones (API) de Java. No hay necesidad siquiera de pensar en Python o Ruby, porque Groovy, con una sintaxis moderna y elegante, brinda a los programadores de Java acceso a una variedad aparentemente interminable de vastas bibliotecas y una máquina virtual subyacente sólida como una roca.
Ir móvil
La cantidad de teléfonos Java (estimada en alrededor de 2.600 millones) es asombrosa, ya que muchos de los teléfonos más simples del mercado ejecutan Java Platform Micro Edition (Java ME). Esto permite a empresas como Wattpad.com crear plataformas de lectura de documentos que funcionan sin problemas en todo el tercer mundo.
Sin embargo, la cantidad de teléfonos inteligentes que ejecutan Java es relativamente pequeña. El gran éxito del iPhone ha inspirado a muchas personas a volver a aprender Objective C. Este lenguaje permite a los programadores mejorar su control sobre algunos problemas del sistema, como el uso de la memoria. Java oculta la mayoría de los problemas subyacentes a los programadores, lo cual es una ventaja, pero la premisa es que no es necesario administrar recursos como la memoria, porque si hay un pequeño error en la recolección de basura, algunos juegos no se ejecutarán. Desafortunadamente, debido a que la duración de la batería es un factor tan importante, los teléfonos inteligentes requieren una gestión de recursos más estricta que casi cualquier otra plataforma.
Aún así, hay demanda de programadores Java, ya que BlackBerry continúa usando Java ME en su nueva plataforma: agrega soporte para pantallas táctiles y sensores de orientación a los perfiles del teléfono. Hay factores impredecibles en Android. Desde que Google abrió el uso de Android, muchos fabricantes de teléfonos móviles se han subido al tren de Android.
Android de Google se basa en el código abierto Apache Harmony y sus clases, en lugar de en el Java Development Kit (JDK) y Java ME desarrollados por Sun. Para alguien que escriba código en Eclipse, parecerán casi idénticos. En muchos otros casos no importará porque el desarrollo de Android utiliza muchos formularios XML, pero si los dos marcos de desarrollo se alejan entre sí, esta división puede convertirse en un gran problema.
Recuperar terreno de escritorio
La mayoría de la gente todavía piensa que Java nunca tuvo éxito en el escritorio y que eso es cosa del pasado. Hoy en día, Java está penetrando lenta pero constantemente en todos los rincones de los sistemas operativos modernos. Si bien las aplicaciones estándar escritas en Swing siguen sufriendo al intentar apuntar a las partes más básicas de cada plataforma, con plataformas y marcos de desarrollo más nuevos como JavaFX y Web Start, es posible implementar software de manera efectiva a través de la Web. La plataforma nativa maneja todo el almacenamiento en caché de archivos Java (JAR). Al hacer clic en un enlace, seguido a veces de unos pocos clics en un cuadro de diálogo de concesión de permiso, el software se puede instalar y actualizar, y se puede ejecutar en cualquier momento.
JavaFX sigue siendo un verdadero desconocido. Las capacidades gráficas ahora son competitivas con Flash de Adobe; el motor informático admite la mayor parte de la API de Java, pero el lenguaje es un extraño híbrido de Java, JavaScript y otros lenguajes de marcado genuinos. El código es más simple que el de Java normal, por lo que los programadores de Java tienen que aprender cosas nuevas. Sin embargo, para una herramienta de escritorio muy interactiva, puede que valga la pena aprender la nueva clase de animación. Web Start continúa mejorando lentamente la capacidad de implementar software directamente en el escritorio a través del navegador.
Aprovecha el campo incrustado
Java también prospera en lugares donde la gente menos lo espera. Si bien es posible que los programadores de C nunca reconozcan las capacidades inteligentes de almacenamiento y ejecución rápida de la máquina virtual Java, el éxito de Java en dispositivos que no son teléfonos inteligentes, descodificadores, chips integrados, Kindles y otros dispositivos de bajo consumo demuestra: Totalmente capaz de lucirse en aplicaciones integradas. La popularidad de Java también ayuda a los programadores a migrar de plataformas grandes a plataformas pequeñas. Si bien no es fácil pasar del desarrollo de aplicaciones de nivel empresarial para mainframes al desarrollo de código pequeño integrado, el estándar Java hace que esta transición sea mucho más fácil que muchas otras herramientas.
Los paquetes Java también son cada vez más pequeños. Gosling usó polvo para describir una computadora del tamaño de una moneda con capacidad para Java. JavaCard, una máquina virtual y API para paquetes tan pequeños, está a punto de marcar el comienzo de la versión 3.0, una versión histórica que agregará capacidades de conectividad de red. Aunque estos pequeños puntos aún no son lo suficientemente pequeños como para caber en el ojo humano, la capacidad de hablar directamente con Internet los hace muy tentadores.
¿Se separarán los socios?
La mayor preocupación para todos los desarrolladores es: ¿Qué tipo de conflictos de intereses cambiarán si se concreta la adquisición de Sun por parte de Oracle? Oracle ha crecido cobrando grandes tarifas por licencias de software y su software puede ejecutarse en cualquier hardware que los clientes quieran comprar. Sun, por otro lado, normalmente regala software y luego gana algo de dinero vendiendo servidores. Es posible que estas estrategias de distribución no cambien de inmediato porque hay demasiada inercia, pero nadie sabe qué decisiones tomará Oracle en el futuro.
Algunos creen que el hecho de que Oracle no haya cobrado grandes tarifas de licencia en el pasado sólo alentará a Ellison a adoptar tácticas similares con Sun. Quizás el equipo de ventas de Oracle esté codiciando esta oportunidad en este momento: aumentar gradualmente las tarifas de licencia donde Java solía ser gratuito. Para evitar reescribir aplicaciones Java Platform Enterprise Edition (Java EE), muchas empresas probablemente preferirían pagar 100, 200 o incluso 1 millón de dólares por CPU.
Los críticos señalan que Oracle puede desarrollar fácilmente nuevas versiones de la máquina virtual Java con diferentes niveles de rendimiento para diferentes mercados. Las máquinas virtuales de escritorio pueden seguir siendo gratuitas, Oracle puede incluso pagar a los proveedores de computadoras para que comercialicen Java y JavaFX, y las mejoras de rendimiento en el manejo de múltiples subprocesos extremos pueden tener un costo muy alto. Hay muchas maneras de ganar dinero con los usuarios, y las tarifas de licencia suelen ser mucho más baratas: es mucho más caro que los programadores recalcitrantes primero aprendan un nuevo lenguaje y luego reescriban el código base.
Pero algunas personas piensan que es posible que Oracle no adopte esta medida. Una fuente cercana a Sleepycat, la compañía de bases de datos de código abierto adquirida por Oracle en 2006, dijo que Oracle aproximadamente ha duplicado el tamaño de su equipo técnico, mientras que todos los modelos de licencia dual permanecen intactos. El software todavía viene en forma de licencia comercial o de código abierto. Si Oracle tratara a Java como Sleepycat, las licencias comunitarias y otras opciones seguirían siendo tan gratuitas y ampliamente disponibles como siempre, y habría más ingenieros disponibles para mejorar el código.
Quedan preguntas más profundas sobre las relaciones a largo plazo con otros socios importantes de Java. Google continúa apoyando a Apache Harmony, un proyecto con más de 1,25 millones de líneas de código que parece empeñado en socavar el estatus de Sun como centro del mundo. IBM perdió la guerra de ofertas por Sun y ahora encuentra a su rival Oracle más fuerte. IBM diseñó las herramientas de desarrollo de Eclipse y también puede comenzar a llevar la plataforma Java en otra dirección.
Otros socios fueron más agresivos. Vishal Sikka, director de tecnología de SAP, ha pedido repetidamente a Sun que publique el Java Community Process (JCP), centrándose en el plan propuesto por Oracle en 2007: entregar el control a una organización de estándares abierta, independiente y neutral con respecto a los proveedores, y a todas las organizaciones de estándares. Los miembros participan bajo la premisa de igualdad de oportunidades. Si bien Oracle ha guardado silencio sobre los detalles, es seguro asumir que la compañía recuperará el respeto por algunas de las ideas que heredó de Sun.
Sin embargo, aunque otros socios pueden intimidar, pueden considerar la cuestión del grado, porque en realidad todos están restringidos entre sí y es probable que se bloquee cualquier comportamiento excesivo, porque todos se dan cuenta de que una vez escritos, en todas partes. Ventajas de los conceptos operativos. Si el código escrito para un teléfono Android no se puede migrar fácilmente a un reproductor de Blu-ray de Sony o a un servidor Glassfish, existe la posibilidad de que surja otro lenguaje. De hecho, varias empresas ya están escribiendo kits de herramientas que permiten a los usuarios ejecutar fácilmente el software Ruby on Rails o Python en el iPhone.
Además, muchos de estos lenguajes más nuevos pueden convertirse en serios competidores, y demasiadas luchas internas sólo les ayudarán a ganar terreno. Existen docenas de paquetes de código abierto muy buenos y menos conocidos que, por lo general, los entusiastas dedicados pueden migrar a todas las plataformas con un poco de conversión. Por ejemplo, Python ya es el lenguaje principal en algunos campos científicos y Google eligió Python en lugar de Java como el primer lenguaje soportado por su App Engine. Si bien IBM, Oracle y Google pueden competir entre sí en la carrera por el dominio, deben reconocer que todos se benefician de la estandarización, no del monopolio. Si alguien se atreve a excluir demasiado a otros e intentar controlar Java, otros proveedores pueden apresurarse hacia sus competidores.
¿Java también abre una tienda de aplicaciones?
El hecho de que el código base de Java siga siendo relativamente cohesivo y relativamente estandarizado ha provocado especulaciones sobre cómo Sun (y Oracle, si la fusión se concreta) podrían explotar la ubicuidad de Java para hacer una fortuna sin aumentar las tarifas de licencia y desplazar ¿Presión sobre todos? ¿Qué pasaría si alguien desarrollara una App Store para todo el ecosistema Java, vendiendo widgets escritos en Java como aplicaciones para iPhone? Podrían estar en computadoras de escritorio, teléfonos, reproductores de Blu-ray o ¿Qué pasaría si pudiera ejecutarse en cualquier otra plataforma que use Java? ?
Recientemente, ha habido una cantidad considerable de aplicaciones para teléfonos Android, y Sun también está planeando una tienda Java para que las personas puedan simplemente arrastrar la aplicación al escritorio o simplemente escribir un poco más de código para agregar cada aplicación al escritorio combinado. , pueden ejecutarse en casi todos los rincones del mundo Java. Aún así, lidiar con pantallas e interfaces de usuario muy diferentes puede ser un desafío.
Imagínese lo atractivo que es este escenario: una aplicación escrita por un desarrollador se ejecuta en un teléfono Android, él trabaja en una tarea en su escritorio y, cuando llega a casa, se ejecuta sin problemas en el reproductor de Blu-ray de la sala de estar.
Llevar aplicaciones Java a personas sentadas en el sofá es incluso un poco inesperado, porque el lenguaje Java originalmente estaba pensado para ejecutarse en decodificadores en sus inicios cuando se llamaba Oak. Esta visión se basará en las mayores ventajas de la plataforma Java: popularidad y estabilidad multiplataforma. Quizás estas ventajas ayuden a Java a generar ingresos continuos para su inventor.