Day 3 of JavaOne 2016 was a bit shorter than other days as far as the number of sessions is concerned. The talks wrapped up at 5:30pm and attendees moved to the AT&T Park for the Oracle Appreciation Event featuring Gwen Stefani and the legendary Sting. The event was amazing, and seeing Sting perform all his classic hits was a great wrap-up for the conference.
Session 1: Top 50 Java EE 7 best practices
My day started with a session providing tips for implementing applications using Java EE 7. The talk was modelled after EJB 3 in Action, Second Edition and given by the authors of the book. Unsurprisingly, the presentation consisted of 50 tips covering general best practices and several specifications, including JAX-RS, JPA, EJB, CDI, JAXB, and JAX-WS.
Although you might know some of the tips just through your practical experience with the technologies, this presentation is definitely worth checking out. You can find the slides here.
Session 2: Refactoring to Java 8
I decided to attend this session despite the fact that I’m pretty familiar with Java 8. To be completely honest, it was mainly because of the speaker, Trisha Gee from JetBrains, who is a regular on my favourite podcast. I was expecting the topic to go beyond an IDE, but it was focused on IntelliJ IDEA, and basically consisted of showcasing a few different types of Intellij IDEA inspections and some automated refactoring. The talk ended with a performance evaluation trying to answer the question of whether you should refactor to functional. The outcome of the evaluation could be summarized as it depends, which was a bit disappointing, but not unexpected.
You can find the slides here.
Session 3: Let’s get lazy: Explore the real power of streams
Another session by Venkat Subramaniam, this time on streams. The session started with an overview of lazy evaluations in functional languages while pointing out the differences between applicative and normal order, e.g. Java vs. Haskell. Later in the talk, Venkat pointed out how we can get close to the functional behaviour in Java 8 using Suppliers and Stream’s iterate.
Session 4: Kubernetes for Java developers
This 2-hour hands-on lab session followed a pretty comprehensive tutorial on Kubernetes. It covered explanation of the basic concepts (pods, replication controllers, labels, services, persistent volumes, rolling updates) and showcased some of the more advanced features of the system (scaling, health checks, configuration, credential management) using OpenShift.
Check out the slides, the complete tutorial we used, and the source code of the demo application.
Session 5: A few hidden treasures in Java 8
This was a great session by Venkat Subramaniam, in his typical no-slide live-coding style. The topic of the talk could be summarized as cool features of Java 8 that are not streams and lambdas. Venkat showed a lot of stuff on a few examples. Some interesting things to remember/check out:
- StringJoiner, particularly the
- Method references.
- Default methods and solving conflicts between them.
- Sorting with Comparator.comparing, thenComparing and reversed.
- Grouping with Collectors.groupingBy.
- Evaluating Predicates with test and combining them with and/or.
- Map’s convenient compute, computeIfAbsent, computeIfPresent and merge methods.
- Random’s doubles, ints and longs producing streams.
- Controlling stream parallelization using ForkJoinPool.
Session 6: Field notes of a command-line ninja
The last session of the day was a low-key demo of some (mostly) Bash commands developers might find interesting. Although a bit chaotic, the demo included some interesting tricks, mostly focused around history search and expansions.
You can check out the slides here.
For information about other sessions at JavaOne, check out JavaOne: Day 0, JavaOne: Day 1, JavaOne: Day 2 and JavaOne: Day 4.