Tuesday Jul 28, 2015

Voxxed Days Istanbul 2015 Trip Report

Voxxed Days Istanbul 2015 was held on May 9th. It might seem surprising but this was the first large scale independent Java focused conference ever to be held in Turkey. It was a deliberately modest but solid first step with gradual future growth in mind. Though the event was modest in scope it was certainly not in terms of spirit and enthusiasm. It attracted some of the best and brightest in the Java ecosystem including Gavin King and Arun Gupta not to mention local Java luminaries like Cagatay Civici (PrimeFaces lead) and Murat Yener (Java Champion). In fact I am proud to say Cagatay and Murat have been good personal friends. Topics included Java SE, mobile, NoSQL, methodology and of course Java EE. Indeed Java EE had a fairly strong presence at the event. I feel very privileged to be invited to this inaugural event. While in Turkey I am very happy to say I also spoke at two of the largest Java user groups in Turkey - the Ankara JUG as well as the Istanbul JUG. It was very gracious of the Voxxed Days Istanbul organizers to help facilitate meetings with both JUGs.

I started my Turkey tour in the political capital of Ankara. True to legendary Turkish hospitality my friend Cagatay picked me up promptly at the airport and never left me alone in Ankara until it was time to head to Istanbul. I spoke at the Ankara JUG on the 5th, delivering a two hour workshop titled "Java EE 7 in Action" that ran more towards three hours. It was a fully packed house with many kindly staying to the very end. For those unaware the Ankara JUG is the most active in Turkey thanks to the likes of Cagatay and Java Champion Mert Caliskan. 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.

Instead of taking yet another dreary flight I took a very comfortable bus ride from Ankara to Istanbul. I could have also opted for high speed rail but the bus offers a more relaxed experience, picturesque views of the mountainous Anatolian county side and a cool rural meal stop. Just as Cagatay was my kind host in Ankara, Murat Yener, his wife Nilay Yener, Salim Kayabasi and Hasan Keklik were my gracious hosts in Istanbul. On the 7th I delivered the "Java EE 7 in Action" workshop again at the Istanbul JUG to a full house at an excellent ultra-modern venue (thanks Istanbul JUG and Voxxed Days Istanbul lead organizer Rahman Usta for the well-taken pictures).

Voxxed Days Istanbul itself started with a bang celebrating the twenty year anniversary of Java. This was my first of multiple such celebrations. I was honored to be invited onstage to cut the cake featuring Duke alongside my former colleague Arun Gupta, Voxxed Days organizers, Stephan Janssen, Murat and many others. After the keynote and Java birthday celebrations I delivered a very important short talk titled "What's New in WebLogic 12.1.3 and Beyond". The talk essentially covers the very important hard work that we have already done in WebLogic 12.1.3 including supporting some of the most critical Java EE 7 APIs as well as the fundamental changes coming soon in WebLogic 12.2.1 including full Java EE 7 platform support. Below is the slide deck for the talk (click here if you can't see the embedded slide deck.):

I am very glad the Voxxed Days Istanbul organizers were enlightened enough to allow this talk. I wish more events would recognizer the distinction between selling and informing current/prospective users about important technological changes that they can use. As a result, it leaves the industry at large dangerously ignorant of what is really going on with key bits of mission critical industry infrastructure be it WebLogic, WebSphere or JBoss EAP. Likely largely because of these dynamics the session was relatively sparse and that is very unfortunate indeed. Concurrent to my talk Arun Gupta delivered a very cool session on refactoring existing Java EE applications into Microservices using Docker. After my time slot Cagatay delivered a talk on JSF and PrimeFaces.

After lunch I delivered our main driving talk for this year titled "What's Coming in Java EE 8" in the main keynote hall. The talk covers the possibilities for Java EE 8 such as HTTP 2/Servlet 4, Server-Sent Events (SSE), a new standard action-oriented web framework, security simplification, REST management/monitoring, even better JSON support, CDI 2, platform-wide CDI alignment, more pruning, JCache, JMS.next() and Java SE 8 alignment. I also cover Adopt-a-JSR. The slides for the talk are here (click here if you can't see the embedded slide deck):

Do note that I've added detailed speaker notes available to you in the downloadable PowerPoint deck. This means that you could deliver the talk yourself if you were so inclined. The talk was well attended and I got some good feedback afterwards. The Istanbul JUG is an active Java EE 8 adopter via Adopt-a-JSR. After my talk there was a good talk on the latest changes in WildFly.

My last talk for the event was my very popular talk on Cargo Tracker/Java EE + DDD. This talk basically overviews DDD and describes how DDD maps to Java EE using code examples/demos from the Cargo Tracker Java EE Blue Prints project. Below is the slide deck for the talk (click here if you can't see the embedded slides):

The talk went well and was a full house in a smaller breakout room. I got some excellent questions throughout the session as well as afterwards. Arun Gupta used the last session slot to deliver another talk on Java EE, Docker and Kubernetes.

As tough as a longer multi-destination trip like this can be, one upside is the fact that one can use their personal time to explore one's destination. Thanks to Cagatay, Murat, Nilay, Salim and Hasan I was able to do just that in both Ankara and Istanbul. As unbelievable as this may sound I think I was able to cover the vast majority of the sights in both cites in the short down time that I had including the Kemal Ataturk memorial, Kocatepe mosque, Ankara castle, the blue mosque, Hagia Sophia, Topkapi palace, Basilica Cistern, Suleymaniye mosque, the spice bazaar and the grand bazaar. It's not difficult to see the elegant layers of history in the cradle of so many of the world's major civilizations (that's the Hittite, Byzantine and Ottoman empires for the historically illiterate among you). Just take a look at the pictures below (click here if you can't see the embedded slideshow):

While in Istanbul I was also able to check out underground Turkish heavy metal in the social hub of the city. Cagatay, Murat, Nilay and others from the event came with me so I wasn't on my own for a change (Cagatay and Murat are both metalheads like me). You should do the same if you get a chance to really get a glimpse of the Janus-like heart of Istanbul - with one facet steeped in history and tradition while the other enthusiastically embracing modernity at the same time...

All in all my trip to Turkey was a thorough pleasure and I look forward to going back again soon enough.

Wednesday Jul 15, 2015

Great Indian Developer Summit (GIDS) 2015 Trip Report

The Great Indian Developer Summit (GIDS) 2015 was held on April 21-24 in Bangalore, with a follow-on GIDS.Mini held on April 25 in Hyderabad. GIDS is very easily the largest and most significant developer event in South Asia. Perhaps reflecting global demographic shifts in software development, GIDS may also now have become one of the largest developer conferences in the world. This was yet another highly successful year for the event. As usual it drew some of the best and brightest minds in Java and beyond. It was truly a privilege to be able to speak at the event and I was even more fortunate to have had a number of Java EE sessions there. While in India I am very happy to say I also spoke at a couple of entirely community driven JUG events at the Madras JUG (Chennai) and the Hyderabad JUG before and after GIDS. It was very gracious of GIDS to fully support my engagement with both JUGs.

I started my India tour in Chennai with the Madras JUG on April 21st. They were very kind to warmly invite me and organize a day-long event. It was a very brave, passionate effort for the newly minted JUG with key JUG members speaking. You can take a look at the full agenda here.

I started off the day with my talk titled "Why Open Standards and Java/EE Matter". Designed to be a keynote, the talk covers a very important topic that I think there's far too little material out there on. It talks about the core value proposition for standards like Java EE in maintaining a healthy competitive marketplace. It differentiates open technical standards from so called "de-facto standards" and explores the relationship between open source and open standards. I also talk about what the community can do to make standards really work. The talk taps into one of my fields of study that I never pursued in my career and few developers really seem to have even a basic grasp of - economic analysis. This is a talk I've been waiting to give for many years and I am glad I was finally able to start presenting it. To some degree it embodies many of the core motivations that keep me doing what I do to try to help move the Java EE standard forward. The slides for the talk are here (click here if you can't see the embedded slide deck):

After lunch I delivered our main driving talk for this year titled "What's Coming in Java EE 8". The talk covers the possibilities for Java EE 8 such as HTTP 2/Servlet 4, Server-Sent Events (SSE), a new standard action-oriented web framework, security simplification, REST management/monitoring, even better JSON support, CDI 2, platform-wide CDI alignment, more pruning, JCache, JMS.next() and Java SE 8 alignment. I also cover Adopt-a-JSR. The slides for the talk are here (click here if you can't see the embedded slide deck):

Do note that I've added detailed speaker notes available to you in the downloadable PowerPoint deck. This means that you could deliver the talk yourself if you were so inclined.

I finished the day giving a very preliminary, impromptu slide-only version of 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 and when you should consider them (or not). The second aim is to demonstrate why Java EE makes perfect natural sense for developing sensible 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'll 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 really enjoyed meeting all the good folks at the Madras JUG and hope to speak there again as soon as opportunity permits.

My next stop on the India trip was to Bangalore for GIDS.Java on April 23rd. I chose to take a bus ride from Chennai to Bangalore instead of yet another dreary flight. I definitely recommend it as a way to get a glimpse of the real Indian countryside though one should expect this to be a rugged, down-to-earth experience not comparable to a flight that would be out of the budget of most of the Indian populous. I started GIDS in the morning with my very popular talk on Cargo Tracker/Java EE + DDD. This talk basically overviews DDD and describes how DDD maps to Java EE using code examples/demos from the Cargo Tracker Java EE Blue Prints project. Below is the slide deck for the talk (click here if you can't see the embedded slides):

The talk went well and was a complete full house. I got some excellent questions throughout the session as well as afterwards. In the afternoon I delivered one of my latest talks titled "Reactive Java EE - Let Me Count the Ways!". It aligns Java EE 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, WebSocket asynchronous support 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):

This talk was also packed and very well received - this has been true basically every time I have presented it so far. I finished off GIDS.Java with another one of my very popular (but older) talks on 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 using a Java EE 7 back-end. This session was also a full house with very good feedback afterwards. The slide deck for the talk is posted below (click here if you can't see the embedded slide deck):

One of the goals of this talk is actually to give you the starter code for exploring this sort of architecture. 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.

My next stop was Hyderabad for GIDS.Mini and Hyderabad JUG. I took another cool bus ride from Bangalore to Hyderabad. GIDS.Mini is essentially a compacted version of the four-day event in Bangalore. I repeated the JavaScript/HTML 5 + Java EE talk for GIDS.Mini. Given the more compact form factor, a smaller crowd and the less Java centric audience the attendance was moderate as compared with Bangalore.

The day after GIDS.Mini the Hyderabad JUG hosted the official Java EE 7 Hands-on-Lab as a full day workshop. Under the very capable leadership of Rajmahendra the JUG is the most mature and most active in India. The event was hosted in the Oracle Hyderabad offices. The workshop was a full house with excellent feedback throughout and afterwards (just check out the very kind comments on the event page). It has been my goal to make the lab as much of a smooth experience as possible. I must say I think I have finally polished the lab enough to accomplish this goal. My next challenge is to either run the lab remotely or help someone else run it entirely on their own. If you are interested in exploring either of this, I will be delighted if you reach out :-).

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've now even added a starter guide of sorts for anyone wanting to run the lab themselves. As time permits my next step is to create a starter video (a great suggestion by Rajmahendra!).

I am especially grateful to Lars (featured on the top-left photo) and Rajmahendra (featured on the bottom-left photo) for helping run the lab all day! This was perhaps the largest and most successful execution of the lab that I have seen so far and I look forward to returning to the JUG again as soon as opportunity permits.

As tough as a longer multi-destination trip like this can be, one upside is the fact that one can use their personal time to explore your destination. I fully utilized my downtime between Chennai, Bangalore and Hyderabad to explore sights like the ancient UNESCO World Heritage stone temples at Mahabalipuram, Valluvar Kottam in Chennai, Tipu Sultan's palace in Bangalore as well as Golkonda Fort, Charminar and Qutab Shahi tombs in Hyderabad. This was my second time to Bangalore and Chennai but for me India will seemingly always remain the land of many wonders. To see what I mean, just check out the album below (click here if you can't see the embedded slideshow):

I must also say from the moment my plane landed to the moment it took off, India proved the land of warmhearted, kind, hospitable people. I don't mean just the good folks in the Java community but literally every one of the many people I encountered in India. Indians may still have many things that they must do without but Indians are not short of pride, hope, civility and hospitality. All in all my trip to India was a thorough pleasure and I look forward to going back again soon.

Tuesday Jul 07, 2015

Java Day Tokyo 2015 Trip Report

Java Day Tokyo 2015 was held on April 8th. 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, Simon Ritter, Cameron Purdy and Linda DeMichiel. Topics included Java SE, Java EE, IoT and cloud. Java EE always has a strong showing at the event and this year was no exception.

Cameron Purdy, Vice President of Development at Oracle responsible for Java EE and WebLogic, spoke in the keynote and provided a state of the union for Java EE 7 and Java EE 8. After the keynote Java EE specification lead Linda DeMichiel delivered a detailed status update on Java EE 8. Concurrent to technical sessions the Japanese Java EE team ran the official Java EE 7 hands-on-lab as a half-day workshop. After Linda's talk Japanese Java EE evangelist Yoshio Terada did a "Java EE 7 Recipes" talk. It is very similar to the popular talk by US based Java EE advocate Josh Juneau (the linked video is from his well received talk at JavaOne 2014). Concurrent to this talk Oracle University Japan ran a very basic tutorial session on JSF 2.

In the next session slot I delivered my very popular talk on Cargo Tracker/Java EE + DDD. This talk basically overviews DDD and describes how DDD maps to Java EE using code examples/demos from the Cargo Tracker Java EE Blue Prints project. Below is the slide deck for the talk (click here if you can't see the embedded slides):

The talk was packed and I got some excellent feedback from a few folks afterwards. Concurrent to my talk there were other Java EE, JSF talks delivered by Japanese speakers including a very basic JPA 2 tutorial by Oracle University Japan. Following my talk Linda offered her views for the way forward in terms of continued alignment of the CDI and EJB programming models.

I finished off the conference with one of my latest talks titled "Reactive Java EE - Let Me Count the Ways!". It aligns Java EE 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, WebSocket asynchronous support 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):

This talk was packed and very well received - this has been true basically every time I have presented it so far. Concurrent to my talk Hirofumi Iwasaki of Rakuten delivered his excellent talk "Seven Points for Applying Java EE 7". 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. Rakuten is a key Java EE adopter in Japan and the Rakuten engineers choose to actively advocate Java EE whenever they can. They are currently gradually adopting Java EE 7 and actively tracking Java EE 8. I think every server-side Java developer out there can learn something valuable from Hirofumi Iwasaki's talk. His slide deck is embedded below (click here if you can't see the embedded slides):

Concurrent to the talk there was another talk on JBatch/Java EE 7 delivered in Japanese.

The day after Java Day, Oracle University Japan arranged for customer only workshops with I and Simon Ritter. I led a half-day workshop in the morning on Java EE 7 while Simon covered Java SE 8 after lunch. The workshop, titled "Java EE 7 in Action", 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 workshop was a full house and was well received.

Fortunately the trip to Japan wasn't all work and no fun. It seems to always work out that I have more extra time than I expected in Japan (it is always better to plan for more time especially with Java EE customer meetings behind the scenes during a trip). I fully utilized my downtime by making a day trip to Nikko. Easily accessible from Tokyo it is one of the most picturesque sites in Japan - virtually a travel back in time all the way to the feudal Edo period almost on the scale of an entire town! It should be easy to see what I mean from album below (click here if you can't see the embedded album):

I also had the opportunity to witness Japan's most popular and revered Martial Art form - Sumo. If you are hung up on the fat guys in diapers Western meme - you really should open your eyes especially if you have the opportunity to visit Japan. Seeing the Sumo man-mountains in action should leave no doubt they are fierce athletes in every sense of the word (take a moment to consider the fact that each of these guys carry more lean muscle and bone mass - not including body fat mind you - than Arnold Schwarzenegger in his prime). It was an especially moving experience as I got to witness these guys very up-close and personal during their morning practice session instead of from an expensive nose-bleed arena seat more typical of the Japanese Sumo experience. Believe or not you don't need a single cent to do this - just a bit of grit, a small token of appreciation for the athletes and their trainers as well as some due respect for the Sumo culture. Just find one of the many hidden-in-plain-sight Sumo training dormitories spread across Tokyo and politely show up at pre-dawn hours when training starts. Here are some photos of the big boys in action:

I also got to check out the vibrant neon-crazy Shinjuku nightlife including the famed Robot Restaurant (think cabaret meets high-tech robots meets neon meets Japan).

I have to admit it was too trite for me compared to Nikko and underground Sumo but it certainly was intriguing and drew much larger tourist crowds by comparison. The last remaining unexplored avenue for me in Tokyo remains Japanese heavy metal (yes, there is such a thing). I made some headway tracking it down after some effort this time but didn't quite have enough time to catch a live performance. I guess that's for next time :-).

All in all this was another great Java Day Tokyo and another productive as well as fun trip to Japan.

Thursday Jun 11, 2015

DevNexus 2015 Trip Report

DevNexus 2015 was held in historic Atlanta on March 10-12. For those of you not familiar with it, DevNexus is the most significant Java centric (but not Java focused) conference in the South Eastern US and now perhaps even at a national level. It was started by JBoss Java Champion Burr Sutter and organized by the Atlanta JUG (currently lead by Vincent Mayers, Gunnar Hillert, Pratik Patel, et al). I guess at this point I am somewhat of a DevNexus veteran myself :-). As usual DevNexus attracted a bevy of world class speakers including Stephen Chin, Jim Weaver, Ed Burns, Venkat Subramaniam, Yakov Fain, Kito Mann, Markus Eisele, Raju Gandhi, Freddy Guime, Max Katz, Jason Porter and so on. Topics included Java SE, NoSQL, mobile, cloud, Docker, HTML5/JavaScript and of course Java EE. Indeed I think this year Java EE made a very strong showing at DevNexus.

I started the conference by running the Java EE 7 Hands-on Lab as a whole day workshop. The workshop was a full house with excellent feedback throughout and afterwards. It has been my goal to make the lab as much of a smooth experience as possible. I must say I think I have finally polished the lab enough to accomplish this goal. In fact I confirmed this again at the Hyderabad JUG (trip report coming soon). My next challenge is to either run the lab remotely or help someone else run it entirely on their own. If you are interested in exploring either of this, I will be delighted if you reach out :-). I am very grateful to my Oracle colleagues Vijay Nair and Ed Burns for helping run the lab the whole day!

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've now even added a starter guide of sorts for anyone wanting to run the lab themselves. As time permits my next step is to create a starter video (a great suggestion by Hyderabad JUG leader Rajmahendra!).

I started the next morning with our flagship talk for this year titled "What's Coming in Java EE 8". The talk covers the possibilities for Java EE 8 such as HTTP 2/Servlet 4, Server-Sent Events (SSE), a new standard action-oriented web framework, security simplification, REST management/monitoring, even better JSON support, CDI 2, platform-wide CDI alignment, more pruning, JCache, JMS.next() and Java SE 8 alignment. I also cover Adopt-a-JSR. The slides for the talk are here:

Do note that I've now added detailed speaker notes available to you in the downloadable PowerPoint deck. This means that you could deliver the talk yourself if you were so inclined :-). This talk is usually packed but this time the attendance was relatively light (it was scheduled in a smaller room so that might have had something to do with it). I did have some interesting discussions with attendees including a very solid Java EE adopter from AutoTrader. He was particularly interested in JSF so I pointed him to Ed and Kito as well as encouraging him to participate in the JSF community.

In the afternoon Ed had his HTTP 2/Servlet 4 talk in the same smaller room. I attended the session and it was packed this time. Ed is an excellent speaker and the talk went unsurprisingly very well. HTTP 2 and Servlet 4 is easily the most important part of Java EE 8. In this talk Ed covers the basics of HTTP 2 and how it may surface in Servlet 4 as well as the Java EE ecosystem generally. The slides for the talk are here:

I am considering adopting the talk as groundwork for getting the word out on HTTP 2, Servlet 4 and Java EE 8 generally.

I finished the day with a 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:

I finished off the conference with one of my latest talks titled "Reactive Java EE - Let Me Count the Ways!". It aligns Java EE 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, WebSocket asynchronous support 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:

This talk was packed and very well received - this has been true basically every time I have presented it so far. Concurrent to my talk, Jason Porter did a basic talk on JPA.

Overall this was another great year at DevNexus and I hope to be part of the conference next year.

Monday Jun 08, 2015

The Ghosts of Java EE 7 in Production: Past, Present and Future

                            "First they ignore you, then they laugh at you, then they fight you, then you win."

                                                                                                                 – Mahatma Gandhi

For those unfamiliar the three ghosts analogy comes from the Charles Dickens' classic A Christmas Carol. I hope the real message of the analogy is an entertaining but insightful literary puzzle for you to figure out, not to mention the far less imaginative opening quote largely along the same lines :-).

In the past few days I've seen a certain predictable group of folks on the Interwebs feigning concerns over the viability of using Java EE 7 in production. I have to be honest in that I think it is fairly obvious these concerns are more -ahem- opportunistic than sincere or well-intentioned. Nevertheless I think this is a great trigger to discuss something valuable to the Java EE community anyway - Java EE 7 production adoption in the near past, present and near future. In fact to be perfectly honest we have been deliberately covering these themes all along in various ways and foresee a useful purpose in revisiting them frequently going forward far beyond this one blog entry. Being responsible sentinels for the Java EE community has never demanded anything less.

The Prelude - Java EE 6 vs Java EE 7
Most folks out there seem to hold the Java EE 6 release in high regard. I definitely agree the release was an important turning point for Java EE. While Java EE 7 is not a profound architectural paradigm shift in the way Java EE 5 and Java EE 6 was, it's significance is in the sheer amount of changes it contains. Java EE 7 is very easily the largest set of changes the platform has ever experienced. To boot we try to never make frivolous changes to the platform so each of these changes are all rather important to their respective users. To understand the scale and significance of these changes, you need not look much farther than my Java EE 7 slide deck. It is a very high level talk that I still struggle to fully deliver in 50-60 minutes after delivering it many times.

Let that last statement sink in for a moment. How many times have you been to a talk where a very experienced speaker struggles to cover even at a very high level the changes in a single update of any technology? I think that has not been true for a while by a large margin for any technology that tries to position itself as an alternative to Java EE - even if you take into account the total amount of changes in their albeit more frequent releases during an equivalent time period...

This has two important ramifications that's pretty much true of any significant open standard. For people that are paying any attention Java EE 7 is a very important update to adopt. If you apply a reasonably objective eye, it's clear many indeed are paying attention, already eagerly adopting Java EE 7 and will continue to do so in the near future. The flip side is that neither producing the standard nor a compatible implementation is a frivolous undertaking. Nonetheless if you apply a reasonably objective eye, it's clear all major implementors are in fact doing their part and will continue to do so in the near future.

The Ghost of Java EE 7 in Production Past
One of the most obvious tasks we have at this stage of the life of Java EE is to highlight successful adoption stories prominently and frequently (and yes, that means real world applications deployed to production). We have been doing just that for a long time now through the GlassFish stories blog, The Aquarium and JavaOne. We now have a helping hand in that very important task from none other than key Java EE advocate Adam Bien through his extremely popular blog. A central part of this task is you - Java EE adopters out there in the real world. And you have already stepped up beautifully. JavaOne 2014 was particularly fruitful in this regard enabling us to select a nice set of very well-attended real world Java EE 7 adoption stories.

Let that sink in for a second. These were people starting to use Java EE 7 in the real world within a year after it was released as a standard. You can as well and I'll discuss exactly how in a moment. If you want to take a closer look at these folks a great place to start is my former colleague Arun Gupta's very ironically on-point session titled Lessons Learned from Real-World Deployments of Java EE 7, which covers several adoption stories in a single session (click this link if you are having trouble seeing the embedded video):

Prolific Java EE blogger Abhishek Gupta did a very nice job summarizing all of the publicly shared Java EE 7 in production stories we have already, including those from Adam's blog. From my vantage point, I know this is merely the tip of the iceberg...

The Ghost of Java EE 7 in Production Present
If the Java EE 7 adoption stories that were submitted during JavaOne 2014 were good, the ones we are reviewing right now for JavaOne 2015 are great. Indeed the difficult choice this years is choosing which adoption stories to turn back - including ones from well-recognized national and global brands! You'll know in a few weeks who we picked if you stay tuned to this blog, the Aquarium or the JavaOne content catalog. For the ones we have to turn back, we will try and find a way to get their stories out to the community. The same applies to you as well. Hopefully this blog entry helps you understand why sharing your story has always been important for all server-side Java developers. Indeed I would encourage you to share your story even if you are using Java EE 6 today and not yet Java EE 7. Just drop me a note - I am not particularly hard to reach :-).

This now brings us to the question of what Java EE 7 implementations you have available to you now and in the very near future.

Your Platform Choices
At the end of the day Java EE is about allowing you to choose between compatible implementations and there are a lot to choose from. A quick look at the official Java EE compatibility page should make it amply clear to an objective eye that Java EE is unique in the degree of implementation choice and vendor-neutrality it allows.

For the purposes of brevity let's focus on what I'll very arbitrarily call the "big four" with regards to adopting Java EE 7 in production. I want to be very clear however that this distinction of "big x" is completely meaningless from the perspective of an open standard like Java EE that focuses on choice and the inherent fluid realities in our industry where anyone is a prince today and a pauper tomorrow. That being said I think these "big four" are sufficient for the purposes of this blog entry:

GlassFish: GlassFish is the reference implementation for Java EE 7. Consequently is it by definition the first to implement any Java EE version, just as GlassFish 4 was the first to implement Java EE 7. It used to be the case that Sun and Oracle also shipped GlassFish as a commercial product, including support. It is true that we no longer do that. However this does not mean that GlassFish is suddenly merely a toy. We've made it amply clear repeatedly that concerns like usability and security remain important. In fact that was the unequivocal message from our executive panel at JavaOne 2014. That was the whole point of the effort we put behind the GlassFish 4.1 release - after the announcement of the end of the commercial product line. Folks outside Oracle continue to contribute to the GlassFish code base - most notably the excellent Payara team that has long provided third party support for GlassFish. As a matter of irony, most GlassFish users have never paid for the commercial support from Oracle that is now apparently in vogue for some - I guess that is an story for another day...

WebLogic: One of the most astute questions posed to the GlassFish event executive panel at JavaOne 2014 was on plans for supporting Java EE 7 in WebLogic. Our executives provided a shockingly candid answer to this question. Oracle's clear goal has been to minimize the time lag between a Java EE release and a fully supported WebLogic release to around half a year, including for Java EE 7 - not to mention Java EE 8.

Let that sink in for a second. That means implementing something as sizable as Java EE 7 not once, but twice, virtually concurrently. Only a company like Oracle would have the deep engineering resources to even consider such a goal. Clearly that was not a goal we have met this time, for sound technical and business reasons including the fact that WebLogic has always been far more than just Java EE. Indeed WebLogic is the engine behind Oracle's formidable cloud offering being built out even as we speak, not to mention the basic need of robustly enabling Java EE in the Oracle cloud. I can attest first hand that our engineers do whatever they can every day to meet all these important often competing goals expected of WebLogic including getting Java EE 7 in the hands of WebLogic developers.

Thanks to this hard work, WebLogic 12.2.1 with full support for Java EE 7 is slated to be released in just months (the officially sanctioned timeline states calendar year 2015 which means the end of this year at the very latest). To put this in context, this is comparable to the time it required WebLogic to get certified against the much smaller Java EE 6 release!

In the meanwhile what we have done is release WebLogic 12.1.3 around JavaOne 2014 which supports some of the most significant Java EE 7 APIs developers ask for. The hard work to do this is not an academic exercise. The clear goal of this work is to allow developers to adopt Java EE 7 APIs as quickly as possible as we continue working hard towards WebLogic 12.2.1. Yet another legitimate pathway WebLogic customers have used successfully is to deploy their Java EE applications to GlassFish 4.x in the interim and then migrate to WebLogic at a later point.

WebSphere Liberty Profile: The Liberty Profile is an admirable and very courageous technical feat. It is essentially a modular Java EE application server written from scratch in the past few years. The Liberty team has long been releasing public monthly betas as well as incrementally supporting Java EE 7 APIs through their stable release supported in production. This means that you could start to use Java EE 7 APIs in production using Liberty 8.5.5 just as you can with WebLogic 12.1.3 in addition to starting to use Java EE 7 APIs in development using Liberty betas. Again these efforts are not merely academic - they are intended to get Java EE 7 in the hands of developers are quickly as possible. The Liberty team has now announced that they will release a fully supported completely Java EE 7 compatible version of Liberty on June 26. Just as is the case with WebLogic, the Liberty Java EE 7 release timeline will be comparable to what it was for Java EE 6 even accounting for having to do more work building out on a brand new runtime code base!

WildFly/JBoss EAP: WildFly 8 has been fully Java EE 7 certified for more than a year now. In fact similar to GlassFish 4.1, WildFly 8.2 was an interim platform release and the WildFly team is now working on WildFly 9. Similar to the scenario with GlassFish and WebLogic, WildFly is not commercially supported by Red Hat but JBoss EAP is. Our usual suspect Java EE naysayers allude that this must mean WildFly is unfit for using Java EE 7 in production. This ignores two key factors. The first is that it is amply clear the WildFly team is highly responsive to the community, including fixing bugs in a timely fashion. The more important factor is historical context - WildFly is just a renaming of JBoss AS. It is no great secret that there has always been a sizable percentage of JBoss AS users that never paid for JBoss EAP for their production applications. There is little reason to believe that simply a renaming (and that is exactly what WildFly has been thus far) will change that dynamic significantly any time soon. Instead it's more likely a sizable amount of WildFly customers will use it for Java EE 7 applications in production just as they clearly do today.

For those that insist on Red Hat commercial support via JBoss EAP, it too is likely only months away. In fact, if EAP is released even within this year (and there is little reason to believe it won't be), the JBoss EAP team would likely beat their timeline for supporting Java EE 6! Lastly, also similar to GlassFish and WebLogic, it has been a common strategy for Red Hat customers to start with JBoss AS (today's WildFly) and then move to a corresponding JBoss EAP version.

The Ghost of Java EE 7 in Production Future
I hope you've made it successfully through the sections above to finish our Java EE 7 in production journey through time. If you haven't, this is the section you want to pay the most attention to as it is here that we can take stock of what lies in the future.

If you are a reasonably optimistic individual that sees the glass as half-full, it should be clear that you already have quite a few options in terms of using Java EE 7 in production already including but certainly not limited to GlassFish and WildFly as well as WebSphere Liberty in just a few weeks. But let's assume you are a little less of an optimist but not quite a complete pessimist that sees the glass as half empty. You too have several choices in beginning to use Java EE 7 in production - using GlassFish 4.x then switching to WebLogic 12.1.2, using WebLogic 12.1.3 and then switching to WebLogic 12.2.1 or using WildFly and then switching to JBoss EAP. I think that's quite a few ways as long as you have a little bit of will to back it up. Finally, let's assume you are a complete pessimist as our Java EE 7 naysayers seem to insist you should be. For you the future is this: in a few months more and by the end of this year at the very latest you will have no less than half a dozen implementation choices to deploy your Java EE 7 applications to, most from some of the largest technology companies in the world. I hope the pessimist in you can see the fundamental value in that as opposed to being hostage to a single non-standard implementation with one commercial vendor.

Putting all of this in slightly broader context, the production use timeline for Java EE 7 is essentially equivalent to that of Java EE 6 for most users - with far more to offer and with the momentum of Java EE 6 behind us and with a clear, transparent long term road map for Java EE 8 ahead of us. As averse as I always am to predicting the future, I feel pretty comfortable to say we are yet to see many, many more folks putting Java EE 7 in production in the near future if the past and present is any indication.

As to the perennial naysayers of Java EE, we've already proven them wrong once with Java EE 6. I have no doubt whatsoever we will prove them wrong again with Java EE 7. I am also equally certain they will declare us doomed once again when it comes time for the community to use Java EE 8 for their real world applications and many times on the way there. Where would be the sport of it all if they didn't :-)?

Please note that any views expressed here are my own only and certainly does not reflect the position of Oracle as a company

Monday Jun 01, 2015

Voxxed Days Algiers 2015 Trip Report

This is the first in a series of long overdue trip reports now that the unofficial global pre-Summer-vacation conference season is finally winding down after a few hectic months. In terms of both chronology and geography I should start with DevNexus 2015, but I am making a deliberate choice to start with Voxxed Days Algiers instead. It's not often I get to feel I was given an opportunity to make a small difference for folks that deserve much better - Voxxed Days Algiers for me was a genuine honor and privilege affording just such a rare sentiment.

Voxxed Days Algiers was held on May 23 in Algiers, Algeria. This was the inaugural version of this event - indeed it was the first event of it's kind in Algeria, Java centric or otherwise. This is despite the very sizable number of developers of Algerian origin, domestically and worldwide. Besides the Devoxx and Voxxed brand, the event can be credited by and large to the grassroots efforts of the Algeria JUG as well as the neighboring Morocco JUG. Some of the good folks involved include Badr El Houari (Morocco JUG leader), Abderrazak Bouadma (Algeria JUG leader), Meziane Djaout, Yasmine Nasri (Algeria JUG), Yazid Cherif (Algeria JUG), Bessem Hmidi (ESPRIT JUG Tunisia leader) and Mohamed Taman (Egypt JUG leader). Personally I have to especially thank Badr for cordially inviting me to the event and Abderrazak for making the trip a unique unforgettable experience. The event was a humble but profound first step in the right direction for Algerian developers. The event definitely had a strong Java and Java EE showing.

I started the day taking part in the opening keynote featuring the Voxxed Days Algiers team. I aimed to reinforce the significance of the event as well as our team's recognition of it and welcomed attendees to the global Java/EE community. After the keynote I remained in the hall to deliver our current flagship Java EE 8 road map talk.

The talk covers the possibilities for Java EE 8 such as HTTP 2/Servlet 4, Server-Sent Events (SSE), a new standard action-oriented web framework, security simplification, REST management/monitoring, even better JSON support, CDI 2, platform-wide CDI alignment, more pruning, JCache, JMS.next() and Java SE 8 alignment. I also cover Adopt-a-JSR. The slides for the talk are here:

I noted that the detailed speaker notes are available to anyone in the downloadable PowerPoint deck. This means that anyone could deliver the talk if they were so inclined. Concurrent to my talk local Algerian speaker Bilal Khiat delivered a talk covering the Java EE concurrency utilities. Bilal is a Java EE advocate and WebLogic + Oracle Middleware expert.

After lunch I delivered my second 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. Concurrent to my talk Bilal delivered a talk on building event-driven enterprise applications using JMS and WebSocket.

I finished the conference with my talk on effectively testing Java EE applications using Arquillian. The talk basically goes through each major Java EE API and demonstrates through code how the API could be tested using Arquillian. The slides for the talk is posted below:

The code for the talk is available on GitHub. If you are looking into testing Java EE applications using Arquillian, the code should be very helpful to you. Feel free to give me a holler if you need any help. Concurrent to my talk my good friend Bessem Hmidi talked about his very cool project AngularBeans. AngularBeans is a very useful marriage of AngularJS, CDI and Java EE. In case this intrigues you (and it should) I have a brief recent write-up for the project on The Aquarium. The conference ended on a great note celebrating the 20th anniversary of Java - my second such in-person celebration after Voxxed Days Istanbul (trip report coming soon).

Sadly Algeria remains one of the last great frontiers of global tourism. The country offers food, culture, legendary North African hospitality, a history well soaked with ebbs and flows of tragedy and triumph, not to mention stunning natural beauty. While in Algeria I did not miss the opportunity to take a few days off to explore as much as I could. Thanks to some very kind help from Abderrazak's brother Abdenour I saw pretty much all of Algiers save for the UNESCO World Heritage site Casbah (currently a giant renovation project) as well as the Tipaza Roman ruins (yet another one of Algeria's numerous UNESCO World Heritage sites). I do have pictures to show from my great experience in Algeria (click here if you are having trouble seeing the embedded album):

The generous, unconditional amount of time that Abdenour and Abderrazak spent with me after the conference would frankly put many in my own family to utter shame. If North Africans are the kings of hospitality, Abdenour and Abderrazak are undoubtedly the emperors :-). Thanks to Abdenour there was actually someone around to take a thoughtful picture of me at Tipaza (the steps are from an ancient Roman amphitheater):

Next time I have an opportunity to go to Algeria, I plan to make the trip to see one of the most breathtaking views on planet Earth - Sunrise over the Hoggar mountain chain in the heart of the Algerian Sahara (the Tuareg tribes that make this place their home quite understandably call it "the end of the world"):

All in all, this was one of the most fulfilling trips I've taken in a while, both professionally and personally. I sincerely wish all the best for Voxxed Days Algiers. I hope to see the event grow in the coming years and become a first class destination for the best and the brightest in the Java world...

Wednesday May 20, 2015

JavaOne Java EE Track: Saying Thanks and a Look at the Real Decision Makers

As some of you know the JavaOne 2015 CFP is now closed. I want to take this opportunity to thank all of those that submitted their thoughtful topics and all those who considered submitting. The outstanding quality of submissions is a testament to your passion for the Java community and it is a great start on the road to keeping JavaOne a true success. In terms of the Java EE track we now have all the raw material we need to construct a strong selection. In the next few weeks we will be working hard with the review committee to carefully sort through all the submissions we have at hand.

I want to remind you now not to be discouraged if you don't get the response you are hoping for. You should remember that you are competing against some of the best and brightest of Java at a global scale - especially so in the Java EE track. As much as we would like for things to be perfect in the end all of this is also based on all too fallible human judgement applied through a fairly intricate process designed with checks, balances and fairness in mind. If your session does not get accepted this year, you should definitely consider honing your submissions and trying again next year. If you are indeed selected I hope you see it as the testament to your abilities and good fortune it truly is. Either way, I hope you will consider coming to JavaOne to experience the incredible talent, energy and intellect in the air.

The Java EE Track Content Committee
I also want to take this opportunity to introduce you to the real decision makers in the track - the content selection committee members. Although I and my co-track lead Lance Andersen clearly do make decisions, I like to think of ourselves as mere coordinators of a very strongly democratic open collaborative team. The folks in the committee by far play the most important role in help shaping the track. They really deserve to be commended as most of them are community folks that contribute many hours of their time to help advance JavaOne. Below are the profiles of these good folks. If you have any questions on your submissions you should feel free to reach out to any one of them or us. In the next few weeks, I plan to publish interviews with some of these folks through the Aquarium blog.

David Blevins needs little introduction. He is an excellent speaker, a long-time JCP expert, Java EE advocate and powerhouse developer behind the highly innovative Apache OpenEJB and TomEE projects. David more recently founded Tomitribe, a company offering commercial support for TomEE. His Twitter handle is @dblevins.

Cay Horstmann is a Java Champion, author, blogger, Java EE advocate and Computer Science professor at San Jose State University. He has been part of the content committee for many years. His Twitter handle is @cayhorstmann.

Johan Vos is a Java Champion, author, speaker, blogger, member of the BeJUG steering group, member of the Devoxx steering group and a JCP member. He is a fan of Java EE, GlassFish and JavaFX. He founded LodgON, a company offering Java based solutions for social networking software. His Twitter handle is @johanvos.

David Heffelfinger is an independent consultant in the Washington DC metropolitan area, author, blogger and speaker. He is a long time advocate of Java EE and GlassFish. He is a brand new and great addition to the committee. His Twitter handle is @ensode.

Ryan Cuprak is the founder of the Connecticut JUG, author, blogger, speaker, JavaOne Rock Star and Java EE advocate. He is a senior manager at Dassault Systemes. Like David, Ryan is a brand new and welcome addition to the committee. His Twitter handle is @rcuprak.

Scott Sosna is a veteran Java developer now working at Dell. He helps with JavaOne on his own time and has been a very strong contributor in the committee for many years. His interests include API design, integration, messaging, REST, SOAP, performance and operations.

Markus Eisele is a Developer Advocate at Red Hat and focuses on JBoss Middleware. He is a long time Java EE advocate, blogger, author, speaker, JCP expert, Java Champion and former Oracle ACE Director. His Twitter handle is @myfear.

Kevin Sutter is the lead architect for the Java EE and JPA solutions for the WebSphere Application Server and the WebSphere Liberty Profile. Kevin is very active with the Java and open-source strategies as they relate to IBM's Middleware. His Twitter handle is @kwsutter.

Linda DeMichiel is the specification lead for Java EE. She is a long-standing member of the Java EE architecture team, initially at Sun, and now at Oracle. Linda has been a specification lead for the EJB and JPA specifications. Linda has been on the committee for a number of years.

David Delabassee is my teammate in the Java EE evangelism team. He is a veteran of Sun and now Oracle that's been involved in JavaOne for many years. In his many roles he has been a product manager, sales consultant and Java Ambassador. His Twitter handle is @delabassee.

Bruno Borges is a product manager for WebLogic, Fusion Middleware, Java and Cloud services. He also actively evangelizes topics from Java Embedded to Java SE and JavaFX to Java EE. His Twitter handle is @brunoborges.

Harold Carr is a veteran of Sun and now Oracle. He is the architect of InfiniBand usage in WebLogic. Throughout his long and illustrious career at Sun/Oracle he has had key roles in the SOAP/JAX-WS/Metro stack, GlassFish, Grizzly, RMI-IIOP/CORBA ORB and load-balancing/fail-over. He has been part of the committee for many years. His Twitter handle is @haroldcarr.

Keep in mind that JavaOne is now already open for registration. I hope to see you all at JavaOne. In the meanwhile as always if you have any questions never hesitate to reach out.

Monday Mar 30, 2015

ConFoo 2015 Trip Report

ConFoo 2015 took place 16-20 February in Montreal, Canada. To my knowledge it is the largest developer conference north of the border. The conference has roots in PHP, but has been making an effort to better attract a Java audience hence it was important for me to support the conference. If you are a Canadian Java developer, I would consider adding ConFoo to your radar as a more convenient (and possibly cheaper) event to go to in order to stay up-to-date. Topics covered included PHP, Ruby, methodology, JavaScript/HTML, Java and .NET. Thanks to a number of community speakers, the Java EE presence was very strong this year.

I started the first day of the conference with my talk on JMS 2. Besides covering JMS 2, I've also started to roll in some of the possibilities for JMS 2.1. Given the dynamics of the conference the crowd was modest but not bad. The slides for the talk are posted below:

After lunch I did my talk on effectively testing Java EE applications using Arquillian. The talk basically goes through each major Java EE API and demonstrates through code how the API could be tested using Arquillian. The slides for the talk are posted below:

The code for the talk is available on GitHub. If you are looking into testing Java EE applications using Arquillian, the code should be very helpful to you. Feel free to give me a holler if you need any help. This session too had decent attendance and I chatted with a few folks offline after the talk.

I finished the first day of the conference with a five minute lighting talk on Java EE 8 and Adopt-a-JSR in the main keynote hall. During the talk I referred to the Java EE 8 talk delivered by Brazil Java community member Hanneli Tavante (details below).

The next day of the conference my friend Ryan Cuprak delivered his excellent talk on mobile development and Java EE 7 titled Hybrid Mobile Development with Apache Cordova and Java EE 7. Ryan is my fellow co-author for EJB 3 in Action, the JUG leader for the Connecticut JUG as well as a fellow JavaOne Rock Star Speaker. The talk has some excellent material and it is basically the same talk that Ryan delivered at JavaOne 2014 as a two-hour tutorial. The video for that talk is embedded below (it is linked here if you are having trouble seeing the embedded video):

Not at all surprisingly, Ryan received excellent feedback on his talk. In the afternoon Florianopolis, Brazil JUG leader Rodrigo Candido da Silva gave a very good talk on securing JAX-RS services with OAuth.

The last day of the conference Rodrigo did another very interesting talk on various strategies for handling multitenacy in Java EE applications. After lunch, I was very happy to attend Hanneli Tavante's talk on Java EE 8. Usually someone from our team does this talk at conferences so it is very encouraging to see folks in the community picking up the topic. Like Rodrigo, Hanneli is also an active part of the Brazilian Java community, but from Sao Paulo. In the coming months, key North American Java EE advocate Josh Juneau will also be covering Java EE 8 at the Chicago Coder Conference (I will be speaking at the conference as well). To make it easier for the community to pick up the material, I have now included speaker notes to my public deck - you can download it's source in PowerPoint (now, I realize talks are highly personal and I don't expect anyone to deliver my talk verbatim - neither Hanneli nor Josh are doing that). I will make a point to keep both the deck and the speaker notes reasonably up-to-date as Java EE 8 progresses:

Please do feel encouraged to pick up this talk yourself. If needed please reach out to me and I will be happy to help you prepare.

I finished the conference with yet another five minute lighting talk in the main keynote hall - this time on Domain-Driven Design (DDD). Because the talk was supposed to be technology agnostic, I mentioned Cargo Tracker only briefly as a resource to look at on how to implement DDD with Java EE.

All in all, this was a trip worth doing again. If you are a Java centric speaker, do consider ConFoo as a future destination.

Monday Feb 16, 2015

CodeMash 2015 Trip Report

CodeMash 2015 took place 6-9 January in Sandusky, Ohio at the exotic Kalahari Waterpark Resort. 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 me to support that effort. This is especially so with Columbus JUG leader Chris Judd leading the Java track and Cleveland JUG leader Scott Seighman speaking. This year it attracted a decent section of the Java crowd. I would say it was better than last year but still has room for much improvement, especially with regards to submissions from Java centric speakers. Topics covered included .NET, methodology, JavaScript/HTML, mobile, cloud, DevOps, Hadoop, NoSQL, Docker, Java SE and Java EE.

I started the first day of the conference with one of my brand new talks this year titled "Reactive Java EE - Let Me Count the Ways!". It aligns Java EE 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, WebSocket asynchronous support 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:

Thus far this new talk seems to be quite popular and well received. I am sure to present the talk again soon.

In the afternoon I delivered another one of my very popular talks on 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 using a Java EE 7 back-end. This session was a full house with very good feedback afterwards. The slide deck for the talk is posted below:

One of the goals of this talk is actually to give you the starter code for exploring this sort of architecture. 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.

The second and last day of the conference in the afternoon I delivered our likely new flagship talk for this year titled "What's Coming in Java EE 8". The talk covers the possibilities for Java EE 8 such as HTTP 2/Servlet 4, Server-Sent Events (SSE), a new standard action-oriented web framework, security simplification, REST management/monitoring, even better JSON support, CDI 2, platform-wide CDI alignment, more pruning, JCache, JMS.next() and Java SE 8 alignment. I also cover Adopt-a-JSR. The slides for the talk are here:

Do note that I've now added detailed speaker notes available to you in the downloadable PowerPoint deck. This means that you could deliver the talk yourself if you were so inclined. Since it was towards the end of the conference attendance was sparser but still satisfactory.

All in all, this was a good trip worth doing again. If you are a Java centric speaker, do consider CodeMash as a future destination.

Tuesday Feb 10, 2015

Java2Days 2014 Trip Report

Java2Days 2014 was held on November 17-19 in Sofia, Bulgaria. It is far and away the largest Java conference in the Balkans region and now perhaps one of the most important conferences in Europe as a whole. Far beyond the modest borders of Bulgaria it seemed to increasingly attract audiences from as far as Serbia, Bosnia/Herzegovina, Albania and Macedonia. This was another great year for this rapidly growing, vibrant event. It attracted a host of international and local speakers including Arun Gupta, Geertjan Wielenga, Roberto Cortez, Ivan St. Ivanov, Andy Gumbrecht and Andrew Lombardi. Topics included Java SE, Java EE, HTML5/JavaScript, mobile, OSGi, IoT and the cloud. If the conference is not on your map already, it should be. It is simply inspiring to see a youthful, energetic Java community rise in this once very tumultuous, repressed part of our world.

One of the most unique things about Java2Days that one should appreciate is that it is an event run entirely by women - the incredibly capable trio of Yoana Ivanova, Iva Abadjieva and Nadia Kostova (left to right in the image below). It is the only Java conference that I know of for which this is true. Iva's husband Emo Abadjiev (inset, bottom) and Bulgaria JUG leader, Forge commiter Ivan St. Ivanov (inset top) also contribute many hours of hard work into the conference. I am very proud to be able to call all these passionate, down-to-earth, genuinely good people my friends and gracious hosts in Bulgaria. Other than now Java Champion Yara Senger of The Developer Conference (TDC) Brazil, Java2Days was the first international conference to invite me as a speaker while I was still an independent. In fact I feel very honored to say that I was the first and last speaker of the very first Java2Days a few years ago. They have been very kind to invite me back every year since. Though I have not always been able to accept the invitation largely due to personal scheduling reasons, I am very glad I was able to speak at Java2Days one more time this year.

My first talk of the conference, right after the opening keynote was our likely new flagship talk for this year titled "What's Coming in Java EE 8". The talk covers the possibilities for Java EE 8 such as HTTP 2/Servlet 4, Server-Sent Events (SSE), a new standard action-oriented web framework, security simplification, REST management/monitoring, even better JSON support, CDI 2, platform-wide CDI alignment, more pruning, JCache, JMS.next() and Java SE 8 alignment. I also cover Adopt-a-JSR. The slides for the talk are here:

The talk was packed and was very well-received. My hope is that we will see greater participation in the Java EE 8 JSRs from the Balkans. The Bulgaria JUG is already active in OpenJDK thanks to Ivan. After me Arun delivered a very popular talk of his titled "Nuts and Bolts of WebSocket".

After that talk Arun, I and Ivan ran the Java EE 7 hands-on lab. This is basically the same lab that Arun developed while still at Oracle. Arun has since evolved the lab to run on both WildFly and GlassFish. The materials for Arun's lab is available on GitHub. You should feel free to check it out - the lab is intended to be entirely self-directed. The lab really went very well. The attendees provided excellent feedback and the lab was packed even given a fairly sizable space. Towards the end of the day Andy Gumbrecht had a very cool presentation on moving from Tomcat to the Java EE platform very easily using TomEE titled "Apache Tomcat to Apache TomEE in 1-n Steps".

On the second day of the conference around lunch time Roberto and Ivan presented a talk on JBatch titled "Java EE 7 Batch Processing in the Real World". This is the same talk that they presented at JavaOne 2014 embedded below:

After Roberto and Ivan's talk Geertjan presented a very cool talk on developing either desktop/web or mobile HTML 5 applications using Java EE 7 as a back-end. At the same time I delivered my thus far very popular talk on aligning Java EE 7 with the HTML 5/JavaScript Rich Client landscape as a workshop (I did the same thing at JavaOne 2014). I use AngularJS for my demo but the concepts can apply to any JavaScript (or even native mobile) front-end using a Java EE 7 back-end. This session was a full house and was very well-received. 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.

After the workshop I helped Ivan run a hands-on lab on Forge and Arquillian. The Forge part of the lab is available for all and can be done entirely on your own. Antonio Goncalves has a pretty nice blog entry on running the lab.

I closed the conference with a bang back in the main hall with my talk titled "Why Open Standards and Java/EE Matter (to You)". The talk is designed to be a keynote and covers a very important topic that I think there's far too little material out there on. It talks about the core value proposition for standards like Java EE in maintaining a healthy competitive marketplace. It differentiates open technical standards from so called "de-facto standards" and explores the relationship between open source and open standards. I also talk about what the community can do to make standards really work. The talk taps into one of my fields of study that I never pursued in my career and few developers really seem to have even a basic grasp of - economic analysis. This is a talk I've been waiting to give for many years and I am glad I was finally able to start presenting it. To some degree it embodies many of the core motivations that keep me doing what I do to try to help move the Java EE standard forward. The slides for the talk are here:

Besides a very lavish speaker dinner (the most lavish I have ever experienced at a conference), one of the very cool things our extremely gracious Bulgarian hosts do is take interested speakers outside the capital city of Sofia to the picturesque country side. On my request, this year we went to the Devil's Throat cavern. The tour this time was unfortunately pretty sparse with just me, Iva, Yoana and Nadia. Although modest by comparison of the likes of the Mammoth cave of Kentucky or the Ape cave lava tubes of Mount Saint Helen's, Devil's Throat is the second largest cave in mountainous Bulgaria and contains the tallest underground waterfall in the Balkans. Besides it's geology Devil's Throat is actually unique because of it's very special place in world history and literature. It is said to be the inspiration for the ancient Greek underworld and it's overlord, the feared god Hades (the cave is very close to the modern day Greek border). It's main space is assumed to be the real world origin of the mythical main hall of Hades. It is easy to see why if you think about how the cave may have felt like without the modern amenities of concrete/metal ladders/steps and electricity, with the thundering sound of a deep underground waterfall in the background. Below are some pictures I took of the cave and it's immediate surroundings:

All in all it was great to be back in Bulgaria/Java2Days. I hope to return soon and see all of my kind Bulgarian friends once again.

Wednesday Jan 21, 2015

JMaghreb 2014 Trip Report

JMaghreb 2014 was held on November 4-6. Organized by the Morocco JUG, JMaghreb is one of the largest Java developer conferences in North Africa. Although centered around the Maghreb region (that's Morocco, Algeria, Tunisia, Libya and Mauritania) the conference is on the radar for folks around the broader Middle East, Africa and Southern Europe. This was yet another brilliant year for the conference. Speakers included Patrick Curran, Werner Keil, Johan Vos, Mohamed Taman, Hazem Saleh, Paul Bakker, Romain Manni-Bucau, Abdelmonaim Remani, Simon Ritter, Angela Caicedo and Mike Milinkovich. Topics included Java SE, Java EE, JavaFX, HTML5/JavaScript, mobile, NoSQL, OSGi, Big Data and the cloud. The passion that organizers including Badr El Houari, Faissal Butaounte, Youssef Misdaq, Mohammed Aboullaite, Abdelmonaim Remani and Mohamed Taman put into JMaghreb speaks for itself. I am extremely grateful that the organizers invited me and very glad that I was able to accept. One of the most remarkable things about JMaghreb that I was astounded to notice was the very large number of female attendees - far more than any conference I have ever gone to. In the words of organizer Faissal Butaounte, "they are sending a clear message - they are passionate about technology".

I started the conference on the first day with my thus far very popular talk on 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 using a Java EE 7 back-end. This session was a full house in the main hall. 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.

I didn't have a talk scheduled the second day so was able to focus on honing my three brand new talks the next day. Romain had a pretty cool talk the second day on TomEE.

I started the last day of the conference with a bang back in the main hall with my talk titled "Why Open Standards and Java/EE Matter (to You)". The talk is actually designed to be a keynote and covers a very important topic that I think there's far too little material out there on. It talks about the core value proposition for standards like Java EE in maintaining a healthy competitive marketplace. It differentiates open technical standards from so called "de-facto standards" and explores the relationship between open source and open standards. I also talk about what the community can do to make standards really work. The talk taps into one of my fields of study that I never pursued in my career and few developers really seem to have even a basic grasp of - economic analysis. This is a talk I've been waiting to give for many years and I am glad I was finally able to start presenting it. To some degree it embodies many of the core motivations that keep me doing what I do to try to help move the Java EE standard forward. The slides for the talk are here:

The talk was very well attended and well received. I was glad to be able to invite Patrick and Mohamed Taman on stage for the talk. I hope to get an opportunity to do this talk again soon (I did the same talk for the closing keynote of Java2Days 2014).

My second talk of the day was our likely new flagship talk for this year titled "What's Coming in Java EE 8". The talk covers the possibilities for Java EE 8 such as HTTP 2/Servlet 4, Server-Sent Events (SSE), a new standard action-oriented web framework, security simplification, REST management/monitoring, even better JSON support, CDI 2, platform-wide CDI alignment, more pruning, JCache, JMS.next() and Java SE 8 alignment. I also cover Adopt-a-JSR. The slides for the talk are here:

The talk had good attendance and I had some excellent conversations afterwards. The Morocco JUG as well as the Egypt JUG are among the early adopters of Java EE 8 JSRs, quite possibly along with the Tunisian JUG community. After lunch Patrick had a session on the JCP which also had very good attendance.

I had the last session slot for the conference and my last talk was very packed. The title of this new talk is "Reactive Java EE - Let Me Count the Ways!". It aligns Java EE 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, WebSocket asynchronous support 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:

Thus far this new talk seems to be quite popular and well received. I am sure to present the talk again soon.

Besides the conference Morocco was truly a pleasure. It is really a shame more Americans don't make Morocco their preferred travel destination. Morocco features rich history, culture, architecture, food and nature. It is by far one of the most thoroughly friendly countries that I have ever been to with a deep tradition of warm hospitality - and this is despite the obvious signs of poverty and misery. During the conference I was able to explore a little bit of legendary Casablanca, particularly in the evening hours. Thanks to Badr and the JMaghreb organizers I was also able to see a bit of Morocco outside the very urban Casablanca. Our very gracious hosts took some of the speakers including myself for a brief visit to the beautiful desert city of Marrakesh. Though Marrakesh is definitely worth seeing, I found myself truly captivated by the Moroccan country side. To explore it a bit more intimately I excused myself from my hosts and decided to spend some time trekking in the reasonably nearby but far more rugged Agafay desert (popularly known as the "Marrakesh desert"). Agafay is actually at the very base of the Atlas mountain chain and is a very picturesque mix of rocky desert, mountains and classical sand dunes. If you check out the pictures below it's very easy to see why Morocco is one of Hollywood's most favored destinations for science fiction movies. At times, it was easy to imagine that I've magically gone through a dimensional portal into another planet altogether. Only the presence of my local Berber tribesman guide Ali was indication that I was still on planet Earth. Maybe next time I'll skip the companionship just to complete the illusion.

The most awe inspiring experiences that drove home the true hospitality of the Moroccan/Berber people occurred during the hike through a remote mountain village. Since it was lunchtime, Ali and I were actually invited to share a meal with a very friendly rural family! And these were people that barely had the benefit of electricity, running water or mass communication! As time was of essence I and Ali politely declined the once-in-a-lifetime invitation...

The Atlas mountains are very unique on their own right and Agafay barely scratches the surface. The peak of the Atlas Mountains is the second highest in Africa behind mount Kilimanjaro. An overnight strenuous technical climb, it offers some of the most unique terrain in the world and definitely worth attempting if opportunity permits.

All in all I thoroughly enjoyed JMaghreb and Morocco. I hope to return soon and see all the folks I met there again!

Wednesday Dec 10, 2014

JavaOne 2014: A Small Step in the Right Direction?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Wednesday Nov 12, 2014

NFJS Pacific Northwest Software Symposium Seattle Trip Report

The NFJS Pacific Northwest Software Symposium was held October 17 - 19 in Seattle, Washington. I had five talks total over two days, more or less back-to-back. The first one was my JavaScript + Java EE 7 talk titled "Using JavaScript/HTML5 Rich Clients with Java EE 7". 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.

My second talk was 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 finished the day with a talk titled Building Java HTML5/WebSocket Applications with JSR 356. 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.

On the second day I started with 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 last 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 next NFJS show is the Great Lakes Software Symposium in Chicago on November 14 - 16. Here's my tour schedule so far, I'll keep you up-to-date as the tour goes forward (I'll be updating my content on the tour for the next season):

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

Monday Nov 03, 2014

NFJS New England Software Symposium Boston Trip Report

The NFJS New England Software Symposium was held September 19 - 21 in Boston. This is one of the larger NFJS shows and attendance at the show and my sessions was pretty good. It is always encouraging to see the same folks attend more than one talk. On my way to the show I also stopped by at the Connecticut Java User Group (more on that below).

I had five talks total over two days, more or less back-to-back. The first one 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 second 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.

I finished off the day with my JavaScript + Java EE 7 talk titled "Using JavaScript/HTML5 Rich Clients with Java EE 7". 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.

The first talk on the next day was my session 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.

My last one for the show 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:

Since Boston is such a short drive, I decided to skip the tedious flight for this show. One very nice thing this did was enable me to stop by and speak at the Connecticut Java User Group on the way there. The JUG is led by my friend and co-author for EJB 3 in Action Ryan Cuprak. I've spoken at the JUG a number of times over the years and it was good to be back. I did my JavaScript + Java EE talk there. The attendance was great and I got some great feedback. I hope to speak at the JUG again in the near future as time allows.

My next NFJS show is the Great Lakes Software Symposium in Chicago on November 14 - 16. 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 useful content on the tour?

Wednesday Oct 29, 2014

NFJS Greater Atlanta Software Symposium Trip Report

The NFJS Greater Atlanta Software Symposium was held September 12 - 14. I had four talks total over two days, more or less back-to-back. The first one 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 second 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.

On the second day I started with my JavaScript + Java EE 7 talk titled "Using JavaScript/HTML5 Rich Clients with Java EE 7". 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 event with a talk titled Building Java HTML5/WebSocket Applications with JSR 356. 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.

My next NFJS show is the Great Lakes Software Symposium in Chicago on November 14 - 16. 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 useful content on the tour?

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
8
9
10
11
12
13
14
16
17
18
19
20
21
22
23
24
25
26
27
29
30
31
 
       
Today