Friday Feb 05, 2016

Some Interesting Real World CDI Usage Statistics

The good folks over at Genuitec developing MyEclipse recently asked the Twittersphere about real world CDI usage. They ran a week-long Twitter survey asking the simple question - "Do you use CDI in your Java EE applications?". The results of the survey were pretty interesting and certainly worth sharing. As the graph below shows 60% responded they use CDI. 21% responded that they did not. 19% did not know what CDI was.

Here is a link to the actual survey on the MyEclipse twitter account. For those unaware the MyEclipse team is working hard to bridge the CDI and Java EE support gaps in Eclipse - hence the question.

It is definitely very good that a clear majority said they were using CDI. CDI is key to writing effective Java EE applications. This data point goes a long way to removing the severe CDI skepticism in certain corners of the Java EE ecosystem. The 19% that responded that they did not know what CDI was pose both a challenge and an opportunity. If you are a Java EE or CDI fan it should tell you that there are colleagues that you should educate on CDI. I am often still taken aback when a developer does not know what CDI is or still refers to Java EE as "J2EE" (the term J2EE has been long retired with the likes of "J2SE" and COM/DCOM). A large number of these same developers are very pleasantly surprised to learn how much modern Java EE can help make their day-to-day work easier.

No survey is perfect of course. The sample data size for the survey is small but respectable at around 300. Around 500-1000 data points is probably more representative of the Java ecosystem. Since it is a Twitter survey it is probably highly susceptible to selection bias. That being said the results are definitely good enough to think about seriously.

Wednesday Feb 03, 2016

Migrating from Java EE 5 to Java EE 7 at Segurnet Portugal

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. We have been doing just that for a long time through our adoption stories blog, this humble blog as well as JavaOne. Indeed JavaOne 2015 was particularly good in this regard. We had a number of solid adoption stories submitted that we could select from. We will highlight all of those stories here in the coming months. A particularly nice adoption story presented at JavaOne 2016 was from Segurnet Portugal on migrating from Java EE 5 to Java EE 7.

Segurnet is a data sharing platform for key insurers in Portugal. It used by 65 companies, about 30,000 users with close to 1.5 million page views and over 3 million server requests. Roberto Cortez detailed how the platform was recently migrated from legacy Java EE 5 to Java EE 7 - showing specific code examples. As the end result of the migration Roberto noted latest technology adoption, improved standardization, simplicity, a net reduction in code, an increase in productivity, faster deployment times and better performance. Roberto's experience is typical for anyone considering such a migration. You can view the session below (click here if you are having trouble seeing the embedded video).

The slide deck for the talk is available on SlideShare. For those unaware, Roberto is a passionate Java EE advocate, frequent speaker, blogger and JUG leader. He now works on the TomEE Java EE application server.

If you have a similarly great Java EE adoption story to share with the community (particularly migration stories from other technologies), please do feel encouraged to reach out. In the spirit of Java EE centric vendor neutrality, what Java EE implementation or tool set you choose does not matter at all and neither does which part of the globe you are in.

Friday Jan 29, 2016

EJB3 @Lock Annotation for CDI Beans

The EJB 3 @Lock annotation is pretty unique, interesting and useful. It provides an elegant declarative way of controlling concurrency for beans that can be shared across multiple threads such as singletons. As of Java EE 7 the annotation is only available to EJB 3 @Singleton session beans. There is a lot of value to making this bean available to all CDI beans in general. Very recently Stephan Knitelius did exactly that through a pretty simple CDI interceptor. You can read his nice write-up here.

In the longer term this work probably belongs somewhere in the standard such as in an update of the Java EE Concurrency specification or a modular CDI 2 specification. Another good place for Stephen's work is the DeltaSpike project. There are many other cool EJB 3 features that could be similarly made available to CDI beans generally such as @Startup, @Asynchronous and @MaxConcurrency. Some of these issues have long been discussed in the EJB specification JIRA entries.

Wednesday Jan 27, 2016

Java EE @ Oredev

Oredev 2015 was held on 3-6 November in Malmo Sweden. This was my third time at the largest IT conference in the Scania region. The conference is rooted in .NET and development process/methodology but has been trying hard to beef up it's Java content. This year it attracted a decent section of the Java crowd including my fellow Oracle colleagues Bruno Borges and Stephen Chin. Topics covered included .NET, Java SE, Java EE, mobile, methodology, agile, HTML5, JavaScript and NoSQL.

I did talks on Java EE 8 and aligning Java EE with the reactive movement. More details, including slide decks and session videos, posted on my personal blog.

Monday Jan 25, 2016

Migrating from Tomcat to Java EE and TomEE at Dassault Systemes

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. We have been doing just that for a long time through our adoption stories blog, this humble blog as well as JavaOne. Indeed JavaOne 2016 was particularly good in this regard. We had a number of solid adoption stories submitted that we could select from. We will highlight all of those stories here in the coming months. A particularly nice adoption story presented at JavaOne 2016 was from Dassault Systemes.

Although the average developer and consumer is probably not aware of Dassault Systemes, it is a company that powers many of the world's most critical industrial processes. It is one of the global leaders in 3D modelling (think CAD/CAM), product life-cycle management systems. Just some companies that rely on Dassault Systemes include the likes of Boeing, Toyota, BMW, Mercedes, Honda, Samsung, Coca Cola, Nokia, Nikon, Panasonic, LG, Procter & Gamble, GE, Johnson & Johnson and Exxon. French based Dassault Systemes is recognized to be one of the most innovative companies in the world. The company offers it's products both on-premise and as SaaS on their own cloud.

The company chose to standardize their very diverse set of products geared towards various industry verticals on Java EE and TomEE. They cited reasons like ensuring consistency throughout a large number of systems, avoiding third-party jar/configuration/class-path hell, providing a fully supported uniform stack, portability and modernizing technology in a managed, sustainable fashion. Their migration experience was quite varied and represents the gamut of what others can expect in adopting Java EE. They migrated a large number of Tomcat based applications using various third-party libraries to Java EE. They also migrated over legacy C/C++ applications as well as legacy J2EE applications. They even ported from one Java EE application server to another to get to a common base with TomEE. TomEE was cited as a particularly easy way to migrating from Tomcat to Java EE. They are looking forward to TomEE moving ahead with Java EE 7 support. The session explains their entire migration story in a concise, clear fashion. You can view the session below (click here if you are having trouble seeing the embedded video).

If you have a similarly great Java EE adoption story to share with the community (particularly migration stories from other technologies), please do feel encouraged to reach out. In the spirit of Java EE centric vendor neutrality, what Java EE implementation or tool set you choose does not matter at all and neither does which part of the globe you are in.

Thursday Jan 14, 2016

Java EE @ Java Day Mexico

Java2Days 2015 was held on November 2-4 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. This was another great year for this rapidly growing, vibrant event. It attracted a host of international and local speakers including Patrick Curran, Geertjan Wielenga, Ivan St. Ivanov, Vladimir Pavlov and Andrew Lombardi. Topics included Java SE, Java EE, HTML5/JavaScript, mobile, and the cloud.

I did talks on real world microservices with Java EE and aligning Java EE with the reactive movement. I also ran a lab on JMS 2. More details, including slide decks, session video and code, posted on my personal blog.

Monday Jan 11, 2016

Java EE in Practice at Lufthansa Industry Solutions

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. We have been doing just that for a long time through our adoption stories blog, this humble blog as well as JavaOne. Indeed JavaOne 2016 was particularly good in this regard. We had a number of solid adoption stories submitted that we could select from. We will highlight all of those stories here in the coming months. A nice JavaOne 2016 session to start with is the one from Lufthansa industry solutions.

Lufthansa industry solutions develops systems both internally at Lufthansa as well as for external customers. They chose to standardize on Java EE to ensure consistency throughout a large number of systems. The session explains what the organization does, it's architectural approach and why they chose Java EE. The session also dives into some interesting details on two different Java EE applications (one still using Java EE 6 and one already on Java EE 7) that Lufthansa industry solutions developed for clients. The session touches upon how Java EE applications can take advantage of most of the practical benefits of microservices without the added complexity. The applications use a mix of WildFly and JBoss EAP along with other JBoss ecosystem projects like Hibernate Envers, Hibernate Search, Drools. The applications also used ICEfaces and PrimeFaces (the older Java EE 6 application used ICEfaces while the newer Java EE 7 application uses PrimeFaces). You can view the session below (click here if you are having trouble seeing the embedded video).

If you have a similarly great Java EE adoption story to share with the community (particularly migration stories from other technologies), please do feel encouraged to reach out. In the spirit of Java EE centric vendor neutrality, what Java EE implementation or tool set you choose does not matter at all and neither does which part of the globe you are in.

Friday Jan 08, 2016

Meet SnoopEE, a Discovery Service for Java EE

SnoopEE is a very interesting grass roots open source Java EE ecosystem project. Akin to NetFlixOSS Eureka it enables microservices discovery, lookup and registration. SnoopEE is developed by Java EE advocate, JCP expert, speaker and blogger Ivar Grimstad. Ivar presented on SnoopEE at JavaOne 2016. One very nice aspect of Ivar's talk is that it actually discusses the basic motivation for service discovery and SnoopEE instead of simply covering the features of the project. You can see his well done session below (click here if you can't see the embedded video).

The slide deck for his talk can be found here. The project itself is on GitHub. SnoopEE is still pretty nascent and under active development. You should consider giving it a try, using it and contributing back to it.

Thursday Dec 24, 2015

Season's Greetings and Happy New Year from the GlassFish/Java EE Team

On behalf of the GlassFish and Java EE team at Oracle I wish you and your family Season's Greetings and a very Happy New Year.

This has been another important year for us. We continued our evangelism efforts worldwide, released GlassFish 4.1.1, started the GlassFish 5 branch, released a number of early drafts for critical Java EE 8 JSRs, strengthened the Adopt-a-JSR program and offered full commercial support for Java EE 7 through the best-in-class WebLogic 12.1.2 offering. In a similar vein we saw the number of available Java EE 7 options expand especially with WebSphere Liberty. We were able to warmly welcome Siwpas as a new entrant into the Java EE compatibility family. Most encouragingly we were able to share a number of real world Java EE 7 adoption stories with you and saw strong developer support for the Java EE 7 platform as well as key APIs like JSF and JPA. We are ever thankful for your support and we hope to continue to try our best to serve your interests, perhaps against what many would consider pretty tall odds.

In the coming year it is obvious we will see commercial Java EE 7 support via JBoss EAP very soon. We hope we will also see other strong Java EE 7 options such as TomEE. We hope to continue to move the Java EE 8 specifications and GlassFish 5 forward with support from our community and our JCP compatriots. On the cloud front we will very likely bring Java EE 7 to the commercial Oracle Cloud. If the current momentum of Java EE 7 holds we are sure to be able to share many more great real world adoption stories with you. We will look forward to working harder than ever in engaging you through our development and evangelism efforts certainly including this humble community blog.

As you know I and my colleague David Delabassee are the primary maintainers of this blog. Both David and I will be enjoying some well-earned time-off with our families the next few days. As a result the guns will be mostly quiet at this particular Java bulwark to return recharged and full force in the new year.

Until then, thanks and best wishes once again. We hope to see you next year!

Wednesday Dec 23, 2015

Java EE @ UberConf 2015

UberConf 2015 was held July 21-24 in Denver, Colorado. UberConf has grown to become one of the most significant US developer conferences. Consequently it is an important conference for our team to support. Topics covered included Java SE, JavaScript, JVM languages, architecture, methodology, mobile, cloud and the like. My former colleague Arun Gupta and I covered Java EE.

I had three talks total over two days, essentially back-to-back. I did talks on the basics of Java EE, real world microservices with Java EE and aligning Java EE with the reactive movement. More details, including slide decks, video and code, posted on my personal blog.

Tuesday Dec 22, 2015

JavaOne 2015 - Another Year, Another Step Forward

JavaOne 2015 San Francisco was held October 25-29. I think this was another great year for JavaOne. It is always a privilege to try to do justice to the crucial role of Java EE track lead. I'd like to share my thoughts, observations and experiences at JavaOne 2015 from that perspective. I'll also share all the materials that I presented at JavaOne.

Besides helping organize the conference, I participated in the very cool community keynote celebrating twenty years of Java, faciltated the Sunday GlassFish community events, ran a few hands-on labs, led a workshop and presented a few technical sessions. This was by far my busiest JavaOne conference ever. More details on all of this, including thoughts, analysis, slide decks, videos and code, is posted on my personal blog.

Monday Dec 07, 2015

Please Welcome Siwpas as Java EE Certified Option!

Siwpas (short for Simple Web Profile Application Server) has been an interesting project for a little while. Very similar to the more widely known TomEE, Siwpas is a Java EE application server based on Tomcat. In addition to Java EE support Siwpas offers production ready features such as clustering and security. You can also get commercial support from a Turkish based company named MechSoft.

Although Siwpas has been around for some time it had not been certified. The folks behind the application server now announced that they have achieved Java EE 6 Web Profile compatibility through the OW2 Foundation. For those unaware, the OW2 Foundation has long been granted a full Java EE TCK license for a long time. This is the license Siwpas is able to use by joining and contributing the server to the OW2 Foundation. 

Siwpas founder Gurkan Erdogdu shares the story of how the server achieved Java EE 6 Web Profile certification on his blog. You can find out more about Siwpas here and download it from the official OW2 forge. As Gurkan mentions the next step for Siwpas is Java EE 7 certification. Please welcome their valiant effort in expanding options for the Java EE community.

Friday Nov 20, 2015

2015 Duke’s Choice Award Winners Announced

The incredible amount of innovation that uses and builds upon standard Java/EE technologies is one the most important factors that keeps our ecosystem so uniquely strong. The annual Duke's Choice Awards is a small way of recognizing and encouraging such innovation. Every year a panel of judges gives out ten of these awards at JavaOne (in the interest of full disclosure I am one of those judges). Every year Java EE makes a strong showing at the awards and this year was no exception (in fact I'll share that Java EE makes an even stronger showing in the total number of nominees). In particular the following winners are worth highlighting on this humble blog.

UN/WFP School Subsidy Card: Thousands of students in developing countries lack access to adequate food, Egypt is sadly no exception. Egypt based consulting company e-Finance developed the United Nations’ World Food Program (UN/WFP) School Subsidy Card to help combat this problem. The project was developed for Egypt’s Ministry of Education. The project is now live as a pilot that helps 20,000 families in two poor cities. The project uses Java EE 7, Java SE 8, GlassFish 4 and NetBeans. The project is led by Mohammed Taman. Mohammed is an experienced architect, consultant, Morocco JUG member, Egypt JUG leader, JCP executive committee member and expert group member for multiple JSRs. He is an ardent advocate for Java EE and has been a very active participant in the Adopt-A-JSR, Adopt-OpenJDK, and FishCAT programs. Mohammed's work was highlighted at JavaOne, including in the Java EE portion of the keynote.

OmniFaces: One of the core strengths of JSF is the ecosystem built around it, in particular popular component libraries like PrimeFaces. Though not a component library, OmniFaces is a rising star in the JSF ecosystem. It is a collection of useful utilities for JSF developers. If you were familiar with Seam Faces, OmniFaces reminds me quite a bit of it. OmniFaces is led by Arjan Tijms and Bauke Scholtz - two JSF/Java EE community heroes in their own right. Bauke is one of the foremost JSF community experts. Many in the JSF community know him as BalusC - the ever present voice online always ready to help with very knowledgeable and helpful answers to JSF questions anywhere! Similarly Arjan has long been a strong contributor to the JCP and many of his good ideas are already standardized in Java EE. You can find out more about OmniFaces here.

KumuluzEE: The ranks of fat jar solutions targeting microservices hype in the Java EE ecosystem seems to be ever expanding. There is WildFly Swarm, Payara Micro/GlassFish Embedded as well as TomEE embedded. KumuluzEE is an interesting part of this crowd as unlike the others it does not come from a traditional application server pedigree and is a very community based project that still uses Java EE APIs to create a fat jar solution. KumuluzEE is led by Slovenian Java Champion Matjaz B. Juric. Besides being a Java Champion Matjaz's impressive credentials include simultaneously being an Oracle ACE Director and IBM Champion! You can find out more about KumuluzEE here.

I'd like to take this opportunity to congratulate all of the winners, most certainly not just the ones above. You can find out about all of this year's winners here

Tuesday Nov 17, 2015

2015 JCP Award Winners Announced

An open standard like Java EE involves a lot of hard work from a lot of different groups of people. The hard work of these people, largely selflessly, benefit countless Java developers. For specification leads the work in the JCP is often far beyond just a job. I have seen the same to be true of many vendor experts on a specification. Especially admirable are the independents that contribute to specifications largely on their own time as well as Adopt-a-JSR participants. The annual Java Community Process awards is a small way of recognizing some of these great people and their work. There are four different awards:

  • JCP member or participant of the year
  • Outstanding specification lead
  • Most significant JSR
  • Outstanding Adopt-a-JSR participant

The following are the nominations I had personally made for this year's awards (in no particular order):

  • Josh Juneau (for outstanding Adopt-a-JSR participant)
  • Arjan Tijms (for JCP member of the year)
  • Adam Bien (for JCP member of the year)
  • David Blevins (for JCP member of the year)
  • Ivar Grimstad (for JCP member of the year)
  • Antoine Sabot-Durand (for outstanding specification lead)
  • Manfred Riem and Santiago Pericas-Geertsen jointly (for outstanding specification lead)
  • CDI 2 (for most significant JSR)
  • MVC 1.0 (for most significant JSR)

The winners of the JCP awards were announced in a lavish party during JavaOne 2015. I am happy to see that one of my nominations - Adam Bien - won this year and the others were strong contenders. I am also happy to see the other winners - Anatole Tresch (for outstanding specification lead), JSR 363 - Units of Measurement API (for most significant JSR) and Rajmahendra Hegde/JUG Chennai (for outstanding Adopt-a-JSR participant). In particular JUG Chennai has long been a strong supporter for Java EE through the Adopt-a-JSR program. I would encourage you to read a bit about the winners and all of the nominees. It's no surprise Java EE has a strong showing in the nominations. These are all true Java heroes in my book. All the details are posted on jcp.org for you to take a look at.

Friday Oct 23, 2015

DZone Survey Shows JPA Dominates Java Persistence

For those of us that have been around Java for a while it has been a long, hard road for Java persistence. In a relatively brief period of time we have seen a chaotic flux of persistence solutions - plain JDBC, homemade JDBC utilities, Apache Commons DBUtils, TopLink, Castor/JDO (Java Data Objects), EJB 2.x Entity Beans, iBatis, Spring JDBC, and so on. For most it was a relief that our industry seemed to finally converge on ORM as an imperfect but generally workable, productive solution to the very complex problem of persistence. For many others though persistence remains a highly contentious topic. It is not too surprising then that DZone took up the topic in it's wide ranging 2015 Java Ecosystem Survey. The analysis of the results of that survey will be part of the upcoming 2015 Java Ecosystem Guide to be published during JavaOne (you can register to get it here). Fortunately DZone shared the results with a selected set of MVBs (Most Valuable Bloggers) including yours truly and gave me permission to share some preview perspectives on the data. As the title of this entry suggests the survey results bode very well for JPA.

The survey asked a very simple question - "What persistence tools do you use today?". The answers included the survivors of the Java persistence wars past and some relative newcomers like jOOQ. The answers were mutually inclusive which was a wise choice that reflects reality. As the results highlighted shows, a very strong majority - almost 64% of developers voted for JPA. The closest contender lagging far behind at 37.6% was very old school plain JDBC!

Also very interesting was the fact that Hibernate native was a separate choice that received only about 17% percent of votes. This represents a successful transition from non-standard APIs to open standards based APIs. For context, even after achieving near de-facto dominant position in Java persistence the Hibernate team, Gavin King and Red Hat decided to standardize on JPA. The native Hibernate APIs were also maintained as a matter of legacy as well as a space for value-added features. For a while it was unclear whether the Hibernate community will opt to make the transition to JPA. This survey clearly shows the transition has happened, paving the way for continued healthy competition in the persistence space via JPA.

The surprisingly high usage of plain JDBC is notable as well. Clearly in this day and age one can do far better than using such a low level API. This data point represents an opportunity for further JPA adoption either through advocacy, migration or sensible evolution of the JPA open standard. It also represents an opportunity for more SQL-centric persistence solutions such as relative newcomer jOOQ.

Overall the survey shows a fairly mature Java persistence landscape that still has a few surprises in store for us all to keep an eye on.