Mark Little

Recent Posts

Quarkus and Jakarta EE: Together, or not?

Quarkus and Jakarta EE: Together, or not?

In this article, I answer a question that I have seen asked on various forums: Will Quarkus be compatible with Jakarta EE? To understand our answer to that question, it is helpful to know the history of Quarkus and what we’re trying to achieve with it. So, please indulge me while I lay that groundwork.

A short history of Quarkus and Java EE

When Emmanuel Bernard, Jason Greene, Bob McWhirter, and I first discussed kicking off the ThornFly.x proof of concept, which would later become Quarkus, we had conversations about where Java EE (now Jakarta EE) would eventually fit. I think we all agreed that we already had the best open source implementation of Java EE in the form of WildFly and Red Hat JBoss Enterprise Application Platform (JBoss EAP). Creating yet another addition to this space seemed confusing at best. At worst, we feared that it would split our engineering and open source community efforts.

Continue reading “Quarkus and Jakarta EE: Together, or not?”

Share
Mandrel: A community distribution of GraalVM for the Red Hat build of Quarkus

Mandrel: A community distribution of GraalVM for the Red Hat build of Quarkus

The Java community has demonstrated time and time again its ability to evolve, improve, and adapt to meet the needs of its developers and users. Even after 25 years of language and framework choices, Java has consistently ranked in the top languages in use today due to its strong track record and capabilities in enterprise use cases. Red Hat has long been a strong leader in Java and open source software development and remains committed to being at the forefront of Java as it continues to evolve.

Today, Red Hat and the GraalVM community jointly established a new downstream distribution of GraalVM, called Mandrel. This distribution will power the Red Hat build of Quarkus, a recently announced addition to Red Hat Runtimes. This article explains what Mandrel is and why it is necessary.

Continue reading “Mandrel: A community distribution of GraalVM for the Red Hat build of Quarkus”

Share
The road to Quarkus GA: Completing the first supported Kubernetes-native Java stack

The road to Quarkus GA: Completing the first supported Kubernetes-native Java stack

I’ve had many proud moments in my role here at Red Hat over the years. Examples include when we released the first version of WildFly, when we acquired the Camel team, when we worked with other vendors to create Eclipse MicroProfile, the great work the Strimzi team did to get into the Cloud Native Computing Foundation, our entire Red Hat Managed Integration effort, Kogito, and the list goes on. I feel like I add to this list of examples on an almost weekly basis.

Well, I can now update this list with the first product release of Quarkus, formally called the Red Hat build of Quarkus. (You can also find more support options on the Quarkus project site.) It should come as no surprise that Quarkus is on this list. I suppose what might surprise some people is that Quarkus is only just a product now. Given all of the activities since we officially launched the Quarkus project in 2019, you could be forgiven for thinking it was already a product.

Continue reading “The road to Quarkus GA: Completing the first supported Kubernetes-native Java stack”

Share
Quarkus: Why compile to native?

Quarkus: Why compile to native?

Quarkus is Kubernetes native, and to accomplish that we’ve spent a lot of time working across a number of different areas, such as the Java Virtual Machine (JVM) and various framework optimizations. And, there’s much more work still to be done. One area that has piqued the interest of the developer community is Quarkus’s comprehensive and seamless approach to generating an operating system specific (aka native) executable from your Java code, as you do with languages like C and C++, which we believe will typically be used at the end of the build-test-deploy cycle.

Although the native compilation is important, as we’ll discuss later, Quarkus works really well with vanilla OpenJDK Hotspot, thanks to the significant performance improvements we’ve made to the entire stack. The native executable aspect Quarkus offers is optional and, if you don’t want it or your applications don’t need it, then you can ignore it. In fact, even when you are using native images, Quarkus still relies heavily on OpenJDK. The well-received dev mode is able to deliver near-instantaneous change-test cycles all due to Hotspot’s rich dynamic code execution capabilities. Additionally, GraalVM internally uses OpenJDK’s class library and HotSpot to produce a native image.

Still, there’s the question: Why have native compilation at all if the other optimizations are so good? That’s the question we’ll look at more closely here.

Continue reading “Quarkus: Why compile to native?”

Share
Jakarta EE is officially out

Jakarta EE is officially out

Jakarta EE is officially out! OK, given the amount of publicity and evangelizing we and others have done around EE4J and Jakarta EE over the past few months you would be forgiven for thinking it was already the case but it wasn’t… until today!

I cannot stress enough how important this is to our industry. The number of Java developers globally is estimated at over 14 million. The Java EE market is estimated at a high multi-billion Dollar value to the industry. Yes there are other languages out there and other frameworks but none of them have yet made the impact Java and Java EE has over the years. Of course Java EE was not perfect for a variety of reasons, but if you consider how much of an impact it has had on the industry given known and debated limitations, just imagine how much it can bring in the years ahead if it were improved.

Continue reading “Jakarta EE is officially out”

Share

REST and microservices – breaking down the monolith step by asynchronous step

A few days ago I had a rant about the misuse and misunderstanding of REST (typically HTTP) for microservices.

To summarize, a few people/groups have been suggesting that you cannot do asynchronous interactions with HTTP, and that as a result of using HTTP you cannot break down a monolithic application into more agile microservices. The fact that most people refer to REST when they really mean HTTP is also a source of personal frustration, because by this stage experienced people in our industry really should know the difference. If you’re unsure of the difference then check out the restcookbook or even Roy’s PhD thesis (it’s quite a good read!)

However, I digress, so back to the rant: My goal is to point people in the right direction and make some recommendations, hence this followup post.

Continue reading “REST and microservices – breaking down the monolith step by asynchronous step”

Share

Different types of microservices?

I’ve been working with some of our teams recently on microservices and how we can assist our customers and communities with best practices and recommendations, whether they’re Java EE developers, Vert.x coders, writing Node.js applications or something else. If you’ve read any of my previous articles then you’ll know I have a few thoughts on microservices, and yet there are many things I still feel I need to get straight in my own head. That’s why I love talking with the teams we have, because they’re always challenging my thought processes and pushing the frontiers of where our industry needs to go.

It was during a few of these conversations that something I hadn’t realised had been bothering me started to become a little clearer. For a long time I’ve been thinking about microservices, how they relate to SOA and distributed systems, DevOps etc. As I mentioned at the start, we have a lot of projects and products which can be used to assist in the development of a (micro) service based architecture. So far, most of what I’ve been reading outside of Red Hat has been about building microservices and applications from collections of them, from scratch. It’s also true to say that has probably been the focus of much of our development work. Greenfield development; re-architecting systems and building up from scratch.

Continue reading “Different types of microservices?”

Share