Wednesday Dec 10, 2014

JavaOne 2014: A Small Step in the Right Direction?

JavaOne 2014 San Francisco was held September 28 – October 2. I am proud to say this is my eight JavaOne as an attendee, my sixth one as a speaker, my third one as an Oracle employee, my second one as a member of the content committee and my first one as a track lead. I think this was a particularly good year for JavaOne in many ways and it's certainly been a privilege to try to do justice to the crucial role of Java EE track lead. In this hopefully relatively brief post I'll share my thoughts, observations and experiences at JavaOne 2014. The astute among you may have noticed that this post is belated. It's a reflection of the fact that's it's been a very hectic few months in terms of US and International conferences and in fact it'll be the very worthy first of a handful of belated trip reports now that the seemingly unofficial Java conference season towards the year's end is over.

A Look to the Past, A Look Ahead
There's very little doubt JavaOne is the largest and most important Java conference in the world. In fact it is critical to continuing to strengthen and growing the Java ecosystem itself. Having taken part in organizing a few other fairly large conferences and attending/speaking at numerous others, the JavaOne content is definitely of outstanding quality even as compared with many other conferences of similar magnitude. It's clear the best and the brightest in the Java ecosystem still see participating in JavaOne as a badge of honor. In terms of quantity, JavaOne beyond any doubt has the largest concentration of Java content anywhere. That all being said there's no denying the fact that JavaOne today is a relative shadow of what it used to be in the early days of Java. Perhaps to some degree that's alright. After all Java is not a spring chicken debutante any more and Java is probably the most widely covered topic at events worldwide today. Nonetheless JavaOne is the single most prestigious gathering of the minds with a sole focus on all things Java. Keeping that fact in mind we must do everything that we reasonably can to keep it the magnate event for Java developers everywhere. As they say, it is far more difficult to stay on top than to get there. To that end we did a few things differently this year that seems to have paid off.

How JavaOne 2014 was Different
There were a number of important encouraging signs from the very beginning for JavaOne 2014. We had the highest number of JavaOne CFP submissions in the recent few years. In fact the CFP process was so effective that unlike many previous years there wasn't a need to extend the CFP deadline. As a net result we at least maintained or improved upon both the quality and quantity of content. The event was highly professionally run as it always has been in terms of venue, scheduling and organization. Most encouragingly we grew the attendance numbers at a more rapid pace than we have in the past few years while still growing or maintaining a community feel. These are trajectories we should try and maintain in the coming years to keep JavaOne what it should really be.

There can be many reasons why we saw what we saw - economic cycles, pent up demand for developer training, a desire to learn more about the Java SE 8 and Java EE 7 releases, a desire to preview the newly minted Java EE 8 or Java SE 9 effort and so on. We would like to hope the small handful of things we did differently at least helped in getting things in the right direction:

  • We started the CFP process earlier, provided as much details as possible and kept the community in the loop with periodic updates. For the Java EE track, we did this via the Aquarium blog as well as the official JavaOne blog.
  • JavaOne like many larger conferences has traditionally taken a very egalitarian (perhaps too egalitarian) approach to speakers. The reality as we all know though is that not all speakers are created equal. There are some speakers out there that deserve recognition by way of an individual invitation to speak at the conference on a topic of their choice. For the Java EE track we had a small number of these well-deserved speakers that bypassed the official CFP process altogether: Adam Bien, David Blevins, Patrycja Wegrzynowicz, Arun Gupta and Anatole Tresch. Besides these Java EE rock stars we also reached out to a much larger group of people and cordially invited them to join the CFP (you know who you are). We announced these rock stars and their talks as soon as we could.
  • We required a video of either the submitted session or a brief overview of the session as part of the talk proposal. The goal of this was in fact to level the playing field for new or inexperienced speakers.

What we did in the Java EE Track
There are a few more things we did differently in the Java EE track specifically in addition to the general changes to JavaOne:

  • The quality of the program committees is a crucial part of the overall quality of JavaOne that needs to improve far more. Ideally we should be aiming to minimize folks from vendors (Oracle included specially) and folks that are more "honorary" than "participatory" in favor of folks genuinely passionate about actively contributing to the Java EE track in the community - including folks that help put together other successful conferences. We made some gradual efforts towards this goal this year.
  • In the same vein we did our best to trim down speakers and content from Oracle and other vendors in favor of folks from the community. This balance is crucial in keeping JavaOne the conference for the Java community and not a vendor sales conference.
  • As soon as we could we recorded and promoted video interviews with key JavaOne speakers about their sessions via The Aquarium and the JavaOne blog. We tried to do as many interviews as we could right up until the beginning of the conference. The folks we had time to highlight this year: Arun Gupta, Adam Bien, David Blevins, Ed Burns, Antoine Sabot-Durand, Kito Mann and Greg Wilkins.

There were some specific goals that we wanted to accomplish in the track that we reached to various degrees:

Upcoming JSRs: One of the unique value propositions for JavaOne is that it is the best place to learn about what is ahead in terms of standard Java technologies right from the source - the spec leads themselves. This was particularly true this year with Java EE 8 JSRs submitted right before JavaOne or shortly thereafter. Luckily, we were able to put together a number of such sessions:

Existing JSRs: In order to continue to grow the Java EE community, it is vitally important to cover existing JSRs at JavaOne, especially as they pertain to solving new and emerging problems. We had a number of such sessions at JavaOne, most led by the community itself:

Real World Case Studies: As we grow the Java EE community it is becoming more and more important to highlight adoption stories, case studies and migrations from other technologies. Whatever the underlying factors this year was particularly good for this. In fact there were a number of such submissions that we could not accept this year that we hope will be resubmitted in the coming years:

Best Practices and Design Patterns: Beyond learning Java EE APIs, it is important to understand how to properly use them, which is where best practices and design patterns come in. This year we had a decent number of such sessions in the track but we could hope to improve upon this:

The Java EE Ecosystem: The ecosystem that builds upon Java EE APIs is critically important in keeping the platform strong. We always hope to highlight such content and wish there were more submissions along these lines:

Labs and Tutorials: Hands-on-Labs and tutorials are the unsung heroes of JavaOne. They provide opportunities to gain first hand experience with Java EE technologies, do deep dives or acquire basic knowledge. We didn't do too badly with labs and tutorials this year but this is another area where we could use better quality submissions:

Fostering Java EE Community Speakers: One of the key reasons attendees come to JavaOne is to hear from Oracle's Java technologists. Unsurprisingly the most well attended sessions tend to be led by Oracle speakers. This year was no exception and we had the usual strong showing of Oracle speakers: David Delabassee, Geertjan Wielenga, Bruno Borges, Yoshio Terada, Bill Shannon, Linda Demichiel, Ed Burns, Manfred Riem, Santiago Pericasgeertsen, Marek Potociar, Nigel Deakin, Pavel Bucek, Heather Vancura just to mention a few. In order to continue to grow the Java EE community however it is vitally important to foster a greater number of community speakers that advocate Java EE. While this has gotten much better over the years, we certainly need to do more at JavaOne to encourage speakers to take up Java EE as a topic. These are just some of the community speakers that we were proud to host this year:

  • Adam Bien (JavaOne Rock Star, Java EE author, speaker, consultant)
  • David Blevins (JavaOne Rock Star, Apache TomEE project lead)
  • Patrycja Wegrzynowicz (CTO, Java EE researcher)
  • Antoine Sabot-Durand (CDI specification lead, Red Hat)
  • Kito Mann (Java EE author, speaker, consultant)
  • Peter Pilgrim (Java EE author, speaker, consultant)
  • Steve Millidge (London GlassFish User Group, C2B2 Consulting, Paraya)
  • Ryan Cuprak (JavaOne Rock Star, Java EE author, speaker and JUG leader)
  • David Heffelfinger (Java EE author, consultant)
  • Josh Juneau (Java EE author)
  • Mohamed Taman (Duke's Choice Award Winner, JUG leader)
  • Ivan St. Ivanov (Forge Committer, JUG leader)
  • Roberto Cortez (Consultant, JUG leader)
  • Michael Remijan (Java EE author)
Besides presenting my own sessions (detailed below) I tried to audit as many sessions as I could (all content committee members are really supposed to do that but sadly few actually do). Everything I saw was good in the Java EE track and I scouted a few very good folks I have made a point to follow up with (you know who you are).

What I did at JavaOne
The last few JavaOnes have been fairly hectic for me and this year was no exception. Frankly that's exactly how I prefer it. As a speaker (and a host in this case) I am there to deliver as much as I possibly can for attendees. Here's what kept me busy this year:

Keynote Demo: This year I helped put together the keynote demo. The demo consisted of an end-to-end Java story for vehicle telemetry. At the lowest level, Java Embedded was used to collect vehicle sensor data such as speed, acceleration, geo-location, odometer reading, engine temperature and the like. Some of this data was incorporated into a pretty slick vehicle on-board dashboard interface using Java FX. All of the sensor data got forwarded real time to a centralized IoT (Internet of Things) gateway. The idea of the IoT gateway is that any third party could securely connect to the gateway to subscribe to collated vehicle sensor data instead of connecting directly to a vehicle. Once a third party endpoint is registered for subscription, sensor data is forwarded to the endpoint via REST calls. Third parties could be auto makers, insurers, service shops and so on. For the demo we created a third party back-end system that put the sensor data on a cool real time line graph on an HTML 5 page. The back-end would also issue warnings to the HTML 5 interface as well as issue an SMS message to any registered users when significant events are detected such as an engine or mechanical problem (for example an imminent required tire or oil change).

The back-end part is what I wrote using Java EE 7 and GlassFish 4.1. The sensor data is received from the IoT gateway using an asynchronous JAX-RS endpoint, processed and forwarded to a WebSocket end-point using CDI events. Any external communication such as SMS is done in a completely non-blocking fashion using the Java EE 7 concurrency utilities. Finally the WebSocket endpoint sends the processed data asynchronously to the HTML5/JavaScript front-end over JSON using the Java API for JSON processing. EJB provides thread-safety, pooling, bandwidth-throttling and monitoring for all back-end components. The Java EE 7 powered back-end implements the basics of architectural concepts like Microservices, Reactive Programming and Complex Event Processing important to scaling most back-ends in an IoT system. Though we developed the demo for JavaOne it could potentially be reused elsewhere. Who knows - perhaps you'll get to see it in person at some point at a conference?

Sunday: Besides the keynote demo, I started JavaOne this year with hosting the Sunday GlassFish community events. This has long been the rallying point for GlassFish fans at JavaOne and this year was no exception. This year I broke up the GlassFish events into two distinct parts with a small break in the middle:

In the first session, John Clingan presented the GlassFish road map and we had the annual Oracle GlassFish executive panel. John talked about Java EE 7, GlassFish 4.1, Java EE 8 and GlassFish 5. The panel this year consisted of John, Mike Lehmann and Cameron Purdy. I asked a few set questions to the panel and then opened the panel up to community Q & A. If you haven't yet attended the GlassFish Sunday event, the panel is basically our annual town hall meeting. This session was packed (much more so than last year) and went extremely well.

In the second session we heard a GlassFish 4.1/Java EE 7 adoption story and did a deep dive into a GlassFish feature. The adoption story is something we've had for a few years now. This year we had a particularly cool story. Mohammed Taman shared the story of the first known real world deployment of Java EE 7 on GlassFish 4.1. Mohammed detailed a highly innovative and important project he helped develop for the United Nations High Commissioner for Refugees (UNHCR) and the World Food Program (WFP). The project won the Duke's Choice Award for 2014. Mohammed is a consultant, Morocco JUG member, Egypt JUG leader, JCP executive committee member and expert group member for multiple JSRs. He has been a very active participant in the Adopt-A-JSR, Adopt-OpenJDK, and FishCAT programs.

A new component to the community events we decided to add this year is a technical deep dive. We wanted to show the nuts-and-bolts of a cool GlassFish feature presented by an actual GlassFish engineer. Martin Mares shared the details on the GlassFish extensible command line framework. It is an extremely innovative feature that allows an end user to extend and customize the rich command line capabilities built into GlassFish. Martin is now leading the Java EE 8 Management JSR and much of the work he presented actually forms the basis of that upcoming standard.

Like the first session, the second session was also packed (again a significant improvement from last year when some folks left early). Like past years, we actually created a dedicated page on for the Sunday events that's worth checking out if you are interested.

In the evening we hosted the traditional GlassFish Party at the Thirsty Bear. The party was completely packed until the very end even despite the fact that we got a bigger space this year! I gave out a few Java EE 7 shirts and posters to a few very well deserving folks in the community (you know who you are).

Monday: I spent most of Monday auditing a handful of sessions on the Java EE track including Linda's Java EE 8 session, the batch lab and Josh's Java EE 7 recipes talk. Everything seemed to go extremely well. In the late afternoon I manned the "Meet the Experts" table. The idea here was to have folks talk to us about various upcoming Java EE 8 APIs as well as Adopt-a-JSR. The idea was good but I think we got only mixed results from the effort. Next year we may need to better publicize it. In the evening I went to the JCP party which is always lively and a great way to network with some key folks in the Java community. I skipped the GlassFish BoF this year as I had a subsequent very late BoF with Steve titled Calling All GlassFish Users and User Groups: Please Contribute to GlassFish. Steve and I talked about the various ways to contribute to GlassFish. Steve did a brief demo on how easy the GlassFish source code was to setup and build. Unfortunately the BoF was very lightly attended probably because it as so very late in the evening (9 PM - 10 PM).

Tuesday: I started Tuesday out with a bang with my two hour JavaScript + Java EE 7 tutorial titled Using JavaScript/HTML5 Rich Clients with Java EE 7. This tutorial is basically about aligning EE 7 with the emerging JavaScript ecosystem (specifically AngularJS) using some of the HTML 5 centric features like JAX-RS, WebSocket and JSON-P along with the rest of the EE back-end stack. The slide deck for the talk is here:

The demo application code is posted on GitHub. The code should be a helpful resource if this development model is something that interests you. Do let me know if you need help with it but the instructions should be fairly self-explanatory. The talk was packed and seemed to be very well received.

Later that morning Heather, Ed, Mohamed and I had our session on Adopt-a-JSR + Java EE titled Adopt-a-JSR for Java EE 7 and Java EE 8. Heather covered the Adopt-a-JSR program at a high level, Ed talked about the program from the perspective of a spec lead while Mohamed covered the adopter perspective. I finished by talking about Adopt-a-JSR in the specific context of Java EE 8. The talk was very good but unfortunately only moderately attended mostly by folks already involved in the program in one way or the other. Next time we need to figure out how to better boost attendance for these kinds of talks at JavaOne. I audited a few more sessions after the talk before manning the "Meet the Experts" table once again after lunch.

Most of the rest of the afternoon I audited a few more sessions before heading over to Oracle OpenWorld for a BoF on using WebLogic 12.1.3 with Arquillian. The BoF was a joint effort between me and Aslak Knutsen (Arquillian project lead). Given that OpenWorld has a weak reputation for developer centric topics, our expectations were fairly low. To our surprise, the talk was pretty decently attended though the audience was definitely more aloof than at JavaOne with very few developers in the audience. I finished the day off with briefly going to the Tomitribe party and chatting with a few friends.

Wednesday: After the hectic Tuesday I felt pretty tired and thought I'd rest a bit the next morning and catch up with email before my next session. I arrived at JavaOne shortly before lunch and delivered my next talk in the afternoon on Cargo Tracker/Java EE + DDD. This talk basically overviews DDD and describes how DDD maps to Java EE using code examples/demos from the Cargo Tracker Java EE Blue Prints project. Below is the slide deck for the talk:

The talk was totally packed, there was very good audience interaction and I got some excellent feedback from a few folks afterwards. After the talk I headed over to a book signing for the second edition of EJB 3 in Action along with my co-authors Micheal and Ryan. It was great to get a chance to catch up with them and the book signing went well at the JavaOne book store. I did not really have much else scheduled for the day so I headed back to my hotel for a quiet evening preparing for the next and last day of JavaOne.

Thursday: The last day of the conference I started by attending the Java EE 8 panel in the morning. The panel went pretty well but was surprisingly modestly attended, especially compared to previous years. After the panel I audited a few more sessions including the one on migrating from Spring to Java EE 7. The session was very well attended and participated by other folks also apparently in the middle of such a migration. Let's hope those folks submit sessions sharing their experiences the coming years! I finished off the conference with my talk on effectively testing Java EE applications using Arquillian. The talk basically goes through each major Java EE API and demonstrates through code how the API could be tested using Arquillian. The slides for the talk is posted below:

The code for the talk is available on GitHub. If you are looking into testing Java EE applications using Arquillian, the code should be very helpful to you. Feel free to give me a holler if you need any help. The session was very well attended despite the fact that it was one of the last sessions of the conference and I got some very good feedback afterwards. It was the perfect way to end JavaOne 2014!

JavaOne 2014 will Come to Your Computer - for Free!
I want to remind all of you that we make a point to make JavaOne content openly available to all. Some of the recorded sessions have already been made available and more is on the way. In fact, we've already started highlighting these sessions on The Aquarium blog and will continue to do so in the next coming months, so do stay tuned.

On a more personal note, I did get to do something that's been on my to-do list for a while on this trip - hike Mount Diablo (yes, that's "Devil Mountain" in Spanish). The mountain so close to and so visible from the Bay area is pretty unique - although it's fairly short at only about 3,800 feet, it is said that you can see the second largest amount of the surface of the earth from it's tallest peak. That's because the area surrounding the mountain is incredible flat increasing visibility dramatically. This is also true of Mount Kilimanjaro - the place where you get to see the most amount of the surface of the earth (to top it off Mount Kilimanjaro is the tallest mountain in the African continent by a good margin). What I find really fascinating is actually the beautiful semi-arid landscape in the Diablo Mountain chain (see for yourself in the pictures I took below). I've seen it many a time while driving around the Bay area and it was awesome to finally see it up close and personal. If you ever plan to take the hike yourself be cautious - the hike is long and strenuous with many successive rapid elevation changes both upward and downward.

All in all this was a great JavaOne that we hope we repeat or improve on in the coming years. Hopefully you'll make the JavaOne pilgrimage one of these days too if you haven't already? For those of you that did attend it would be great to hear what you though especially with regards to Java EE?

Wednesday Jun 18, 2014

JavaOne Java EE Track Content Finalized (A Detailed Preview)

I am very pleased to share with you that the JavaOne Java EE track content is now finalized. In this brief but detail-rich blog entry I want to tell you a little bit about the track, key content and star speakers this year. As a reminder, JavaOne 2014 is going to be held on September 28 – October 2 in San Francisco and you can register here.

Thank You, Regrets and Being Persistent
First and foremost I want to personally thank everyone that took the time to submit carefully crafted submissions to the track. Your passion and dedication has helped us construct a very strong offering for the community at large. It was a privilege to review all your sessions. JavaOne is a key part of the global Java community far beyond the walls of Oracle and all of you are a large part of keeping it successful. Indeed this year we are proud to say we have been able to minimize Oracle speakers in favor of folks from the community as well as real world stories from your fellow Java EE users.

For the folks that got sessions accepted, I look forward to your excellent delivery at JavaOne. I want to especially thank the folks that did not get sessions accepted, I ask that you don't get discouraged and I hope that you still consider coming to JavaOne. Not getting a session accepted doesn't mean your proposal wasn't great - it simply might mean the track was fortunate enough to have submissions this year that perhaps were a better fit in one way or the another. It is all the more reason to further sharpen your proposal and try again next year. In the meanwhile if you have questions never hesitate to reach out - helping you helps JavaOne in the long run.

Some Key Content
A following are some of the key sessions that we accepted into the track, broken down by some useful but arbitrary categories. The full content catalog should be available to you soon so you can take a look at it and perhaps book your sessions:

New and Upcoming Java EE JSRs

  • Java EE 8
  • Java EE 8 Community Update and Panel (major vendors and community)
  • HTTP 2 Comes to Java: What Servlet 4 Means to You
  • Using the New JCache
  • Java API for JSON Binding: Introduction and Update
  • Let's Talk!
  • The Path to CDI 2
  • Going Farther with CDI 1.2
  • A First Draft of Java EE Configuration
  • What Do We Want in JMS 2.1? (Birds-of-a-Feather)
  • What's Next for JSF? (Birds-of-a-Feather)
  • What's Next for the WebSocket API?
  • JSON Pointer and JSON Patch: Updates to the Java API for JSON Processing
  • JSR 347 Reboot: An Update on a Standard Data Grid API for Java (Birds-of-a-Feather)
  • Meet the Java EE Specification Leads (Birds-of-a-Feather)

Real World Case Studies

  • Java EE 6 Adoption in One of the World's Largest Online Financial Systems (Rakuten)
  • eBay, Connecting Buyers and Sellers Globally via JavaServer Faces
  • Bean Validation: Practical Examples from a Real-World Java EE 7 Application (Harvard University)
  • Migrating a JSF-Based Web Application from Spring 3 to Java EE 7 and CDI
  • JPA Gotchas and Best Practices: Lessons from
  • Lessons Learned from Real-World Deployments of Java EE 7 (WildFly/JBoss/Red Hat)
  • Java EE 7 Batch Processing in the Real World

Best Practices and Design Patterns

  • Java EE Game Changers
  • Java EE 7 Recipes
  • 50 JMS 2 Best Practices in 50 Minutes
  • Lazy Versus Eager Loading Strategies for JPA 2.1
  • 50 EJB 3 Best Practices in 50 Minutes
  • JavaServer Faces Antipatterns and Best Practices
  • Applied Domain-Driven Design Blueprints for Java EE
  • Java SE 8 Features for Java EE 7 Developers
  • Java EE 7 and Spring 4: A Shootout


  • Adopt-a-JSR for Java EE 7 and Java EE 8
  • GlassFish Community BOF
  • Calling All GlassFish Users and User Groups: Please Contribute to GlassFish
  • PrimeTime JSF with PrimeFaces 5
  • Apache TomEE, Java EE Web Profile, and More on Tomcat

Labs and Tutorials

  • Java EE 101 (Hands-on-Lab)
  • JSR107: Come, Code, Cache, Compute! (Tutorial)
  • JavaScript/HTML5 Rich Clients Using Java EE 7 (Tutorial)
  • Hybrid Mobile Development with Apache Cordova and Java EE 7 (Tutorial)
  • Building Secure Applications with Java EE (Tutorial)
  • JSF 2.2 Deep Dive (Tutorial)

Some Key Oracle Speakers

  • David Delabassee (Java EE evangelist)
  • Geertjan Wielenga (NetBeans evangelist)
  • Bruno Borges (Java EE evangelist)
  • Yoshio Terada (Japanese Java EE evangelist)
  • Bill Shannon (Java EE specification lead)
  • Linda Demichiel (Java EE specification lead)
  • Edward Burns (JSF, Servlet specification lead, author, speaker)
  • Santiago Pericasgeertsen (JAX-RS specification lead)
  • Marek Potociar (JAX-RS specification lead)
  • Nigel Deakin (JMS specification lead)
  • Heather Vancura (JCP)

Some Key Community Speakers

  • Adam Bien (JavaOne Rock Star, Java EE author, speaker, consultant)
  • David Blevins (JavaOne Rock Star, Apache TomEE project lead)
  • Arun Gupta (JavaOne Rock Star, director of developer advocacy, Red Hat)
  • Emmanuel Bernard (Bean Validation, Hibernate OGM lead, Red Hat)
  • Antoine Sabot-Durand (CDI specification lead, Red Hat)
  • Pete Muir (CDI specification lead, Red Hat)
  • Greg Luck (JCache, Ehcache lead, Hazlecast)
  • Cagatay Civici (PrimeFaces lead)
  • Kito Mann (Java EE author, speaker, consultant)
  • Anatole Tresch (Java EE configuration specification lead, Credit Suisse)
  • Patrycja Wegrzynowicz
  • Peter Pilgrim (Java EE author, speaker, consultant)
  • Steve Millidge (London GlassFish User Group, C2B2 Consulting)
  • Ryan Cuprak (JavaOne Rock Star, Java EE author, speaker and JUG leader)
  • David Heffelfinger (Java EE author, consultant)
  • Josh Juneau (Java EE author)

Cloud and Other Tracks
Besides the Java EE track, there is also our sister cloud track as well as of course all of the other great tracks at JavaOne. The cloud track has some excellent content this year such as SaaS, PaaS, IaaS, multitenancy, virtualization, OpenStack, NoSQL, MongoDB, Neo4j, Big Data/Hadoop, DevOps, jclouds and modularity/OSGi delivered by great speakers like Alexis Moussine-Pouchkine (Google Developer Advocacy, former Java EE evangelist) and Mark Little (JBoss CTO, Red Hat Vice President). Across the other tracks we have many other world class speakers and unique content relevant to Java developers such as Java SE 8, NetBeans, agile and JavaFX.

I hope to see you all at JavaOne. In the next coming weeks and months we will be sharing more details on the Java EE track, content and speakers at JavaOne. Lastly having been on the other side of the fence I know as much as you might come to JavaOne, it might not be a practical reality for you for a variety of good reasons. I want to remind you that we make a point to make JavaOne content openly available to all. That being said I want to tell you that you should make the pilgrimage to JavaOne at least once as a Java developer. I have attended it a total of seven times, most often paying out of my own pocket as a self-employed consultant.

Wednesday Oct 02, 2013

JavaOne 2013 Trip Report

JavaOne 2013 San Francisco was held September 22-26. I am proud to say this is my seventh JavaOne as an attendee, my fifth one as a speaker, my second one as an Oracle employee and my first one as a member of the content committee. This was a particularly important year from a Java EE standpoint with the release of EE 7 and GlassFish 4 - the content reflected this fact.

I'll admit JavaOne has a special place in my heart - I still remember how awe inspiring my first JavaOne was. It seemed almost surreal, as if the air itself was electrifying. For almost a full week, I felt proud and humbled to be part of an incredible global phenomenon taking place under the roof of Moscone Center in beautiful San Francisco. It made me want to be a more significant part of the Java community. While JavaOne 2013 can certainly be considered a success by most measures, I think most folks would say the atmosphere for JavaOne 2013 unfortunately would not resemble the description of my first JavaOne. Whatever the underlying factors, that's a real shame since there can be little question that JavaOne remains the most important Java conference in the world. Having taken part in organizing a few other fairly large conferences and attending/speaking at numerous others, the content was definitely of outstanding quality even as compared with many other conferences of similar magnitude. It's clear the best and the brightest in the Java ecosystem still see participating in JavaOne as a badge of honor and a privilege. Perhaps a wise retrospective to be had is that we at Oracle need to do more to keep the conference a uniquely valuable experience and try to reach out to a newer generation of developers that would continue to find JavaOne inspiring. On the other hand, hopefully it's just that I'm a bit more jaded and less naive than I once used to be :-).

At any rate, JavaOne 2013 was definitely both hectic and rewarding personally. Besides booth duty at the GlassFish 4/Java EE 7 kiosk, I had one user group event, a couple of BOFs and a technical session. The conference really started for me on Saturday evening with making sure the GlassFish 4/Java EE 7 kiosk is up and running. I am proud to say Cargo Tracker was demoed at the booth along with the Java EE 7 Hands-on-Lab. Part of the Java EE Blue Prints project, Cargo Tracker is a sub-project I initiated that is aimed at demonstrating architectural best practices such as Domain-Driven Design (DDD) using Java EE 7. It's essentially the well known Java DDD sample application originally written in Spring, Hibernate and Jetty modernized, expanded and ported over to Java EE 7/GlassFish 4. If you weren't aware of the project, it is somewhat deliberate. We are still working out some details before we do our first alpha release and reach out to the community. Consider this a sneak peek :-). You are of course welcome to contribute to the open source project any time.

It was my pleasure and privilege to lead the GlassFish Community Event on Sunday. It's long been a rallying point for the GlassFish and Java EE communities at JavaOne and a great way to kick off the conference. Despite the early morning timing and somewhat unfortunate but unavoidable conflict with the NetBeans Sunday User Group event, the two hour session was fairly well attended as usual. John did an excellent job presenting the road map as usual (slide deck embedded below), the GlassFish/Oracle executive panel was very good and we had four great Java EE/GlassFish stories this year. The entire session was video recorded and all the slide decks are posted on SlideShare. We still need to figure out how we can best get all the great content to the broader community, but I hope we can publish most of it on the page for the event. The stories will be posted on the usual blog that hosts all Java EE/GlassFish stories.

The now iconic GlassFish party was held at the Thirsty Bear in the evening. The party was a full house with a ton of pictures that we will publish soon as well.

On Monday and Tuesday afternoon, I had booth duty. The booth traffic was decent and there were a number of pretty good conversations. On Monday afternoon I had my first BOF titled "What’s New with Bean Validation and Expression Language in Java EE 7". I generally enjoy BOFs as they give me an opportunity to talk about a given topic at a slightly deeper level in a slightly less impersonal setting. The goal was to have a fairly informal/open-ended discussion around the changes in Bean Validation 1.1 as well as EL 3 and the impact of these changes in terms of the Java EE 7 platform as well as the broader ecosystem. Somewhat to my surprise, the BOF was packed and I got excellent feedback afterwards. I decided to break up the BOF deck into two separate lightning talk oriented decks (posted below). As always, I've posted the source PPT so you are welcome to use the material yourself as you see fit.

On Tuesday evening I led the GlassFish BOF. Tuesday late evening is always a tough time slot since many of the parties are scheduled at the time. Nonetheless, we had pretty good attendance and some excellent conversations. We covered Java EE 7, the features in GlassFish 4 beyond Java EE, the GlassFish/Java EE ecosystem, the face lift, project Avatar and the road ahead. The slide deck is posted below.

On Thursday mid-day I had my technical session titled "Android and iOS Development with Java EE 7". I co-presented the talk with Ryan Cuprak and Bala Muthuvarathan. Ryan is the leader of the Connecticut JUG, a close friend and my co-author on the upcoming second edition of EJB 3 in Action (covering EJB 3.1, CDI 1.1, JPA 2.1, etc). Bala is a friend and former colleague from CapTech Consulting. They are both incredibly capable people that it is an honor to work with. The goal of the talk was to demonstrate how Java EE 7 can be used as an effective back-end for native mobile development with Android and iOS. The server-side consists of a chat WebSocket API and a to do list REST API implemented using the Java API for WebSocket, JSON-P, JAX-RS 2, CDI, Bean Validation, EJB 3 and JPA. While I focused on the server-side code, Ryan wrote the iOS portion while Bala wrote the Android portion. The demo code is available on GitHub and the slide deck is posted below. The idea is to give you the seed code you need to get started with Java EE 7 based mobile development. The plan is for me, Ryan and Bala to co-author an article series on the material very soon.

The talk went extremely well and was a full house. A couple of folks went so far as to tell us that it was "one of the best talks of the conference" and "the only talk worth attending all week". As an offshoot to the talk, I entered a couple of feature requests against Tyrus and Jersey. Feel free to vote on the issues and contribute to the project on GitHub. Also, do drop me a note if you need help getting things up and running.

The Saturday after the conference my wife Nicole and I took my daughter Zehra to see the Kings Canyon and Sequoia National Parks. Home to giant sequoias like General Sherman, the parks offer some of the most spectacular landscapes that still represents the uniqueness, magnificence and great potential of this country. At 275 feet tall and approximately 2500 years old, General Sherman is the largest known living single stem tree on Earth. If the presence of the giant sequoias doesn't inspire you to try to live a meaningful life beyond yourself that makes a positive difference for as many people as you can in your fleeting and insignificant lifetime, nothing probably ever will...

All in all, this JavaOne trip was good overall and I hope to be a part of JavaOne again next year.

Thursday May 09, 2013

JavaOne Russia 2013 Trip Report

JavaOne Russia 2013 was held at the Crocus Expo Center in Moscow on April 23-24. The conference was a resounding success with a great vibe, excellent technical content and numerous world class speakers. Some notable speakers included Werner Keil, Joonas Lehtinen, Heather VanCura, Paul Bakker, Bert Ertman, Talip Ozturk, Anil Gaur, Geertjan Wielenga, Arun Gupta, Jim Weaver, Stephen Chin and David Delabassee. Topics covered included the JCP/JUGs, Java SE 8, Java EE 7, HTML 5/WebSocket, JSF, JMS 2, JAX-RS 2, Java EE Concurrency, JBatch, JSON-P, NetBeans, MySQL, Vaadin, the Oracle Java Cloud, OpenShift, OSGi, JavaFX and Coherence.

It was my great pleasure and privilege to deliver the Java EE technical keynote on Tuesday alongside the likes of Anil Gaur, Nandini Ramani, Stephen Chin and Jim Weaver. I thought the keynote went very well with a completely packed room. The technical keynote wasn't just slideware. I demoed a simple HTML 5/WebSocket application running on a GlassFish 4 promoted build. The slides for the technical keynote are here:

The demo code is available here. The demo application is an interactive whiteboard with a JavaScript/HTML 5 front end and WebSocket powered backend. Give me a holler if you need help getting it up and running.

Later in the afternoon I gave my JMS 2 talk titled "What’s New in Java Message Service 2" back in the keynote hall. This was essentially the same talk given by JMS 2 specification lead Nigel Deakin at JavaOne San Francisco. I talked about the JMS 2 simplified API, JMSContext injection, delivery delays, asynchronous send, JMS resource definition in Java EE 7, standardized configuration for JMS MDBs in EJB 3.2 and the like. The session went very well, there was great Q & A and I received positive feedback after the session. The slides for the talk are here:

I finished my day with a JAX-RS 2 talk. Titled "JAX-RS 2: New and Noteworthy in the RESTful Web Services API" this was basically the same talk given by the specification leads Santiago Pericas-Geertsen and Marek Potociar at JavaOne San Francisco. I talked about the JAX-RS 2 client API, asyncronous processing, filters/interceptors, hypermedia support, server-side content negotiation and the like. The talk went very well and the Q & A was great. The slides for the talk are here:

I started Wednesday off with a couple of lighting talks. The first was on Java EE Concurrency and the other one was on JBatch. These were essentially brand new decks that I created. These were my first lighting talks in a while but I enjoyed them and had great audience engagement. The slides for both talks are below:

Later in the afternoon Arun Gupta and I ran a hands-on-lab on Java EE 7. The lab covers a whole bunch of the new APIs. We had an overflow crowd for the lab and the lab went very well. You can get the contents of the lab here. Later in the afternoon David, Arun and I also had a lab on the Java Cloud Service.

I finished off the day with a lighting talk on JSON-P. It's an abbreviated and updated version of JSON-P spec lead Jitu Kotamraju's JavaOne San Francisco talk. This was one of the last talks of the conference and it went extremely well. The slide deck for the talk is here:

David and I manned the GlassFish booth at the Java Pavilion on Tuesday and Wednesday whenever we could. The booth traffic was great and we had a number of great conversations.

While in Moscow I took the opportunity to skim over the usual tourist hotspots like the Red Square, the Kremlin and Saint Basil's Cathedral. What resonated with me most though was old Arbat. From it's humble beginnings as a trading route for Caravans from the Far East in the 15th century, old Arbat has long been the true intellectual and creative nerve center for the Russian behemoth. Although today it's filled with overpriced cafes with poor service and tatty souvenir shops, it's not too hard to dig a little deeper than the surface to reveal the true Bohemian soul of old Arbat as a continued haven for starving artists, struggling writers, humble craft vendors, free thinkers and underground youth movements.

Looking carefully around you'll find gems hidden in plain sight like the Museum of Oriental art, the Gogol House, House of Friendship with Peoples of Foreign Countries, the Tochka-G Museum, the Museum of Corporal Punishment and the Pushkin House Museum. I also found an amazing small store with vintage Soviet Military memorabilia. I picked up a Red Army three star general's Winter great coat circa 1943 for not too hefty a price that I am told somehow seems to suit me well.

Overall I enjoyed the conference/Moscow and look forward to going to Russia again next year.

Tuesday Dec 11, 2012

JavaOne Latin America 2012 Trip Report

JavaOne Latin America 2012 was held at the Transamerica Expo Center in Sao Paulo, Brazil on December 4-6. The conference was a resounding success with a great vibe, excellent technical content and numerous world class speakers. Some notable local and international speakers included Bruno Souza, Yara Senger, Mattias Karlsson, Vinicius Senger, Heather Vancura, Tori Wieldt, Arun Gupta, Jim Weaver, Stephen Chin, Simon Ritter and Henrik Stahl. Topics covered included the JCP/JUGs, Java SE 7, HTML 5/WebSocket, CDI, Java EE 6, Java EE 7, JSF 2.2, JMS 2, JAX-RS 2, Arquillian and JavaFX.

Bruno Borges and I manned the GlassFish booth at the Java Pavilion on Tuesday and Webnesday. The booth traffic was decent and not too hectic. We met a number of GlassFish adopters including perhaps one of the largest GlassFish deployments in Brazil as well as some folks migrating to Java EE from Spring. We invited them to share their stories with us. We also talked with some key members of the local Java community.

Tuesday evening we had the GlassFish party at the Tribeca Pub. The party was definitely a hit and we could have used a larger venue (this was the first time we had the GlassFish party in Brazil). Along with GlassFish enthusiasts, a number of Java community leaders were there. We met some of the same folks again at the JUG leader's party on Wednesday evening.

On Thursday Arun Gupta, Bruno Borges and I ran a hands-on-lab on JAX-RS, WebSocket and Server-Sent Events (SSE) titled "Developing JAX-RS Web Applications Utilizing Server-Sent Events and WebSocket". This is the same Java EE 7 lab run at JavaOne San Francisco. The lab provides developers a first hand glipse of how an HTML 5 powered Java EE application might look like. We had an overflow crowd for the lab (at one point we had about twenty people standing) and the lab went very well. The slides for the lab are here:

The actual contents for the lab is available here. Give me a shout if you need help getting it up and running.

I gave two solo talks following the lab. The first was on JMS 2 titled "What’s New in Java Message Service 2". This was essentially the same talk given by JMS 2 specification lead Nigel Deakin at JavaOne San Francisco. I talked about the JMS 2 simplified API, JMSContext injection, delivery delays, asynchronous send, JMS resource definition in Java EE 7, standardized configuration for JMS MDBs in EJB 3.2, mandatory JCA pluggability and the like. The session went very well, there was good Q & A and someone even told me this was the best session of the conference! The slides for the talk are here:

My last talk for the conference was on JAX-RS 2 in the keynote hall. Titled "JAX-RS 2: New and Noteworthy in the RESTful Web Services API" this was basically the same talk given by the specification leads Santiago Pericas-Geertsen and Marek Potociar at JavaOne San Francisco. I talked about the JAX-RS 2 client API, asyncronous processing, filters/interceptors, hypermedia support, server-side content negotiation and the like. The talk went very well and I got a few very kind complements afterwards. The slides for the talk are here:

On a more personal note, Sao Paulo has always had a special place in my heart as the incubating city for Sepultura and Soulfy -- two of my most favorite heavy metal musical groups of all time! Consequently, the city has a perpertually alive and kicking metal scene pretty much any given day of the week.

This time I got to check out a solid performance by local metal gig Republica at the legendary Manifesto Bar. I also wanted to see a Dio Tribute at the Blackmore but ran out of time and energy...

Overall I enjoyed the conference/Sao Paulo and look forward to going to Brazil again next year!


Reza Rahman is a former independent consultant, now Java EE/GlassFish evangelist.

He is the author of the popular book EJB 3 in Action. Reza is a frequent speaker at Java User Groups and conferences worldwide.

Reza has been a member of the Java EE, EJB and JMS expert groups. He implemented the EJB container for the Resin open source Java EE application server.

All views voiced are my own, not necessarily Oracle's.


« March 2015