Thursday Mar 03, 2016

Farewell to Oracle

              I will have the moral courage to make my actions consistent with my knowledge of right and wrong.

                                                                                                                                                  (See Job 27:5)

I am leaving Oracle behind on Friday March 4, 2016. Consequently this blog will become dormant. The Aquarium blog and the GlassFish/Java EE social media platforms like the @glassfish/@java_ee Twitter accounts will march forward as they have through numerous such transitions.

I have no doubt whatsoever that this was one of the top five hardest decisions of my life. I am also at this stage equally certain that this is the way I personally can best help continue to advance the Java and Java EE communities. I will be rejoining the purely community driven Java EE efforts I have been part of for the better part of a decade in complete good faith as soon as possible post-Oracle.

At Oracle folks like my colleagues David Delabassee and Bruno Borges will continue their roles in the Java EE ecosystem. I certainly wish the many good folks at Oracle nothing but the best of luck. They have a very hard job to do and they will continue to need our support, perhaps now more than ever.

As always you are absolutely welcome to connect with me personally or reach out to me on just about anything. I will be shortly reactivating my somewhat neglected and dormant purely personal blog. I will also be keeping my personal twitter handle active as always. Beyond these below are all my contact points.

Email: reza_rahman at lycos dot com
Cell: 717-329-8149
Home Office: 215-736-1208
Google/Skype: m.reza.rahman
https://www.linkedin.com/in/javareza
http://cargotracker.java.net

Monday Dec 21, 2015

JavaOne 2015 - Another Year, Another Step Forward

JavaOne 2015 San Francisco was held October 25-29. I am proud to say this is my ninth JavaOne as an attendee, my seventh one as a speaker, my fourth one as an Oracle employee, my third one as a member of the content committee and my second one as a track lead. I think this was another great year for JavaOne and it is 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 2015. I'll also share all the materials that I presented at JavaOne this year towards the end of the post.

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 is no doubt JavaOne is the largest and most important Java conference in the world. It is critical to continuing to strengthen and grow the Java ecosystem. Having taken part in organizing a few other fairly large conferences and speaking at numerous others, the JavaOne content is definitely of outstanding quality. 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 has the largest concentration of Java content anywhere. As it is said, however, it is far more difficult to stay on top than to get there. Fortunately in the past few years we have been able to maintain an upward trajectory for JavaOne by continually improving whatever we can. To that end we did quite a few things differently last year and this year was no exception.

How JavaOne 2015 was Different
Last year we grew JavaOne attendance numbers at a much more rapid pace than we have in the past few years. This year the challenge was to maintain or improve upon that dramatic growth. We were fortunate that we did indeed see modest growth even this year. This was despite the fact that we did not have any new releases announced of either Java SE or Java EE at JavaOne. On the Java EE front the biggest announcement was full Java EE 7 support in WebLogic (announced here), as well as WebSphere (announced here). Red Hat also announced their work towards making JBoss EAP Java EE 7 certified adding to the existing Java EE 7 community support via WildFly (take a look at the JBoss EAP beta announcement here). It was great to see a number of real world Java EE 7 adoption stories presented including from Rakuten during the JavaOne keynote (more on that below and in future Aquarium entries).

We started the CFP process as early as we could, provided as much detail as possible and kept the community in the loop with periodic updates through blogs like the Aquarium. We pre-selected a small number of rock star speakers to bypass the CFP altogether. On the Java EE track we also reached out to a larger group of folks and cordially invited them to join the CFP (you know who you are). In the end we had a large number of high quality CFP submissions. As a result we managed to create a strong content offering. The event was highly professionally run as it always has been in terms of venue, scheduling and organization. We did do a few things differently that hopefully helped in keeping things in the right direction:

  • Collecting good quality and quantity of feedback has long been a challenge at JavaOne, especially with the amount of content we have. We may have arrived at the best solution this year - we introduced voting kiosks right outside each session room. Since this was our first deployment of the machines it did not go entirely smoothly. Some speakers noticed votes disappearing in the online speaker tool. This is now a known issue in the speaker tool and no votes were actually lost (speakers can request all their feedback data specifically if needed). A small handful of sessions indeed did not have data captured due to setup issues. Despite these issues we still got eight times more session feedback votes cast than previous years. This is critical for us to improve content for the conference in the coming years.
  • Some of you probably know Java celebrated it's twenty-year birthday earlier this year. Partly in recognition to this we did the JavaOne community keynote a bit differently this year. Normally this keynote is a place to celebrate innovative work in Java, usually highlighting many Duke's Choice award winners (click here to see this year's winners announced at JavaOne 2015). This year we decided to do something akin to a theatrical production consisting of a time travel journey through the past twenty years of Java with stops along the way to highlight important technology milestones in the platform. The keynote was a success with a large cast of familiar community members including Java Champions, JUG leaders and JCP members. It generated kind words such as "...it was the best community keynote in JavaOne history!" (Frank Greco, NY JUG leader) and "One of the highlights of this year’s JavaOne is the community keynote...what a show it was!" (Baruch Sadogursky, JFrog Evangelist). You can watch the full video of the community keynote here. I am proud to say I took part in the community keynote.

A few other new ideas we attempted this year included a youth education program on the Saturday prior to JavaOne similar to the highly successful Devoxx4Kids program as well as live streaming a selected set of sessions to the Java YouTube channel.

What we did in the Java EE Track
There are a few more things we did in the Java EE track specifically:

  • The quality of the program committees is a crucial part of the overall quality of JavaOne. I am very happy to say we had a very active committee this year in the Java EE track. We aimed to minimize the Oracle and vendor footprint in the committee in favor of folks in the community including folks that help put together other successful conferences. I wrote about this year's committee in detail prior to JavaOne. I also interviewed some committee members for the Aquarium. We will try to improve the committee further in subsequent years.
  • Just as we did last year 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.
  • Just as last year we promoted video interviews with some JavaOne speakers about their sessions via the Aquarium. 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: Ivar Grimstad, Bessem Hmidi and Kito Mann. We will try to do more of this in subsequent years.

There was some specific content that we wanted to have in the track that we got to various degrees:

Java EE 8: 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. We were able to put together a number of such sessions.

Best Practices/Design Patterns: Beyond learning Java EE APIs, it is critically important to understand how to effectively apply them in real life applications, which is where best practices and design patterns come in.

Real World Adoption Stories: As we grow the Java EE community it is more and more important to highlight adoption stories, case studies and migrations from other technologies. Last year was very good in this regard and I am happy to say this year was even better. 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.

The Java EE Ecosystem: The ecosystem that builds upon Java EE APIs is critically important in keeping the platform strong. This year was far better in this regard than previous years. We always hope to highlight such content and wish there were more submissions along these lines.

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 we had the usual strong showing of Oracle speakers: David Delabassee, Geertjan Wielenga, Bill Shannon, Linda Demichiel, Ed Burns, Manfred Riem, Santiago Pericasgeertsen, Nigel Deakin and 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 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 very proud to host this year:

  • Adam Bien (JavaOne Rock Star, Java EE author, Java Champion, speaker, consultant)
  • David Blevins (JavaOne Rock Star, Java Champion, Apache TomEE project lead)
  • Arun Gupta (JavaOne Rock Star, Java Champion, Java EE advocate, author, blogger, speaker)
  • Patrycja Wegrzynowicz (CTO, Java EE researcher)
  • Antoine Sabot-Durand (CDI specification lead, Red Hat)
  • Kito Mann (Java EE author, speaker, consultant)
  • Murat Yener (Java EE author, speaker, Java Champion)
  • Peter Pilgrim (Java EE author, Java Champion, speaker, consultant)
  • Steve Millidge (London GlassFish User Group, C2B2 Consulting, Paraya)
  • Ivar Grimstad (Java EE advocate, JCP expert, blogger, open source hacker, consultant)
  • Ryan Cuprak (JavaOne Rock Star, Java EE author, speaker and JUG leader)
  • David Heffelfinger (Java EE advocate, author, blogger, consultant)
  • Aslak Knutsen (Arquillian project lead, Red Hat)
  • Mohamed Taman (Java EE advocate, Java Champion, Duke's Choice Award Winner, JUG leader, consultant)
  • Roberto Cortez (Java EE advocate, JUG leader, blogger, open source hacker)
  • Alex Soto (Java EE advocate, speaker, blogger, open source hacker)
  • Matti Tahvonen (Developer Advocate, Vaadin)

We will be highlighting some of these sessions on the Aquarium in the next coming months including videos and slide decks (more on that below).

What I did at JavaOne
The last few JavaOnes have been fairly hectic for me and this year was no exception. Indeed this was the most busy JavaOne for me by far. 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:

Sunday: As in previous years I started JavaOne 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 we had quite a bit of time allocated to us on Sunday so we decided to do things a bit differently. Instead of focusing just on GlassFish we had four sessions covering both Java EE and GlassFish. The strategy turned out to be a success and we had much higher attendance than previous years. We will try to continue this strategy in the coming years.

In the first brief session Mike Lehmann presented the GlassFish/Java EE road map. Mike talked about GlassFish 4.1.1, Java EE 8 and GlassFish 5. The second session was titled "GlassFish Performance Tuning: Tips from the Field" and was presented by Steve Millidge (founder Payara, C2B2 Consulting). The third session slot was for David Blevins as well as Oleg Tsal-Tsalko and was titled "Evolving Java EE". They shared some interesting ideas for evolving Java EE APIs using featured introduced in Java SE 8. Adam Bien presented the last session of the day titled "Building Nanoservices with Java EE and Java 8". All of the sessions, particularly Adam's one, were very well attended. Indeed we had to move the room location twice to the largest space we could find to fit everyone that wanted to come listen to Adam!

In the evening we hosted the traditional GlassFish party at the Thirsty Bear. The party was completely packed until the very end as usual.

Monday: I kicked off the Java EE track Monday morning with my two-hour workshop titled "Java EE 7 in Action". It was a fully packed house with most folks staying to the very end. The workshop is something I've successfully delivered in the past. It uses Cargo Tracker but focuses on Java EE 7 usage instead of DDD and Java EE generally. I overview Java EE 7 at a high level, go through each API change and demo some selected features using Cargo Tracker. For each demo I explain the use case for the Java EE 7 feature in use and show actual running code. The slide deck is embedded below and the source PPT can be downloaded from here.

I have deliberately added detailed speaker notes to the source PPT so you should be able to go through the workshop yourself. You can also view the video recording for the entire workshop here.

Later in the afternoon I helped out David Heffelfinger with his popular hands-on lab titled "Java EE 101". The lab is so popular that in fact it is a repeat from last year! In addition it had such high demand that it was scheduled to be run twice this year! Both sessions were completely booked and ran very smoothly. The lab goes through the very basics of Java EE including JSF, CDI, JPA and EJB. I am seriously considering having David repeat the lab again next year. All the lab materials can be downloaded here. You should also check out David's blog entry on the lab here.

In the evening I went to the JCP party which is always lively and a great way to catch up with some key folks in the Java community. This year's JCP award winners were announced at the party including some key winners on the Java EE side of things. You can read my write-up on this year's winners here.

Tuesday: I started Tuesday out with repeating the Java EE 101 lab again in the morning. Towards noon I ran a hands-on lab on JMS 2 titled "Down-and-Dirty with JMS 2". My Turkish friends Salim Kayabasi and Hasan Keklik did an awesome job helping me prepare the materials and run the lab. The lab was packed and went pretty smoothly. The goal of the lab is to give attendees some first-hand experience with the primary changes in JMS 2. In the first hour or so I did a brief presentation overviewing JMS 2 and went over the JMS 2 Javadocs. The rest of the time attendees actually wrote JMS 2 code mostly by themselves. The slides I use are available on SlideShare (click here if you can't see the embedded slide deck).

The lab materials are hosted on GitHub for anyone to use. The lab uses NetBeans 8, GlassFish 4 and Arquillian. I've deliberately designed the lab materials to be fairly self-guided so you can definitely use the lab materials on your own (or perhaps even run the lab in your own company/JUG) . You are always welcome to reach out to me when needed. In the lab you'll basically be putting in code to finish a set of JUnit tests using JMS 2, starting from incomplete code with comments on what to do (don't worry, a completed solution is also posted :-)). There were a few good ideas to improve the lab that I hope to incorporate soon.

Later in the afternoon I co-presented a very cool session with another good Turkish friend - Murat Yener. The talk is titled "Java EE Revisits GoF Design Patterns" and is based on Murat's excellent book. The talk explores how modern Java EE incorporates many key GoF design patterns such as singleton, factory, session facade, observer and decorator. Java EE also directly or indirectly incorporates other patterns such as MVC, entity, DAO and DTO. I also discussed how DDD patterns fit seamlessly into Java EE (this is the subject of my other design pattern talk - Applied Domain-Driven Design Blue Prints for Java EE). The talk was completely packed with good Q & A throughout the session. The slides for the session are below (click here if you can't see the embedded slide deck).

You can watch the video for the session here. I finished the day off with briefly going to the Tomitribe party and chatting with a few old friends.

Wednesday: After a hectic few days I was beginning to feel a bit tired and thought I'd rest a bit the 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 with Steve Millidge. This is one of my newest talks titled "Down-to-Earth Microservices with Java EE". The talk has two aims. The first is to try to do the right thing in explaining what microservices really are, what practical value they offer for most of us and when you should consider them (or not). The second aim is to demonstrate why Java EE makes perfect natural sense for developing sensible real world microservices, so called "monoliths" and everything in between. I also briefly explore the work that some parts of the Java EE community is doing to support what I lovingly call "microservices Nirvana" (spoiler: I don't think most of us can or need to achieve this Nirvana state). The slide deck for this talk is below (click here if you can't see the embedded slide deck):

I've done this talk a few times already. It is clearly popular, on the mark and well received - even with what I have traditionally observed to be a hostile audience. Unsurprisingly the talk was a full house and went well at JavaOne as well.

You can view the video of the talk here.

Thursday: Thursday was the last day of JavaOne 2015. In the morning I delivered one of my newer talks titled "Reactive Java EE - Let Me Count the Ways!". It aligns Java with core Reactive Programming principles. Though many people don't realize it, Java EE has long had very good support for asynchronous, event-driven, non-blocking scalable systems. This includes features and APIs like JMS, Message Driven Beans, Asynchronous Session Beans, CDI events/observers, asynchronous Servlets/NIO, server/client side JAX-RS and the Java EE concurrency utilities. These features can be used in a highly Reactive fashion especially in conjunction with Java SE 8 lambdas, streams and CompletableFuture. The slides for the talk are here (click here if you can't see the embedded slides):

Although JavaOne had thinned out by Thursday this talk too was packed. The video for the session is here. I finished JavaOne well this year by participating in the excellent community keynote.

JavaOne Comes to Your Computer - for Free!
I am very happy to report that you can take advantage of the materials at JavaOne even if you could not come this year. All the session titles, abstracts and most of the slides are available for all on the content catalog. In addition we've made the session videos available on YouTube. This is a wealth of knowledge available for free that you should not hesitate to take advantage of (especially over the holidays :-)).

All in all this was another 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 content.

Friday Jul 19, 2013

Java EE@Chicago JUG

On July 16th, I spoke at the Chicago JUG. Heather VanCura of the JCP helped arrange the talk. I did my Java EE 7 talk (our flagship talk this year) - slides posted below. Now that Java EE 7 is out, I'm trying to do a few more visits to reasonably local JUGs to my home office in Philly (I am speaking in Pittsburgh, Columbus and Cleveland in August).

The talk went very well -- over 75 people attended by my count and the RSVP was even higher than that. I was very happy to share the stage with Simon Maple of ZeroTurnaround (speaking on class loaders/JRebel of course). I gave away a few GlassFish T-shirts, laptop stickers and other goodies. I'm going to try to hit Chicago again when I'm flying cross country.

Tuesday Jun 25, 2013

WebSocket@QCon NY

QCon NY was held on June 10-14 at the New York Marriott/Brooklyn Bridge. Part of the QCon franchise, this is one of the most significant IT conferences in the greater NYC area. It was an honor to do a WebSocket (JSR 356) talk at the conference. Unfortunately, my schedule was such that I could only attend one day of the conference and did not really get a chance to attend many sessions or do much networking. I did get a chance to talk to fellow Oracle speakers Doug Clarke, Stephen Chin and Frederic Desbiens, which was great.

My session, titled Building Java HTML5/WebSocket Applications with JSR 356 was very well attended and I had some excellent Q & A. 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.

Oracle hosted a reception in the evening which was very well attended. Later in the evening the QCon organizers hosted a very nice speakers' dinner at a local boutique restaurant with excellent atmosphere and good food.

Monday Jun 24, 2013

JUDCon 2013 Trip Report

JUDCon (JBoss Users and Developers Conference) 2013 was held in historic Boston on June 9-11 at the Hynes Convention Center. JUDCon is the largest get together for the JBoss community, has gone global in recent years but has it's roots in Boston. The JBoss folks graciously accepted a Java EE 7 talk from me and actually referenced my talk in their own sessions. I am proud to say this is my third time speaking at JUDCon/the Red Hat Summit over the years (this was the first time on behalf of Oracle). I had great company with many of the rock stars of the JBoss ecosystem speaking such as Lincoln Baxter, Jay Balunas, Gavin King, Mark Proctor, Andrew Lee Rubinger, Emmanuel Bernard and Pete Muir. Notably missing from JUDCon were Bill Burke, Burr Sutter, Aslak Knutsen and Dan Allen. Topics included Java EE, Forge, Arquillian, AeroGear, OpenShift, WildFly, Errai/GWT, NoSQL, Drools, jBPM, OpenJDK, Apache Camel and JBoss Tools/Eclipse.

My session titled "JavaEE.Next(): Java EE 7, 8, and Beyond" went very well and it was a full house. This is our main talk covering 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 the possibilities for Java EE 8. The slides for the talk are here:

Besides presenting my talk, it was great to catch up with the JBoss gang and attend a few interesting sessions. On Sunday night I went to one of my favorite hangouts in Boston - the exalted Middle East Club as Rolling Stone refers to it (another cool spot in an otherwise pretty boring town is "the Church"). As contradictory as it might sound to the uninitiated, the Middle East Club is possibly the best place in Boston to simultaneously get great Middle Eastern (primarily Lebanese) food and great underground metal. For folks with a bit more exposure, this is probably not contradictory at all given bands like Acrassicauda and documentaries like Heavy Metal in Baghdad.

Luckily for me they were featuring a few local Thrash metal bands from the greater Boston area. It wasn't too bad considering it was primarily amateur twenty-something guys (although I'm not sure I'm a qualified critic any more since I all but stopped playing about at that age). It's great Boston has the Middle East as an incubator to keep the rock, metal, folk, jazz, blues and indie scene alive.

I definitely enjoyed JUDCon/Boston and hope to be part of the conference next year again.

Thursday May 30, 2013

Java EE@NY Java SIG

On May 29th, I spoke at the New York Java Special Interest Group. The NY Java SIG is the first Java User Group in existence (since September 1995) and is the largest Java User Group in North America. It is led by well respected veteran Java Champion Frank Greco. I did my Java EE 7 talk (the same one from JeeConf 2013).

The talk went very well -- the official RSVP shows a sold out event with 275 attendees. I gave away a few GlassFish T-shirts, laptop stickers and Arun Gupta's Java EE 6 pocket guide. More details on the talk here. I most certainly look forward to speaking at the NY Java SIG again.

Tuesday May 28, 2013

JeeConf 2013 Trip Report

JeeConf 2013 was held in historic Kiev on May 24-25. For those of you not familiar with it, JeeConf is the most significant Java conference in the Ukraine. This was a very successful year for this nascent conference with four tracks and capacity attendance. The conference attracted a bevy of local and international speakers including Venkat Subramaniam, Yakov Fain, Talip Ozturk, Jacek Laskowski, Mohamed Taman and Sander Mak. Topics included Java SE, NoSQL, cloud, HTML5/JavaScript, Arquillian and of course Java EE :-).

It was my pleasure and privilege to give the opening talk of the conference. 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 the possible contents of Java EE 8. The talk was received well and I had some pretty good discussions afterwards. It was a full house session which is always encouraging. The slides for the talk are here:

To my delight, the JeeConf folks were very 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 surpringly 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 very well attended and the Q & A was excellent. The slides for the talk are here:

The first demo used MongoDB, EclipseLink NoSQL and JUnit. The code for it is available on this GitHub repository: https://github.com/m-reza-rahman/jpa-nosql-demo. The second demo used MongoDB, CDI, Arquillian and JUnit. The code for it is available on this GitHub repository: https://github.com/m-reza-rahman/cdi-nosql-demo. Give me a shout if you need help getting the demos up and running. I plan to write a two-part blog using the contents of this talk, so stay tuned.

Besides presenting my talks, it was great to catch up with the likes of Venkat, Yakov, Talip, Jacek, Mohamed and Sander. In fact, I spent a few hours playing whirlwind tour guide to Talip whizzing past the usual tourist spots in Kiev including Lavra, St. Michael's Cathedral, Saint Sophia Cathedral, St. Andrew's Church, the House with Chimeras, Andriyivski Uzviz and the Golden Gate. I also got a chance to unwind and rock out with Kievites celebrating City Day to a pretty cool Russian AC/DC cover band named Easy Dizzy at the ever popular Docker's pub. It was an almost surreal experience that probably would have been unimaginable just a few decades ago in the dull age of the Iron Curtain (check out the pictures I took below). It's a great indication of how much Ukraine is changing and has changed already. I also got to experience a more traditional part of Ukrainians as a people with a cold, reserved façade that are in reality kind-hearted, generous hosts who think nothing of deciding to warmly befriend a lone (and probably a bit strange) foreigner for the evening.

I definitely enjoyed JeeConf/Kiev and hope to be part of the conference next year again!

Wednesday Mar 20, 2013

33rd Degree 2013 Trip Report

33rd Degree 2013 was held in historic Warsaw, Poland on March 13-15. For those of you not familiar with it, dubbed "the Conference for Java Masters" this is the premier Java conference for Poland. It attempts to bring together elite speakers in the Java community across the globe. This was my first time at the conference and I most certainly thought the conference lived up to its promise. Just some notable speakers included Tim Berglund, Adam Bien, Ted Neward, Dan North, Simon Ritter, Venkat Subramaniam, Geertjan Wielenga and Kai Wahner.

I delivered three full-house talks, all on the second day of the conference. The first was my talk on Java EE 7 and 8 titled "JavaEE.Next(): Java EE 7, 8, and Beyond". The talk was 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 the possible contents of Java EE 8. The talk had standing room only with 400+ attendees. The slides for the talk are here:

My second talk was on the Java API for WebSocket/JSR 356 titled "Building HTML5/WebSocket Applications with JSR 356 and GlassFish". The talk is based on Danny Coward's JavaOne 2012 talk. The talk covers the basic of WebSocket, the JSR 356 API and a simple demo using Tyrus/GlassFish. The talk went very well and there were some very good questions. This was a full session as well with 150+ attendees. The slides for the talk are here:

The code samples are available here: https://blogs.oracle.com/arungupta/resource/totd183-HelloWebSocket.zip. Give me a shout if you need help getting it up and running.

To my delight, the 33rd Degree folks were very interested in my domain-driven design/Java EE talk (titled "Applied Domain-Driven Design BluePrints for Java EE"). The talk has three parts -- a brief overview of DDD theory, mapping DDD to Java EE and actual running DDD code in Java EE/GlassFish. I converted the well-known DDD sample application (http://dddsample.sourceforge.net/) written mostly in Spring 2 and Hibernate 2 to Java EE 7. My eventual plan is to make the code available via a top level java.net project. Even despite the broad topic and time constraints, the talk went very well. The room was fully packed with 400+ people and I got excellent feedback on the talk later. The slides for the talk are here:

The code examples are available here: https://blogs.oracle.com/reza/resource/cargo-tracker.zip for now, as a simple zip file. Give me a shout if you would like to get it up and running.

Besides presenting my talks, I got to attend some great sessions on Java SE, JavaScript/HTML5, NoSQL and mobile. It was also good to catch up personally with Adam, Kai, Simon and Geertjan.

On a more personal note, I was very curious to explore the heavy metal scene in Poland because I know there have been many brilliant but seriously underrated Polish metal bands like Vader and Behemoth. Luckily for me, bitter cold Winter Friday nights are metal nights in Warsaw. I got to check out some of the city's best young metal bands at the storied Metal Cave.

I definitely enjoyed 33rd Degree 2013 and hope to be part of the conference again next year.

Scandinavian Developer Conference 2013 Trip Report

The Scandinavian Developer Conference (aka ScanDev, aka SDC) 2013 was held in Gothenburg, Sweden on March 4-6. The conference was held at the conference center for Gothia Towers, the largest hotel in Sweden. For those of you not familiar with it, ScanDev is the premier IT conference in the Gothenburg region. It has tracks for product/team management, architecture, UI/UX, testing, data, C/C++, .NET, Java, mobile, JavaScript and PHP. The Java EE presence was particularly strong at the conference. Besides me, Aslak Knutsen and Dan Allen had a talk about Arquillian, David Blevins spoke on TomEE and Kai Wahner had his excellent Java integration frameworks talk. I attended all three talks. I also attended a few talks on Java SE, REST/hypermedia, NoSQL, HTML 5/JavaScript and mobile. It was great to catch up personally with Dan, Aslak and David.

On the first day of the conference, 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 the possible contents of Java EE 8. The talk was well attended. The slides for the talk are here:

On a cool, crisp Saturday morning, I decided to go island hopping across the Southern Gothenburg Archipelago. In the old Norse sagas, these islands were called Elfarsker (the river islets) and today they are a car free paradise (you read that right - there are no cars allowed on the islands). I visited Branno, Styrso and Donso. With picturesque trails and shorelines reminiscence of some of the more desolate parts of the rocky Maine coast, this is a true gem for any outdoors/nature enthusiast. On my 8+ hour hike, I came across perhaps 4-5 people including folks on the ferry to/from the city of Gothenburg proper. Just take a look at some the pictures I took below:

I liked the conference as well as the city of Gothenburg and look forward to going there again.

Friday Feb 22, 2013

DevNexus 2013 Trip Report

DevNexus 2013 was held in historic Atlanta on February 18-19. For those of you not familiar with it, DevNexus is the most significant Java conference in the South Eastern US. It was started by JBoss Java Champion Burr Sutter and organized by the Atlanta JUG (currently lead by Vincent Mayers, Gunnar Hillert, et al). As usual DevNexus attracted a bevy of world class speakers including Ben Evans, Neal Ford, David Geary and Venkat Subramaniam. Topics included Java SE, NoSQL, mobile, cloud, HTML5/JavaScript and of course Java EE :-).

On the first day of the conference, 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 the possible contents of Java EE 8. The talk was received well and I had some pretty good discussions during Q & A. It was a completely full house session with standing room only! The slides for the talk are here:

To my delight, the DevNexus folks were very 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 surpringly little material on out there. The talk has four parts -- a brief overview of JPA 2.1, a birds-eye view of the NoSQL landscape, how to use NoSQL via a JPA 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 a full house, the Q & A was excellent and I got great feedback afterwards. The slides for the talk are here:

The first demo used MongoDB, JPA, EclipseLink NoSQL and JUnit. The code for it is available on this GitHub repository: https://github.com/m-reza-rahman/jpa-nosql-demo. The second demo used MongoDB, CDI, Arquillian and JUnit. The code for it is available on this GitHub repository: https://github.com/m-reza-rahman/cdi-nosql-demo. Give me a shout if you need help getting the demos up and running. I plan to write a two-part blog using the contents of this talk, so stay tuned.

Besides giving my talks, I attended a few talks on Java SE, HTML 5/JavaScript and mobile. I definitely enjoyed DevNexus and hope to be part of the conference next year.

Friday Dec 14, 2012

Java EE 7 Survey Results!

On November 8th, the Java EE EG posted a survey to gather broad community feedback on a number of critical open issues. For reference, you can find the original survey here. We kept the survey open for about three weeks until November 30th. To our delight, over 1100 developers took time out of their busy lives to let their voices be heard!

The results of the survey were sent to the EG on December 12th. The subsequent EG discussion is available here. The exact summary sent to the EG is available here.

We would like to take this opportunity to thank each and every one the individuals who took the survey. It is very appreciated, encouraging and worth it's weight in gold. In particular, I tried to capture just some of the high-quality, intelligent, thoughtful and professional comments in the summary to the EG. I highly encourage you to continue to stay involved, perhaps through the Adopt-a-JSR program. We would also like to sincerely thank java.net, JavaLobby, TSS and InfoQ for helping spread the word about the survey.

Below is a brief summary of the results...

APIs to Add to Java EE 7 Full/Web Profile

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

As the following graph shows, there was significant support for adding all the new APIs to the full profile:

Support is relatively the weakest for Batch 1.0, but still good. A lot of folks saw WebSocket 1.0 as a critical technology with comments such as this one:

  • "A modern web application needs Web Sockets as first class citizens"

While it is clearly seen as being important, a number of commenters expressed dissatisfaction with the lack of a higher-level JSON data binding API as illustrated by this comment:

  • "How come we don't have a Data Binding API for JSON"

JCache was also seen as being very important as expressed with comments like:

  • "JCache should really be that foundational technology on which other specs have no fear to depend on"

The results for the Web Profile is not surprising. While there is strong support for adding WebSocket 1.0 and JSON-P 1.0 to the Web Profile, support for adding JCache 1.0 and Batch 1.0 is relatively weak.

There was actually significant opposition to adding Batch 1. 0 (with 51.8% casting a 'No' vote).

Enabling CDI by Default

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

A significant majority of 73.3% developers supported enabling CDI, only 13.8% opposed. Comments such as these two reflect a strong general support for CDI as well as a desire for better Java EE alignment with CDI:

  • "CDI makes Java EE quite valuable!"
  • "Would prefer to unify EJB, CDI and JSF lifecycles"

There is, however, a palpable concern around the performance impact of enabling CDI by default as exemplified by this comment:

  • "Java EE projects in most cases use CDI, hence it is sensible to enable CDI by default when creating a Java EE application. However, there are several issues if CDI is enabled by default: scanning can be slow - not all libs use CDI (hence, scanning is not needed)"

Another significant concern appears to be around backwards compatibility and conflict with other JSR 330 implementations like Spring:

  • "I am leaning towards yes, however can easily imagine situations where errors would be caused by automatically activating CDI, especially in cases of backward compatibility where another DI engine (such as Spring and the like) happens to use the same mechanics to inject dependencies and in that case there would be an overlap in injections and probably an uncertain outcome"

Some commenters such as this one attempt to suggest solutions to these potential issues:

  • "If you have Spring in use and use javax.inject.Inject then you might get some unexpected behavior that could be equally confusing. I guess there will be a way to switch CDI off. I'm tempted to say yes but am cautious for this reason"

Consistent Usage of @Inject

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

A slight majority of 53.3% developers supported using @Inject consistently across JSRs. 28.8% said using custom injection annotations is OK, while 18.0% were not sure. The vast majority of commenters were strongly supportive of CDI and general Java EE alignment with CDI as illistrated by these comments:

  • "Dependency Injection should be standard from now on in EE. It should use CDI as that is the DI mechanism in EE and is quite powerful. Having a new JSR specific DI mechanism to deal with just means more reflection, more proxies. JSRs should also be constructed to allow some of their objects Injectable. @Inject @TransactionalCache or @Inject @JMXBean etc...they should define the annotations and stereotypes to make their code less procedural. Dog food it. If there is a shortcoming in CDI for a JSR fix it and we will all be grateful"
  • "We're trying to make this a comprehensive platform, right? Injection should be a fundamental part of the platform; everything else should build on the same common infrastructure. Each-having-their-own is just a recipe for chaos and having to learn the same thing 10 different ways"

Expanding the Use of @Stereotype

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

A significant majority of 62.3% developers supported expanding the use of @Stereotype, only 13.3% opposed. A majority of commenters supported the idea as well as the theme of general CDI/Java EE alignment as expressed in these examples:

  • "Just like defining new types for (compositions of) existing classes, stereotypes can help make software development easier"
  • "This is especially important if many EJB services are decoupled from the EJB component model and can be applied via individual annotations to Java EE components. @Stateless is a nicely compact annotation. Code will not improve if that will have to be applied in the future as @Transactional, @Pooled, @Secured, @Singlethreaded, @...."

Some, however, expressed concerns around increased complexity such as this commenter:

  • "Could be very convenient, but I'm afraid if it wouldn't make some important class annotations less visible"

Expanding Interceptor Use

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

A very solid 96.3% of developers wanted to expand interceptor use to all Java EE components. 35.7% even wanted to expand interceptors to other Java EE managed classes. Most developers (54.9%) were not sure if there is any place that injection is supported that should not support interceptors. 32.8% thought any place that supports injection should also support interceptors. Only 12.2% were certain that there are places where injection should be supported but not interceptors.

The comments reflected the diversity of opinions, generally supportive of interceptors:

  • "I think interceptors are as fundamental as injection and should be available anywhere in the platform"
  • "The whole usage of interceptors still needs to take hold in Java programming, but it is a powerful technology that needs some time in the Sun. Basically it should become part of Java SE, maybe the next step after lambas?"

A distinct chain of thought separated interceptors from filters and listeners:

  • "I think that the Servlet API already provides a rich set of possibilities to hook yourself into different Servlet container events. I don't find a need to 'pollute' the Servlet model with the Interceptors API"

Wednesday Dec 12, 2012

Java EE@Princeton Java Meetup

On November 28th, I spoke at the Princeton Java Meetup Group. It's a well-organized group led by veteran Java champion Yakov Fain - I have spoken there numerous times. I did my Java EE 6 DDD talk (the same one from Java2Days 2012).

The code examples are available here: https://blogs.oracle.com/reza/resource/dddsample.zip. Give me a shout if you would like to get it up and running.

The talk went very well -- the official RSVP shows 33 attended. I gave away a few GlassFish T-shirts, laptop stickers and Arun Gupta's Java EE 6 pocket guide. More details on the talk here. I most certainly look forward to speaking there again.

Java EE@NYC Java Meetup

On November 19th, I spoke at the New York City Java Meetup Group. It's a well-organized group led by my good friends Dario Laverde and Timothy Fagan - I have spoken there numerous times. I did my Java EE 7 talk (the same one from Java2Days 2012).

The talk went very well -- the official RSVP shows 163 attended. I gave away a few GlassFish T-shirts, laptop stickers and Arun Gupta's Java EE 6 pocket guide. More details on the talk here. I most certainly look forward to speaking there again.

Friday Nov 09, 2012

Wanted Now: Your Feedback on Java EE 7!

Work on Java EE 7 presses on under JSR 342. Things are shaping up nicely and Java EE 7 is now in the Early Draft Review stage. You can find out more and get involved by visiting the Java.net project for Java EE.

There are now a number of important open issues that the Java EE expert group would like to get broad community feeback on. These issues include what new JSRs to add to the Java EE Full/Web Profile as well as how to better align CDI with Java EE.

Help shape the future and voice your opinion on these critical open issues by taking the short survey posted here.

Tuesday Nov 06, 2012

Java2Days 2012 Trip Report

Java2Days 2012 was held in beautiful Sofia, Bulgaria on October 25-26. For those of you not familiar with it, this is the third installment of the premier Java conference for the Balkan region. It is an excellent effort by admirable husband and wife team Emo Abadjiev and Iva Abadjieva as well as the rest of the Java2Days team including Yoana Ivanova and Nadia Kostova. Thanks to their hard work, the conference continues to grow vigorously with almost a thousand enthusiastic, bright young people attending this year and no less than three tracks on Java, the Cloud and Mobile. The conference is a true gem in this region of the world and I am very proud to have been a part of it again, along with the other world class speakers the event rightfully attracts.

It was my honor to present the first talk of the conference. It was a full-house session on Java EE 7 and 8 titled "JavaEE.Next(): Java EE 7, 8, and Beyond". The talk was 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, JCache, JPA 2.1, JTA 1.2, JSF 2.2, Java Batch, Bean Validation 1.1 and the rest of the APIs in Java EE 7. I also briefly talked about the possible contents of Java EE 8. My stretch goal was to gather some feedback on some open issues in the Java EE EG (more on that soon) but I ran out of time in the short format forty-five minute session. The talk was received well and I had some pretty good discussions afterwards. The slides for the talk are here:

To my delight, the Java2Days folks were very interested in my domain-driven design/Java EE 6 talk (titled "Domain Driven Design with Java EE 6"). I've had this talk in my inventory for a long time now but it always gets overridden by less theoretical talks on APIs, tools, etc. The talk has three parts -- a brief overview of DDD theory, mapping DDD to Java EE and actual running DDD code in Java EE 6/GlassFish. For the demo, I converted the well-known DDD sample application (http://dddsample.sourceforge.net/) written mostly in Spring 2 and Hibernate 2 to Java EE 6. My eventual plan is to make the code available via a top level java.net project. Even despite the broad topic and time constraints, the talk went very well. It was a full house, the Q & A was excellent and one of the other speakers even told me they thought this was the best talk of the conference! The slides for the talk are here:

The code examples are available here: https://blogs.oracle.com/reza/resource/dddsample.zip for now, as a simple zip file. Give me a shout if you would like to get it up and running.

It was also a great honor to present the last session of the conference. It was a talk on the Java API for WebSocket/JSR 356 titled "Building HTML5/WebSocket Applications with JSR 356 and GlassFish". The talk is based on Danny Coward's JavaOne 2012 talk. The talk covers the basic of WebSocket, the JSR 356 API and a simple demo using Tyrus/GlassFish. The talk went very well and there were some very good questions afterwards. The slides for the talk are here:

The code samples are available here: https://blogs.oracle.com/arungupta/resource/totd183-HelloWebSocket.zip. You'll need the latest promoted GlassFish 4 build to run the code. Give me a shout if you need help.

Besides presenting my talks, I got to attend some great sessions on OSGi, HTML5, cloud, agile and Java 8. I got an invite to speak at the Macedonia JUG when possible. Victor Grazi of InfoQ wrote about my sessions and Java2Days here: http://www.infoq.com/news/2012/11/Java2DaysConference. Stoyan Rachev was very kind to blog about my sessions here: http://www.stoyanr.com/2012/11/java2days-2012-java-ee.html.

I definitely enjoyed Java2Days 2012 and hope to be part of the conference next year!

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 2016
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