In my previous article, I discussed how Helidon integrates with LangChain4J. While the article provided a solid foundation, some readers pointed out the lack of a complete, hands-on example. This time, we’ll fix that by building a fully functional, practical AI-powered Java application. We’ll create the Helidon Assistant — a chatbot with a web UI trained to answer questions about the…
JCON Europe 2025 was great! Period! It is such a flawlessly organized conference with an ever present community spirit. This year was maybe even more special than usual because of the 30 Years of Java celebrations. Eclipse Foundation had a booth where we featured the Jakarta EE, Adoptium, and Eclipse IDE working groups. The Jakarta EE branded microfiber gym towels we handed out to those visiting…
Jakarta EE applications can achieve better performance with a layered caching setup that combines client-side and server-side caching [1]. Caching Methods Caching is a powerful technique used to improve the performance and scalability of applications. By storing frequently accessed data closer to where it’s needed, caching can significantly reduce latency and system load. Let’s take a look…
Subscribe to airhacks.fm podcast via: spotify| iTunes| RSS The #345 airhacks.fm episode with Christian Humer (@grashalm_) about: rewriting JVM with Java, GraalVM and Espresso is available for download.
Welcome to issue number two hundred and eighty of Hashtag Jakarta EE! This Monday I hosted Javaforum Malmö where we got an interesting presentation by Artur Skowroński about AI in the context of the JVM as he was passing by Malmö on his way to Devoxx UK. If you are a speaker passing by Malmö, or interested in trying out as a speaker, please do contact me so we can make it happen. The…
"This interactive session is about practical, no-nonsense coding. We'll explore lean Java 21+ practices and patterns that eliminate bloat and hacks that increase productivity. We will start with structuring and organizing backend monoliths and microservices, cover testing, then move on to decoupling, abstractions, Data Oriented Programming, automation with pure Java." I used the following…
Database operations are a very critical part of most applications in regards of performance. There are multiple reasons why database operations can significantly contribute to lower performance: The database often runs on a remote server, slowing down communication with the database and the data transfer Establishing individual connections to a database can take a significant portion of…
April was a month of rich fishing grounds: we reeled in top-tier blog posts, made waves at international conferences, and navigated exciting new waters in both AI and Java development. From sharpening your developer toolkit to charting safer courses for application security, we've caught some prize-worthy resources you won't want to throw back. Drop anchor and take a look at the…
I used to believe that running the GitHub CLI inside GitHub Actions was hard, which lead to using sub-actions for small things like creating a release. Turns out it was trivially easy. Yesterday, I replaced a release-sub action with one line of invoking the CLI. This post is me telling you it is not hard, which I've now learned. I started with this yaml: ``` - name: Step 8 - Create GitHub rel
In this article we will learn how to provision a WildFly Server using the JBang scripting tool. Starting from a basic example using a REST endpoint, we will show how to enable additional features on the application server with the WildFly Glow tooling. Why Run WildFly in your Java scripts? WildFly is an application server ... Read more The post How to run WildFly applications with JBang appeared…
March was quite eventful indeed! ✨ This month, our Payarans were on the move — bringing their energy, insights, and expertise to not one, but two major Java conferences: Devnexus and JavaOne. With expert-led talks, exciting conversations at our booths, and the opportunity to meet the community in person, it was a month to remember. But that’s not all! We’re not slowing down —…
We’re thrilled to announce the final release of Jakarta NoSQL 1.0, a brand-new specification designed to bring standardization, productivity, and portability to NoSQL integration in the Java ecosystem. This release marks a significant step in the Jakarta EE platform by introducing the first-ever NoSQL specification. Whether you’re working with document, key-value, column, or graph databases,…
Not too long ago, I upgraded my computer and got a new Lenovo ThinkPad X1 Carbon (a great machine so far!). Since I was accustomed to working on a gaming rig (Ryzen 7, 64GB RAM, 4TB) that I had set up about five years ago, I completely missed the Secure Boot and TPM trends—these weren’t relevant for my fixed workstation. However, my goal with this new laptop is to work with both Linux and…
Introduction The rise of Large Language Models (LLMs) has opened new doors for AI-powered applications, enabling dynamic interactions, natural language processing, and retrieval-augmented generation (RAG). However, integrating these powerful models into Java applications can be challenging. This is where LangChain4J comes in – a framework designed to simplify AI development in Java. To…
Devnexus 2025 will be held Tuesday-Thursday, March 4-6, 2025 at the Georgia World Congress Center in Atlanta, Georgia. Members of the Jakarta EE Ambassadors will be in attendance to deliver presentations on Jakarta EE. On March 4, developers will be able to choose from five workshops: AI-Driven Development: Enhancing Java with the latest AI Innovations by Brian Benz Developer to…
The Jakarta EE Working Group conducted the first-ever Cloud Native Java Survey between July 11, 2024 and August 23, 2024 to gather insights on popular Java SE versions, Jakarta EE, and MicroProfile usage. The results from over 170 respondents left us with a number of important takeaways about the adoption of enterprise Java technologies, developer priorities, and more. Here are the key…
In 2024, the Jakarta EE Working Group launched a brand new effort named the “Cloud Native Java Survey.” This blog, authored by the Jakarta EE Marketing Committee, summarizes the key insights from the survey. You may already be aware of the annual Jakarta EE Developer Survey, also organized by the working group. While the Developer Survey provides a broad view of the ecosystem and Java trends, the…
Most Hibernate performance issues are caused by fetching related entities you don’t use in your business code. To make it even worse, this happens automatica...
We’re excited to announce that accounts.eclipse.org will migrate from Drupal 7 to Drupal 10 on January 19, 2025. This is a significant milestone in our ongoing effort to modernize the Eclipse Foundation’s web infrastructure, following the successful migration of the Project Management Infrastructure (PMI) earlier this year. This migration aligns with our plans that we outlined in last year’s…
As part of our migration to Drupal 10, we’ve decided to discontinue support for Gravatar on sites such as accounts.eclipse.org, projects.eclipse.org, blogs.eclipse.org, marketplace.eclipse.org, and newsroom.eclipse.org. This change enhances privacy compliance by giving users more control over their data and ensures a more consistent experience across many of our web properties. Why Are We…
The post Date and Time Mappings with Hibernate and JPA appeared first on Thorben Janssen. Databases support various data types to store date and time information. The most commonly used ones are: You can map all of them with JPA and Hibernate. But you need to decide to which Java type you want to map your database column. The Java language supports a bunch of classes to represent date and... The…
In this tutorial I want to consolidate some practical ideas regarding OpenTelemetry and how to use it with Spring Boot. This tutorial is composed by four sections OpenTelemetry practical concepts Setting up an observability stack with OpenTelemetry Collector, Grafana, Loki, Tempo and Podman Instrumenting Spring Boot applications for OpenTelemetry Testing and E2E sample By the end of the…
This tutorial provides an overview of some of the new features that are available in the upcoming Jakarta Persistence API 3.2, which is part of Jakarta EE 11 bundle. Jakarta Persistence defines a standard for management of persistence and ORM Java(R) Enterprise environments. If you are new to Jakarta Persistence API we recommend checking this ... Read more The post What is new in Jakarta…
The 24.0.0.12-beta release enhances inbound SOAP message validation in XML Web Services to simplify message debugging and make your web services and clients more resilient. See also previous Open Liberty beta blog posts. Fine-tuning XML Web Services inbound SOAP message validation Open Liberty’s XML Web Services features now support fine-grained message validation for inbound SOAP…
# What are we trying to solve? Scenario: You have an external dependency that you communicate with over HTTP. That external dependency does not have a suitable test environment that you can access. With MicroProfile, that won't be a big deal. You can set up your own fake endpoint running inside your application. # Rest Client I've done this with Quarkus, so some of the pointers and classes here
There are many misconceptions for microservices, which have been around for over a decade. Some people wonder whether microservices are going to die, especially in an IT industry that is quickly moving toward the cloud. With serverless becoming a hot topic, will microservices survive in the serverless era? In this blog, take a step back and rethink microservices. We start with the history of…
Introduction Concurrency has always been a cornerstone of Java, but as applications scale and demands for high throughput and low latency increase, traditional threading models show their limitations. Project Loom and its groundbreaking introduction of virtual threads redefines how we approach concurrency in Java, making applications more scalable and development more straightforward. In this…
Hi guys, how’s it going? Long time no see! In fact, I had been very silent in the past months, and as you could imagine, it has a reason: I just had no time to share all the great stuff with you that I was involved with recently. In particular, creating video content for Youtube is such time-consuming that I decided to stop with that by end of 2023, at least “for some time”, until my personal…
Rising Momentum in Enterprise Java: Insights from the 2024 Jakarta EE Developer Survey Report The seventh annual Jakarta EE Developer Survey Report is now available! Each year, this report delivers crucial insights into the state of enterprise Java and its trajectory, providing a comprehensive view of how developers, architects, and technology leaders are adopting Java to meet the…
The Generational Z Garbage Collector (ZGC) The Generational Z Garbage Collector (GenZGC) in JDK 21 represents a significant evolution in Java’s approach to garbage collection, aiming to enhance application performance through more efficient memory management. This advancement builds upon the strengths of the Z Garbage Collector (ZGC) by introducing a generational approach to garbage collection…
Cross-Context Dispatch reintroduced to Jetty-12 With the release of Jetty 12.0.8, we’re excited to announce the (re)implementation of a somewhat maligned and deprecated feature: Cross-Context Dispatch. This feature, while having been part of the Servlet specification for many years, has seen varied levels of use and support. Its re-introduction in Jetty 12.0.8, however, marks a significant…
Jakarta REST provides a Client API, implemented by Jersey Client. The default implementation is based on the Java HttpUrlConnection. Unfortunately, the HttpUrlConnection supports only HTTP methods defined in the original HTTP/1.1 RFC 2616. It will never support for instance HTTP … Continue reading →
Introduction In my previous article, we’ve seen what Virtual Threads (VTs) are, how they differ from Platform Threads (PTs), and how to use them with Helidon 4. In simple terms, VTs bring in a new concurrency model. Instead of using many PTs that can get blocked, we use a few of them that hardly ever […]
Write a pure-Java microservice from scratch, without an application server nor any third party frameworks, tools, or IDE plugins — Just using JDK, Maven and JAX-RS aka Jakarta REST 3.1. This video series shows you the essential steps! You asked, why I am not simply using the Jakarta EE 10 Core API. There are many answers in this video! If you like this video, please give it a thumbs up, share…
This blog aims at giving some pointers in order to address the challenge related to the switch from `javax` to `jakarta` namespace. This is one of the biggest changes in Java of the latest 20 years. No doubt. The entire ecosystem is impacted. Not only Java EE or Jakarta EE Application servers, but also libraries of any kind (Jackson, CXF, Hibernate, Spring to name a few). For instance, it took…
Jersey is using JDK HttpUrlConnection for sending HTTP requests by default. However, there are cases where the default HttpUrlConnection cannot be used, or where using any other HTTP Client available suits the customer’s needs better. For this, Jersey comes with … Continue reading →
Now that Jetty 12.0.1 is released to Maven Central, we’ve started to get a few questions about where some artifacts are, or when we intend to release them (as folks cannot find them). Things have change with Jetty, starting with the 12.0.0 release. First, is that our historical versioning of <servlet_support>.<major>.<minor> is no longer being used. With Jetty 12, we are now using a more…
I recently became interested in Helidon as part of my investigations into Java Loom. Indeed, version 4 is natively based on Virtual Threads. Before going any further, let’s introduce quickly Helidon. Helidon is an Open Source (source on GitHub, Apache V2 licence) managed by Oracle that enables to develop lightweight cloud-native Java application with fast […]
The results of the 2023 Jakarta EE Developer Survey are now available! For the sixth year in a row, we’ve reached out to the enterprise Java community to ask about their preferences and priorities for cloud native Java architectures, technologies, and tools, their perceptions of the cloud native application industry, and more. From these results, it is clear that open source cloud native Java…
Looking at the web, we don’t see many articles talking about Contexts Dependency Injection’s best practices. Hence, I have made the decision to discuss the utilization of Contexts Dependency Injection (CDI) using best practices, providing a comprehensive guide on its implementation. The CDI is a Jakarta specification in the Java ecosystem to allow developers to use dependency injection,…
In this blog post, we will explore the numerous benefits that arise when employees are encouraged to contribute to Jakarta EE as part of their normal work activities. These compelling arguments will help you convince your employer of the value it brings to your organisation while respecting the demands of your everyday work.
The Jakarta EE 2023 Developer Survey is now open! It is that time of the year: the Jakarta EE 2023 Developer Survey open for your input! The survey will stay open until May 25st. I would like to invite you to take this year six-minute survey, and have the chance to share your thoughts and ideas for future Jakarta EE releases, and help us discover uptake of the Jakarta EE latest…
In this post, I will talk to you about what the Apache Camel is. It is a brief introduction before I starting to post practical content. Thus, let’s go to understand what this framework is. Apache Camel is an open source Java integration framework that allows different applications to communicate with each other efficiently. It provides a platform for integrating heterogeneous software…
Community Day at EclipseCon 2022 was held in person on Monday, October 24 in Ludwigsburg, Germany. Community Day has always been a great event for Eclipse working groups and project teams, including Jakarta EE/MicroProfile. This year was no exception. A number of great sessions were delivered from prominent folks in the community. The following are the details including session materials. The…
An impression of JFall by yours truly. keynoteSold out! Packet room! Very nice first keynote speaker by Saby Sengupta about the path to transform.He is a really nice storyteller. He had us going. Dutch people, wooden shoes, wooden hat, would not listen Saby lol Get the answer to three why questions. If the answers stop after the first why. It may not be a good idea. This great first…
The results of the 2022 Jakarta EE Developer Survey are very telling about the current state of the enterprise Java developer community. They point to increased confidence about Jakarta EE and highlight how far Jakarta EE has grown over the past few years. Strong Turnout Helps Drive Future of Jakarta EE The fifth annual survey is one of the longest running and best-respected surveys of its…
The Jakarta EE Ambassadors are thrilled to see Jakarta EE 10 being released! This is a milestone release that bears great significance to the Java ecosystem. Jakarta EE 8 and Jakarta EE 9.x were important releases in their own right in the process of transitioning Java EE to a truly open environment in the Eclipse Foundation. However, these releases did not deliver new features. Jakarta EE 10…
The Jakarta EE ecosystem has been hard at work transitioning various libraries, framework, servers and tools from the javax namespace to the jakarta.ee namespace. This work is essentially complete with the upcoming release of Jakarta EE 10. JakartaEE developers have a wide range of options in each category, providing great choices!
How make java code with reflections more stable? Unit tests can help with this problem. This article introduces annotations @CheckConstructor, @CheckField, @CheckMethod to create so unit tests automatically
Getting started with Jakarta EE just became even easier! Get started Java EE /Jakarta EE - Initializr Hot new Update!Moved from the Apache 2 license to the Eclipse Public License v2 for the newest version of the archetype as described below.As a start for a possible collaboration with the Eclipse start project. New Archetype with JakartaEE 9 JakartaEE 9 + Payara 5.2022.2 + MicroProfile 4.1…
Completing the 2022 Jakarta EE Developer Survey takes less than 6 minutes of your time. But your input is extremely important.
FOSDEM took place February 5-6. The European based event is one of the most significant gatherings worldwide focused on all things Open Source. Named the “Friends of OpenJDK”, in recent years the event has added a devroom/track dedicated to Java. The effort is lead by my friend and former colleague Geertjan Wielenga. Due to the pandemic, the 2022 event was virtual once again. I delivered a couple…
Infinispan 10+ uses Log4j version 2.0+ and can be affected by vulnerability CVE-2021-44228, which has a 10.0 CVSS score. The first fixed Log4j version is 2.15.0. So, until official patch is coming, - you can update used logger version to the latest in few simple steps Download Log4j version 2.15.0: https://www.apache.org/dyn/closer.lua/logging/log4j/2.15.0/apache-log4j-2.15.0-bin.zip Unpack…
Specification JPA 2.2/Jakarta JPA 3.0 provides for several methods to select data from database. In this article we research how these methods affect on performance
In the previous post, we saw how to use the built-in ‘tomcat-users.xml’ identity store with Apache TomEE. While this identity store is inherited from Tomcat and integrated into Jakarta Security implementation in TomEE, this is usually good for development or simple deployments, but may appear too simple or restrictive for production environments. This blog will focus on how to implement your own…
Wildfly provides great out of the box load balancing support by Undertow and modcluster subsystems Unfortunately, in case HTTP headers size is huge enough (close to 16K), which is so actual in JWT era - pity error happened: ERROR [io.undertow.proxy] (default I/O-10) UT005028: Proxy request to /ee-jax-rs-examples/clusterdemo/serverinfo failed: java.io.IOException:…
About one month ago I had the pleasure to announce the release of the second edition of my book, now called “Jakarta EE Cookbook”. By that time I had recorded a video about and you can watch it here: And then came a crazy month and just now I had the opportunity to write a few lines about it! So, straight to the point, what you should know about the book (in case you have any interest in…
The JDK Flight Recorder (JFR) is an invaluable tool for gaining deep insights into the performance characteristics of Java applications. Open-sourced in JDK 11, JFR provides a low-overhead framework for collecting events from Java applications, the JVM and the operating system. In this blog post we’re going to explore how custom, application-specific JFR events can be used to monitor a REST…
Record types are one of the most awaited features in Java 14; they promise to "provide a compact syntax for declaring classes which are transparent holders for shallowly immutable data". One example where records should be beneficial are data transfer objects (DTOs), as e.g. found in the remoting layer of enterprise applications. Typically, certain rules should be applied to the attributes of…
As part of the Jakarta EE Quickstart Tutorials on YouTube, I’ve now created a five-part series to create a Jakarta EE CRUD API. Within the videos, I’m demonstrating how to start using Jakarta EE for your next application. Given the Liberty Maven Plugin and MicroShed Testing, the endpoints are developed using the TDD (Test Driven Development) technique. The following technologies are used within…
With the presence of Docker, Kubernetes and cheaper hardware, the deployment model of multiple applications inside one application server has passed. Now, you deploy one Jakarta EE application to one application server. This eliminates the need for different context paths. You can use the root context / for your Jakarta EE application. With this blog post, you’ll learn how to achieve this for…
I’ve been involved in Java EE since the very beginning, Having written one of the first ever books on Java EE. My involvement in Java EE / Jakarta EE has been on an education / advocacy role. Having written books, articles, blog posts and given talks in conferences about the technology. I advocate Jakarta EE not because I’m paid to do so, but because I really believe it is a great technology. I’m…
With the Eclipse Foundation Specification Process (EFSP) a single open source specification project has a dedicated project team of committers to create and maintain one or more specifications. The cycle of creation and maintenance extends across multiple versions of the specification, and so while individual members may come and go, the team remains and it is that team that is responsible for…
It’s time to change the specification names… When we first moved the APIs and TCKs for the Java EE specifications over to the Eclipse Foundation under the Jakarta EE banner, we kept the existing names for the specifications in place, and adopted placeholder names for the open source projects that hold their artifacts. As we prepare to engage in actual specification work (involving an actual…
This is the most viewed post of this blog, so I believe it deserves an update now in 2020! Its first version was written back in 2017. There’s a lot of different opinions in this kind of lists, and there will be always somebody or something missing… just don’t be too passionate or take things personally, ok?! ****************************************************** We all have to agree: there are…