This year, enterprise Java is undergoing the biggest change in the 20-year history of the platform. Although a big part of this is the brand change from Java EE to Jakarta EE, the most important is a new openness and the technical direction. With the transition to the auspicious of the Eclipse Foundation and a new focus on cloud-native and microservices, this year demarcates a new Epoch in the story of enterprise Java. A Brief History of Enterprise Java I like to think of the history of Enterprise Java as taking place in four Epochs, the Fourth Epoch being the…
Read More
As you probably already know, Java EE has been donated by Oracle to the Eclipse Foundation and re-branded as Jakarta EE. The first version of Jakarta EE has not yet been released (as of this writing), but when it is, it will include all of the specifications and will essentially be the same as Java EE 8 with some updates. As a result, the first release will be christened Jakarta EE 8 to show that the evolution of the platform continues; that it's not an entirely new platform. That's a good thing! In the beginning Java EE - originally called…
Read More
In 1996 I started developing software with Java and JDBC and fell in love with the beauty of the language and the idea of creating common standardized, vendor agnostic APIs. The Servlet container system arrived in 1997 in the form of the Sun's Java Web Server, adding to my enjoyment, and when EJB was introduced in 1998 and J2EE in 1999, I was hooked. I wrote books, did public speaking, worked in open source, and developed J2EE applications for production. It was wonderful to be part of such a huge sea of change in enterprise application development. But by 2004,…
Read More
The vote for the new brand for Java EE is up and the community has until February 23rd to decide amongst the choices. We've generally stayed quiet about the Java EE rebranding in large part because we love "Java EE" and even larger because the legal complexities around the Java trademark are severely complicated. I'll simply point out that after more than 20 years the Java trademark is still disputed, not a registered trademark ®, and Oracle should be cut some considerable slack. We often want things without truly understanding the responsibility that comes with getting what we want. Oracle bears a…
Read More
Java developers have recognized the need for batch applications a really long time ago, but have had to get by with non-standard approaches – until now. JBatch (JSR-352) introduces an exciting Java specification for building, deploying, and running batch applications, thus standardising the development of such applications. Currently JSR-352 is part of the Java EE 7 specification and has full access to all other features of the platform, including transaction management, persistence, messaging, and more, offering the developer very robust data processing opportunities. In this article, we will create from scratch, a small web application which demonstrates the use of…
Read More
Testing enterprise applications that use persistence can be a hassle: A test database has to be configured. The database has to be seeded before the test. After the test the state of the database has to compared with the expected result. This post shows how to write a test for a Java EE application that uses the Java Persistence API using these technologies: Arquillian is a testing platform that allows, among other things, testing Java EE applications in a Java EE application server. The Arquillian Persistence Extension is an extension to Arquillian that takes over seeding the database, matching the…
Read More
Well, OK, maybe a lot more, but these technologies just work so sweet together that we decided to jump in and give it a go at the Devoxx UK 2015 Hackergarten. Heather VanCura, a leader of the Java Community Process (JCP), clubbed several developers together for some fun key bashing and this is the result. Enjoy! This hack session was brought to you by Bruno Baptista, Paulo Martins and Andy Gumbrecht, with thanks to Heather VanCura and Devoxx UK 2015. JCache API This API allows the use of caching methods in an intuitive and transparent manner. You need two things in your…
Read More
Today all major vendors have their own Cloud platform and most of them are betting on it for the future. Even if the cloud is not yet the everyday solution, it brings new challenges for servers. This post will deal with one example to show how Apache TomEE meets the challenge with success. What are the challenges of the Cloud? All Cloud platforms are a bit different as each have different default targets (i.e., Spring, Java EE, your own platform, only runtime, only build, or even build + runtime, etc.), however, they all share some common points a modern framework/server needs to tackle:…
Read More
After configuring Asynchronous EJB invocations on WebSphere for the last few weeks at work, I had some ideas on how Asynchronous EJBs would work on TomEE and how they can be configured. EJB 3.1 specification does not say anything about how to implement asynchronous invocations and the semantics can differ a bit between application servers. This article: Gives a short introduction into Asynchronous EJB Explains the configuration options of TomEE with respect to Asynchronous EJBs Provides some ideas on how to configure your own system Includes a project demonstrating configuration options with TomEE A Quick Introduction into Asynchronous EJBs The…
Read More
The JCache JSR (JSR-107), finalized in late 2014, provides a standard mechanism to cache values in a map-like structure using a key. There are a number of different JCache implementations to choose from, and swapping between them should be no more difficult than swapping out .jar files on the classpath. In these examples, I will use Hazelcast which provides a distributed cache, giving the benefit that all of the nodes in the cluster are using the same cache and working consistently. CacheManager For anyone new to JCache, here are the basic concepts. It's also worth having a look at the…
Read More