While Waiting for Jakarta EE

It is more than a year since Oracle announced the transfer of Java™ EE to Eclipse Foundation at JavaOne 2017. Since then, a lot has happened:

  • Java™ EE 8 API and implementation projects have been set up under EE4J.
  • The Eclipse GlassFish 5.1 release is approaching.
  • A brand new Jakarta EE specification process is right around the corner.
  • Community shows involvement regarding the technical direction of Jakarta EE.
  • The Jakarta EE NoSQL specification project proposal has been created.

This is all very good, excellent actually! When you think about the size of it all, it is actually quite an achievement. We are talking about 7.7 million lines of code! More than 60.000 files and a total of 38 new projects that have been set up at the Eclipse Foundation.

But, as everyone knows, developers are impatient and eager to try out everything new, so there are still a couple of questions that I always get when talking about Jakarta EE:

  • When can I start developing Jakarta EE applications?
  • How does Eclipse MicroProfile fit in this picture?

The answer to the first question is: “not yet”. Until the Jakarta EE specification process is finalized, the technologies are still Java™ EE. 

The answer to the second question differs a little depending on who you ask, but usually is something in the lines of “I am pretty sure that some of the MicroProfile specs will be integrated into Jakarta EE when they have proven to be useful”.

So, what should an eager developer do in the meantime? Switch to Spring Boot…ouch…or…JavaScript…squeal…?

NO, here is what you should do: Use the power of JavaEE 8 and combine it with Eclipse MicroProfile.

Many of the application server vendors have added MicroProfile features to their Java™ EE 8 compliant or certified application servers. Examples are Open Liberty, WildFly, Payara and Apache TomEE. See the respective vendor’s documentation for which versions they have included.

Java EE 8 with Eclipse MicroProfile 2.1

I have put together a simple application called Jakarta EE Duke to demonstrate how to do this. The application uses the @ConfigProperty annotation from MicroProfile Config to configure a message as well as the new @Email annotation from Bean Validation 2.0, which came with Java™ EE 8 to validate input.

While this example is extremely simple, it does indicate how you can combine the full power of Java™ EE 8 with the lightweight APIs of MicroProfile to implement cloud-native microservices using Java™ technology.

One last tip: Make sure to join the Jakarta EE Community Mailing list to always stay up-to-date on the latest development of Jakarta EE.

Eclipse GlassFish Release Plan

UPDATED!

Yesterday, the release plan for Eclipse GlassFish was announced on the EE4J mailing list. For convenience, I have repeated the plan here:

September 18
All code required for GF build contributed.

September 23
Eclipse GlassFish builds.

October 1
Java EE 8 CTS testing. We are able to run CTS tests on Eclipse GlassFish.

October 22 ⚡
CI/CD release pipelines completed.

October 22
Eclipse GlassFish 5.1-RC1 milestone release.

November 5 ⚡
Dependencies updated. All projects are released to OSSRH and have dependencies to Eclipse version of other components.

November 30 ⚡
Release Review completed.

December 14 ⚡
Eclipse GlassFish 5.1 release. All CTS tests are passed.

There is a lot of work to do, so every contribution is appreciated, especially regarding setting up the CI/CD pipelines for all the EE4J projects. Take a look at our status sheet and sign up where you think you can contribute.

Ozark becomes Eclipse Krazo

One of the requirements for Eclipse Projects is that the name is not associated with any trademarks or potential trademarks. When we created the project proposal for Ozark, this turned out to be the case here. The name Ozark is simply used too many places for it to be a valid Eclipse project name.

So, how did we come up with the new name? First of all, we asked for input on the Ozark developer mailing list. We also wrote a small program that generated all permutations of ‘ozark’ to see if something cool came out of that.

Then we started filtering, discussion and voting until we ended up with Krazo, which turns out to be Ozark spelled backward. We are really excited about the new name and hope you all will join us in spreading the word that the reference implementation of MVC 1.0 that was previously known as Ozark is now called Eclipse Krazo.

Setting sails for Jakarta EE!

The future of Cloud Native Java with Jakarta EE is here! The Jakarta EE website was launched today with lots of information, news and resources, including the new results of the 2018 Developer Survey.I even got my blog posts about the relationship between Jakarta EE, EE4J and Java EE listed in FAQ section. The website even features the new Jakarta EE logo.

I should be honest and say that it wasn’t my first choice when I voted, but when I see it in use with different colors and backgrounds, I must admit that it looks pretty good.

The initial strategic and participating members of the Jakarta EE working group are also listed on the website.

It is pretty awesome to see this list of companies participating and supporting Jakarta EE! And the list is likely to expand as more companies join. The future of Cloud Native Java is Jakarta EE, and the future looks bright. Let’s set the sails and sail towards the future (finally got the logo, I think…).

https://jakarta.ee

 

The Relationship Between Jakarta EE, EE4J and Java EE

The Jakarta EE name has been out for about a month, and even if Mike Milinkovich explained the names and concepts pretty well in his blog post And the Name Is…, there still is a bit confusion about how it all relates and I get questions around it whenever the topic comes up. I have tried to sum up some of it here. Hope it helps!

Java EE

Java EE, or Java™ Platform, Enterprise Edition, is the name of the current platform governed by the Java Community Process (JCP). The latest version is Java EE 8, which was released in September 2017.

Jakarta EE

Jakarta EE is the name of the platform governed by the Jakarta EE Working Group. The first version will be Jakarta EE 8 which will be based on the Java EE 8 technologies transferred from Oracle to the Eclipse Foundation.

EE4J

Eclipse Enterprise for Java (EE4J) is the top level project in the Eclipse Foundation for all the projects for creating the standards that will form the base for Jakarta EE. The EE4J Project Management Committee (PMC) is responsible for maintaining the overall vision for the top level project. It will set the standards and requirements for releases and help the projects communicate and cooperate.

Summing Up

Jakarta EE does not replace Java EE! It is the name for the platform evolving with Java EE 8 as a starting point. Java EE 8 will still exist, but there will not be any new versions of the platform.

Jakarta EE does not replace EE4J! It is the name of the platform based on the EE4J projects with Java EE 8 as a starting point.

Promoting EE4J at Jfokus

During the opening keynote of Jfokus, I was invited up on the big stage to be interviewed about the future of Java EE and my role in the Java community.

The video from the Keynote will probably be available shortly, so I will not repeat everything here word-for-word (even if I could…).

The first topic was the Java Community Process Executive Committe and we talked about how the EC guides the evolution of Java™ technology in the Java Community Process.

The next topic was about the Eclipse Enterprise for Java Project Management Committee and how to get involved in participating in the development of Java EE technologies within EE4J. I will encourage everyone that is interested in following what is going on there to join the ee4j-community mailing list.

My vote goes to Jakarta EE !

I could probably write a long post about why my vote goes to Jakarta EE in the vote for new brand name to take over after Java EE, but it feels much more appropriate to refer to David Blevin‘s excellent description of the process in his blog post Java EE to Jakarta EE.

It has been tough on us keeping these discussions secret since we are all working for an open community and want to share everything. But the importance of securing a name that we as a community can trademark through the Eclipse Foundation makes it well worth the efforts.

A particular think I like about the Jakarta EE name is the significance of Apache Software Foundation and Eclipse Foundation working together for the best of the community.

 

Oracle Opening up Java EE

I just came off a phone call where Oracle were briefing community members about their announcement to open up Java EE. The process has just started and, understandably, there are currently more questions than answers.

  • Oracle finds Java EE to be very successful
  • Millions of applications are using Java EE
  • Oracle plans to continue support of Java EE
  • Java EE 8 will be completed as planned
  • Java EE 8 will also be certified on Java SE 9

By stepping aside and relicensing the technologies to an open source foundation, Oracle hope to address the perception about the openness, agility and flexibility of the current process. What this will actually mean to the Java Community Process (JCP) is uncertain. It will at least have to go through some reform to accommodate the new licensing terms.

One thing to note here, and something that is a really big thumbs up to Oracle, is that they are now informing and including the community and key players in the process from the start.

One Week With IntelliJ IDEA

A week has gone since JetBrains announced the free and open source IntelliJ IDEA Community Edition.

I have been giving it a try and is actually pretty satisfied with it. Even though I am not as familiar with all the shortcuts as I am with NetBeans, it feels comfortable. It does not differ that much. The only problem I have encountered with the default setup is the shortcut for comment/uncomment code (Shift+/). But this is mainly because I am using Swedish or Norwegian keyboard setup where the / is entered by hitting Shift+7. This was easily fixed by adding Ctrl+Shift+7 as a shortcut combination.

I could not find a live template for test methods, but it was easy to create a new one. Here is a simple example:

I am not sure if I like the way multiple projects are handled. If you work with multiple projects in IDEA, each project is opened in a separate frame. In NetBeans you can choose to have multiple projects open in the same workspace and/or group them in project groups. It is probably just a matter of habits, but I like the flexibility to be able to decide that myself and not be forced to open every new project in a new frame.

To conclude, I really like IDEA Community Edition, an will most probably choose use it when I am working on a project where I am in no direct need of Java EE support in the IDE. Otherwise, NetBeans is still my favorite IDE. Eclipse is still out of the question as long as Maven is involved.

IntelliJ IDEA – Now Free and Open Source

Despite the fact that it comes with a price tag, IntelliJ IDEA from JetBrains has since long been a very popular IDE in the Java community. The news that they now provide a free and open source community version was therefore very welcome.

If you have been reading this blog, you probably know that I am quite a big fan of NetBeans and have written quite a few comments about the areas it excels over Eclipse. I have not really tried IntelliJ IDEA yet, but now the Community Edition has been downloaded and installed. JetBrains has provided a detailed comparison between the Community and Ultimate edition.

First Impression
The first impression is that it is fast. The startup time is significantly faster than NetBeans. The editor is responsive, shortcuts and refactorings just as you expect them to be. It sure is ugly, menus and dialogs looks like some left over AWT student project hack from the 90’s, but who cares. After all we are here to code, not to enjoy the view.

Maven
The next test is to open one of my existing multi-module maven projects. Just as with NetBeans, it is just to select the root pom.xml file and open it. All sub-modules and dependencies are resolved just as expected. It scatters a lot of .ipr, .iwl and .iml files all over the place, but I can live with that as long as it updates them with changes from the pom.xml files.

When I check the Module Settings, it seems like the compiler output is set to /classes and not /target as normally by the maven convention. But when i build the project, it uses the maven configuration and puts the compiled classes under target. Why? Well, as long as it works it is okay with me…

Web and Enterprise
As the comparison table shows, there is no support for any web, mobile or enterprise frameworks in the Community edition. Nor are there support for application servers. You would have to buy the Ultimate edition for this. Fair enough, they have to make money somewhere.

Conclusion
The Community Edition of IntelliJ IDEA is the perfect choice if you are building a simple java application. It lacks support for development using web, mobile or enterprise technologies. If you want an IDE that is comparable to for example Eclipse Gallileo or NetBeans you would have to go for the Ultimate Edition. In my view NetBeans is the better choice.

Disclaimer: I  have only scratched the surface here and will continue explore the Community Edition. My opinions may change as I go…