JavaOne Java SE


Here I start a series of posts resuming some of the interesting parts of the conference. I decided to organize them by subject for future reference.

On Introduction to Java 8: JVM, Language, and Platform we heard again about the new Lambdas  and the invokeDynamic features. There were also some other interesting things like the removal of the infamous Permanent Generation Memory (yeah!),  the Streams API, the introduction of the Optional class like the one from Guava to avoid Null Pointer Exceptions, the CompletableFuture and the Nashorn Engine allowing JavaScript to call the Java code and vice-versa.

We also learned a bit about what might be included on Java SE 9:

  • A Dedicated Json-P (processor) API.
  • A Http2 client and a Web Sockets API.
  • Parallel compilation.
  • Modular source code affecting the build and partition of the JDK. This is a part if the endless Project Jigsaw.
You probably already heard that the Technical Keynote was interrupted during the most interesting part… Too much time taken by sponsors. They redeem themselves at the Community Keynote were they repeated the presentation of the planed new features for Java SE 9 like:
  • Project Valhalla. Introduction of Value Types. Like a Class but with a Value like behaviour. They might be passed as an array on the stack and be used with Generics. They will not have object identity, hence no inheritance or polymorphism. We can expect a big performance boost from this.
  • Project Panama. Improvements in the interconnection of the JVM and native code.

Also about Streams was one of my top 5 session, the Parallel Streams Workshop. A Stream is an abstraction that represents zero or more values. It’s not a collection or a series of values. It can be started in a sequential mode, be transformed to parallel and again to sequential. This is particularly useful when used with Lambdas.

Photo from myself.