It’s been a roller-coast year for the Java Enterprise world. The Java EE 7 specifications have been released, and work has started on the Java EE 8 specifications. While 2 of the major Open Source implementations of the Java Enterprise specifications are surging (Apache TomEE and WildFly), the Reference Implementation of Java EE (GlassFish) got in the news because Oracle will not offer commercial support for the current version and next versions. However, my faith in GlassFish remains.
When Sun Microsystems launched GlassFish in 2005, I was extremely happy. Until that moment, Java Enterprise development wasn’t really transparent to me. I was using JBoss and Sun ONE Application Server before, and they did a good job at that time. However, Java Enterprise standardization was not as transparent as it is now, and I didn’t have the source code for the Sun Application Server. I always try to understand why code is behaving the way it behaves, and I was in the dark. The code controlled me, not vice versa.
With GlassFish, it became much more clear. The source code was available, and over the years, the Java Enterprise specifications became more transparent and also more clear to me. Finally, I could use an Application Server that I felt I could control. People working with me know that I don’t like guessing. There are no quantum effects in our software development. Everything that happens, happens because someone instructed a CPU to do so. With GlassFish, guessing was not needed anymore. If “something strange” happened at runtime, I could easily follow the exact path(s) in the code, and investigate the context without modifying it. That allowed me to fix lots of bugs in my own code and in customer projects.
One of the main reasons GlassFish is easy to control, is the quality of the code. Some of the best developers I know worked on GlassFish. The Grizzly core is an amazing piece of Art. While very performant and scalable, it is still very readable and understandable. This is no-nonsense code.
GlassFish marked a new phase in Java Enterprise development. It didn’t just followed the standard by creating a Reference Implementation, it was also sort of an incubator where new specifications, technologies or patterns could be checked. If you look at the JAX-RS 2.0 specification, you can see that many ideas and patterns are leveraged from Jersey 1.x, which served as the Reference Implementation for JAX-RS 1. Jersey 1.x contained a client module which was not part of the JAX-RS specification, but it provided very relevant input for the JAX-RS 2 specification.
GlassFish is not alone in this role, anymore. I am particularly pleased by WildFly and TomEE at this moment. They share some of the basic requirements that I, being a developer, like: easy to understand and set up, no-nonsense, community-driven and very open to innovation.
At this moment, I see 3 mature Open Source Application Servers, being GlassFish, WildFly and TomEE. This is great, since I believe the next Java Enterprise specification should be mainly driven by input from these Open Source Application Servers. The three of them are relative open to new ideas, and somehow offer an “incubator” area although not always explicit.
In order to get great Java Enterprise specifications, the Java EE committee should look at how things are done inside these communities. GlassFish, WildFly and TomEE already offer more than just the Java EE specifications (i.e. GlassFish, bundled with EclipseLink provides access to NoSQL datasources). They contain the foundation for future Java EE specifications. Rather than one implementation defining the specification, I prefer a healthy discussion based on experience. Actually, this already happened for the Java EE 7 specification. If you look at the people on the Expert Groups, they often represent the innovative Open Source products combined with bright individuals.
Oracle’s official statement on the future of GlassFish is probably a bit in that direction. Oracle recently states what a lot of people expected to happen right after the acquisition of Sun: GlassFish is the Open Source Reference Implementation without commercial support and WebLogic is the commercial implementation.
I’m not at all worried about Oracle dropping commercial support for GlassFish. LodgON is now providing commercial support for GlassFish. We already did this before, by helping companies with performance or scaling issues, by setting up failover and by monitoring the server instances. At LodgON, we are committed to continue this. We try to stay involved with the GlassFish development.
Also, we are having a closer look to TomEE and WildFly, as they clearly made great progress over the last year. I plan to have at least one commercial project on TomEE and another one on WildFly next year. Experience with the three leading Open Source Application Servers should increase my insights in innovative enterprise technologies.
While Oracle dropping commercial support is not worrying me, I do hope Oracle is not cutting down the innovation in GlassFish. I realize some of the bright engineers and evangelists left the GlassFish team, but there are still great people working on it. I am looking forward to work together with them and make GlassFish 4.x and beyond a great and truly innovative Open Source product.