Technically Feasible

Tagged "java"



JavaPoet is a Java API for generating .java source files. Source file generation can be useful when doing things such as annotation processing or interacting with metadata files (e.g., database schemas, protocol formats).


Annotation Processing 101

In this blog entry I would like to explain how to write an annotation processor. First, I am going to explain to you what annotation processing is, what you can do with that powerful tool and finally what you cannot do with it.


These 10 New Features Make Groovy 4.0 AWESOME!

Sealed types, switch expressions, and record types. Here are just a few new features introduced in the latest Groovy 4.0 release. In this video, I want to show you ten things that make Groovy 4.0 amazing. And to keep this video short, we’re not going to dive deep into each of them.


Getting Started with Java Message Service (JMS)

Remote procedure call (RPC) systems, including Java RMI, are synchronous -- the caller must block and wait until the called method completes execution, and thus offer no potential for developing loosely coupled enterprise applications without the use of multiple threads.


Introducing Test Suites

As projects grow in size and complexity and otherwise mature, they tend to accumulate a large collection of automated tests. Testing your software at multiple levels of granularity is important to surface problems quickly and to increase developer productivity. In Gradle 7.



JCL is a configurable, dynamic and extensible custom classloader that loads java classes directly from Jar files and other sources. The motivation was to create isolated classloaders, which can be easily integrated with IoC frameworks like Spring and with web applications.


Java SPI - a simple hello world service

I recently needed a simple example of an SPI implementation I could send around as copy and paste template. After some looking around I found some tutorials, but most of them were rather heavy in the implementation and are thereby loosing the point of being a simple extension system within the JDK.


Modularizing with Micronaut Framework

In this blog post, I’m going to explain how you can make use of the Micronaut framework to organize your project code in such a way that you can externalize and modularize some of your @Beans. These beans can be used as β€œcommon” and can be shared between several projects.


I'm in the process of building an #activitypub implementation using #java and #micronaut.

I'm considering options to make the platform "pluggable". The plan is to use something like SPI to load plugins from JAR files, allowing features to be added to customize the platform for individual needs.

Off the top of my head I'm thinking things like custom APIs or storage back-ends to do things which won't be included a (completely theoretical) core distribution.


Transform JSON-LD in Java

In this tutorial, we’ll learn how to transform a Java Object to JSON-LD and vice versa. Also learn how to verify the schema of JSON-LD. JSON-LD is a JSON-based format which is used to represent structured data and linked data. Schema of JSON-LD can be found in documentation of



This is a Java implementation of the JSON-LD 1.0 specification and the JSON-LD-API 1.0 specification. The Options specified by the JSON-LD API Specification are accessible via the com.github.jsonldjava.core.JsonLdOptions class, and each JsonLdProcessor.



Java 16 introduces Records. While this version of records is fantastic, it's currently missing some important features normally found in data classes: a builder and "with"ers. This project is an annotation processor that creates: Hat tip to Benji Weber for the Withers idea.


Verifying a Digital Signature

If you have data for which a digital signature was generated, you can verify the authenticity of the signature. To do so, you need In this example you write a VerSig program to verify the signature generated by the GenSig program.



Testing asynchronous systems is hard. Not only does it require handling threads, timeouts and concurrency issues, but the intent of the test code can be obscured by all these details.