Jakarta EE/MicroProfile Alignment Survey Results!

As you are likely aware, Java EE has transitioned to Open Source governance in the Eclipse Foundation as Jakarta EE. MicroProfile has been moving forward as an independent initiative to optimize enterprise Java for microservices architectures. The Cloud Native for Java (CN4J) Alliance has recently been formed to promote better alignment between Jakarta EE and MicroProfile.

One of the key issues to sort out is how Jakarta EE can consume MicroProfile specifications (such as MicroProfile Configuration). There are several alternatives as to how this could be done. These alternatives were put into a survey for the community to weigh in. In addition to choosing the option respondents believe to be best, they were able to provide comments justifying their preferred alternative. The results of the survey are summarized here. The results have been shared with the CN4J community and key decision makers.

Survey Results

More than 200 people filled out the survey. Even more remarkably, there were more than 50 comments representing the voice of the community. A fairly strong majority (57.73%) of developers want some MicroProfile specifications to move to Jakarta EE including the namespace.

Jakarta EE/MicroProfile survey results

The results are similar to what earlier surveys have indicated and congruent with the official Jakarta EE Ambassadors joint position. It is remarkable how consistent the community view has been, even over a period of time.

The Voice of the Community

It is impossible to do justice to all the people that provided comments. Each one of the comments is invaluable. The following is a decent sampling representing the majority opinion.

“MicroProfile should evolve APIs that eventually get absorbed by Jakarta EE. MicroProfile applications should eventually be able to run with pure Jakarta EE APIs.”

“Moving MicroProfile specs into Jakarta EE including namespace will make clear where the longer term specs are maintained. Also, for MicroProfile users it’s a very easy migration path.”

“I think no matter which of these options is chosen there is going to be an effect on either end users, or developers. Therefore, I would rather make the large upfront breaking changes all at once and merge the two into the same namespace. Then, have consistency going forward.”

“I would see the movement from org.eclipse.microprofile to the jakarta namespace as a sign of maturity (and success) for MicroProfile.”

“Option A2 has fewer cons and is more end user friendly.”

“Using a different namespace makes it clear what version and expectations (e.g. backward compatibility) the user is making. Moving without a namespace is confusing.”

“The aim of a specification should always be to make something as simple and clear as possible. The entry barriers and opportunities for error for new and inexperienced developers must be as low as possible. An inconsistent namespace or even the possibility of circular dependencies make the use simply too complicated and difficult. At the end of the day, it’s all about the economic and productive development of applications.”

“Move some MicroProfile specifications (e.g. MP Config when its stable) to Jakarta EE including the namespace.”

Source Data

I really hope the results help pave the way for sensible decisions on Jakarta EE and MicroProfile alignment. For me, gathering input and listening to people that are not necessarily involved in the lower level details of specification development is extremely important.

The Eclipse Foundation very graciously ran the survey and shared the source data publicly. Reading all the comments in full is especially insightful.

Your Input Needed to Determine Path for Jakarta EE/MicroProfile Alignment

As you are likely aware, Java EE has transitioned to Open Source governance in the Eclipse Foundation as Jakarta EE. MicroProfile has been moving forward as an independent initiative to optimize enterprise Java for microservices architectures. The Cloud Native for Java (CN4J) Alliance has recently been formed to promote better alignment between Jakarta EE and MicroProfile.

One of the key issues to sort out is how Jakarta EE can consume MicroProfile specifications (such as MicroProfile Configuration). There are several alternatives as to how this could be done. The following is a brief analysis of the advantages and disadvantages of each approach, as discussed in the CN4J community thus far. At the end of the analysis, there is a survey you should weigh in on. In addition to choosing the option you believe to be best, it is very valuable to provide comments justifying your preferred alternative. The results of the survey will be shared with the CN4J community and key decision makers.

Jakarta EE and MicroProfile Context

Both Jakarta EE and MicroProfile produce specifications that are intended for and used in cloud native and microservices use cases. In particular, MicroProfile has a specific focus on meeting the needs of cloud native and microservices use cases. MicroProfile also produces comparatively faster platform releases (roughly once a quarter) while the Jakarta EE release cadence is slower (the likely long term target being approximately once a year).

Jakarta EE currently provides relatively strong guarantees for backward compatibility for all specifications. MicroProfile does not currently guarantee backwards compatibility for all specifications, but does produce production-ready specifications that have demonstrated real world adoption. This characteristic enables MicroProfile to focus on innovation in emerging areas while Jakarta EE focuses on more conservative use-cases and stability best suited to the largest enterprises. While MicroProfile specifications have on occasion needed to break backwards compatibility, this decision is made with due care for end users.

MicroProfile specifications depend on one or more Jakarta EE specifications while Jakarta EE does not currently have any dependencies on MicroProfile.

Option A1: Move MicroProfile specifications to Jakarta EE without changing namespaces (so no need to change namespace from org.eclipse.microprofile.* to jakarta.*). Nonetheless, the Maven coordinates for MicroProfile specifications will move to Jakarta. Further evolution will take place under the Jakarta EE working group.

Pro:

  • There is no need for existing MicroProfile users to switch namespaces.
  • This gives MicroProfile due credit going forward for bringing a specification into Jakarta EE.
  • No API duplication between MicroProfile and Jakarta EE.
  • There is only the existing one-way dependency between MicroProfile and Jakarta EE.
  • Some users may wish for greater convergence of MicroProfile into Jakarta EE. This option satisfies this desire to some extent.

Con: 

  • Lack of namespace consistency for Jakarta EE users otherwise not using MicroProfile.
  • Some users may perceive this to mean only Jakarta EE is where production ready specifications are available.
  • It is not immediately obvious to a casual user using both Jakarta EE and MicroProfile in the same application which MicroProfile APIs belong to the MicroProfile working group and which MicroProfile specification belongs to the Jakarta EE working group. This may lead to brand confusion for some users as well as mismatched expectations with regards to characteristics such as backwards compatibility and release cadence.

Option A2: Move MicroProfile specifications to Jakarta EE including the namespace. In this case, the namespaces will be changed from org.eclipse.microprofile.* to jakarta.*. Further evolution will take place under the Jakarta EE working group. No more work will be done in the MicroProfile working group to further evolve a specification once it is moved.

Pro: 

  • Namespace consistency for Jakarta EE users otherwise not using MicroProfile.
  • No API duplication between MicroProfile and Jakarta EE.
  • There is only the existing one-way dependency between MicroProfile and Jakarta EE.
  • It is immediately obvious to a user using both Jakarta EE and MicroProfile in the same application which specifications belong to the MicroProfile working group and which specifications belong to the Jakarta EE working group. This includes expectations of characteristics such as backwards compatibility and release cadence.
  • Some users may wish for greater convergence of MicroProfile into Jakarta EE. This option satisfies this desire to some extent. This may include a possible preference for the jakarta.* namespace, which is more generic – as opposed to the org.eclipse.microprofile namespace, which may imply a focus on microservices.

Con: 

  • Existing MicroProfile users will need to switch namespaces in order to take advantage of newer versions of moved specifications. Similarly, implementers will need to put effort towards migration, including potentially maintaining two separate work streams at least in the short term.
  • Some users may perceive this to mean only Jakarta EE is where production ready specifications are available.

Option B: Reference MicroProfile specifications in Jakarta EE and not move MicroProfile specifications. Jakarta EE will not duplicate any referenced specifications and MicroProfile specifications will only be evolved under the MicroProfile working group.

Pro:

  • No API duplication between MicroProfile and Jakarta EE.
  • No migration effort is needed for any users or implementors, while Jakarta EE can still use the specification.
  • Some users may wish for MicroProfile and Jakarta EE to remain as separate as possible. This option satisfies this desire to some extent.

Con:

  • Lack of namespace consistency for Jakarta EE users otherwise not using MicroProfile.
  • It is not immediately obvious to a user using both Jakarta EE and MicroProfile in the same application which MicroProfile specifications are referenced by Jakarta EE and which are not (and as a result have different expectations with regards to characteristics such as backwards compatibility).
  • The referenced MicroProfile specification may wish to break backwards compatibility at some point in its evolution while Jakarta EE does not. Additional efforts will need to be made to address such mismatches.
  • This introduces a circular dependency between Jakarta EE and MicroProfile. This can make matching release cadences, dependencies, features and collaboration more difficult, including potentially unexpected challenges for end users. The following is one possible example illustrating version dependency mismatches: MicroProfile m2 aligns with Jakarta EE j1, while Jakarta EE j1 aligns with MicroProfile m1. MicroProfile Configuration c2 is included in MicroProfile m2. Jakarta Persistence p1 relies on MicroProfile Configuration c1 in MicroProfile m1 because Jakarta EE j1 was released before MicroProfile m2. An application wants to use both Jakarta EE j1 and MicroProfile m2 together. Which MicroProfile Configuration version will the application end up with? If MicroProfile Configuration c2 in MicroProfile m2 was loaded, Jakarta Persistence p1 may not work with MicroProfile m2 as expected when tested and released via the Jakarta EE j1 compatibility test kit/TCK).
  • If Jakarta EE integration specific changes are required in MicroProfile specifications, it will require coordination across working groups in a timely fashion with regards to dependencies, release cadence and features.

Option C: Create Jakarta EE versions of MicroProfile specifications. In this case, Jakarta EE and MicroProfile will develop similar features in parallel.

Pro:

  • MicroProfile and Jakarta EE can independently evolve features as they best see fit.
  • End users can mix and match MicroProfile and Jakarta EE as they best see fit. Implementations may do the same.

Con: 

  • Duplication of effort and resources across Jakarta EE and MicroProfile. The duplication of effort will likely also extend to implementations.
  • End users will need to choose between equivalent features in Jakarta EE and MicroProfile.
  • MicroProfile and Jakarta EE will very likely be seen as directly competing efforts, leading to further confusion.

Voice Your Opinion!

Each of the alignment approaches have advantages and disadvantages. While decision makers might guess what the right tradeoffs for end users and the ecosystem are, you have a role in providing feedback on what works best for you. Please take a moment to fill out this short survey and provide your feedback now. The results of the survey will be shared with decision makers. You should also continue to stay engaged by subscribing to the CN4J Alliance mailing list.

JConf Peru 2020 Conference Report

JConf Peru 2020 took place October 23-24. This was the second time the event was held and due to the pandemic, the 2020 event was virtual and free. I am very proud to have participated as an invited speaker – the JConf series is an admirable effort by the Spanish speaking Java community to hold world-class events. My friend and Peru JUG leader Jose Diaz and his wife Miryan Ramirez have worked hard to make JConf Peru a reality. I delivered three talks at the conference focused on Java, Jakarta EE and Azure.

How Microsoft Learned to Love Java

On the first day of the conference I delivered my Java on Azure focused talk “How Microsoft Learned to Love Java”. The talk is essentially a tour of the broad range of services, tools and APIs Microsoft provides around Azure to better serve Java developers. I also briefly discuss the Java on Azure roadmap at a high level. The slides for the talk are available on Speaker Deck. There is a brief end-to-end demo that is part of the talk. You can run the demo yourself using step-by-step instructions available on GitHub to get a feel for how the Java on Azure experience looks like (please reach out if you need help). The video for the talk is now posted on YouTube.

On the same day there were talks on Jakarta EE, MicroProfile and Quarkus delivered by folks like Jonathan Vila, Alex Soto, Daniel Dias, Fabio Turizo, Jorge Cajas and Victor Orozco.

Jakarta EE on Azure Magic Mystery Show

On the second day I delivered my demo-driven, entirely slide-less talk “Jakarta EE on Azure Magic Mystery Show”. The talk covers the many ways Java EE/Jakarta EE developers can migrate their applications to Azure including virtual machines, Docker, Kubernetes and PaaS. All the material for the talk is available in self-paced workshop format on GitHub. The workshop will take you about a day to complete end-to-end (please reach out if you need any help). The video for the talk is now posted on YouTube.

It is worth reminding that myself and my team are always ready to work closely with Java EE/Jakarta EE developers on Azure migrations – completely for free. To take advantage of this, you simply need to fill this survey out or reach out to me directly.

Jakarta NoSQL Powered by Cosmos DB on the Cloud

Later in the afternoon I delivered one of my newer talks “Jakarta NoSQL Powered by Cosmos DB on the Cloud”. This talk covers using the new Jakarta NoSQL specification with Azure Cosmos DB. Cosmos DB is a multi-mode NoSQL database service on Azure that is compatible with MongoDB, Cassandra and Gremlin. The slides for the talk are available on Speaker Deck. Most of the talk is actually a demo. You can run the demo yourself using step-by-step instructions available on GitHub (please reach out if you need help). The demo currently covers MongoDB, I would love PRs covering Cassandra and Gremlin. The video for the talk is now posted on YouTube.

On the second day there were more talks on Jakarta EE and MicroProfile delivered by folks like Otavio Santana, Geovanny Mendoza, Aristides Villareal, Isaac Ruiz Guerra, Alex Soto and Fabio Turizo.

Beautiful Peru

Peru is a country rich in heritage and natural beauty. It is one of the six cradles of civilization and the center of the mighty Inca entire. I am proud to say I got to see a bit of this amazing country as part of my brief trip for the first JConf Peru. Just check out the album below of photos I took (click this link to view the album if the embedded slideshow is not working)!

All in all, I am happy to have had the opportunity to speak at JConf Peru again. I am very glad the event continued in virtual format despite the pandemic. I hope to speak there again and hopefully visit beautiful Peru again in the future.

Why You Should Join EclipseCon Community Day

EclipseCon Community Day is on Monday, October 19 14:00 to 18:00 CET (the day before the start of the main EclipseCon conference). Community Day at EclipseCon has always been a great event for Eclipse working groups and project teams. This year both EclipseCon and Community Day is virtual and free. Space for Community Day is limited, so please register and save your spot soon.

We have a packed agenda centered on the Jakarta EE, MicroProfile and Cloud Native Java communities. If there is a set of very focused sessions you should attend on these topics, the agenda offers the one place this year to do so. The sessions are intended not only for learning, but also for the community to actively engage with some key leaders. Note, after you register for EclipseCon, you will need to reserve your spot for Community Day through the Swapcard platform (let me know if you run into any issues).

Myself, Werner Keil and Thodoris Bais are organizing on behalf of the community. We are grateful to have a very strong line-up both in terms of speakers and content. Below is a very good snapshot. Please note that all times are Central European Time (CET).

SessionTimeSpeakers
Jakarta EE Community State of the Union10/19/2020
14:30 – 15:15
Steve Millidge
MicroProfile Community Current and Future10/19/2020
15:15 – 16:00
Emily Jiang
Jakarta EE/MicroProfile – Key Features Demo10/19/2020
16:30 – 17:15
Josh Juneau, Edwin Derks
Jakarta EE 10 Round Table10/19/2020
17:15 – 18:00
Otavio Santana (Moderator)
Steve Millidge (Payara), Kevin Sutter (IBM),
Dmitry Kornilov (Oracle), David Blevins (Tomitribe),
Werner Keil, Ryan Cuprak

Steve Millidge will be providing a good overview of the current status of Jakarta EE in Jakarta EE Community State of the Union. This will include Jakarta EE 8, Jakarta EE 9 as well as Jakarta EE 10. If there is one session to learn about Jakarta EE status, get involved and ask questions, this session is it.

Emily Jiang will be doing the same thing for MicroProfile in MicroProfile Community Current and Future. So if you want to know about MicroProfile, this is the session you should make a point to attend. Emily will cover both MicroProfile 3.3 and MicroProfile 4.0.

If you have not seen Jakarta EE and MicroProfile in action, Jakarta EE/MicroProfile – Key Features Demo is for you. Josh Juneau and Edwin Derks will be joining forces in this very code/demo heavy session to show you the key features of this technology stack, where to use it in the real world and how.

Finally, we will be bringing to together some key leaders in the community to talk about the future of Jakarta EE in Jakarta EE 10 Round Table. You should show up not just to hear what this panel of experts thinks is most important for the success of the technology, but also to ask them questions. Anyone can pose their questions to the panel by just adding them here.

For further details, please look here. You will find session abstracts, speaker profiles and more. We have worked hard to organize a strong agenda on your behalf and we hope you will join us.

Please note these views are my own and do not reflect the views of Microsoft as a company.

A Tribute to Bill Shannon – A Giant of the Java Ecosystem

Know you not that a good man does nothing for appearance sake, but for the sake of having done right?

Epictetus

Bill Shannon passed away a few days ago after a long, valiant battle with cancer. The reality is Bill had a very long standing, selfless and profound impact on the entire Java ecosystem if not IT at large. It is also reality that far too few people understand this truth. In this blog post, I am going to attempt to do my part in closing this gap and honor a very good man that will be missed greatly.

Bill started his storied career with DEC and UNIX. He was the 11th employee of Sun Microsystems, alongside luminaries like Bill Joy. When J2EE was being formed, Bill was recruited to help lead the effort and remained in that role through the technology’s transition to Java EE and now Jakarta EE under the Eclipse Foundation. Bill is listed as lead or co-lead on all of Java EE platform releases. He played an instrumental role in the historic transfer of the technology from the JCP to the Eclipse Foundation. Bill was also the principal developer for Java Mail, now Jakarta Mail.

The following excerpt from his farewell note to his colleagues represents his accomplishments well:

I started at Sun (as employee #11) by bringing SunOS to life. Just as wild success was within reach, we stretched a little too far and signed a deal with AT&T. That set us back almost 5 years, but at least I have the “black edition” of Solaris signed by Eric Schmidt – “I’m Sorry”. Next it was time to move on to learn about window systems, desktop applications, and industry consortiums in the form of CDE. CDE was moving much too slowly and in 1996 a new opportunity presented itself – Java. We tried a Java machine, a JavaOS, and a Java desktop environment – Hotjava Views. None of that really panned out until Java found its home as an application server environment, first named J2EE and then named Java EE. I was recruited as leader of this new effort, which has subsequently been given a new name and new leadership – Jakarta EE at the Eclipse Foundation.

His contributions to Java, Java EE and Jakarta EE truly cannot be overstated. He left his mark on the technology set in a way few other people have. His interactions with me, while anecdotal, perhaps is a good reflection of who he really was, what he did and why he will be missed.

I first encountered Bill when I began contributing to Java EE 5 as an independent consultant, on my own time. Bill made sure I felt welcome, behind the scenes gave me background technical information that I needed and encouraged me to be outspoken. He valued my contributions and understood they came at the cost of significant personal sacrifices. I believe he also implicitly understood the challenges of being an immigrant, a person of color, someone with obvious Islamic heritage, at heart a non-conformist and a non-vendor in a forum and industry that lacked diversity and still does. Without that early support from Bill, I am not sure I would have continued on with Java EE. I still vividly remember what he once told me:

Don’t underestimate your impact. I appreciate your passion. You can make a difference in a way I don’t think you understand. There will be resistance, but don’t give up.

Bill was equally welcoming and supportive when I joined Oracle as Java EE evangelist. He made sure my ideas were voiced, heard and considered, even if we did not always agree. He was happy to empower me to fulfill my community facing role even at JavaOne while shunning the limelight himself. I now also know how many good fights he tirelessly fought behind the scenes so that the effort we both cared about kept moving forward.

Beyond Oracle, Bill was always quietly supportive of community efforts like the Java EE Guardians and the Jakarta EE Ambassadors after it. He remained supportive until the end of his days – taking the time to help draft the Guide to Helping Deliver Jakarta EE 9.

Bill is included in the Usenix association 25th anniversary of Unix, card deck (1994)

Bill passed at home with his family and close friends. He is succeeded by his wife and two daughters. Rest in peace Bill. Bill and his family were private people. With the blessings of his family, I hope to hold a virtual tribute event to honor Bill together publicly as a community. If this materializes, I will keep folks posted.

Bill Shannon with Anil Gaur (then Oracle Group VP responsible for Java EE), celebrating Java’s 20th anniversary

I believe the best way to truly honor Bill is to carry forward his life’s work embodied in Jakarta EE. I hope you will take a moment to consider the long service of this good man on all our behalf and also consider being a part of the Jakarta EE journey.

Please note these views are my own and do not reflect the views of Microsoft as a company.

Jakarta EE + MicroProfile + Kubernetes = Cloud Native for Java Day @ KubeCon/CloudNativeCon

Cloud Native for Java Day will be held on March 30 as a co-located event with KubeCon/CloudNativeCon Europe. I am honored to be part of the program committee for the event alongside Tanja Obradovic and Arun Gupta. In this post I will share a few details on what the event is about and perhaps why you should consider attending. In essence the event covers how Jakarta EE and MicroProfile can be used with Docker and Kubernetes.

If you look around social media you find some pretty colorful dialog around Kubernetes. Some advocate it as the greatest thing since sliced bread as far as the data center and cloud goes. Others offer various bits of criticism such as it is complex, they do not like YAML, it is the wrong level of abstraction and so on. I can certainly see the merit of these points especially from the perspective of developers not used to dealing with the complexities of data centers but instead have spent most of their career at the application level. Unfortunately I have not had that luxury and have needed to dive into hardware rack-and-stack, buying servers, configuring routers/switches, tweaking firewalls/load balancers, installing operating systems, and so on. Perhaps for these reasons, I find myself pretty firmly in the Kubernetes fanboy club. For me Kubernetes offers the right level of abstraction – any higher takes away too much necessary flexibility and any lower is far too close to the “bad old” days. Compared to the alternatives, Kubernetes is battle tested, robust, feature-rich, productive, vendor neutral, portable and location-transparent. It almost feels like the modern Java EE of infrastructure. Wherever you might fall in the spectrum of the dialog, one thing is for sure – Kubernetes is growing like gangbusters. Just take a brief look at the graph below as some reasonably objective evidence.

The Java EE, Jakarta EE and MicroProfile ecosystem is actually pretty ready for the Kubernetes sea change. Don’t believe it? Here are some surprising things to consider:

  • Pretty much every notable runtime including WildFly, Payara, WebLogic, WebSphere and TomEE has Kubernetes ready Docker images.
  • There are already Helm Charts for WebLogic and WebSphere.
  • WebLogic, Liberty, WildFly already have Kubernetes Operators.
  • MicroProfile Health Checks are geared towards integration with Kubernetes liveness, readiness and startup probes.
  • MicroProfile Metrics are geared towards integration with Prometheus.
  • Quarkus and Helidon offer faster startup times and lower memory footprint thanks largely to AOT (although one could observe these characteristics are more relevant for FaaS than Kubernetes, where long lived nodes and cheap, abundant memory are commonplace).

Such topics and more will be explored in depth at Cloud Native for Java Day. Veteran Speakers like Adam Bien, Sebastian Daschner and Emily Jiang will be there. Companies represented will include Oracle, IBM and Red Hat. The full agenda is already up and you should check it out.

Do note, Cloud Native for Java Day is not free. You will need to register for KubeCon/CloudNativeCon in addition to the event. Hopefully there is enough here for you to convince your manager. If you can’t make it, fear not. Some of the same basic material is covered in this talk/workshop (there is a link to a YouTube video you can watch as well as the self-directed workshop materials). I am revamping the talk to be more Kubernetes centric. I expect the revamped talk and material to be out there by Fall.

Please note these views are my own and do not reflect the views of Microsoft as a company.

Why You Should Attend JakartaOne Livestream!

If you are a server-side Java developer, you should be attending JakartaOne Livestream. As the name implies, it is a virtual conference to cover all things Jakarta EE (in case you weren’t paying attention, Jakarta EE is Java EE transferred to the Eclipse Foundation from Oracle). To boot, the conference is entirely free. It will take place on September 10th – the same date Jakarta EE 8 is to be released (this first release will mirror Java EE 8 – just completely in open source including the compatibility test kit). As I will cover in greater detail here, the conference content will cover what Jakarta EE truly means, Jakarta EE 8, MicroProfile as well as future specifications to come for Jakarta EE. Hopefully this will be the first of many JakartaOne conferences to come.

We have been very fortunate to have an excellent program committee with Adam Bien, Josh Juneau, Arun Gupta, Ivar Grimstad and Tanja Obradovic (I am part of the program committee too). We have had some excellent content submissions as well that has enabled us to build a great program. In fact the content has been so great we will try to schedule some of the talks we could not accept as Jakarta Tech Talks in the coming months.

The Content

The conference will run from 7 AM to 1 AM EST. That should provide decent coverage to most of the globe for at least part of the day. The following is a high overview of the program.

  • The opening keynotes will be provided by Eclipse Foundation executive director Mike Milinkovich and the father of Java James Gosling. Mike will discuss Jakarta EE itself while James will put Jakarta EE in the context of the broader Java ecosystem.
  • Vendors such as IBM, Oracle, Payara, Tomitribe and Fujitsu will voice their support of Jakarta EE in the industry keynote.
  • IBM WebSphere lead architect Kevin Sutter will provide a high level overview of Jakarta EE in Jakarta for DummEEs.
  • Java Champion and Java EE Guardian Josh Juneau will provide a high level overview of Jakarta EE 8 features. Josh will also briefly cover what the future might bring for Jakarta EE.
  • Java Champion Ivar Grimstad will provide a state of the union for MicroProfile, including a feature tour and road map.
  • Java Champion Adam Bien will deliver a slide-free live coding session that uses Jakarta EE and MicroProfile together.
  • Java EE veteran Richard Monson-Haefel will discuss how the community can help contribute and move Jakarta EE forward.
  • Folks leading some early Jakarta EE specifications will share what they have in the works beyond Jakarta EE 8. Specifications covered include Jakarta NoSQL (led by Java Champion Otavio Santana), Jakarta Concurrency (led by Payara CEO Steve Millidge), Jakarta JSON Binding (led by JCP star specification lead Dmitry Kornilov), Jakarta REST (led by Java EE Guardian Markus Karg), Jakarta Security (led by Java EE Guardian Arjan Tijms), Jakarta Messaging (led by Tomitribe founder David Blevins) and Jakarta Faces (led by Java EE Guardian Arjan Tijms).
  • Jakarta EE key stakeholders in the steering committee will hold an open panel. This is your opportunity to interact with Jakarta EE stakeholders directly in real time.
  • There will be sessions on innovative ecosystem open source projects like Quarkus and Helidon.
  • I will show the many ways Jakarta EE applications can run on the cloud (in my case on Azure).

You can view the full program on the JakartaOne Livestream website. Special thanks are in order for Edwin Derks, Sebastian Daschner and Victor Orozco for being very good sports and agreeing to be backup speakers at the conference.

Join Us!

I sincerely hope it will join us on September 10th and also tell your friends and colleagues. There is a lot of important information for all server-side Java developers that the conference is in a unique position to deliver. Note that while you can attend for free, you do need to pre-register to view the sessions on September 10th. If you can’t attend on September 10th, no worries. The sessions will be publicly available for free at a later point in time. Finally, don’t forget to follow the official conference Twitter handle to get updates between now and then.

Please note these views are my own and do not reflect the views of Microsoft as a company.

Help Inform Azure Java EE Migration Guides

The Azure team at Microsoft (myself included) has been strengthening its commitment and outreach to the Java EE community and customers. A few months ago, I ran a study with the community and customers to understand how Java EE developers move to the cloud. One of the interesting findings of the study is that Java EE developers like to see migration guides that speak to their use case from cloud providers like Microsoft. Following up on these findings the team is now developing just such guidance that hopefully speaks to you, starting with Linux virtual machines and Kubernetes.

The idea is to target Azure migration of major Java EE application server workloads (such as WebSphere ND, WebSphere Liberty, WebLogic, JBoss EAP and WildFly). The guidance will likely include online documentation, ARM templates, Azure Marketplace solutions, Docker images, Helm charts, samples, workshops, talks and so on. All the materials will be developed completely in open source so customers and the community can contribute at any point.

However, as we all know there is no substitute to working closely one-on-one with actual user stakeholders as well as getting some up-front input. Solutions developed in a vacuum are rarely on-point. The ideal goal is to have a small selected set of customers give us real time feedback on the guidance we provide as we develop/release it incrementally. If desired, Microsoft is ready to help such customers with a free migration proof-of-concept. Such selected customers will work directly with the Microsoft Program Manager responsible for developing the guidance (that’s me) as well as the engineering team.

If this sounds like something you want to do, please fill out the survey linked to the image below and remember to include your contact information in the end. Even if you are not necessarily interested in migrating to Azure, it is still very helpful to fill out the form and share your ideas on what you would like to see, at least in theory. No need to include your contact information. The survey attempts to understand common use cases the guidance should aim to cover to best serve your needs. The survey should take only five minutes or so.

If you can, I also ask that you help spread word on this effort. You can do so easily by re-tweeting the following.

Do remember that you are always welcome to reach out to me on just about any topic related to Azure and Java EE. I believe we at Microsoft are working hard on your behalf and I am certainly always glad to hear from you. I hope you can help us out too. My contact info is below.

Reza Rahman
Principal Program Manager
Java on Azure at Microsoft
reza.rahman@microsoft.com
+1 717 329 8149

Please note these views are my own and do not reflect the views of Microsoft as a company.

TDC Sao Paulo 2018 Trip Report

TDC Brazil/Sao Paulo 2018 was held on July 17-21. For those unaware TDC is the largest conference in Brazil, South America and indeed the entire Southern Hemisphere. I had been to the conference some years ago and this was my second time attending. It is quite remarkable how much the conference has grown. Although the conference is no longer Java focused, Java remains a very big part. I delivered a few sessions and Java EE had a fairly strong presence overall.

What is CQRS + Event Sourcing and Why Should Java Developers Care?
On the first day of the conference I delivered my basic Axon talk titled “What is CQRS + Event Sourcing and Why Should Java Developers Care?”. In this session I explain the architectural patterns of CQRS and Event Sourcing. I also show through code why Axon is a great way of implementing these patterns in a Java application. Lastly, I touch upon why these proven patterns are important for microservices. The current slide deck for this talk is below (click here if you can’t see the slides).

The demo code for the session is on GitHub.  On the same day Fernando Boaglio had a talk on JNoSQL, Rodrigo Silva delivered his talk “Cloud Native Java EE” and Elder Moraes delivered a talk introducing Jakarta EE.

Applied Domain-Driven Design Blueprints for Java EE
The next day I delivered my talk on Cargo Tracker/Java EE + DDD titled “Applied Domain-Driven Design Blue Prints for Java EE”. This talk overviews DDD and describes how DDD maps elegantly to Java EE using code examples/demos from the Cargo Tracker project. Below is the slide deck for the talk (click here if you can’t see the embedded slides).

A screen cast of my talk can be found here. Note I am working with an updated copy of the official Java EE Cargo Tracker project on my personal GitHub account for now. I plan to contribute this work back to Jakarta EE once the transfer process from Oracle is complete. You should feel free to use the project as you wish or adopt my talk.

Java SE 8 for Java EE Developers
I finished the conference by delivering my talk titled “Java SE 8 for Java EE 7 Developers”. In the talk I cover some of the key features introduced in Java SE 8 including lamdas, streams, the new Date/Time API as well as Completable Futures and discuss how they can be used effectively with Java EE 7/8 APIs like Servlets, Java EE Concurrency Utilities, WebSockets, JPA, JSF and JSON-P. The slides for the talk are posted below (click here if you can’t see the embedded slide deck).

Video for the talk is available here. Feel free to adopt the talk yourself.

During TDC Brazil I was able to visit a very beautiful place that has been on my bucket list for a while – the Iguazu Falls. This is the largest waterfall system in the world. I was able to visit both the Brazil and Argentina sides. Just take a look at the incredible photos below (click here if you can’t see the album).

All in all, I really enjoyed TDC and hope to return soon. You should consider the conference as a Java speaker.

Java2Days Ten Year Anniversary Trip Report

Java2Days was held November 27th-29th in Sofia, Bulgaria. For those unaware, Java2Days is one of the major conferences in the Balkans region. Indeed it may now be one of the most prestigious conferences in Europe. This was a very special year – the conference celebrated its well-earned ten year anniversary. In this blog post I’ll cover my experience of the conference and share the materials for my sessions. Regrettably, although I attended Java2Days 2017, I did not have time to write a trip report. Hence I will cover Java2Days 2017 towards the end of the blog post as well.

Thanks Java2Days, Mayor of Sofia and My Bulgarian Friends

I will admit Java2Days is special to me. I was the very first opening speaker of the first edition of the conference. Java2Days was one of the very first conferences to invite me as an international speaker ten years ago (the other was TDC Brazil). Since then, it has been great to see the conference grow year over year. Beyond the ten year figure, the numbers are truly amazing. Ten years ago there were just about a dozen speakers, a couple of dozen talks, about five hundred attendees and a pretty modest venue. This year the conference had close to a hundred speakers, about just as many talks and close to fifteen hundred attendees. The conference this year was held at the National Palace of Culture – the largest venue in Bulgaria. Ten years ago it was a conference a small handful of us took a chance on. Today it is a prestigious conference that attracts an international lineup of speakers via a CFP. I am proud to be a small part of the Java2Days success story. The most impressive part of Java2Days is that the conference has always been driven by a small number of empowered, passionate Bulgarian women. That is truly remarkable for an industry that suffers from gender diversity issues even at the global level.

It makes me very happy to say Java2Days thinks favorably of me. This year the mayor of the city of Sofia, Yordanka Fandakova, recognized me as an ambassador of IT in Bulgaria and as someone who has helped make Sofia “The Silicon Valley of Eastern Europe” (for those unaware, Yordanka Fandakova is the first female mayor of Sofia). Last year Java2Days attendees voted me the first of the top speakers of all time. I am truly grateful to Java2Days, the mayor of Sofia and all my Bulgarian friends.

MicroProfile State of the Union
I delivered several talks at Java2Days and generally Java EE had very good representation. I started the conference the first day by delivering a “MicroProfile State of the Union” as a keynote. The session is a fast paced look at the current state of MicroProfile. This includes motivation, history, latest changes, road map and a code example driven tour of features such as Open Tracing, Open API, dynamic configuration, fault tolerance, the type-safe REST client, metrics, health checks and JWT propagation. The slides for the talk are below (please click here if you can’t see the slides).
You should feel free to adopt the slides – just as you can for any of my talks. If you need help, please reach out and I will be happy to try my best. Later in the afternoon,Tomas Langer and Dmitry Kornilov (my former colleague at Oracle) presented a talk on Helidon, the brand new MicroProfile implementation from Oracle.

Jakarta EE Panel
The second day of the conference after lunch I led a panel on Jakarta EE. The panel had very good industry representation and included Werner Keil, Otavio Santana of Tomitribe, Ondro Mihalyi of Payara, Dmitry Kornilov of Oracle and Emily Jiang of IBM. We discussed the importance, current state and future of Jakarta EE. The slides for the panel are below (click here if you can’t see the slides).

Throughout the second day there were a number of Java EE focused talks. Otavio and Werner delivered a talk on JNoSQL – the new Jakarta EE technology for NoSQL. Emily delivered a talk on “Building 12-Factor Microservices with MicroProfile”. Ryan Cuprak delivered an “Introduction to CDI” as a lab. Emily and Steve Poole of IBM delivered “Developing Cloud-Native Java Microservices with MicroProfile” as a lab.

Effective Docker and Kubernetes for Java EE Developers
I and Ahmad Gohar of IBM delivered our entirely slide-less talk “Effective Docker and Kubernetes for Java EE Developers” at the end of the day. In this session we talk about various considerations for running Java EE applications on Docker and Kubernetes such as: whether to use thin WARs, fat JARs, or hollow uber-JARs to effectively work with Docker repositories, layering, and caching; whether to deploy applications within images, through exposed admin ports or as auto-deployed mounted external volumes; how Docker clusters, networking, and Kubernetes deployments align with application server administration, clustering, auto-discovery, and load-balancing; how the CI/CD pipeline of your application can be adapted to Docker and Kubernetes; and so on. I, Ahmad and Hillmer Chona delivered this same talk at Oracle Code One. The video for the Oracle Code One session is below (click here if you can’t see the video).
All the materials for the talk is on GitHub. You should feel free to adopt the material.

On the final day of the conference there was some great Java EE centric content as well. Ondro delivered “Be Reactive and Micro with a MicroProfile Stack”. Dmitry and Tomas delivered a hands-on lab on Helidon.

Below are the talks I delivered at Java2Days 2017.

HTTP/2 and What it Means for the Java EE Ecosystem
I started Java2Days 2017 by delivering my talk on HTTP/2 and Servlet 4 titled “HTTP/2 and What it Means for the Java EE Ecosystem”. The talk examines the very important changes in HTTP/2 and how these changes need to be adopted by various Java EE 8 APIs like Servlet 4 and JSF 2.3. The slide deck for the talk is below (click here if you can’t see the embedded resource).

A screen cast of the talk is available here.

Pragmatic Microservices with Java EE and MicroProfile
Later in the day I delivered my workshop titled “Pragmatic Microservices with Java EE and MicroProfile”. I start the workshop with trying to do the right thing in explaining what microservices really are, what practical value they offer for most of us and when you should consider them (or not). The hands-on portion of the workshop starts with running a so-called “monolithic” Java EE application on Payara. We then separate a small RESTful service out of the application (a so-called “microservice”). At this stage, the microservice is a simple vanilla Java EE thin war also running on Payara. We then discuss the pros and cons of Java EE thin wars vs. fat jars as well as Payara Micro/MicroProfile. The next portion of the lab runs the microservice as a fat jar using Payara Micro. We finish the lab by discussing concepts such as Docker, Cloud, MicroProfile, dynamic discovery, health-check, metrics, retry/circuit-breakers/bulkheads and client-side load-balancing. We see these concepts in action using the more advanced features beyond fat jars that MicroProfile offers. The slide deck I use for the workshop is below (click here if you can’t see the embedded slide deck).

A webcast covering the more lecture-oriented parts of the workshop can be found here. The code and instructions for the workshop can be found on GitHub. I’ve deliberately designed the lab materials to be fairly self-guided so you can definitely use the lab materials on your own (or perhaps even run the lab in your own company/JUG) . You are always welcome to reach out to me when needed.

Java EE 8 and Java EE 9 – What You Need to Know!
I finished Java2Days 2017 by delivering my talk titled “Java EE 8 and Java EE 9 – What You Need to Know!”. I discuss continued Java EE adoption, the importance of Java EE to the ecosystem, the contents of the Java EE 8 release as well as the opening up of Java EE through the Eclipse Foundation. I also talk about MicroProfile. The heart of the talk covers the key features of Java EE 8 such as HTTP/2, a complete security API overhaul, even stronger JSON support, support for HTML 5 Server-Sent Events (SSE), CDI 2, Bean Validation 2 and Java SE 8 alignment. The current slides for the talk are below (click here if you can’t see the embedded slide deck). You are welcome to use the slide deck freely.

Rila Lakes
One of the most unforgettable experiences of Java2Days 2017 was going hiking in the seven Rila lakes area with the Java2Days organizers and some of the speakers. The glacial mountain lakes are incredibly picturesque and one of the most visited sites in Bulgaria. Just check out the photos below (click here if you can’t see the album)!

Next year I plan on doing the winter hike to the Musala peak. Musala is the tallest mountain in the Balkans and Bulgaria. The summer hike is pretty moderate. The winter hike is significantly more strenuous but still pretty doable with the right equipment. This year I went on a short winter trail on Vitosha mountain near Sofia just as a teaser. Just look at the awesome photo below of Musala peak in winter. Definitely worth the work!
All in all, I really enjoyed Java2Days as I always have these past ten years. If you are a Java speaker, you should aim to come to the conference. Until next time, I will miss my kind friends in Bulgaria!