JavaOne is arguably the best Java conference in North America (although it will have some serious competition next year, as Devoxx US launches on this side of the Atlantic). I’ve had the pleasure of attending this great event 2 years in a row and it has proven to be a very rewarding experience. It broadened my horizons, motivated me to look into all these exciting technologies out there, and put tools on my map that I would not have been aware of otherwise. It was also a great opportunity to talk to people about my technical decisions and get opinions from experts in the field, people who have been there before you. Since JavaOne 2015, which was particularly spectacular, having celebrated 20 years of Java, at DNAstack, we’ve implemented several practices and started using a few of the technologies I was exposed to during the conference. As such, the event had a direct impact on our business, and I expect a similar outcome from this year’s sessions.

For those of you who haven’t attended the conference yet, the event is run by Oracle as the primary custodian of Java. It takes place annually in San Francisco, California, alongside a bigger event – Oracle OpenWorld. JavaOne is more community-oriented and typically features speakers from various companies talking about various technologies affecting the JVM ecosystem. As a developer, this is the event you would want to attend. Oracle OpenWorld is focused on Oracle products. If you work for a company using Oracle’s stack and are interested in getting the most out of their products, this event is for you. You can also get a relatively cheap (well, compared to the price of the actual ticket) add-on to your ticket which allows you to attend sessions from both events. Recently, Oracle started live-streaming some of the talks, so you can get access to a fairly big chunk of content for free from the comfort of your home. Check out their YouTube channel. The events run for 5 days, usually Sunday to Thursday. Monday to Thursday are the main conference days, while Sunday has fewer sessions and is focused on user groups and other often less technical sessions. This is the day I refer to as Day 0.

Session 1: Refactoring your code with Java 8: Functional programming to the rescue

Refactoring to functional was the topic of the first session I attended. The talk was given by Eder Ignatowicz, who did a good job summarizing a selection of sort of traditional (Gang of Four) design patterns and explaining how you can do them better in Java 8. The general structure of the talk was: this is what this pattern is aboutthis is how it’s traditionally implementedthis is how functions and a few related interfaces make it nicer and easier to implement. A few interesting patterns the talk was focused on included Strategy, Decorator, Template and currying.

If I had to provide advice based on this talk to people who weren’t able to attend it, I would say:

Session 2: Microservice evolution: Breaking your monolithic database

Having a degree in parallel and distributed systems as well as professional experience designing distributed software and scalable services, I find the whole microservice movement very interesting, and I couldn’t resist the temptation to attend a few sessions on microservices at JavaOne. The first one was given by Edson Yanaga. The title of the talk is very intriguing and if you’ve ever tried splitting a monolith into a set of independent services, you probably, like me, recognize database separation as the hardest part of this task. Especially if you’re using JPA and rely on transactions.

The talk started with a quote from Forbes: Now, every company is a software company. I really liked it. The first half of the talk was focused on smallest-possible-batch-size migrations at the SQL level, while the second half outlined approaches to extracting a microservice database. Although the talk didn’t touch JPA, which is something I was really interested in, and it was focused more on replicating/viewing a part of a monolithic database for a microservice rather than splitting an existing database directly, it was a very good talk.

If I had to provide advice based on this talk to people who weren’t able to attend it, it would be:

Session 3: Java and DevOps: Supercharge your delivery pipeline with containers

The third session of the day was a panel session heavily relying on audience participation. There was no agenda, just a general topic of containers. The first half of the session consisted of audience asking questions, while the panel answered the questions one by one in the second half. Overall, the questions were focused on Docker and were relatively simple. A few too many questions were collected at the beginning, which left very little time for the individual answers. As such, the panel couldn’t really dive into details, That was a pity, because the panel consisted of a few great engineers, and deeper insights into several of the points could have been very useful. Overall, you probably wouldn’t learn a lot of new things during this session, unless you don’t work in a hands-on technical position or have only basic high-level knowledge of Docker.

Session 4: Coding with the best: Learn how great developers code their lives

This panel session was one of the few non-technical sessions at JavaOne. The basic premise was interesting – come and listen to experienced developers talk about what affected their careers and how they think you can improve yours. Although I prefer technical talks in general, this session was fun to listen to, and even emotional at times.

Some advice for improving your career that stuck with me from this session:

Session 5: Java keynote

Keynotes at JavaOne are traditionally very good, although very Oracle-centric. They’re typically 2.5 hours long and feature high-level Oracle employees and executives talking about what is new in Java, announcing future plans, and emphasizing Oracle’s contributions. A few guests from the rows of Oracle customers are always invited to briefly talk about how Java and Oracle helped their business.

The keynote was split into 3 parts – Java, Intel, and Visionary keynotes. The Java part included a few interesting demos of Java 9 and was primarily focused, of course, on Jigsaw and JShell. I was hoping Oracle would address why the development of Java, and primarily Java EE, stopped earlier this year, but my wish was not granted. The Intel part described the impact of Java and its optimizations on various industries. Anita Sengupta’s Visionary part on Mars discovery, Curiosity and software that enabled its successful landing on Mars back in 2012 was a great addition to the program this year, putting our struggles with ordinary bugs into perspective.

The slides from the keynote are available here.

Session 6: Java technology and ecosystem: Everything you wanted to know

This user group session was another panel discussion, this time around Java in general, really. It was a very high-level, almost non-technical session, partially touching topics from other talks, such as containers and microservices. Overall, this was a very introductory session, and unless you’re new to this space, you probably wouldn’t learn much during it.

Session 7: Enterprise modeling of MVC and Java EE artifacts

The last session of the day was almost strangely focused on a few things. It introduced JSR-371 (MVC 1.0) specification with a few code samples, followed by a seemingly unrelated demo of JPA Modeller and introduction to JSF.

While I’ve never found a use case for tools like JPA Modeller in my work, I did find the part about MVC interesting. To get the gist of what it was about, I’d give the following piece of advice:

You can download the slides this session here.

Aside from the high-quality sessions, JavaOne is also known for the amount of entertainment provided as part of the event. The welcome party on Day 0 featured good food, better drinks, and the amazing American Authors. Although noticeably many people didn’t show up for the party or didn’t seem to care about the band, I genuinely enjoyed their performance from the first row, and have to compliment Oracle for inviting them. Well done!

For information about other sessions at JavaOne, check out JavaOne: Day 1, JavaOne: Day 2, JavaOne: Day 3 and JavaOne: Day 4.