In this blog post I want to share my experiences of this years JavaOne conference at San Francisco. I try to summarize the basic contents and information
from each session that I took. I also try to rate my personal experience on the session (on a scale from 1 (“why are you at JavaOne”) to 5 (“please do not stop talking”)).
All sessions are in a chronological order.
Java EE 7 in action (Reza Rahman – Oracle):
My first session of this year. Reza is a very well speaker and shows once again his next to perfect knowledge of JavaEE. Reza showed his cargotracker application which showcases JavaEE features – I was not aware of this application and like it a lot as this could be the long desired new petstore. Although I was somehow disappointed as the structure of the tutorial was a bit weak and he could not finish all content in time. He was aware of the situation and already pointed this out in the beginning of the talk. I don’t like talks that are expected to not fit into
the alloted time frame (Germans ;)) As there were many questions from the audience, that Reza did not repeat before answering, it was quite hard to follow.
My Rating: 3/5
Chinese people with surgical masks: 1 (really)
I got that there is a new version 3 coming out over 10 years after 2.x was released. The session highlighted how EHCache nicely integrated with JCache to extend the standard with proprietary features. Not too much new. Unfortunately also no performance information although the title suggested this. For me a rather boring session for a high quality conference.
My Rating: 2/5
Hotspot under the hood (David Buck – Oracle)
I was happy that the third session absolutely over-achieved the goals. David Buck, a member of the core engineering team that works on HotSpot and jRockit, discussed in depth about the
locking features in JDK (biased locks, thin/spin locks and fat locks). There was even something new in there for me. Very nice session. Key takeaways: do not try to be smarter than the jvm when locking.
My Rating: 4/5
Invokedynamic for mere mortals (David Buck – Oracle)
Seeing how nice the session with David was before, I re-scheduled to visit this talk. A very nice detailed session about how invoke dynamic works.
Presented in a way that people with some bytecode knowledge could follow nicely. Great talk. Helped me to understand these complicated things.
My Rating: 5/5
Java mixed mode flame graphs (Brendan Gregg – Netflix)
This was one of the talks that I was looking forward to at this years JavaOne and I have to say “what a great talk”. Unfortunately this gem did not get recorded, so I cannot share a recording. I read already on the flame graphs from netflix on their techblog (techblog Netflix). With the extension Brendan did, it is possible to create full flame graphs from a system profiler including java frames for quick sampling based analysis. Brendan showed some real life examples from netflix and how they use flame graphs to fix and analyse them. The audience was great as well and very interesting discussions arose when Brendan asked about problems they encountered in frames that are within the kernel or GC. It really helps to have the JVM architects, garbage collection engineers and great performance guys from industry in one room.
This is what you fly to San Francisco for!
Rating 6/5 😉
From macro to micro and back (Adam Bien)
Adam Bien is usually always a safe bet. The last talks though unfortunately turned into beginners questions and answers on JavaEE, which made me wonder whether I should join or not. I was very happy when Adam said that there will be no questions during the session but this is will be done in the Bof session afterwards. This lead to a great talk on how you can do micro services in Java8
and JavaEE. Adam pointed out that a usual business application does not have the need like amazon or netflix. He showed in 10 min on how you can easily create a basic circuit breaker yourself without the need for a 50MB 3rd party library.
My Rating 4,5/5 (with a 0,5 bonus as I got a shirt, yes I can easily be bought)
Advanced CDI in live coding (Antoine Sabot-Durand and Antonin Stefanutti, RedHat)
Actually this session was great and boring together. The introduction to CDI extensions was perfect. In detail with a very nice pace. Antoine (Spec Lead of CDI) showed a great example on how to integrate dropwizard’s metric system into CDI. Not too small, easy to follow. And it shows what CDI extensions are: a portable extension of JavaEE that does not have to wait for the next JavaEE release, which can be years of. This was the first hour, you absolutely have to watch the recording.
Unfortunately the second half was basically repetition. Antonin shows how to integrate camel with CDI. I got already the idea, so for me this was a waste. In addition I do not know camel, actually most complexity was due to camel.
Rating: 1h 5/5 and 2h 0/5 (like most quentin tarantino movies, honestly why can’t these not just end after say half the time)
How Netflix thinks of Devops (Dianne Marsh, Netflix)
Dianne Marsh, director of engineering, talks about the scale, culture and tooling at netflix. The room is completely full with a long waiting line. Based on the netflix culture of freedom and responsibility dianne showed how development, release, testing is run at netflix. Devops was not defined but you got the understanding at netflix. The developer is also operator (you build it you run it), actually a great definition of devops, is it not? It is also sensible, who can fix the problem best? The developer who built it. Dianne pointed out that it would just be unfair to make the ops deal with the problems that the devs did. As devs do have this responsibility they are given as much freedom as possible. They select the programming language, when and where to deploy, if and how much testing is necessary. In addition the core team provides too long to support them. Just a few numbers from a performance point of view. 2,5 billion metrics per second. One last note: what I actually like best is that dianne pointed out several times that the things netflix do does not nessarily apply to others.
I highly recommend you watching the recording of Dianne.
Going Reactive in java 8 and 9 (Jose Paumard, independent)
Jose paumard did a great talk on java streams in java 8. Key takeaway: A stream is not a collection. It does never hold any data, basically each intermediate element just builds up the pipe and only when the terminal is reached the calculation is started. What I did not ealize is that streams do very nice optimizations. There is the sorted element. The stream understands which type of data you input, so if the collection is already sorted, then no sorting is executed. Primarily the streams in Java8 are pull models, Java9/rxjava provides push models.
My Rating: 4/5
From java code to machine code (Chris Bailey, IBM)
Chris did a very nice introduction on how the bytecode works in java and how it is translated to machine code. Based on this understanding he nicely explained the performance power of inlining methods. Each method call needs 3 instructions to set up and 4 instructions after the methods. Afterwards he nicely outlined other optimizations like loop unrolling and lock escalation. The takeaway is nothing new, the JIT works best with simple (that is small) and easy to understand (that is little branches) code. Also final, private and static helps. What I did not like is that as the audience you got the feeling that code without final is too slow. I believe before you spent lots of time adding final to everything you first ensure that you need the little added performance.
Still a highly recommended talk.
My Rating: 4/5
Work with Hundreds of Hot Terabytes in JVMs (Peter Lawrey, Higher Frequency Trading and Per-Ake Minborg, Speedment)
In this session Peter and Per-Ake showed nicely what benefits applications can achieve if they do not need to access the slow database for each request. Speedment basically allows to automatically read all data from a database to a memory cache and – this is interesting – provide a highly scalable approach to synchronize the data (Reactive persistent caching). Peter’s Chronicle Engine (mostly open source) allows to access this memory data is the most efficient way. This approach scales greatly. The examples they were showing had heap sizes in the range of tens of terabytes. Very nice talk.
My Rating: 4/5
Shenandoah: An Ultralow-Pause-Time Garbage Collector for OpenJDK (Christine Flood, RedHat)
Without a doubt this was the shortest talk of the conference. Christine Flood presented the current status of this new garbage collector. It was a very technical talk from which I got that shenandoah allows to reduce the maximum pause times compared to G1. Currently it has an average pause time of 30ms. If you compare this to azul’s c4 that manages garbage collection completely without pauses, This feels like no big deal to me. I feel there are already enough collectors of ‘the same type’ to choose from. Unfortunately Christine rushed through the talk and was finished after only half of the allocated time. This time could have been spent to explain more of the detail instead of just referring to classes at the university. Funny enough Gil Tene was also in the audience and just smiled as questions like “but my application needs less than 30ms pause times” were answered by Christine with “this is not possible”.
Spring boot for Java EE developer (Phil Webb, Pivotal)
Spring boot co lead PhilWebb gave an introduction into spring boot and showed how an integration of JavaEE features into spring boot is possible easily by adding a small additional maven dependency. As you perhaps know I am not a big fan of convention over configuration and spring boot does use lots and lots of conventions. Feels wrong to me. He also showed how one can run spring boot on an application server.
I liked that there was no feeling of JavaEE verses spring was in the room. Although the introduction was pretty basic and thus too less for such a high quality conference. Phillip was very nice and we had a nice chat after the session about the convention part. He said that it is interesting that I am asking for less magic as before spring boot everybody wanted less configuration.
My Rating: 3/5
Debugging java in Docker containers (Steve Poole, IBM and Daniel Bryant, OpenCredo)
I went to this talk as the talk of Nike on how to ensure the quality over distributed environments was cancelled on short notice. For me the talk was a pure disappointment. Basically Steve Poole (IBM) and consultant Daniel Bryant (OpenCredo) showed that it is possible to connect to a running container with “docker run –it” flag and execute system commands to diagnose problems. A real life example they showed was that the file system on the container was full and they figured that out by df –h … now really … what got me baffled is that 2/3 of the room even took pictures from this slide. In the second half they talked about the difference of running in an container compared within an OS directly. Unfortunately they only scratched the topic without going into details. They concluded that it is sensible for every java developer to learn the system tools and bash. Is thus really news? Me disappointed.
My Rating: 1/5
Legacy code and lambda (Peter Lawrey, Higher Frequency Trading)
From the title I would not have guessed that Peter Lawley gives this talk. Lucky enough I checked all sessions again and found this out. Peter ist just a simple pick, my recommendation: just go there, ignore the title or agenda, it will be great and you will learn lots of things.
And this hold true here too. Peter discussed about a customer engagement were they re-write lot of the code to Java8 and especially lambdas. He dived into much detail on pure functional programming and experience and explained the benefits (and why pure functional programming is most of the time not possible).
He also discussed how lambdas are used within their Chronicle wire realisation which is a lambda based high performance serialisation framework with very constant timings. A very good talk
My Rating: 5/5
Java for low latency environments (Kirk Pepperdine and Peter Lawrey)
Kirk Pepperdine and Peter Lawrey talked about the challenges of using java in low latency environments. Interesting as always!
My Rating: 5/5
Understanding Java garbage collection (Gil Tene, Azul)
Visiting a talk from Gil is and should always be a no-brainer. He described the basic terms of garbage collection in a very understandable way. Even as Azul currently implemented the argue-able best garbage collector in the world, Gil did not do a marketing show here, but nicely showed what the short comings of the current garbage collectors are. He also briefly discussed what C4 of Azul does differently.
Current applications do not make use of the power that memory provides. Memory is basically for free, but a typical Java application just uses 4-8 GB of Heap memory. Servers for around 10.000€ now come with 2 TB of memory, so why do we not use this memory. We could cache the complete database of a typical application just in memory decreasing the latency to access this data by many factors. So why is this? Because higher heap sizes come at a cost: Pause times of garbage collectors.
My Rating: 5/5
Reactive java EE – let me count the ways (Reza Rahman, Oracle)
Reactive… the new buzzword. Reza nicely pointed out that this buzz word is quite old and like all buzz words new topics are just added on top of it. Also he pointed out that Java can address Reactive for quite some time already – out of the box. So there is no real need to use other libraries (except if you have some special requirements).
He showed very nicely how one can get different levels of “reactiveness” in JavaEE in form of MDB, EJB Session Beans, Servlets etc. The talk was recorded so you might want to watch it.
My Rating: 4/5
Community keynote (Stephen Chin, Oracle)
After the usual 30 minutes marketing show of IBM to sell their blue mix cloud, the keynote finally started. I understand that the sponsor wants a nice spot to sell their product, but honestly no other sponsor did it this blatantly. Intel in its keynote even provided information. The next time I come, I will come 30 minutes later. So IBM think on that.
Afterwards the community keynote was a blast! If you visit the javaone do not miss it. Lots of information intermixed with fun, lots of it. Steven Chin traveled through time using a “Doctor Who” style time machine. He traveled for example to the past and discusses with people from the community as if it were this time. Great information and fun.
I uploaded a few videos I took with my smart phone. I try to upload them.
My Rating: 5/5 (really a blast!)
Scaling to 1.000.000 concurrent users on the jvm (Jo Voordeckers, Livefyre)
So Livefyre is basically a B2B company that provide these chatting and forum supports for webpages (like news webpages). Livefyre currently has about 100.000 requests per second, typically requests from end-user to update a chat. He nicely outlined techniques on how this high number of requests can be bundled into just a few serverside requests. Regarding monitoring and analysis Jo pointed out that they used some diagnosis tools and that the instrumentation approach is just too heavy for this kind of load. They now switched to a sampling approach. Currently they use nagios and pagerduty. Monitoring views are created with Grafana that takes the data from statsd/graphite.
My Rating: 4/5
Improving the performance of your java applications (Martin Itzkowitz, Yukon Maruyama, Oracle)
My last talk of this JavaOne. I was looking forward to a talk on Oracle Flightrecorder, but I got a talk on the Oracle performance analyzer, which is not the same tool. The performance analyzer allows to profile applications and nicely show the time being used by java methods. Nothing fancy so far, but the performance analyzer can correlate this with the actual java bytecode and with the machine instructions. The talk itself offered nothing new to me, the presentation was quite boring and the presenter had big problems using the mobile device to jump to the next slide (which lead to situations where he jumped back and forth without knowing where he is). The second given presenter did not say a word in the whole presentation (he was not even allowed to introduce himself).
My Rating: 2/5
So what else is there to say. JavaOne was once again really nice. Great talks intermixed with all the relevant people of the Java community. I will definitely visit again, but perhaps not next year, the flight is quite exhausting 😉
Did you visit as well? Do you share my ratings or do you have any comments?
I learned that there is no such thing as JEE. Funny thing: I am doing JEE for years and nobody told me yet. Thanks Tobias 🙂
I also learned that Martin Thompson and Peter Lawrey are not the same person, sorry Peter 😉