Originalmente este post iba a ser más serio y ser contribuido al site de Jakarta EE, pero recordé que las contribuciones solo pueden ser en inglés.
Así que le agregué algo música a la versión en español. ¡Larga vida al pez!
Un poco de historia
Comencemos . . .
Glassfish es uno de esos proyectos que demuestra la verdadera naturaleza del software Open Source, con una premisa simple:
Siempre que exista una comunidad, el proyecto Open Source sobrevivirá a su «fabricante»
Tuxtor
Como bien relata Wikipedia, Glassfish originalmente fue un proyecto de Sun Microsystems para proporcionar un servidor de aplicaciones Java Open Source, liberando el código de lo que entonces conocíamos como Sun Java System Application Server que horrible era ese nombre.
Dato curioso: Fue acá que inicié mi carrera como desarrollador Java.
Una de las razones por las cuales Glassfish fue ganando terreno es que luego de la liberación recibió un lavado de cara, fue el servidor de aplicaciones de referencia, viviendo su época dorada implementando OSGi, liberándose de algunos módulos y convirtiéndose en uno de los servidores de aplicaciones más utilizados incluso después de su «primer muerte».
Hoy en día pocas personas lo recuerdan, pero la aparición de Glassfish hizo que muchos de nosotros por fin pensáramos en el servidor de referencia como un ciudadano de primer nivel y no solo un recurso para aprendizaje.
Implementación de referencia
Y a todo esto, ¿Que significa que Glassfish fuera la implementación de referencia?
Cuando Sun Microsystems lanzó al mundo Java, una de sus primeras acciones para popularizar el lenguaje fue permitir que otros lo utilizaran y que pudieran crear sus propias implementaciones, existiendo tres estándares:
- Java 2 ME – Para aplicaciones móviles (y luego micro)
- Java 2 SE – Para cualquier tipo de aplicación de escritorio
- Java 2 EE – Para aplicaciones enterprise, enfocadas a la naciente internet
A partir de acá el raciocinio es simple. Para desarrollar/evolucionar un standard de código, se necesita . . . código. Por lo que Glassfish siempre fue el primer servidor de aplicaciones sobre el cual se probaban/mejoraban/pulían e implementaban los cambios al standard que se convertiría en Java EE a secas (sin el dos). La primer resurrección
La transición
Luego de que varios proyectos Open Source perecieran ante la venta de Sun Microsystems a Oracle (Open Office, Hudson, Open Solaris), Glassfish se mantuvo en aguas firmes y sobrevivió a la transición. En su momento y a pesar de la existencia de WebLogic, Oracle aprovechó la fama de Glassfish ofreciendo paquetes de soporte comercial.
Y luego en 2013 todo se derrumbó.
Oracle anunció que a pesar de que seguiría siendo la implementación de referencia, Glassfish no contaría más con soporte comercial (lo cual dio nacimiento eventualmente a Payara).
En la época (2013), escribí un articulo denominado «la paradoja de Glassfish» que tiene más detalles al respecto.
Y nos vamos . . . a Eclipse
Luego de la publicación de Java EE 8 en 2017 y varios llamados de atención entre Oracle y la comunidad, Oracle anunció en Java One que donaría Java EE a la fundación Eclipse, cediendo por tanto el liderazgo de los estándares, incluyendo:
- Las implementaciones de referencia (las bibliotecas que conforman Glassfish)
- Los TCK (que hasta el momento eran de código cerrado)
- La propiedad intelectual de los estandares ya existentes (y el derecho a utilizar el paquete javax.*).
El año de la transición
Transferir un proyecto de la magnitud de Java EE es algo que ha pasado pocas veces en la historia de la computación, para ponerlos en perspectiva, Java EE sin los test tiene más lineas de código que Firefox, 13.5 millones de líneas de código en 95 mil archivos.
Como relatá Dmitry Kornilov en Oracle Developers, transferir un proyecto de este tipo fue un esfuerzo sin precedentes. Y he de decir, Oracle ha sido vital para que este proceso sea posible, como bien se demuestra en las contribuciones.
¿Que significa realmente Eclipse Glassfish 5.1.0?
Durante la transición hay varios factores implicados pero a nivel de código la nueva versión significa lo siguiente:
- El código ha sido transferido a Eclipse (39 proyectos y 88 repositorios)
- Se han creado diversos sub-proyectos para cada componente
- Se ha aplicado la licencia obligatoria de todos los proyectos en la fundación Eclipse, la Eclipse Public License
- Se tienen nuevas coordenadas de Maven
- Ya es posible compilar Glassfish y sus componentes mediante la estructura de integración continua de Eclipse
Además de algunos bugs mayores este lanzamiento no cambia mucho respecto a la version original de Glassfish 5. La idea de este release es demostrar que Eclipse es capaz de dar un nuevo acuario al pez. Y que el proyecto sobrevivirá bajo Jakarta EE.
¿Puedo utilizar Eclipse Glassfish 5.1.0?
Por supuesto, tanto el pom con las nuevas coordenadas como la distribución en zip ya estan disponibles para su uso en:
https://projects.eclipse.org/projects/ee4j.glassfish/downloads
Como no tenia una demo preparada sin MicroProfile, decidí hacer algo más divertido, conectar Apache Netbeans 10 con Glassfish 5.1.0 sobre OpenJDK 8 de AdoptOpenJDK y probar que el mundo no es el mismo de antes
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36
Hola. Estuve probando GlassFish 5.1.0 usando JDK 1.8.0.231 en NetBeans 11.2 con JDK 13 y intentando hacer andar este ejemplo de REST: https://netbeans.apache.org/kb/docs/websvc/rest.html
Pero por alguna razón parece que no conecta a la base de datos, sino más bien es como si tomara otra vacía.
Cuando intenté con GlassFish 4.1.2 usando JDK 1.8.0.45.x86 generando los REST con NetBeans 8.2 si andubo, incluso cuando habrí el proyecto con NetBeans 11.2 con JDK 13, también andubo.
¿Alguna idea de como hacer andar GlassFish 5.1.0?. Gracias.
Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:71.0) Gecko/20100101 Firefox/71.0
Hola Raúl, el problema es que el plugin de Glassfish, no se ejecuta bien en Java superior a Java 8. Un workarround seria utilizar el plugin de Payara (y eventualmente tambien utilizar Payara) los cuales si funcionan bien en Java 11
Mozilla/5.0 (Linux; Android 10; Redmi Note 8 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36
Un saludo dos a todos, tengo problema con glassgish 5.1.0 para generar el pollo de conexión con postgres, llenó todo y sale un error, probé conectando desde NetBeans a postgres y todo bien, me pueden dar una ayuda el por qué del problema
Mozilla/5.0 (X11; Linux x86_64; rv:85.0) Gecko/20100101 Firefox/85.0
Hola Esteban
Aunque no es estrictamente Glassfish, hace tiempo realicé esa conexión con Postgres y Payara.
Como recomendación general, si es para producción deberias explorar antes Payara ya que es más estable. Saludos.
https://www.youtube.com/watch?v=f9Ak2rFIPk8