Migrating Monoliths to Microservices in Practice

There have been amazing articles on the subjects of migrating from a monolith to a microservice architecture, e.g., this is probably one of the better examples. The benefits and drawbacks of the architectures should be pretty clear. I want to talk about something else though: the strategy. We build monoliths since they are easier to get started with. Microservices usually …

Read More »

Can Java/Jakarta EE do Microservices?

In this myth-busting webinar, Steve Millidge (founder of Payara), demonstrates that Java/Jakarta EE can do microservices. In this video, Steve explains: What are microservices?How JAX-RS API makes it easy to develop applications that use the REST architectureDeployment models for microservicesHow to use MicroProfile with Jakarta EE12 factor apps with Jakarta EE If you’ve been hearing that Java/Jakarta EE is only …

Read More »

Pi4J V2.2.0 Released

One year after the first release of V.2 of Pi4J, a new release was published. Pi4J provides friendly object-oriented I/O API and implementation libraries for Java Programmers to access the full I/O capabilities of the Raspberry Pi platform. And what an amazing achievement with this new release! No major issues were found in the previous release, but several small fixes …

Read More »

Java Thread Programming (Part 15)

This article will discuss how we do asynchronous method invocation with Callable and Future with a practical example. Look at the code snippet. It doesn’t have anything yet, but as we learned about Java threading, we know anything we put here will run on the main thread unless we spawn a new thread from here. Now consider a case where …

Read More »

What the Heck Is Project Loom for Java?

Java has had good multi-threading and concurrency capabilities from early on in its evolution and can effectively utilize multi-threaded and multi-core CPUs. Java Development Kit (JDK) 1.1 had basic support for platform threads (or Operating System (OS) threads), and JDK 1.5 had more utilities and updates to improve concurrency and multi-threading. JDK 8 brought asynchronous programming support and more concurrency …

Read More »

End-to-End Tracing with OpenTelemetry

Whether you implement microservices or not (and you probably shouldn’t), your system is most probably composed of multiple components. The most straightforward system is probably made of a reverse proxy, an app, and a database. In this case, monitoring is not only a good idea; it’s a requirement. The higher the number of components through which a request may flow, …

Read More »

External Debugging Tools 3: JMXTerm

When tracking a bug we need to take a two pronged approach. Similar to tongs that wrap the buggy module from both sides and squeezes to find the problematic part. Up until now we discussed tools that are very low level. Some can be used to debug system level services. Today we’ll discuss the other side of the stack but …

Read More »

Google Remote Procedure Call (gRPC) Example in Payara Server

Google Remote Procedure Call, or gRPC, is an open source Remote Procedure Call (RPC) framework focused on high performance and is portable to any environment. It is an alternative to REST, deemed by many as more efficient. After one of our customers requested it, the extension became available in our April 2022 Payara Community and Enterprise releases: 5.2022.2 and 5.38.0.  …

Read More »

Using Git Interactive Rebase

This tutorial will cover how to clean up your Git commit history with Git interactive rebase, both via the IntelliJ IDEA UI and from the command line. Git interactive rebase allows you to change individual commits, squash commits together, drop commits or change the order of the commits. This allows you to clean up your Git commit history to make …

Read More »

Cassandra Performance: Throughput, Responsiveness, Capacity, and Cost

For scalable data workloads like Cassandra, performance and capacity are simply a matter of cost. JVM choice and configuration can dramatically impact that cost. The Azul Platform Prime JVM significantly improves Cassandra performance and reduces the cost of Cassandra clusters. Background We set off to characterize the impact of JVM choice and configuration on Cassandra load carrying capacity: the capacity …

Read More »