Reza Rahman - Professional Homepage
blank Home Home | Navigation Site Map blank Resume | Projects | Blog | Downloads | Links | Contact

My ramblings on Java EE, Java SE and the crazy World of technology in general.

Thursday, September 01, 2016

Last Call and Some Results for DZone Joint Community Survey on Java EE 8

The joint community survey on Java EE 8 by the Java EE Guardians and DZone ends September 7. If you haven't done so already, I strongly suggest participating in the survey now.

The Context
For those unaware, the primary motivation for the survey is to make sure the right features make it into Java EE 8. After months of silent inactivity, Oracle has announced that it is committed to delivering Java EE 8 in time.  While this is undoubtedly good news, a potential problem is that Oracle appears to wish to significantly shift the focus of Java EE 8 compared to the initially promised, highly community-driven scope. The best way to figure out if what Oracle seems to be proposing is the right thing to do is by asking your opinion on Java EE 8 scope through a survey.

You Will be Heard
The survey is deliberately kept brief, high-level and simple. There is also ample opportunity to provide your own comments. You should not underestimate the impact of the survey. Both the Java EE Guardians and DZone will ensure your voice is heard in every avenue possible including the JCP Executive Committee, the umbrella Java EE 8 JSR as well as individual JSRs like Servlet 4.

Some Intermediate Results
So far the survey has done quite well in the short time frame that it has been open. We already have about 600 input points, which is enough to draw some reasonable conclusions on what the community thinks about Java EE 8. However, with a bit of your help, it would be great to cross 1,000 input points for strong consensus based results we can move forward with.

We should all wait just a bit longer for the final results and analysis to be published on DZone in a few weeks. However I think it's useful to share some initial observations on the input so far:
  • The survey completion rate is 100% which shows how serious the folks that are participating are.
  • Almost 70% said they were OK with follow up questions, which shows how engaged the folks that are participating are.
  • There are a good number of very thoughtful comments from participants.
  • The response is fairly predictable for items such as Servlet 4, the Security JSR, JSON, Java SE 8 alignment, JCache, NoSQL, etc.
  • People don't really mind EJB 3+ and don't prioritize replacing EJB functionality with CDI quickly.
  • A significant number of people want Java EE applications to be more configurable.
  • A significant number of people want to wait a bit before too much standardization around reactive programming.
  • Although opinion is clearly split on microservices, a significant number want to see things like uber-jars standardized.
  • A significant number of people want Java EE to take a relatively conservative approach to standardization.
  • A very large number of people would like to see the Java EE release frequency accelerated.
Some Final Thoughts
One of the things about Java EE pretty much every Java EE Guardian values is the fact that it is an open standard that has become more and more community driven over the years. This is why we all continue to believe in the JCP. While the JCP isn't perfect, it is the best mechanism we have today to make sure community input is incorporated as a matter of required due process and transparency into a vendor-neutral technology we can all depend on in the long run. Despite the tough few months the Java EE community has had what we have quietly demonstrated through active engagement is that no one can control the fate of Java EE single-handedly - not even the steward.

I hope that is a powerful motivator for you to do your part and take a mere few minutes to fill out a very important and meaningful survey. It all begins and ends with you.

Monday, August 01, 2016

Java EE Adoption Story from Pavel Pscheidl

One of the most important things to do at this stage of the life-cycle of Java EE is highlight successful adoption stories at a regular cadence. The community has been doing just that for a long time including at JavaOne. A number of these stories are curated at Zeef. Pavel Pscheidl recently agreed to share a few such adoption stories about Java EE applications he has worked on over a few years. Pavel had a number of insightful things to say about Java EE worth paying attention to. I have highlighted specific passages that really stand out.

Can you kindly introduce yourself?
My name is Pavel Pscheidl, and of course I’m a Java EE developer. Besides that, I’m a fresh Ph.D. student at the Faculty of Informatics, University of Hradec Králové, Czech Republic. I spend most of my time with Java/Java EE and it’s ecosystem. However, I am also a big fan of Mozilla’s Rust language, using it practically already, mainly on projects related to research, like agent-based simulations.

Can you describe the application or applications that use Java EE? What does your company do?
There are many applications based on Java EE that I’ve worked on. It all started a few years ago by exploring new possibilities. I obtained a contract for building a very special e-commerce application. Back then I discovered the beauty of Java EE 6, mostly CDI and JSF. The project was a major success - everything went well, no technological difficulties or obstacles.

Fast forward to 2016. Currently, I work for a company called Zentity, based in Prague. Zentity specializes in delivering mobile application solutions. Our customers are mainly big banks and telco companies not only in Europe, but all around the world. Building mobile applications for banks is not simple. Most of the interesting work is actually done in back-end systems, providing the necessary security layer, orchestration and overall integration to customer’s current systems. And that is where Java EE shines.

A place for the really fancy stuff with Java EE is in the university. There are multiple projects that can be split into two categories. The major part of our research that relies on Java EE are Internet of Things projects. We build both practical projects and theoretical prototypes. Our IoT-enabled Home Automation System is a perfect example.

We also run Java EE (micro)services for research computations. There is more. For example, one of the projects I’m also partially involved in is building an implementation of SMART adaptive calculator for service costs. Overall, Java EE in it’s seventh version provides us solid background for both commercial and research projects.

Why did you choose Java EE?
The short answer is simple and obvious - it best serves my needs. Java itself is a rich ecosystem and an advantage on it’s own. I can’t image Java to go away one day. Anyway, the word “Enterprise” may have lots of different meanings. Telecommunications, Banking, Healthcare - each domain is different. And Java EE covers them all.

I used to work with different technologies per each project, Ruby here, Python there...Java EE covers it all. It is the strange mix of being complex enough to handle every situation, yet being designed so well everything is easy to understand. Solutions in Java EE are in practice cleanest I’ve ever seen so far. There is no extensive configuration madness, straightforward and reasonable guidelines for everything. This is especially important in larger teams.

If I had to name one part of Java EE that makes me absolutely love it, then I would say CDI and related specifications. CDI is beautifully designed and allows me to build applications with strong focus on the problem domain, not on configuration and wiring everything together. It’s extension capabilities are awesome. That really is impossible to find anywhere else. And I learned to write reusable extensions doing work for developers a lot. It is common for my projects to automatically add new functionality via a combination of extensions and interceptors. These are the main practical reasons I use Java EE and absolutely love it. It just works for me.

It also has a great community and enough literature of great quality. I recommend Beginning Java EE 7 by Antonio Goncalves to everyone, especially students/juniors. This book itself brought us many newcomer Java EE developers.

How does the application or applications use Java EE?
The usage is mostly very complex. Especially at Zentity, I’ve used many of Java EE’s parts in one project. Of course, there is dependency injection in every project. There is JAX-RS, JPA, EJB, asynchronous invocations and schedulers. I also use JSF on many projects. However lately, we’ve replaced the JSF approach with Single-Page-Applications developed with JAX-RS.

The target application server is mostly WildFly and/or Payara. Both are very capable, but for bigger projects with possible demand for support I’m going for Payara. However, WildFly’s ability to server as a load balancer is outstanding, as well as other capabilities like session fail-over. Switching among application servers is easy and picking one is mostly a matter of target environment.

For Internet of Things projects, REST-based microservices are often built with “fat” business logic hidden inside. JAX-RS is great here and the implementation doesn’t matter. And it’s fast too. WildFly’s standalone regime without full profile is often used for microservices - Undertow is great performance-wise. We also use enunciate to automatically generate API documentations whenever possible.

In the future, I’d like to deeply evaluate possibilities of delivering Java EE applications as a “click & run” package. Possibly by dockerizing them, or using WildFly Swarm/Payara Micro. It would solve the only pain I feel when dealing with applications written in Java - JVM gets old and big institutions like banks update slowly. There are many institutions, especially banks operating on deprecated JDK 1.6 with no will to perform an easy update. Delivering applications with both the application server and JDK packed is not an ideal solution in terms of package size.

How was your general experience with Java EE? Would you use it again? My overall experience was very good. I learned a lot from Java EE in terms of design patterns. I will definitely use pure Java EE again in the future. There are many “enterprise” projects waiting for me where Java EE perfectly fits.

Big projects are quite easy with Java EE, yet it is awesome even for small projects with limited functionality and logic. I would like to point out the clean design of Java EE applications. There is no JAR hell, no configuration hell, the projects remain oriented on the target domain. Everything just works and is intuitive. There is also a strong community of enthusiasts who help us all more than they even realize by writing great articles, books, recording educational videos and organizing community events. No one named, no one forgotten. But overall, I find the Java EE ecosystem great.

How can people contact you if they have questions?
The best way to contact me is directly via email - Other contacts can be found at my personal playground

If you have a similarly great Java EE adoption story to share with the community (particularly migration stories from other technologies), please do reach out.

Thursday, July 07, 2016

WebSphere V9 "Traditional" Now Java EE 7 Certified

WebSphere V9 "traditional" has recently been fully Java EE 7 certified. In case you are wondering, this is indeed the much maligned "kitchen sink" monolithic version of WebSphere - as opposed to the far more nimble WebSphere Liberty.

Given the very large and loyal customer base IBM has as well as the continued substantial usage rates for WebSphere traditional, this is sure to be a further boost to Java EE 7 adoption. In particular it is important to note that WebSphere V9 also comes with support for Java SE 8.

WebSphere V9 joins the Java EE 7 compatible ranks of JBoss EAP 7, GlassFish 4, WildFly, WebSphere Liberty Profile, WebLogic 12.2.1, Hitachi Cosminexus and TmaxSoft JEUS. All of the Java EE certified offerings are always listed on the official Java EE compatibility page. For some perspective few other open standards such as SQL have as many available implementations as Java EE 7 already has (and this is bound to only just keep getting better).

You'll find the trial link for WebSphere V9 here. IBM senior staffer Tom Alcott has a nice technical write-up on the details of WebSphere V9 certainly including support on various cloud platforms including BlueMix. It should be noted that unlike WebSphere traditional, WebSphere Liberty was one of the earliest available commercial Java EE 7 certified application servers, certainly well ahead of WebLogic and JBoss EAP. You should really check out my WebSphere Liberty Java EE 7 compatibility announcement on The Aquariumwritten while I was still at Oracle.

Other than existing WebSphere traditional customers it is honestly difficult to recommend it over WebSphere Liberty. Whatever you may think of the WebSphere brand, you will be doing yourself a disfavor if you do not take WebSphere Liberty seriously. You should definitely not let any open source prejudices unduly hinder your appreciation of the engineering work behind Liberty. It is definitely one of the most modular, lightweight and impressive performing (in every way) modern application platforms available today - Java EE or otherwise. Hopefully that is food for some thought...

Tuesday, July 05, 2016

The Philly JUG has a New Logo!

A polished and professional logo is important to the identity of any non-trivial effort. Although Java user groups are community efforts, they are no exception. In fact the largest and most successful JUGs in the world almost invariably have a nice logo.

As part of our ongoing revitalization effort, it made total sense to do the same for the Philly JUG. I am proud to say my company CapTech donated design time for the new Philly JUG logo. Below is the high resolution version of the logo.

It seemed like a pretty natural idea to use the iconic Philadelphia Liberty Bell using the style, color and script of the official Java coffee cup logo. My fellow JUG leaders Paul Snyder and Jason Young provided the cool concept to the designers. The logo is now proudly incorporated into our Meetup site as well as our Twitter account.

Besides the primary logo there are the following variants (all are high resolution images):

All of the logos can be browsed and downloaded from here. You should feel free to proudly use the logo. I personally printed out some cool stickers using StickerMule that I will bring as giveaways to the next meeting I go to. For inspiration we have a document with usage suggestions for the logo.


Monday, June 27, 2016

JSON-B Public Review Draft Now Available

The JSON-B (Java API for JSON Binding) specification has recently released a public review draft. For those unaware, JSON-B is one of the key APIs slated to be included in Java EE 8. It is a very high level declarative, annotation-based API for processing JSON. Java EE 8 is also scoped to include an important revision of the lower level JSON-P (Java API for JSON Processing) specification.

These two APIs together are extremely important in making JSON a first class citizen of the standard Java platform, just like JAXP (Java API for XML Processing) and JAXB (Java API for XML Binding) did many years ago for XML. With these two APIs in place Java developers can simply think of JSON as yet another Java serialization format. No more third party libraries and no more configuration - things will simply work out of the box when it comes to processing JSON. In my view these APIs are so critical they should indeed be moved to a modular Java SE release, much like JAXB and JAXP are already a part of Java SE.

You can download and take a look at the draft specification from the JCP site. A release of the reference implementation is also available here, complete with Maven coordinates. You should also note the read-only GitHub mirror. If you are looking for a gentler introduction, the best resource is a slide deck from specification lead Dmitry Kornilov (click here if you can't see the embedded slide deck).

You should do your part demonstrating first hand that JSON-B is a critical standard for Java - by engaging actively. Here are the many ways you can engage (most of this comes directly from the Adopt-a-JSR page I drafted while still at Oracle):
  • You can join the specification itself as an expert or a contributor. You can do that via the JCP page for the specification.
  • You can have your JUG officially support the standard through Adopt-a-JSR.
  • You can simply join the discussion without any ceremony by subscribing to the JSON-B specification user alias.
  • You can share ideas and feedback, possibly by entering issues in the public issue tracker.
  • You can read the public draft specification now.
  • You can try out the reference implementation now.
  • You can write or speak about JSON-B now.
  • You can encourage others to participate.
The next step is up to you. You can be a real part of Java's ongoing success yourself instead of simply being a passive consumer. If you have any questions I am happy to try to help - just drop me a note any time.

Sunday, June 26, 2016

JBoss EAP 7 Brings Red Hat Commercial Support for Java EE 7

JBoss EAP 7 has recently been fully Java EE 7 certified. For most developers this essentially represents serious commitment from Red Hat towards commercial support for Java EE 7. As many of us know WildFly (the upstream community project for JBoss EAP) was one of the earliest Java EE application servers to get certified against Java EE 7. There are already numerous publicly known adoption stories for Java EE 7 on WildFly. However lack of Red Hat commercial support for WildFly had been a show-stopper for many - particularly very large enterprises. JBoss EAP removes this hurdle and is bound be to a further boost to Java EE 7 adoption. Indeed in my view JBoss for many years has ranked as one of the best Java EE implementations with one of the most adoption. That said one of the most valuable characteristics of Java EE is the rich implementation choices it offers (and hence the freedom from vendor lock-in).

JBoss EAP 7 joins the Java EE 7 compatible ranks of GlassFish 4, WildFly, WebSphere Liberty Profile 8.5, WebLogic 12.2.1, Hitachi Cosminexus and TmaxSoft JEUS. All of the Java EE certified offerings are always listed on the official Java EE compatibility page. For some perspective few other open standards such as SQL have as many available implementations as Java EE 7 already has (and this is bound to only just keep getting better).

Under the hood JBoss EAP 7 is the same core runtime as WildFly 10. Here is the download link for JBoss EAP 7. You can try it for free although you will need to register with the site (you don't need to do that with WildFly). Unlike WildFly there is also a GUI installer that is not too cumbersome and does make customized setup easier.

To test things out I ported over the demo code for my Java EE 7 testing talk using Arquillian to JBoss EAP 7. The porting process was very trivial and the overall experience was great. Like most modern modular Java EE application servers startup, shutdown, deployment and undeployment was blazing fast - in the order of seconds (in fact many of my integration tests finished in less than a second!). One of the things that I felt was a strong point for GlassFish was it's mature administration features. JBoss and WildFly seem to be catching up fast both with their CLI (command line) and GUI admin console. The JBoss EAP console was genuinely impressive.

Overall I definitely recommend taking JBoss EAP 7 for a spin perhaps using my demo code (the demo code comes with setup instructions). If you haven't tried out vanilla Java EE code in a while the demo may be an eye opener for you in terms of simplicity, power, productivity and ease-of-use.

Sunday, May 15, 2016

Introduction to the JCP by Heather VanCura at the Philadelphia JUG

On May 11th the Philadelphia JUG held it's third successful meeting after the leadership changing of the guard. We were very proud to host my former Oracle colleague Heather VanCura who gave an excellent talk introducing the Java Community Process (JCP). All the details for the talk are here. You should note that the Philadelphia JUG is now on This follows in the footsteps of many other JUGs and is a timely transition to a very capable platform. The JUG is now also on Twitter.

Heather's talk was very well received at the JUG. A number of JUG members expressed interest in actively participating in the JCP after the talk. This is certainly something the Philadelphia JUG can effectively facilitate and we will discuss the topic in the leadership board soon. Heather's slides can be downloaded here. Photos from the meeting are here.

It was also very good to see presence from the neighboring Delaware JUG at the meeting. This is the kind of local and regional coordination we are eager to encourage at the Philadelphia JUG. JUG leader Tariq Ali Hook was very impressed by Heather's talk. I offered to give my rendition of the JCP talk at the Delaware JUG. In a similar vein tomorrow I am giving my pragmatic microservices with vanilla Java EE talk remotely on Google Hangout for the Central Pennsylvania JUG. I am grateful to Central Pennsylvania JUG leader Roger Diller for the kind invitation.

After the meeting I took Heather to a Philadelphia cultural institution visited by many global luminaries including the commander-in-chief Barack Obama himself for a very late dinner. If you are a long-time Philly resident you will have no trouble guessing I am talking about Pat's King of Steaks - home of the one and only authentic Philly Cheese Steak.

We hope Heather enjoyed our characteristically down-to-earth but sincere hospitality. It's nothing fancy but it's Philly.

The Philadelphia JUG has a similarly great lineup of talks setup all the way to Fall. Please do stay tuned and help make the JUG all that it can be. We are trying everything we can in the leadership on your behalf to move the JUG onward and upward.
Home   |   Site Map   |   Resume   |   Projects   |   Blog   |   Downloads   |   Links   |   Contact