David R. Heffelfinger

  Ensode Technology, LLC


JavaOne 2016, Day 3, from a Java EE Perspective

Yesterday was day 3 of JavaOne 2016. Oracle and the Java community is planning new features for the upcoming Java EE 8. I've been attending as many Java EE related sessions as I can, to see what the current plans are. All the speakers have made a point to state that nothing is carved in stone, all of this may change as it is still in planning stages.

I started the day attending "Cloud Native Java EE", a tutorial by Payara engineers Mike Croft (@croft) and  Ondrej Mihályi (@OMihalyi). The talk was very good and explained how to deploy Java EE applications to the cloud using Payara Micro.

I then headed over to Antoine Sabot-Durand's (@antoine_sd) session on CDI 2.0. Antoine is the CDI spec lead and obviously knows his stuff. He covered several new features coming to CDI 2.0 such as support for Java SE, asynchronous events, and the ability to add interceptors at runtime to CDI beans. That last one I thought was very impressive, I hadn't ever imagined that would even be possible.

Next I went to a JAX-RS 2.1 session by Ed Burns (@edburns) and Pavel Bucek (@pavel_bucek). The session covered several new JAX-RS features such as non-blocking I/O, server sent events and a reactive client API.

After that I attended "Portable Cloud Applications with Java EE" by Rajiv Mordani, Joe Dipol, Josh Dorr. This session covered how Java EE 9 will standardize the ability to deploy Java EE applications to different cloud providers.

The next session I attended was on Servlet 4.0, delivered by Ed Burns (@edburns), discussing new features of this new version of the Servlet specification. This session started with a brief overview of network programming, Ed took some of us old timers in a trip down memory lane, mentioning things like CGI and Gopher. Of particular interest in this session was Servlet 4.0 support for the HTTP/2 protocol. Ed was very good at explaining how this new version of HTTP addresses several limitations of the current HTTP 1.1 protocol supported by most browsers.

The last session I attended was "Security for Java EE 8 and the Cloud", by Kk Sriramadhesikan. The session covered security challenges posed by cloud environments and how the Java EE spec plans to address it. The new version of the Java EE Security API aims to make it easy for application developers to secure their cloud applications, leaving the details to security experts.

As evidenced by all of these great sessions, major changes are coming to Java EE in the not so distant future, looks like we will have some exciting times ahead.


JavaOne 2016, Day 2 Impressions

This morning I attended Gaurav Gupta's JPA Modeler session, the tool is certainly very impressive and I wanted to learn more about it.

After Gaurav's session, I headed to the Franciscan C/D room to prepare for my own Hands-On Lab, "Java EE, Beyond the Basics". I had some materials (slides, manual, code samples, etc) to copy to the virtual machine's on the laptops and Murphy reared his ugly head. The lab's virtual machines were not booting. I googled the error and learned that as a workaround I had to disable USB on the VMs. With the help of a couple of technicians, we disabled USB on each and every virtual. But I had the files I needed to copy on a thumb drive, how could I copy them with USB disabled? Luckily, I had the files online, therefore we were able to download them and copy them to each and every VM. By the way, all class materials can be downloaded here. Luckily we were able to finish on time, by the time the students showed up the VM's were ready to go.

The session went very well, I covered JSF and EJB, my co-speaker Bob Larsen covered CDI. We were planning to cover JAX-RS as well, but unfortunately we ran out of time. I got some good feedback from the students both face to face and over Twitter, I think the session was well received.

After my session, I attended Linda DeMichiel's session on Java EE 8 Update. Linda, for those that don't know her, is one of the specification leads for the Java EE platform. She covered current plans for Java EE 8, currently scheduled to ship sometime in 2017. A controversial proposal is to drop the MVC API from Java EE 7, as well as JMS 2.1 (JMS 2.0, the current version, would be delivered with Java EE instead).

I then attended "Enterprise Java for the Cloud" by Rajiv Mordani, Josh Dorr and Dhiraj Mutreja. This session was about what is planned for Java EE 9. Againn lots of speculation here, as everything is in early planning stages. One thing that I found interesting is the addition of a standard Java EE API for NoSQL databases, at this moment it is not clear if it will be a completely new API or an enhancement to JPA.

The next session I attended was on JSON-B, the new Java API for JSON Binding. This is a new API scheduled to be included with Java EE 7, this new API will populate Java objects from JSON strings, and vice-versa.

I then skipped the JCP party to attend the "Java EE for the Cloud" Birds of a feather (BOF) session. This BOF session was surprisingly well attended, it started at 7:00 pm, usually night sessions are not that well attended, they compete with parties and with tired, jet-lagged attendees, looks like many people, like myself, care deeply about the future of Java EE. There were very good questions in this session, for example, there is a new security API proposed for Java EE 7, one of the attendees asked about integrating applications using the existing security APIs with the new proposed Java EE 8 API. In this session the comment was made that, although speculation at this time, it is possible that Java EE 9 will do away with the concept of application servers, in favor of Java 9 modules.

There are lots of sessions on Java EE 8 and Java EE 9 during the conference, I will do my best to attend as many as I can, to try and pick the brains of the individuals working on the new specifications for these future Java EE versions.


The Coolest things I"ve seen at JavaOne 2016 so far

Day one of JavaOne 2016 is in the books. Day 1 is typically JavaOne's NetBeans Day, and this year was no exception. Yesterday I had the opportunity to attend several sessions showcasing NetBeans capabilities, I saw features present in the current version of NetBeans, some features are available in the upcoming NetBeans 8.2, others, Java 9 features specifically, will be available in a future version of NetBeans, but you can start experimenting with them today by downloading the NetBeans Java 9 build.

In no particular order, here are some of the coolest things I saw yesterday on day one of JavaOne 2016.

  1. Adding new refactoring capabilities to NetBeans on the fly.
    Michael Nascimento Santos (@mr__m) demoed how to add refactoring capabilities to NetBeans on the fly with Project Jackpot. The specific example he showed was to add the capability for NetBeans to provide warnings when using Joda-Time, and suggest that the code use Java 8's Date/Time API instead. Java 8, for those that don't know, introduced an improved Date / Time API which is much nicer than was what available with Java in earlier versions. Before Java 8, your best bet when working with dates was to use the Joda-Time library. You can see a video of Michael's demo here.
  2. Create complete Java EE applications with JPA Modeler.
    Gaurav Gupta (@jGauravGupta) demonstrated a very cool NetBeans plugin called JPA Modeler. JPA Modeler can generate database tables, JPA artifacts (entities, DAO's etc), and even complete Java EE applications just from a database model. The tool works like those graphical applications that DBA's use to create the database (i.e things like ERWin), but goes beyond the capabilities of these tools by generating a scaffold of your Java EE application. Gaurav is JPA Modelers project lead.
  3. NetBeans JShell Integration
    JShell is a new upcoming feature of Java 9, it allows to write "low ceremony Java", which means, to develop a "Hello World" program, you would just have to type System.out.println("Hello, World"), instead of having to declare a class, create a main() method, etc. The NetBeans Java 9 build includes built-in support for JShell, you can open a JShell window from NetBeans, experiment with your Java code, then automatically create a Java class with your JShell code snippets. Geertjan Wielenga (@GeertjanW) demoed all this, it was jaw droppingly cool. You can read a blog post explaining NetBeans JShell integration in Geertjan's blog.


« September 2016 »

© David R. Heffelfinger