Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

GlassFish 5.1 Release Marks Major Milestone for Java EE Transfer

DZone's Guide to

GlassFish 5.1 Release Marks Major Milestone for Java EE Transfer

The latest GlassFish 5 release marks a major milestone for the future of Java EE.

· Java Zone ·
Free Resource

Get the Edge with a Professional Java IDE. 30-day free trial.

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 started with the Kiva Enterprise Server, a Java application server that 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 was 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 refers 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 quieter on the GlassFish front, and several articles appeared questioning Oracle's interest in Java EE, specifically GlassFish. In August 2017, Oracle indeed announced that they did not want to be primarily responsible for Java EE and GlassFish anymore. A little later, Oracle 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 in early 2018, the source code starts transferring to the "eclipse-ee4j" repo on GitHub.

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

Payara Services Involvement

Altogether, this transfer has taken 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 from 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 artifacts 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 number 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


Altogether, it was a great experience working on this transfer, but at times, it was 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 the 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! 

Get the Java IDE that understands code & makes developing enjoyable. Level up your code with IntelliJ IDEA. Download the free trial.

Topics:
glassfish ,java ee ,jakarta ee ,open souce ,eclipse foundation ,Java ,GlassFish 5.1 ,news

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}