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!

Java EE Adoption Story from Hamed Hatami

One of the most important things to continue to do for Java EE/Jakarta EE is highlight successful adoption stories at a regular cadence. The community has been doing just that for a long time. A number of these stories are curated here. In this vein, Hamed Hatami graciously agreed to share his Java EE adoption story. Hamed is a very experienced early adopter of Java EE that has developed a number of mission critical enterprise applications in Iran and now Sweden.

Can you kindly introduce yourself?
My name is Hamed Hatami and I graduated in Software Engineering from the Azad University of Iran in 2000. I started to work from the last year of my university with various programming languages and frameworks. I have worked for many well-known organizations all around Iran like the Informatics Services Corporation, the Social Security Organization and many others. I have had a lot of responsibilities such as a Software Developer, Software Designer, Technical Team Leader, Technical Consultant and Software Architect.

I have known the Java programming language since 2000 and I fell in love with it right away.

I was the technical leader of many national projects developed with Java EE such as the RTGS–ACH–Chakavak (check management system) for the Central Bank of Iran.

I have a lot of hands-on experience with Java EE technologies like JSF, CDI, PrimeFaces, RichFaces, EJB 3, JPA, Hibernate, EclipseLink, JDBC, JAX-RS, JAX-WS, JAX-B, JSON-P, JMS, ActiveMQ, HornetQ, WebSphere MQ, JBoss EAP, WildFly, GlassFish, MicroProfile and WildFly Swarm.

I am living in Sweden now to learn more in an international environment. Currently, I am working for Cyber Design Nordics as Senior System Architect and I also have another role in Ericsson Corporation as a Contractor.

Can you describe the applications that use Java EE? What does your company do?
Most companies that I worked for are in the Banking and Insurance domains. There are many technical challenges in developing systems for such companies because of the large number of concurrent users and the large volume of data. For instance ACH had to process more than 80 million transactions per day. The Real-Time Gross Settlement (RTGS), Automated Clearing House (ACH) and Check Management System (CMS) for the Central Bank of Iran were developed on Java EE 6 technologies.

Since I came to Sweden, I have been working for Cyber Design Nordics and I have designed and developed two enterprise systems based on Java EE 7 for one of the most famous companies here. Nowadays I am working for Ericsson as a Contractor with the Java EE stack.

Besides these, I have produced a few products myself with Java EE 6 and Java EE 7 like Magnolia Bus, Magnolia ATM Monitoring, Magnolia Dynamic Report Designer and Magnolia Central Authentication and Authorization.

Why did you choose Java EE?
As a matter of fact, I have been a big fan of Java EE for a long time.

I think I was one of the first people in Iran that developed many web applications based on Java EE 5 and JBoss Seam which was a rival for Spring IoC in those days. As a result I had good knowledge of CDI and its advantages from the very first release.

I believe in the Java Community Process (JCP) and the open collaboration of many companies like IBM, Red Hat and so on.

As you know, one of the most important things in software development is Rapid Application Development (RAD) and I think Java EE covers it well. With Java EE each block of your software architecture fits perfectly together.

Each Java EE Application Server has many services included like the Servlet container, the EJB container, the JMS container, transaction management, security modules, Administration Console for monitoring and tracking, etc.

Most high profile projects in enterprises with a large number of concurrent users and large volumes of data need very good software infrastructure and very good architecture to meet non-functional requirements. I think the Java EE ecosystem is designed to handle non-functional requirements like fault-tolerance, fail-over, reliability, scalability, high-availability, security, interoperability, stability and maintainability in the best way possible out of the box.

Because I have had many good experiences with different enterprise projects using Java EE 5, Java EE 6 and Java EE 7, it has become a default choice for me.

How do the applications use Java EE?
As I mentioned before, most of my projects are designed and developed based on Java EE from scratch. In the presentation layer, we usually use JSF with a combination of PrimeFaces, RichFaces, JQuery, ZK and Vaadin with CDI. In the business logic layer, we usually use EJB 3. In the data layer, we usually use JPA/Hibernate.

More recently I have tried to use other platforms such as Dropwizard and Vert.x in some cases.

What was your general experience with Java EE? Would you choose it again?
I have had very good general experience with Java EE such as the many national projects that I mentioned, so I will use it again with new brand features in Java/Jakarta EE 8 and new innovative platforms like WildFly Swarm, MicroProfile and Payara Micro.

How can people contact you if they have questions?
I am always available via email and LinkedIn.

Does the Spirit of JavaOne Live on Inside Oracle Code One?

In this entry I want to share some high level observations with regards to the renaming of JavaOne to Oracle Code One, mention my accepted sessions at Oracle Code One and highlight important Java EE content at Oracle Code One.

Overall Observations
Some of you may already be aware Oracle has decided to rename JavaOne to Oracle Code One. Like many people in the community and for a number of reasons when I came to know of this I must admit I expected the worst with regards to Java EE content specifically and Java content generally. Nonetheless, I am not one to base judgements on sentiments alone but wanted to see in terms of concrete numbers how the renaming played out. An important data point in this regard is the makeup of the content compared to the previous few years of JavaOne. Another important bellwether is the number and quality of submissions (more on that a bit later). I am relieved to say the worst did not come to pass – at least for this year. I’ll explain why.

Overall the size of the conference in terms of content has remained the same or grown slightly. There is no question the number of Java related sessions has declined, but the decline is modest. Indeed there was a similar modest decline last year when Oracle introduced the “Oracle Code” track at JavaOne – short of an outright rename of the conference. It seems JavaFX and NetBeans has experienced the sharpest decline of content. There is also no denying a prominent presence for various Oracle centric content in Oracle Code One such as Oracle Cloud, Oracle JET, GraalVM, Fn Project, Oracle DB/MySQL and so on. In fairness, Sun did some of this too in its heyday albeit in a measured way with SPARC/Solaris, MySQL, ZFS, etc content at JavaOne. There are certainly major vendor conferences that seem to be entirely comfortable with throwing all semblance of impartiality out the window. I honestly don’t think that is true of Oracle Code One just yet.

Indeed Java EE content is certainly a bright spot. Despite a decline in overall Java content, the amount of Java EE content has remained basically the same. For context, Java EE generally occupies 10-15% of the content or about 50-60 sessions. I’ll describe the highlights of the Java EE content in a moment.

The most important point however is this – renaming or not Oracle Code One remains the top destination for both Java and Java EE content. And I say this as someone that firmly believes Java is strong enough to have it’s own distinct conference and I loved the fact no other conference in the world came even close to matching JavaOne’s Java content in terms of quality or quantity. Despite the decrease, the Java and Java EE content at Oracle Code One still outstrips the closest contender Devoxx Belgium by a respectable margin. While it has been great to see the EclipseCons add quite a bit of Java EE content this year, they do still lag behind the Java EE track at Oracle Code One. It is important to note though that if the current trajectory remains EclipseCon Europe will be the second most important destination for Java EE content, perhaps outstripping Devoxx Belgium. It is also the case that if a further decline in Java content remains a theme for Oracle Code One conferences like Devoxx Belgium and EclipseCon will be in a position to legitimately become the de-facto premier destination for Java and Java EE developers. I am, though, rooting for Oracle Code One. I would hate for the rich heritage of JavaOne fade away entirely. I would rather see JavaOne live on in spirit inside Oracle Code One.

My Sessions
I am happy to say I have four accepted sessions total at JavaOne. Similar to the amount of Java EE content, that is about the same historically for me in terms of accepted sessions. Here are the sessions:

What Is CQRS+Event Sourcing and Why Should Java Developers Care?
In this session I am explaining the architectural patterns of CQRS and Event Sourcing. I’ll also be showing through code why Axon is a great way of implementing these patterns in a Java application. Lastly, I will be touching upon why these proven patterns are important for microservices. By then, I hope to mention official Axon support for CDI that I am currently incubating for a few more days on my personal GitHub repository. Although I will be doing some tweaking, the current slide deck for this talk is here.

Eclipse MicroProfile: What’s Next?
This is an evening birds-of-a-feather session primary led by Ken Finnigan of Red Hat and Emily Jiang of IBM. If you want to get the inside story on MicroProfile and Jakarta EE or want to get heard, I seriously suggest you attend this session. I doubt we will have many slides, but we should be discussing issues and ideas that really matter as long as the right audience makes the time to show up.

From Monoliths to Pragmatic Microservices with Java EE
In this lab we will be discussing the fundamental value proposition of microservices and what the Java EE ecosystem offers today in terms of developing microservices. We will start with a Java EE monolith, break it up using just vanilla Java EE thin wars, then apply fat-jars/hollow uber jars/Docker and finally apply some MicroProfile features. I will very briefly talk about where something like Axon fits in the overall picture too. I am honored to co-present the lab with Ondro Mihalyi and Ivar Grimstad. There is quite a bit of tweaking to do, but the current rendition of the slides are here. The current lab materials are here.

Effective Docker and Kubernetes for Java EE Developers
In this session we will be talking 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 autodeployed mounted external volumes; how Docker clusters, networking, and Kubernetes deployments align with application server administration, clustering, autodiscovery, and load-balancing; how the CI/CD pipeline of your application can be adapted to Docker and Kubernetes; and so on. This is a net new talk being developed with kind help from my co-presenters Ahmad Gohar and Hillmer Chona.

Java EE Content
Mentioning all fifty some Java EE sessions is probably unnecessary and unproductive. I certainly would encourage you to explore the content catalog yourself, even if you don’t plan to come to JavaOne. In general the sessions can be put into two categories – API talks mostly focusing on the Java EE technology itself and more how-to style sessions that focus on how to apply Java EE technologies. I’ve highlighted sessions in both categories that I think are worth specifically mentioning. I would say there is a healthy mix of vendors and community as well as expected names and newcomers. I am particularly encouraged to see IBM, Red Hat, Payara, etc talking about MicroProfile and Jakarta EE, the WebLogic team talking about Java EE and Oracle staff talking about the new Java EE based Helidon project. I would say you should not miss these sessions.

Java EE Technologies

Applied Java EE

Closing Thoughts
With regards to the transition from JavaOne to Oracle Code One, I think a fair sentiment is “so far so good”. Beyond the content we will have to see how the rest of the conference goes in terms of venue, execution, vibe, community and most importantly attendance. I certainly will try to do whatever I can to support Oracle Code One. I hope you will consider attending, especially if you consider Java EE important.

While the content is definitely good, there is room for improvement, there is something we can all help move forward and that is where I would actually like to end this entry. From somewhat an insider standpoint, there are signs it was not easy for the organizers to select quality Java EE content. Tell-tale signs are repetitive material and certain speakers with larger number of sessions (and yes, I am including my own sessions in that observation). I suspect the quality and number of Java EE submissions was lower than it really should have been in JavaOne/Oracle Code One terms. If this was indeed the case, it is deeply disappointing because we should be fully standing behind the conference at least for now. One simple way to do this is adopt the ideas and content I have tried to share a few times already. In particular I think Oracle Code One could have used more content around various aspects of Java EE 8 as well as specific MicroProfile API/specification talks. This is something both vendors and community folks can do something about – and certainly beyond just Oracle Code One. If there is something I can do to help in this regard, I will be delighted to do so.

Using Java EE 7 to Develop Medical Applications in the Czech Republic

One of the most important things to continue to do for Java EE/Jakarta EE is highlight successful adoption stories at a regular cadence. The community has been doing just that for a long time. A number of these stories are curated here. In this vein, Vladimir Herman graciously agreed to share his Java EE adoption story. Vladimir is a young developer in the Czech Republic working on medical applications. He has experience with both Spring and Java EE applications. Thanks very much Pavel Pscheidl for helping facilitate the sharing of this Java EE adoption story.

Can you kindly introduce yourself?
My name is Vladimir Herman and I am a Java developer in one of the largest Czech software companies. I started working with Java professionally in 2013, when I was still a student at the University of Hradec Kralove. I was employed as a junior Java developer in the internal IT department of an insurance company. That’s why I look at my career in two separate stages – during and after my studies. I have learned a lot from academic life as well as from practical work experience.

Can you describe the applications that use Java EE?
In my previous job, we developed web applications in Java that were based on the Spring framework. In my current job, we are extensively using Java EE 7. We develop medical applications for foreign and domestic customers, such as ministries, hospitals or polyclinics.

The applications are mainly used by trained employees of these institutions. That means they are demanding customers who precisely know the problems related to the application domain. This greatly increases demands on the services provided by our system.

Why did you choose Java EE?
The first contact with programming was completely different for me. At lower grades of my education I encountered procedural programming and languages such as assembler and C. I got familiar with the object-oriented paradigm through Java SE/Java EE at the university and I immediately thought it was the right choice for me.

One of the major benefits of Java EE is its comprehensive portfolio of technologies and APIs. Java EE is a mature technology, it has a diverse ecosystem as well as a very active community. It is also beneficial that you can extend the platform with various frameworks when needed.

The seamless integration of the individual parts of Java EE is invaluable. Integration is not always trivial and you have a very powerful tool in your hands once you grasp this concept.

We must not forget the benefits of the JVM itself. It is great to have a portable and platform independent runtime, considering the diversity of our customers.

How do the applications use Java EE?
During my relatively short professional career, I was able to experience the development of Spring framework as well as Java EE technology stack applications.

The applications on which I work mostly follow a layered MVC architecture. Java EE technologies are used in all layers of the application. The main technologies in use are JPA, CDI, EJB, JAX-WS and JSF, but of course there are more. The vast majority of our applications are designed to be monolithic robust units that are self-contained. Individual applications are able to communicate with their neighbors using SOAP when needed, but we also run applications that use JMS. The resulting system can be thought of as composed of multiple large modules, but they are certainly not microservices quite yet.

I started working on an application based on J2EE 1.4 about a year ago. It is a key application for a few important customers and it has been in maintenance mode for many years. Developers were hesitant to make larger changes that could endanger existing functionality or would not be backward compatible. A recent breakthrough occurred when the application was bought by another customer. The application now needs to be rejuvenated as a result. Some of the technologies have become obsolete enough to be replaced outright and others were upgraded to the current version. One of the major changes was switching to Java EE 7 and replacing JSP with Facelets/JSF. Another crucial step was the introduction of DI through CDI. All changes were made with an emphasis on easier maintenance in the future.

What was your general experience with Java EE? Would you choose it again?
I gain experience with Java EE every day. Java SE 9 was released not too long ago. Java EE 8 brings changes like asynchronous events for CDI, HTTP/2 support in Servlet 4 and so much more. I am just in the constant process of learning, reading documentation and testing my knowledge in the real world.

I think there is a bright future for Java EE and I would certainly use it again.

I have also noticed the arrival of Spring Boot. It adds another layer of abstraction for applications based on the Spring framework but it is still a step in a good direction in my opinion.

How can people contact you if they have questions?
The best way to contact me is by email at hermicz at gmail dot com.

Java EE @ DevNexus 2018

DevNexus 2018 was held in historic Atlanta on February 21-23. For those of you not familiar with it, DevNexus is the most significant Java centric conference in the South Eastern US and now perhaps even at a national level. It was started by JBoss Java Champion Burr Sutter and organized by the Atlanta JUG (currently lead by Vincent Mayers, Pratik Patel, et al). I guess at this point I am somewhat of a DevNexus veteran myself. As usual DevNexus attracted a bevy of world class speakers including Ed Burns, Kito Mann, Sebastian Daschner, David Blevins, Ivar Grimstad, Rafael Benevides, Jeanne Boyarsky, Victor Orozco, Mohamed Taman, Roberto Cortez, Edson Yanaga and Enrique Zamudio. This was another solid year for DevNexus. Java EE had a strong showing at the conference as usual, including my own sessions.

I started the conference with my new all-day workshop titled “Pragmatic Microservices with Java EE and WildFly Swarm”. 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 (my plan is to port this code over to WildFly). 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 WildFly Swarm. The next portion of the lab runs the microservice as a fat jar using WildFly Swarm. We finish the lab by discussing concepts such as Linux containers (e.g. Docker), 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 WildFly Swarm 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.

The next day in the afternoon I delivered 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 the key MicroProfile initiative that aims to bring a collaborative, fast-paced, vendor-neutral approach to microservices in the Java EE ecosystem. 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). Just as is the case for the lab, you are welcome to use the slide deck freely.

Later in the afternoon Ivar Grimstad did a deeper dive on MicroProfile. The same day Sebastian Daschner did a very cool talk on Cloud Native Java EE and Víctor Orozco did a talk on Java EE microservices.

The next day I volunteered at the Eclipse Foundation booth alongside Emily Jiang, David Blevins, Cesar Saavedra, Roberto Cortez and Ivar Grimstad. The booth featured both the MicroProfile and EE4J projects. Booth traffic was great and there was lots of interest in both projects. I finished the conference by attending Roberto’s excellent talk featuring awesome demos of Java EE/MicroProfile on Raspberry Pis.

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