Today Eclipse GlassFish 5.1 has been released, and unlike the modest increase in version number might suggest, this truly marks a major milestone. Not just for the GlassFish project itself, but for Java EE and moving Jakarta EE forward even more.

A Look at The History of GlassFish

GlassFish goes back a long way. It at least goes back to the Kiva Enterprise Server, a Java application server which was released in January 1996 (for comparison, Java 1.0 itself was also released in that month!)

A year later, Netscape acquired Kiva, and the Kiva Enterprise Server became known as Netscape Application Server (NAS), which had its own pre-J2EE proprietary Java web APIs (such as the AppLogic framework which were like Servlets, and DAE for DB access). NAS 2.1, which was available from early 1998 was a particularly popular version. Application servers were quite pricey back then, as Netscape Application Server was around $35,000 per CPU.

In 1999, Sun and Netscape (later AOL) formed an alliance, and Netscape Application Server 4, which was released later that year, included support for an early version of J2EE (Servlets, EJBs, JSPs, and JDBC). For example, JSP support was for the early version 0.92.

Netscape Application Server 4 was chosen by the alliance to continue development on instead of merging it with the NetDynamics 5.01 application server Sun had acquired earlier. The name was once again changed, this time into iPlanet Application Server (iAS). It was part of the iPlanet suite of products jointly developed by Sun and AOL (Netscape).

iAS Version 6, from around the year 2000, was a J2EE 1.2 compatible server supporting things such as Servlets 2.2, EJB 1.1, JSP 1.1 (based on Jasper) and JTA 1.0 (based on the Encina transaction monitor).

For version 7, the name was once again changed, now in full to "Stanford University Network Open Net Environment Application Server", aka Sun ONE Application Server (S1AS, or SOAS). S1AS 7 was made available for no cost when it was released in late 2002, although it was still closed source. It included a modified Tomcat 4, which has a long history as well. Version 8 once again saw a name change, when it became Sun Java System Application Server (SJSAS) 8, which was J2EE 1.4 compatible. Around this time period, Sun had also split off a derived version called the J2EE SDK (Reference Implementation, or RI) which was essentially the core of the full application server, but later on this became the Platform Edition of SJSAS and the pure RI was only made available for TCK testing.

Open Source GlassFish Project

In 2005 the open source GlassFish project was started, which was essentially formed by the donation of the source code for SJSAS 9 by Sun and the TopLink persistence source code by Oracle (for the new JPA implementation in EE 5). In May 2006, the Java EE 5 compatible and fully open source GlassFish 1.0 was released. After some intermediate versions, a major re-architectured version of GlassFish was released in December 2009; GlassFish 3.0. In the GlassFish source code internally, there are still many references to "V3", which refer to this major milestone.

Payara Server is Born

After Oracle acquired Sun, it still released a version 3.1 of GlassFish in early 2011 with production features such as clustering and load balancing, but after that release it got relatively silent. In November 2013, Oracle announced they would still support the open source GlassFish but ended commercial support. In true open-source fashion, this led to the Payara Server, which started as a fork of GlassFish and added commercial support, regular bug fixes, and regular component updates. GlassFish 4 was released to support Java EE 7, but from a server architecture point of view, it was a relatively minor update with mostly the components being updated to their EE 7 versions.

GlassFish is Transferred to the Eclipse Foundation

Late 2015/early 2016 it becomes more quiet on the GlassFish front, and several articles appear questioning Oracle's interest in Java EE and specifically GlassFish. In August 2017, Oracle indeed announces not wanting to be primarily responsible for Java EE and GlassFish anymore. A little later it's announced that Java EE and all the GlassFish code (GlassFish itself and all its constituent components) will be transferred to the Eclipse Foundation. The name of the project would become "EE4J" and early 2018 the source code starts transferring to the "eclipse-ee4j" repo on GitHub.

As part of the deal between Oracle and Eclipse, it's decided to release a GlassFish 5.1 that's completely built by the Eclipse organisation from the transferred and relicensed components, and that is fully Java EE 8 certified.

Payara Services Involvement

Altogether this transfer has took a lot of work. Payara Services (the company as well as individuals working for Payara) have supported this process from its early stages. It included help with the initial cleaning of several projects for the vetting of the transfer. For instance, in the Mojarra project there was quite a bit of ancient code and other artefacts that were removed one by one as they would have been difficult to vet. After the bare source code transfer, several adjustments were needed to make the projects cleanly build, and later on to make them work on the Eclipse Jenkins instances (https://jenkins.eclipse.org). For this to happen, a large amount of jobs had to be created, for each project to build, stage and finally to release them to maven central. The component tracker at https://wiki.eclipse.org/Eclipse_GlassFish_5.1_Components_Release_Tracker gives some idea of which projects were involved.

Payara specifically contributed to the transfer of the following API projects and their associated implementations:

# Leading EE4J Impl JSF ☑️ Mojarra Expression Language ☑️ EL-RI EE Security - Soteria JACC ☑️ GlassFish JASPIC ☑️ GlassFish Interceptors ☑️

(shared) - JAX-RS Jersey JMS OpenMQ JSP GlassFish Servlet GlassFish WebSocket Tyrus EE Concurrency ☑️ Concurrency RI

All together it was a great experience working on this transfer, but at times also quite a bit of work, especially when in the beginning it wasn't clear at all how to proceed with certain things.

Now however, this work is finally done! GlassFish is fully built on Eclipse infrastructure and today's release by Eclipse marks another major step in GlassFish's long journey, starting at Kiva, passing through NetScape, growing up at Sun, passing through Oracle, and now landing at Eclipse.

One Step Closer to Jakarta EE 9

But it's not only about GlassFish itself. With this transfer completed, and both GlassFish and its components available via the jakarta.* Maven coordinates, we are one major step closer to starting the work for Jakarta EE 9.

GlassFish 5.1 can be downloaded here: https://projects.eclipse.org/projects/ee4j.glassfish/downloads

The implementation components are available from the org.glassfish Maven coordinates as before: https://repo1.maven.org/maven2/org/glassfish/main/distributions/glassfish/5.1.0

The API jars now live under the new jakarta.* Maven coordinates: https://repo1.maven.org/maven2/jakarta/

We at Payara would like to thank all partners from Jakarta EE who helped with the transfer. Special thanks go to Dmitry Kornilov for his tireless amount of help and advice whenever we got stuck on something. Thanks Dmitry! :)