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!

Thursday Oct 17, 2013

How You Helped Shape Java EE 7...

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

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

APIs to Add to Java EE 7 Full/Web Profile

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

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

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

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

Enabling CDI by Default

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

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

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

Consistent Usage of @Inject

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

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

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

Expanding the Use of @Stereotype

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

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

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

Expanding Interceptor Use

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

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

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

About



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

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

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

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

Search

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