Wednesday Jul 16, 2014

NFJS UberConf Trip Report

UberConf was held June 24 - June 27 in Denver, Colorado. For those unaware, this is essentially the largest single annual event under the NFJS umbrella and to a certain extent the culminating point of the US based tour. Unlike the usual NFJS events that are squarely locally focused, it's intent is to be a national/international conference. Consequently it has a larger set of attendees, speakers, tracks and sessions. This year's event was very vibrant and clearly a success by all measures.

Personally I was already impressed by the more local events on the tour such as the event in Columbus, Ohio and UberConf certainly did not disappoint. I had a larger number of talks and larger rooms yet still excellent attendance in my talks. As with the other shows I had many folks staying for multiple talks which is always a very good sign. I also got to do a little bit of networking with some Java EE and GlassFish users that I happen to come across. I am hoping I can get some of these folks to jump through the corporate hoops and share their adoption stories at some point.

My first talk for the conference was our flagship Java EE 7/8 talk. Currently the talk is basically about Java EE 7 but I'm slowly evolving the talk to transform it into a Java EE 8 talk as we move forward. The following is the slide deck for the talk:

Next I delivered my talk on JMS 2. Besides covering JMS 2, I've also started to roll in some of the possibilities for JMS 2.1 (as you may be aware the JMS 2.1 specification is beginning to spin up right now). The slides for the talk are posted below:

I started day two delivering my Cargo Tracker/Java EE + DDD material as a three-hour workshop. The workshop overviews DDD and describes how DDD maps to Java EE using code examples/demos from the Cargo Tracker Java EE Blue Prints project. Given the depth of the topic and the current size of the application the three hour slot was actually very effective. My goal was to foster discussion and I thought folks did speak up in the workshop, certainly far more in comparison to the typical session. This bodes very well for my session at JavaOne 2014 covering the material. I and my fellow Cargo Tracker co-committer Vijay Nair will be delivering the tutorial at JavaOne. Below is the slide deck for your review:

Following my workshop, I helped out Arun Gupta with his three hour hands-on-lab on Java EE 7. This is basically the same lab that Arun developed while still at Oracle. It appears the lab has now been evolved to run on both WildFly and GlassFish. The materials for Arun's lab is available on GitHub. The lab really went very well. The attendees provided excellent feedback and the lab was standing room only even given a fairly sizable space.

Following the Java EE 7 lab I delivered my JAX-RS 2 talk. Besides JAX-RS 2, I also talked about the possibilities for JAX-RS 2.1. The slides for the talk are posted below:

My first talk for the final day of the show was my JavaScript+Java EE 7 talk. This talk is basically about aligning EE 7 with the emerging JavaScript ecosystem (specifically AngularJS). 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. I am delivering this material at JavaOne 2014 as a two-hour tutorial. This should give me a little more bandwidth to dig a little deeper, especially on the JavaScript end.

I finished off UberConf with my talk titled "Using NoSQL with ~JPA, EclipseLink and Java EE". The talk covers an interesting gap that there is surprisingly little material on out there. The talk has three parts -- a birds-eye view of the NoSQL landscape, how to use NoSQL via a JPA centric facade using EclipseLink NoSQL, Hibernate OGM, DataNucleus, Kundera, Easy-Cassandra, etc and how to use NoSQL native APIs in Java EE via CDI. The slides for the talk are here:

The JPA based demo is available here, while the CDI based demo is available here. Both demos use MongoDB as the data store. Do let me know if you need help getting the demos up and running.

I did get a chance to have some fun while at UberConf. Pretty close to the conference location was the FlatIrons at Chautauqua Park. A local icon of the Boulder and Denver areas, the FlatIrons offer a very scenic hike with some of the best views of the Rocky Mountains. The hike is not supposed to be particularly strenuous, but it can be for folks like myself not acclimated to the already higher altitudes in the Denver area. Denver is at approximately 5,000 feet above sea level and rightly nicknamed the mile high city. Be very cautious while drinking or undertaking any serious physical strain while in Denver just for a few days - don't underestimate the effects of the thinner air especially if you are not in good health. Patrick Dodson, a long time GlassFish adopter accompanied me for the hike up the FlatIrons and it was definitely worth it. Check out the photos I took below:

My next NFJS show is the NFJS Lone Star Software Symposium in Austin on July 18-20. Here's my tour schedule so far, I'll keep you up-to-date as the tour goes forward:

I hope you'll take this opportunity to get some updates on Java EE as well as the other awesome content on the tour?

Wednesday Jul 09, 2014

NFJS Central Ohio Software Symposium Trip Report

As some of you may be aware, I recently joined the well-respected US based No Fluff Just Stuff (NFJS) Tour. If you work in the US and still don't know what the No Fluff Just Stuff (NFJS) Tour is, you are doing yourself a very serious disfavor. NFJS is by far the cheapest and most effective way to stay up to date through some world class speakers and talks. Following the US cultural tradition of old-fashioned roadshows, NFJS is basically a set program of speakers and topics offered at major US cities year round. Via NFJS you get to have amazing training without paying for an expensive venue, lodging or travel. The events are usually on the weekends so you don't need to even skip work if you want.

My first engagement with NFJS was the New York Software Symposium on April 4-5. The show went relatively well and I have the trip report here. My second engagement was extremely encouraging - the Central Ohio Software Symposium in Columbus, Ohio on June 6-8. Unlike New York, the Columbus show was fully sold out and very vibrant. I had five talks total over two days, essentially back-to-back. I had a full house for all my sessions and had many of the same folks staying for multiple sessions which is always a very good sign. The close knit nature of NFJS also allows for excellent networking opportunities with Java EE users and occasional Oracle customers. My first talk was our flagship Java EE 7/8 talk. Currently the talk is basically about Java EE 7 but I'm slowly evolving the talk to transform it into a Java EE 8 talk as we move forward. The following is the slide deck for the talk:

The next talk I delivered was my Cargo Tracker/Java EE + DDD talk. 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.

My third and last one for the first day was the talk on JMS 2. Besides covering JMS 2, I've also started to roll in some of the possibilities for JMS 2.1. The slides for the talk are posted below:

My first talk for day two of the show was my JavaScript+Java EE 7 talk. This talk is basically about aligning EE 7 with the emerging JavaScript ecosystem (specifically AngularJS). 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.

I finished off the show with a talk on JAX-RS 2. Besides JAX-RS 2, I also talked about the possibilities for JAX-RS 2.1. The slides for the talk are posted below:

After the Columbus show I also spoke at UberConf, the largest yearly "destination" event under the NFJS umbrella held in Denver, Colorado on June 24 - 27. That show went even better than Columbus and I'll write a separate trip report on that soon.

My next NFJS show is the NFJS Lone Star Software Symposium in Austin on July 18-20. Here's my tour schedule so far, I'll keep you up-to-date as the tour goes forward:

I hope you'll take this opportunity to get some updates on Java EE as well as the other awesome content on the tour?

Tuesday Jul 01, 2014

Java Day Tokyo Trip Report

Java Day Tokyo 2014 was held on May 22nd. Organized by Oracle Japan, it is the largest Java developer event in the country. Indeed it is really a replacement to JavaOne Japan. This was another highly successful year for the event with a fully sold out venue packed with youthful, energetic developers. Speakers included Steve Chin, Stuart Marks, Simon Ritter, Nandini Ramani, Cameron Purdy and Yoshio Terada. Topics included Java SE, Java EE and JavaFX.

Cameron Purdy, Vice President of Development at Oracle responsible for Java EE, shared the Java EE 8 road-map during the opening keynote. You can download video of the keynote here.

Following the keynote, I reviewed Java EE 7 and went into more details on Java EE 8 possibilities during my session titled "JavaEE.Next(): Java EE 7, 8, and Beyond". The sizable room was completely packed for the session. At the beginning of the session, I asked the audience whether they wanted to hear more about Java EE 7 or more about Java EE 8. To my pleasant surprise, the audience indicated that they knew about Java EE 7 and wanted to know more about Java EE 8. I talked about possibilities such as HTTP 2/Servlet 4, Server-Sent Events (SSE), a new standard action-oriented web framework, security simplification, multitenancy, REST management/monitoring, CDI 2, platform-wide CDI alignment, more pruning, JCache, configuration, JMS.next() and Java SE 8 alignment. The slides for the talk are here:

I also presented my talk aligning Java EE 7 with the HTML 5/JavaScript Rich Client landscape. I use AngularJS for my demo but the concepts can apply to any JavaScript (or even native mobile) front-end. This session was a full house with standing room only. The slide deck for the talk is posted below:

The demo code is posted on GitHub: https://github.com/m-reza-rahman/javaee-javascript. Do give me a shout if you need help getting the demo up and running but it should be very straightforward.

Besides my sessions, there were a good number of other Java EE related sessions including from Japanese Java EE evangelist Yoshio Terada (naturally he delivered his talks in Japanese). One of the most interesting of these was a talk titled "Move from J2EE to Java EE" by Hirofumi Iwasaki of Rakuten. For those who don't know what Rakuten is, it is one of the largest e-commerce platforms in the world (by volume) based in Japan. Hirofumi-san made the case for transitioning to Java EE from J2EE and avoiding non-standard frameworks. He blogged about his talk here. His slide deck is embedded below:

He is doing a similar talk at JavaOne 2014 titled "Java EE 6 Adoption in One of the World’s Largest Online Financial Systems".

At the end of the day, we had an "Ask the Experts" panel. I was on the panel along with Steve, Stuart, Simon and David. There was some lively discussion around Java EE, GlassFish and WebLogic that the audience seemed to really appreciate. I too enjoyed the panel.

Fortunately, the trip to Japan wasn't all work and no fun. I was largely expecting to just check out the vibrant Tokyo nightlife, but it turned out I had more free time than I was expecting. As a result, I got to do a whirlwind tour of sights like the Imperial Palace, Senso-ji/Asakusa, Meiji Shrine, Tokyo Skytree, Kabuki-za (I got to check out Kabuki - the legendary Japanese traditional opera), Shinjuku, the insane Tokyo Metro, the dazzling Shibuya Crossing, Tokyo Central Railway Station and a few others. Perhaps next time I'll aim for more of the nightlife such as the Robot Restaurant, Sumo wresting and Japanese heavy metal (yes, there is such a thing). All in all, Japan was a mystifying mix of centuries old traditions and ultramodern fixtures. Just check out the pictures I took below, you'll see what I mean:

I also got to do something I was really looking forward to - check out the Mount Fuji area (some of those pictures are in the album too). Unfortunately, the official climbing season is July though August, denying me the opportunity to ascend one of the most iconic mountains on the planet. Technically I could have attempted it renting the proper gear but it would have probably been a little foolhardy considering I would have been alone and I am not in the kind of shape I once used to be in. Oh well - I guess it's good to have some things to do later in life, perhaps with my wife Nicole once we are at a stage where we can seriously think about doing this sort of thing again (and hopefully can still afford it :-)).

I definitely enjoyed Java Day Tokyo and hope to be part of the event next year again!

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 JAX-RS.next!
  • 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 Overstock.com
  • 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

Community

  • 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.

Friday May 30, 2014

Java EE @ No Fluff Just Stuff Tour

If you work in the US and still don't know what the No Fluff Just Stuff (NFJS) Tour is, you are doing yourself a very serious disfavor. NFJS is by far the cheapest and most effective way to stay up to date through some world class speakers and talks. This is most certainly true for US enterprise Java developers in particular. Following the US cultural tradition of old-fashioned roadshows, NFJS is basically a set program of speakers and topics offered at major US cities year round. Many now famous world class technology speakers can trace their humble roots to NFJS. Via NFJS you basically get to have amazing training without paying for an expensive venue, lodging or travel. The events are usually on the weekends so you don't need to even skip work if you want (a great feature for consultants on tight budgets and deadlines).

I am proud to share with you that I recently joined the NFJS troupe. My hope is that this will help solve the lingering problem of effectively spreading the Java EE message here in the US. For NFJS I hope my joining will help beef up perhaps much desired Java content. In any case, simply being accepted into this legendary program is an honor I could have perhaps only dreamed of a few years ago. I am very grateful to Jay Zimmerman for seeing the value in me and the Java EE content. The current speaker line-up consists of the likes of Neal Ford, Venkat Subramaniam, Nathaniel Schutta, Tim Berglund and many other great speakers.

I actually had my tour debut on April 4-5 with the NFJS New York Software Symposium - basically a short train commute away from my home office. The show is traditionally one of the smaller ones and it was not that bad for a start. I look forward to doing a few more in the coming months (more on that a bit later). I had four talks back to back (really my most favorite four at the moment). The first one was a talk on JMS 2 - some of you might already know JMS is one of my most favored Java EE APIs. The slides for the talk are posted below:

The next talk I delivered was my Cargo Tracker/Java EE + DDD talk. 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.

The third talk I delivered was our flagship Java EE 7/8 talk. As you may know, currently the talk is basically about Java EE 7. I'll probably slowly evolve this talk to gradually transform it into a Java EE 8 talk as we move forward (I'll blog about that separately shortly). The following is the slide deck for the talk:

My last talk for the show was my JavaScript+Java EE 7 talk. This talk is basically about aligning EE 7 with the emerging JavaScript ecosystem (specifically AngularJS). The slide deck for the talk is here:

Unsurprisingly this talk was well-attended. 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.

My next NFJS show is the Central Ohio Software Symposium in Columbus on June 6-8 (sorry for the late notice - it's been a really crazy few weeks). Here's my tour schedule so far, I'll keep you up-to-date as the tour goes forward:

I hope you'll take this opportunity to get some updates on Java EE as well as the other awesome content on the tour?

Thursday Mar 13, 2014

Code PaLOUsa 2014 Trip Report

Code PaLOUsa 2014 took place 24-26 February in Louisville, Kentucky. Code PaLOUsa is a fairly unassuming conference with great quality farther away from the beaten paths. The conference is principally rooted in .NET but is trying hard to beef up Java content, so it was important to have a presence from our team. My fellow Oracle colleague Scott Seighman (Cleveland JUG leader) also supported local Java developers by delivering a Java SE 8 talk. Topics covered included Java, .NET, JavaScript, mobile, methodology and Big Data/NoSQL.

I was very fortunate in that on my way to Kentucky, I was able to stop by at the Montgomery County (Maryland) JUG for a Java EE 7 session. The JUG was very kind in agreeing to schedule an off-cadence meeting to accommodate my trip. I have been to the JUG several times over the years and it is always a good experience with solid attendance - this time was no exception. Whenever I can I'll try to schedule another talk with the JUG. I essentially presented the same Java EE 7 deck we have been using for a while as our main talk (embedded below) - just taking time to do a bit more of a deep dive (the session lasted two and a half hours with almost everyone staying until the very end!).

Since the JUG meeting lasted much longer than I expected, I didn't arrive at Louisville until late the next day (yes, I drove :-)). With just a few hours to spare, I did my first talk at Code PaLOUsa titled "Using NoSQL with ~JPA, EclipseLink and Java EE". The talk covers an interesting gap that there is surprisingly little material on out there. The talk has three parts -- a birds-eye view of the NoSQL landscape, how to use NoSQL via a JPA centric facade using EclipseLink NoSQL, Hibernate OGM, DataNucleus, Kundera, Easy-Cassandra, etc and how to use NoSQL native APIs in Java EE via CDI. The slides for the talk are here:

The next day I presented one of my most favorite talks titled "Applied Domain-Driven Design Blue Prints for Java EE". The talk is essentially about the Cargo Tracker Java EE Blue Print project. The project is an attempt at reviving and modernizing the much needed Java EE Blue Prints effort to demonstrate some architectural best practices for Java EE. The talk has three parts -- a brief overview of DDD theory, mapping DDD to Java EE and actual running Cargo Tracker DDD code with Java EE/GlassFish. The talk was well attended and I got excellent feedback on the talk later. InfoQ recorded the session so hopefully it will be available to a broader audience soon. The slides for the talk are here:

After the conference I took some time out to enjoy one of the most unique experiences in the World - the Louisville Mega Cavern. To my knowledge, it is one of the largest man-made Caverns open to the general public anywhere. A truly massive former limestone mine, during the early days of the Cold War it was used as a fallout shelter. If that isn't fascinating enough, it might be the only place in the world you can zip line through a primitive limestone mine!

While the zip line was a truly awesome experience (there's five of them total across various parts of the mine), I wouldn't advise it for the uninitiated. With pitch dark corners, jagged rocks, mud/dirty pools of water, sudden sheer drops, simple rope bridges and fast/long inclines I imagine it could be a very scary experience for folks that have never been inside a primitive cave or cavern (natural or man made) - check out the pictures below. You have been duly warned :-). However if you feel you can make it, it is definitely worth doing if you are in the area.

All in all Code PaLOUsa, the Maryland JUG and Kentucky were worth the while. To boot, I didn't have to take a dull long flight :-).

Tuesday Mar 11, 2014

Jfokus 2014 Trip Report

Jfokus 2014 took place 3-5 February in Stockholm, Sweden at the Waterfront Congress Centre. This was my first time at the conference. Jfokus slates itself as the largest developer conference in Sweden and it certainly is quite significant in terms of both content quality and attendance. Key organizer Mattias Karlsson deserves a well earned pat on the back for accomplishing such a feat in just a few years. Although the conference is most certainly not limited to Java, luckily for Java developers it does have a slight Java bend. The event attracted a bevy of World class speakers including quite a few of my fellow Oracle colleagues - Mark Reinhold, Georges Saab, Stephen Chin, Simon Ritter, Mark Heckler, Angela Caicedo, Geertjan Wielenga (NetBeans), Heather VanCura (JCP), Cecilia Borg (OpenJDK), Joel Borggrén-Franck (JDK) and Marcus Hirt (JDK). Notable other folks speaking included Venkat Subramaniam, David Blevins, Pratik Patel, Trisha Gee, Martijn Verburg and Anton Arhipov. Topics covered included Java SE, Java EE (of course :-), embedded Java, JavaScript, cloud, mobile, DevOps, agile and Big Data/NoSQL.

The conference started for me on Monday afternoon with a half-day university session titled "Down and Dirty with Java EE 7". This was really a demo-driven introduction to Java EE 7 using Cargo Tracker. Although the real point of Cargo Tracker is demonstrating some sound architectural practices for Java EE as a whole, we have actually wound up organically incorporating quite a bit of Java EE 7. As a result, I was able to use the project to provide an extended session with a mix of lecture and demos covering Java EE 7 at a fairly high level. The rather lengthy session was a full house and seemed to be fairly well received. The slides for the session are here (requires Silverlight - can download the slides even if not available). Ed Burns essentially did the same thing at DevNexus more recently (also using Cargo Tracker).

Tuesday is when the regular sessions started. It was sort of a lighthearted day for me since all I had was a dinner-time shootout between dynamic and static languages hosted by Stephen Chin. I showed up all pumped up with my arguments/counter-arguments ready to launch in favor of Java and static languages (big surprise I was chosen for the static team, right :-)?). As it turned out it was not a serious technical affair at all but just some game show style good matured antics. I had fun on stage and it was all cool. Later that evening I participated in a BoF on the JCP, OpenJDK, Adopt-a-JSR and Java EE 8 with Cecilia Borg, Heather VanCura and Martijn Verburg. I talked about some of the things we are considering on the Java EE 8 survey. The discussion was great and I got some good feedback to return back to the team.

I finished off the conference on Wednesday with my brand new talk titled "HTML5/Rich Clients Using Java EE 7" in the keynote hall. I am very glad Jfokus was keen on this talk since I have been waiting to deliver it for a while now (since then a bunch of other folks have also expressed interest in the talk already). The talk is about the excellent alignment Java EE has with the emerging world of HTML5/JavaScript frameworks like AngularJS, Backbone, Knockout and Ember. Java EE is really quite well positioned to adapt to richer browser clients with APIs like JAX-RS, WebSocket, JSON-P, CDI, EJB3, JPA and Bean Validation. I also briefly talked about Oracle's project Avatar. The talk was a full house and was very well received.

The slides for the talk are below, the demo code is on GitHub. The project should be very easy to setup, but do give me a shout if you need help. My intent is to give you the very basics of what you need to get started exploring this type of architecture.

It was good to catch up with a bunch of folks all at this one event. Check out the pictures below with me, David, Amelia, Tori, Steve, Thomas, Mark and Simon hanging out in the hotel lounge after the conference!

While in Stockholm, a few of us had occasion to check out a few cool spots like old town, the Royal Palace, the Vasa Museum and Skansen (thanks in large part to the pre-conference speakers-only tour organized by Mattias).

The Vasa Museum and Skansen I thought were particularity cool. The Vasa was a massive wooden warship launched in 1628. Legend has it the pride of the Swedish King tragicomicaly sank within minutes of being launched condemning most of the crew to a frigid death due to a number of critical design flaws that rooted back to the King's overgrown ego. The ship was dredged up from the icy waters in the twentieth century, restored and placed into one of Sweden's most visited museums. Skansen has a decidedly less dubious past - reportedly one of the oldest open air museums in the world, it is intended to be a miniature model of Sweden itself in the pre-Industrial era. With aging but well-kept structures moved piece-by-piece from various parts of Sweden and reconstructed in Skansen as well as reenactors in period costume Skansen really feels like going back in a time machine. In US terms, it felt sort of like a very serious and realistic Renaissance Fair (check out the photo album below).

All in all, this was a very good trip. I look forward to going back to Stockholm and Jfokus another year...

Thursday Feb 13, 2014

CodeMash 2014 Trip Report

CodeMash 2014 took place 7-10 January in Sandusky, Ohio at the exotic Kalahari Waterpark Resort. This was my first time at the conference. With another sold-out year, CodeMash is quickly becoming one of the largest developer conferences state-side. It has it's roots in .NET, but is making a concerted effort to better attract a Java audience hence it was important for us to support that effort. This year it attracted a decent section of the Java crowd including my fellow Oracle colleagues Jim Weaver (JavaFX) and Scott Seighman (Scott is the leader of the Cleveland JUG and spoke on Java SE 8) as well as Chris Judd (leader of the fairly active Columbus JUG). Topics covered included .NET, Rails, methodology, JavaScript/HTML 5, mobile, cloud, DevOps, Hadoop, NoSQL, Java SE, JavaFX and Java EE (of course :-)).

On my way back, I stopped by at the nascent Happy Valley JUG in State College, PA - kicking off a highly successful and well-attended first meetup!

My session on Java EE at CodeMash titled "JavaEE.Next(): Java EE 7, 8, and Beyond" was very well attended. I covered the changes in JMS 2, the Java API for WebSocket (JSR 356), the Java API for JSON Processing (JSON-P), JAX-RS 2, JPA 2.1, JTA 1.2, JSF 2.2, Java Batch, Bean Validation 1.1, Java EE Concurrency and the rest of the APIs in Java EE 7. I also briefly talked about some of the possibilities for Java EE 8. The slides for the talk are here:

To my delight, the CodeMash was interested in my NoSQL+Java EE talk (titled "Using NoSQL with ~JPA, EclipseLink and Java EE"). The talk covers an interesting gap that there is surprisingly little material on out there. The talk has three parts -- a birds-eye view of the NoSQL landscape, how to use NoSQL via a JPA centric facade using EclipseLink NoSQL, Hibernate OGM, DataNucleus, Kundera, Easy-Cassandra, etc and how to use NoSQL native APIs in Java EE via CDI. This talk was also pretty well attended and the Q & A was excellent. The slides for the talk are here:

The visit to the Happy Valley JUG was really great. Although it's geared towards the general State College area, the JUG is a bit Penn State University centric at the moment since both key JUG organizers Shawn Smith and Steve Moyer work for Penn State and the meetings are held on campus (incidentally, both Shawn and Steve are Java EE fans :-)). It was really a great privilege to lead the very first meeting of the JUG. I ran the Java EE 7 Hands-on Lab as a whole day workshop. I think this might be the first JUG in the world who's inaugural meeting was so well attended with everyone doing head's down hacking the whole day (just check out the awesome picture below - go Nittany Lions :-)).

While in Ohio, I did something that has been on my bucket list for a long time - visiting the Rock and Roll Hall of Fame in Cleveland. Most people don't realize this, but Cleveland is actually the birthplace of Rock and Roll and Ohio has been home to many legendary rockers like Nine Inch Nails, Marilyn Manson, Chimaira and Warrant. If you are in the area, I would say it's a fascinating sight definitely worth a visit, even if you aren't into Rock (check out the photo album below).

All in all, this was a very good trip. I am looking forward to going on another trip covering a US based conference (Code PaLOUsa in Kentucky) coupled with a JUG visit (the Maryland JUG) in a few weeks!

Friday Dec 20, 2013

Oredev 2013 Trip Report

Oredev 2013 was held on 4-8 November in Malmo Sweden. This was my second time at the largest IT conference in the Scania region - I had been there in 2010 as an independent. The conference is rooted in .NET and development process/methodology but has been trying hard to beef up it's Java content. This year it attracted a decent section of the Java crowd including my fellow Oracle colleagues Brian Goetz (Java SE), Geertjan Wielenga (NetBeans), Attila Szegedi (Nashorn), Aleksey Shipilev (Java SE), Cecilia Borg (OpenJDK), Marcus Hirt (Java SE) and Tomas Nilsson (Java SE) as well as my long-time friend Adam Bien. Topics covered included Java EE (of course :-)), mobile, DDD, agile, HTML5, cloud, Java SE, OpenJDK, JavaScript and NoSQL.

I ran the Java EE 7 Hands-on Lab as a whole day workshop. A decent number of people showed up for the workshop and it ran very smoothly (many folks had kind words to share afterwards). Last time I had tried to run this lab at OSCON, it did not go so smoothly due to various GlassFish and NetBeans issues that now seem to have been fixed. There were also issues with the lab itself that have since been addressed. There are still a few remaining rough spots in the lab I will get ironed out as soon as possible.

The openly available hands-on lab is actually a very good resource for getting your hands dirty with Java EE 7. The entire lab is neatly scripted into step-by-step instructions and seeded with some starter code as to be largely self-directed and self-paced. The idea is that anyone should be able to complete the lab by themselves or even lead the lab in their own organizations. I am finding that the length of the lab actually makes it more suitable as a one-day workshop - perhaps calling it something like "Hands-on Java EE 7", "Down and Dirty with Java EE 7", "A Self-Guided Tour of Java EE 7", etc. I am actually running such a workshop again at Penn State University/the Happy Valley JUG on my way back from CodeMash in Sandusky, Ohio in January.

I also had a regular conference session on JAX-RS 2. 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. It's somewhat unusual for conferences to accept this talk which is strange given the popularity of JAX-RS and the importance of REST in both mobile and HTML5 applications. The talk was well attended, went very well and the Q & A was great. The slides for the talk are here (including the abstract and source PPT):

On the Friday night after the conference, I got to catch a Queensryche performance at Kulturbolaget (besides Debaser the most significant music venue in Malmo; also known simply as "KB"). I had seen another act from the US-based progressive metal legends in my hometown of Philadelphia at the legendary Trocadero Theatre a few years ago. Queensryche seems to always deliver a technically polished if albeit somewhat tame performance. Besides the good ol' US of A, Sweden is one of the few countries in the World that you can probably find a metal gig in most major cities year-round...

All in all, I enjoyed Oredev/Malmo and look forward to going back some time again soon (I'll be back in Sweden for Jfokus in February).

Monday Nov 11, 2013

Java Developer Days India Trip Report

You are probably aware of Oracle's decision to discontinue the relatively resource intensive regional JavaOnes in favor of more Java Developer Days, virtual events and deeper involvement with independent conferences. In comparison to the regional JavaOnes, Java Developer Days are smaller, shorter (typically one full day), more focused (mostly Oracle speakers/topics) and more local (targeting cities). For those who have been around the Java ecosystem for a few years, they are basically the current incarnation of the highly popular and developer centric Sun Tech Days. October 21st through October 25th I spoke at Java Developer Days India. This was basically three separate but identical events in the cities of Pune (October 21st), Chennai (October 24th) and Bangalore (October 25th). For those with some familiarity with India, other than Hyderabad these cities are India's IT powerhouses.

The events were basically focused on Java EE. I delivered five of the sessions (yes, you read that right), while my friend NetBeans Group Product Manager Ashwin Rao delivered three talks. Jagadish Ramu from the GlassFish team India helped me out in Bangalore by delivering two sessions. It was also a pleasure to introduce my co-contributor to the Cargo Tracker Java EE Blue Prints project Vijay Nair at Bangalore during the opening talk. I thought it was a great dynamic between Ashwin and I flipping between talking about the new features and demoing live code in NetBeans. The following were my sessions (source PDF and abstracts posted as usual on my SlideShare account):

The event went well and was packed in all three cities. The Q&A was great and Indian developers were particularly generous with kind words :-). It seemed the event and our presence was appreciated in the truest sense which I must say is a rarity. The events were exhausting but very rewarding at the same time.

As hectic as the three city trip was I tried to see at least some of the major sights (mostly at night) since this was my very first time to India. I think the slideshow below is a good representation of the riddle wrapped up in an enigma that is India (and the rest of the Indian sub-continent for that matter):

Ironically enough what struck me the most during this trip is the woman pictured below - Shushma. My chauffeur, tour guide and friend for a day, she fluidly navigated the madness that is Mumbai traffic with skills that would make Evel Knievel blush while simultaneously pointing out sights and prompting me to take pictures (Mumbai was my stopover and gateway to/from India). In some ways she is probably the most potent symbol of the new India. I also had occasion to take a pretty cool local bus ride from Chennai to Bangalore instead of yet another boring flight.

All in all I really enjoyed the trip to India and hope to return again soon. Jai Hind :-)!

Thursday Oct 17, 2013

How You Helped Shape Java EE 7...

I have been working with the JCP in various roles since EJB 3/Java EE 5 (much of it on my own time), eventually culminating in my decision to accept my current role at Oracle (despite it's inevitable set of unique challenges, a role I find by and large positive and fulfilling). During these years, it has always been clear to me that pretty much everyone in the JCP genuinely cares about openness, feedback and developer participation. Perhaps the most visible sign to date of this high regard for grassroots level input is a survey on Java EE 7 gathered a few months ago. The survey was designed to get open feedback on a number of critical issues central to the Java EE 7 umbrella specification including what APIs to include in the standard. When we started the survey, I don't think anyone was certain what the level of participation from developers would really be. I also think everyone was pleasantly surprised that a large number of developers (around 1100) took the time out to vote on these very important issues that could impact their own professional life. And it wasn't just a matter of the quantity of responses. I was particularly impressed with the quality of the comments made through the survey (some of which I'll try to do justice to below).

With Java EE 7 under our belt and the horizons for Java EE 8 emerging, this is a good time to thank everyone that took the survey once again for their thoughts and let you know what the impact of your voice actually was. As an aside, you may be happy to know that we are working hard behind the scenes to try to put together a similar survey to help kick off the agenda for Java EE 8 (although this is by no means certain). I'll break things down by the questions asked in the survey, the responses and the resulting change in the specification.

APIs to Add to Java EE 7 Full/Web Profile

The first question in the survey asked which of four new candidate APIs (WebSocket, JSON-P, JBatch and JCache) should be added to the Java EE 7 Full and Web profile respectively.

Developers by and large wanted all the new APIs added to the full platform. The comments expressed particularly strong support for WebSocket and JCache. Others expressed dissatisfaction over the lack of a JSON binding (as opposed to JSON processing) API.

WebSocket, JSON-P and JBatch are now part of Java EE 7. In addition, the long-awaited Java EE Concurrency Utilities API was also included in the Full Profile. Unfortunately, JCache was not finalized in time for Java EE 7 and the decision was made not to hold up the Java EE release any longer. JCache continues to move forward strongly and will very likely be included in Java EE 8 (it will be available much sooner than Java EE 8 to boot). An emergent standard for JSON-B is also a strong possibility for Java EE 8.

When it came to the Web Profile, developers were supportive of adding WebSocket and JSON-P, but not JBatch and JCache. Both WebSocket and JSON-P are now part of the Web Profile, now also including the already popular JAX-RS API.

Enabling CDI by Default

The second question asked whether CDI should be enabled in Java EE by default.

The overwhelming majority of developers supported the default enablement of CDI. In addition, developers expressed a desire for better CDI/Java EE alignment (with regards to EJB and JSF in particular). Some developers expressed legitimate concerns over the performance implications of enabling CDI globally as well as the potential conflict with other JSR 330 implementations like Spring and Guice.

CDI is enabled by default in Java EE 7. Respecting the legitimate concerns, CDI 1.1 was very careful to add additional controls around component scanning. While a lot of work was done in Java EE 6 and Java EE 7 around CDI alignment, further alignment is under serious consideration for Java EE 8.

Consistent Usage of @Inject

The third question was around using CDI/JSR 330 @Inject consistently vs. allowing JSRs to create their own injection annotations (e.g. @BatchContext).

A majority of developers wanted consistent usage of @Inject. The comments again reflected a strong desire for CDI/Java EE alignment.

A lot of emphasis in Java EE 7 was put into using @Inject consistently. For example, the JBatch specification is focused on using @Inject wherever possible. JAX-RS remains an exception with it's existing custom injection annotations. However, the JAX-RS specification leads understand the importance of eventual convergence, hopefully in Java EE 8.

Expanding the Use of @Stereotype

The fourth question was about expanding CDI @Stereotype to cover annotations across Java EE beyond just CDI.

A solid majority of developers supported the idea of making @Stereotype more universal in Java EE. The comments maintained the general theme of strong support for CDI/Java EE alignment

Unfortunately, there was not enough time and resources in Java EE 7 to implement this fairly pervasive feature. However, it remains a serious consideration for Java EE 8.

Expanding Interceptor Use

The final set of questions was about expanding interceptors further across Java EE.

Developers strongly supported the concept. Along with injection, interceptors are now supported across all Java EE 7 components including Servlets, Filters, Listeners, JAX-WS endpoints, JAX-RS resources, WebSocket endpoints and so on.

I hope you are encouraged by how your input to the survey helped shape Java EE 7 and continues to shape Java EE 8. Participating in these sorts of surveys is of course just one way of contributing to Java EE. Another great way to stay involved is the Adopt-A-JSR Program. A large number of developers are already participating through their local JUGs. You could of course become a Java EE JSR expert group member or observer. You should stay tuned to The Aquarium for the progress of Java EE 8 JSRs if that's something you want to look into...

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 GlassFish.org 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 GlassFish.org 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.

Wednesday Sep 04, 2013

Java EE@Pittsburgh, Columbus, Cleveland JUGs

With the numerous larger conferences worldwide that we cover in the Java EE/GlassFish team, it is often difficult to make time to visit JUGs. This leaves a gap as many folks often don't make it to regional/international conferences. It's also a shame since I used to visit quite a few JUGs back in my independent consultant days. With the Java EE 7 release I'm trying to reach out to at least my local JUGs in the greater North East/Mid Atlantic area. In this vein, I made a smallish JUG tour covering the Pittsburgh, Columbus and Cleveland JUGs. Cleveland JUG leader Scott Seighman helped arrange the tour. Scott is one of the surprisingly few Oracle employees involved with their local JUGs. Scott's efforts are indeed admirable and encouraging.

I did my Java EE 7 talk (our flagship talk this year) in all three JUGs (Pittsburgh on August 13th, Columbus on August 14th and Cleveland on August 15th) - slides posted below.

All three talks went very well and I had some excellent interactions afterwards. This is despite the fact that JUGs during Summer are not usually very active. I gave away a few books, GlassFish T-shirts, laptop stickers and other goodies. Overall it was a great experience and definitely worth doing. Hopefully I'll have time to cover a few more JUGs this year and next year.

Friday Aug 23, 2013

JavaDay Taipei Trip Report

JavaDay Taipei 2013 was held at the Taipei International Convention Center on August 2nd. Organized by Oracle University, it is one of the largest Java developer events in Taiwan. This was another successful year for JavaDay Taipei with a fully sold out venue packed with youthful, energetic developers. In addition to Oracle speakers like me, Steve Chin and Naveen Asrani, the event also featured a bevy of local speakers including Taipei Java community leaders. Topics included Java SE, Java EE, JavaFX and mobile.

It was my pleasure and privilege to present one of the opening keynotes for the event. I presented my session on Java EE titled "JavaEE.Next(): Java EE 7, 8, and Beyond". The talk is primarily along the same lines as Arun Gupta's JavaOne 2012 technical keynote. I covered the changes in JMS 2, the Java API for WebSocket (JSR 356), the Java API for JSON Processing (JSON-P), JAX-RS 2, JPA 2.1, JTA 1.2, JSF 2.2, Java Batch, Bean Validation 1.1, Java EE Concurrency and the rest of the APIs in Java EE 7. I also briefly talked about some of the possibilities for Java EE 8. The talk was well received and it was a full house session which is always encouraging. The slides for the talk are here:

I also presented one of the closing sessions of the event with my WebSocket talk titled "Building Java HTML5/WebSocket Applications with JSR 356". This session was also a full house with decent Q & A afterwards. The talk introduces HTML 5 WebSocket, overviews JSR 356, tours the API and ends with a small WebSocket demo on GlassFish 4. The slide deck for the talk is posted below.

The demo code is posted on GitHub: https://github.com/m-reza-rahman/hello-websocket. Do give me a shout if you need help getting the demo up and running.

The Oracle University folks hosted a reception in the evening which was very well attended by organizers, speakers and local Java community leaders (some of whom joined me for a cool hike the next morning). The picture below shows me, Steve Chin, Naveen Asrani, key event organizer Serene Lee as well as local JUG leaders/speakers Ian, Koji and Gary at the restaurant.

Since this was my first time in Taipei, I took some time out to check out notable attractions like Taipei 101 (very close to the convention center), Long Shan Temple and the Shilin night market. I have to say Taipei is truly remarkable in that the Taiwanese people would strike anyone as both very hardworking, meticulous and innovative but at the same time incredibly friendly, open and honest. I think that explains why such a relatively small island is a household name worldwide.

The Saturday morning after the conference, Ian, Koji, Gary and I decided to climb Seven Star (Qixing) Mountain. Seven Star Mountain is the highest peak in Yangmingshan National Park close to Taipei at 3,675 feet above sea level. It is also the highest dormant volcano in Taiwan. The hike is strenuous but offers spectacular views of the park, mountain range and Taipei, especially after you climb above the tree line. This was the first time in a long time that I explored a lush sub-tropical mountain terrain as opposed to the temperate terrain typical of most of North America and Europe. Just check out the pictures I took below (the opening picture is courtesy of Serene - it is a picture of the Seven Star Mountain chain from Oracle's high rise offices in Taipei).

I definitely enjoyed JavaDays Taipei and hope to be part of the event next year again!

Sunday Jul 28, 2013

OSCON Trip Report

OSCON 2013 was held from July 22 to July 26 in Portland, Oregon. I presented the Java EE 7 hands-on lab there as well as a session on WebSocket/JSR 356. This was my first time to the revered conference.

My impression of OSCON had always been that it is a conference for everything open source mostly sans Java and very much sans anything JCP. As a Java and standards/JCP guy, it's the reason I had always focused on more Java heavy events like JavaOne and TheServerSide Symposium in my former life as an independent. This seemed to be despite the fact that Java remains the most popular language certainly by jobs and most programming language indexes, Java is the most active open source platform in the world and O'Reilly itself tends to make the most money out of Java books.

I was really hoping to say I was wrong all these years, but with the greatest regret I have to say I'm still not sure I was (though I think things are looking up). By my count there were about a dozen Java related sessions among about 450+ (that's about 2-3%). I didn't count Andriod since it's still up in the air whether Andriod is Java or not. I didn't count other JVM languages since their obvious point is that they are not Java. Since open standards and open source should be philosophical brothers-in-arms, this can't be a good thing. Open source is a key component in the Java EE ecosystem today, Java EE APIs like CDI and Bean Validation are led by companies that base themselves entirely on open source and even "evil corporations" (well, at least in some people's minds) like Oracle have technologies like JSF/Mojorra, JPA/EclipseLink, JAX-RS/Jersey, WebSocket/Tyrus, not to mention GlassFish and NetBeans that are deeply rooted in both open standards as well as open source.

In all fairness, things are not that simple - OSCON/O'Reilly is not historically rooted in Java, there are plenty of Java conferences in comparison to the small handful of conferences devoted to open source, OSCON may have a chicken/egg problem as to attracting Java speakers/content/attendees and a lot of Java speakers (especially from Oracle) may be tied down with JavaOne Shanghai that happens to conflict OSCON this years and so on. In the end though I'm reminded of a parable from my own cultural heritage about the man who spit to the sky to curse the almighty for his misfortunes. All he really accomplished is a somewhat unpleasant experiment proving gravity still works :-). The moral of the story of course is that the almighty (if such a being indeed exists) only helps those who help themselves and we are all largely responsible for making the best of the disadvantages that come our way. As the ultimate sentinels of the Java ecosystem, it's up to folks like me at Oracle to make sure any fences that need to be mended at significant venues like OSCON are mended as much as possible.

At any rate, the Java EE 7 hands-on lab on the first day of the conference went relatively well considering it was a BYOL (Bring Your Own Laptop) effort. The openly available hands-on lab is actually a very good resource for getting your hands dirty with Java EE 7 (Arun put in the hard work to develop most of the material). The entire lab is neatly scripted into step-by-step instructions and seeded with some starter code as to be largely self-directed and self-paced. The idea is that anyone should be able to complete the lab by themselves or even lead the lab in their own organizations (a couple of folks at OSCON actually expressed interest in doing exactly this). I am considering running the lab at some friendly local JUGs as an extended meeting/workshop (perhaps calling it something like "Hands-on Java EE 7", "Down and Dirty with Java EE 7", "A Self-Guided Tour of Java EE 7", etc).

The lab being run solo by me as a BYOL was invaluable in exposing some potential weak points in the lab, GlassFish 4 and NetBeans that otherwise perhaps would have remained latent. A number of folks ran into this apparent NetBeans bug that I filed. I am having trouble reproducing the bug myself, so if anyone has an idea on how to investigate it, please do help. I also uncovered this GlassFish admin console bug trying to help a couple of folks diligently working through the lab after the workshop time slot (which is perfectly normal - it's a pretty long lab). There were a few other bugs related to JMS resource creation and Derby/schema generation that I saw but can't recreate (on Mac and Linux it seems). Hopefully the folks running into them will file bugs as I requested they do. I also noticed a few relatively minor things on the lab that I'll work with Arun to iron out, especially for folks that are beginners or are trying to run the lab on their own. If you try out the lab yourself and run into any issues, please help us by reaching out to me or filing bugs (even if they are just suspected bugs :-)).

On Thursday after lunch I had the WebSocket/JSR 356 talk. It went well with a small room packed with about 40 people (this was the room that all the Java talks were held at and it was consistently packed). I had a few good conversations afterwards and a few requests for the slide deck (posted below).

The demo code is posted on GitHub: https://github.com/m-reza-rahman/hello-websocket. Do drop me a note if you need help with it.

Since this was my first time in Portland, I took some time to explore the city. With the proud slogan "keep Portland weird", the city does indeed have it's unique quirky charm between the ubiquitous food carts, parks, gardens, open markets, one-of-a-kind stores, coffee shops, live music and events. What might be truly unique to Portland though is it's remarkable proximity to pristine natural environments. To see why, one only has to take a short train ride to nearby Washington Park and Forest Park. Being careful to navigate away from the touristy crowds onto one of the well placed trail heads, you won't have to hike too far to see sights that make it easy to imagine how things might have looked like when the Lewis and Clark Expedition first set foot in this part of the world:

All in all, OSCON (and Portland) was a unique and valuable experience. I would definitely look forward to doing it again some time.

About



Reza Rahman is a former independent consultant, now Java EE 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.

Search

Categories
Archives
« July 2015
SunMonTueWedThuFriSat
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
       
Today