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
This guide shows how to integrate a lightweight AI assistant into a Java application running on WildFly. We’ll use the LangChain4j library to interact with a language model (like LLaMA via Ollama), and expose it through a simple HTML interface using Jakarta REST and CDI. No hype, no magic—just a working example. Requirements Before you ... Read more The post Using AI in Java applications with…
Subscribe to airhacks.fm podcast via: spotify| iTunes| RSS The #342 airhacks.fm episode with Volker Simonis (@volker_simonis) about: predator plants, JVM ports, openJDK and the impact of opensource on maintainability is available for download.
Welcome to issue number two hundred and seventy-seven of Hashtag Jakarta EE! It has been quiet around Jakarta MVC for a while, so I am happy to announce that Jakarta MVC 3.0 is under release review as we speak. This release is aligned with Jakarta EE 11 Web Profile and comes with the following features: CSRF projection by default Accessor for form method to overwrite the field…
In preparation for the "30 years of Java" keynote at the JavaLand conference, I compiled a list of Java IDEs and editors: Android Studio Aptana Studio Arachnoid Atom BBEdit BEA WebLogic Workshop BlueJ Borland JBuilder Brief Cloud9 IDE Codeanywhere Code::Blocks CodeWarrior Codenvy CodeLite CodeMix CodeRunner ConTEXT Crimson Editor DrJava Eclipse …
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…
Welcome to issue number two hundred and seventy-six of Hashtag Jakarta EE! We are getting closer and closer to finalizing the refactoring of the Jakarta EE Platform TCK. The goal right now is to have the Jakarta EE 11 Platform ready for release review by the end of May 2025. Stay tuned for updates. Plan reviews for Jakarta EE 12 are going on as we speak. Check out the progress in the…
If you’re working with Jakarta EE — or just starting to explore the power of enterprise Java — there’s never been a better time to level up your skills. Whether you’re building your first servlet, designing secure REST APIs, or diving deep into dependency injection, the Jakarta EE community has been busy crafting an outstanding collection of starter and specification guides to help you get up…
The Jakarta EE 11 Web Profile has officially been released on March 30, 2025 — bringing a cleaner, more modern baseline to the Jakarta EE platform, with strong alignment to recent Java versions, improved modularity, and the removal of legacy specifications. Although it comes later than planned, due to unexpected challenges in refactoring the Jakarta EE TCK (compatibility kit), this release…
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 —…
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…
February was nothing short of exciting at Payara! � From global press coverage to major conference announcements, we’ve been making waves. With so many achievements and big news, there’s plenty to catch up on. ☕ Dive into February’s highlights to explore our journey, celebrate our successes, and see what’s coming next for Payara! 🚀
My previous article on migrating the Spring Petclinic Rest project to Helidon (see here) received a lot of positive feedback, which encouraged me to explore this area further. The manual conversion process, while feasible, is time-consuming and requires careful attention to detail. However, it’s often more technical than creative—tedious, in other words. Automating this process would…
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…
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…
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…
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.
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
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…