JavaOne Java EE

I managed to find some time to write a bit more about JavaOne. This time about the Java Enterprise Edition (EE).

This area has been very active in the last couple of years. Java EE 7 (JSR 342) was completed on May 2013 and the Java EE 8 (JSR 366) is well underway now, the final release is predicted for the end of 2016. The draft proposal was driven by the feedback from a community survey and the contribution of industry experts, commercial and open source organizations, Java User Groups, and many individuals. The JCP has conducted a very open process in here. Congratulations to them!

Here are my sessions highlights.

On “Jee7 soup to nuts” we got a great overview of the current application servers compliance with the standard, some great tools and the top features, like:

  • WebSocket client/server endpoints (JSR-356).
  • Batch applications (JSR-352).
  • JSON processing (JSR-353) for parsing, generation, transformation and query of JSON messages.
  • Concurrency utilities (JSR-236) provide a standardized way to use concurrency in application components without compromising container integrity.
  • Simplified JMS API (JSR 343).
  • More annotated POJOs, including transactions.
  • JAX-RS Client API (JSR 339). The API for RESTful web services.
  • Default Resources.
  • Faces Flow.

Some other important features of Java EE 7 not emphasized during the session were:

  • JCache (JSR-107). This API was 13 years in the making until a final version was settled to specify the temporary, in memory caching of Java objects.
  • The Web Profile, introduced in Java EE 6 was also updated. This defines a configuration of the platform suited for web applications and allows light weight containers like TomEE.

One of the best sessions I saw was “Developing Java EE 7 applications with Scala”. In a nutshell, you can use @BeanPropery @Inject on Scala! …And even test the application using Arquillian and Glassfish. How awesome is that?

Some sessions gave us insights on concrete applications developed using only the standard APIs, like in “Lessons Learned from Real-World Deployments of Java EE 7” and “Java EE 6 Adoption in One of the World’s Largest Online Financial Systems”. On this last one they described the case of Rakuten, a large vertical company on Japan, spanning businesses from banking, credit card and online retail. Here, a team of around 20 people developed in 3 months a complete financial application using Java EE 6 technologies. They perform the highest number of daily transactions in Japan.

Another really great talk was “Applied Domain-Driven Design Blueprints for Java EE”. Wikipedia does a good job explaining the subject of Domain Driven Design (DDD). In the presentation a parallel is made between the concepts of this architecture and the relevant APIs to use while implementing them with Java EE 7. An example application was open sourced and can be used as a reference.

Now, heading for the future with “Java EE 8”. In this session we got a best guess of what might be included in the next version of the platform:

  • JSON-B for binding. An API to automatically marshal and unmarshal JSON documents. It will have defaults like in the case of the JPA and annotations for overriding. Behind all this is JSON-P.
  • JSON-patch might be introduced. It is a format describing changes to a JSON document. It can be used to avoid sending a whole document when only a part has changed. A typical example is an update to a field.
  • Server sent events based on a long lived http connection to push notifications from the server side. This will use Jax-rs, the API for RESTful web services.
  • Action based MVC for web applications. This follows a similar approach to Angular JS.
  • HTTP/2 support. Multiplexed streams on a single HTTP connection. They will be prioritizable. Header compression support. See JSR-369.
  • CDI. New security interceptors. More then just users and roles. Repositories for rules information will be introduced allowing a more fine grained control like, “is the user allowed at this time?”. Possibility of password alias.
  • Improvements in the messaging service  JMS 2.1.
  • Pruning. Eliminate some unneeded, legacy client interfaces.
  • Management. Revamp JSR-77 and give it a REST interface.

On “Java EE 8 Community Update and Panel” we got a glimpse of the vision for the future and the challenges ahead. There are some ongoing discussions about a configuration JSR and to change the XML based RPC JSR-101 to improve service discovery.

The ongoing trend around Microservices and asynchronous processing to create modular and scalable applications. The need to create a cloud and a mobile profiles were also mentioned. The challenges introduced by other programming languages and the need to continue the evolution of the JVM to accommodate other languages apart from Java .

Photo: myself.