One of the most unique things about Java2Days that one should appreciate is that it is an event run entirely by women - the capable trio of Yoana Ivanova, Iva Abadjieva and Nadia Kostova. It is the only Java conference that I know of for which this is true. Iva's husband Emo Abadjiev also contributes many hours of hard work into the conference. I am very proud to be able to call all these passionate, down-to-earth, genuinely good people my friends and gracious hosts in Bulgaria. Other than now Java Champion Yara Senger of The Developer Conference (TDC) Brazil, Java2Days was the first international conference to invite me as a speaker while I was still an independent. In fact I feel very honored to say that I was the first and last speaker of the very first Java2Days a few years ago. They have been very kind to invite me back every year since. Though I have not always been able to accept the invitation largely due to personal scheduling reasons, I am very glad I was able to speak at Java2Days one more time this year.
My venerable JCP colleague Patrick Curran kicked off the conference with his very important talk titled "The JCP and the future of Java". In the talk he discussed the fundamental importance of standards and the JCP. He also explains how developers should engage with the JCP through programs like Adopt-a-JSR. After Patrick I delivered my new talk titled "Down-to-Earth Microservices with Java EE". The talk has two aims. The first is to try to do the right thing in explaining what microservices really are, what practical value they offer for most of us and when you should consider them (or not). The second aim is to demonstrate why Java EE makes perfect natural sense for developing sensible real world microservices, so called "monoliths" and everything in between. I also briefly explore the work that some parts of the Java EE community is doing to support what I lovingly call "microservices Nirvana" (spoiler: I don't think most of us can or need to achieve this Nirvana state). The slide deck for this talk is below (click here if you can't see the embedded slide deck):
I delivered the same talk at JavaOne and you can watch the video here.
Towards early afternoon I ran a hands-on lab on JMS 2 titled "Down-and-Dirty with JMS 2". The lab was packed and went pretty smoothly. The goal of the lab is to give attendees some first-hand experience with the primary changes in JMS 2. In the first hour or so I did a brief presentation overviewing JMS 2 and went over the JMS 2 Javadocs. The rest of the time attendees actually wrote JMS 2 code mostly by themselves. The slides I use are available on SlideShare (click here if you can't see the embedded slide deck).
The lab materials are hosted on GitHub for anyone to use. The lab uses NetBeans 8, GlassFish 4 and Arquillian. I've deliberately designed the lab materials to be fairly self-guided so you can definitely use the lab materials on your own (or perhaps even run the lab in your own company/JUG) . You are always welcome to reach out to me when needed. In the lab you'll basically be putting in code to finish a set of JUnit tests using JMS 2, starting from incomplete code with comments on what to do (don't worry, a completed solution is also posted :-)). After my lab my friend Ivan led a lab on the upcoming Java EE MVC JSR. The same lab was also run by Ivan at the Bulgaria JUG as part of their Adopt-a-JSR efforts.
The second day in the afternoon I delivered one of my newer talks titled "Reactive Java EE - Let Me Count the Ways!". It aligns Java with core Reactive Programming principles. Though many people don't realize it, Java EE has long had very good support for asynchronous, event-driven, non-blocking scalable systems. This includes features and APIs like JMS, Message Driven Beans, Asynchronous Session Beans, CDI events/observers, asynchronous Servlets/NIO, server/client side JAX-RS and the Java EE concurrency utilities. These features can be used in a highly Reactive fashion especially in conjunction with Java SE 8 lambdas, streams and CompletableFuture. The slides for the talk are here (click here if you can't see the embedded slides):
I presented the same talk at JavaOne. The video for the session is here.
While at Java2Days I met up with my friends at the Bulgaria JUG. The JUG is one of the most active ones in terms of their support for Adopt OpenJDK and Adopt-a-JSR.
All in all it was great to be back in Bulgaria/Java2Days. I hope to return soon and see all of my kind Bulgarian friends once again.