Executors come with their own set of challenges and pitfalls that developers must be aware of to avoid potential issues. In the world of concurrent programming, Java's Executors framework has been a boon for developers looking to manage and coordinate multiple tasks efficiently.
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).
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.
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.
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.
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.
To load calsses in runtime java uses ClassLoader mechanism which is based on next core principles: delegation - by default uses parent-first delegation, - child ClassLoader will be used if parent is not able to find or load class.
Null dereferencing is a common type of programming error in Java. On Android, NullPointerException (NPE) errors are the largest cause of app crashes on Google Play.
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.
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.
In this article, we are going to talk about Java’s Service Provider Interface (SPI). We will have a short overview of what the SPI is and describe some cases where we can use it. Then we will give an implementation of an SPI for a practical use case.
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.
Using openssl, the command is... However, I will need to do this often and have written a Java class that handles this and more (my application is mostly .jsp with Tomcat and Apache). When I try run the same command from Java using Runtime.
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 schema.org.
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.
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.
The Java volatile keyword guarantees variable visibility across threads, meaning reads and writes are visible across threads.
Demonstration of a method to delay execution of a task in a non-blocking manner
Maven is okay, but maybe you would like to try gradle instead 😉
I've been experimenting with servlet filters, along the same lines as my experimentation with aspects. This post explores servlet filters in a spring application.
Exploring aspect oriented programming approaches using Spring AOP as a starting point
Exploring spring boot and replication, with an easy to adapt example replicated MySQL cluster provided by containerized databases
Gatling is a load testing tool featuring a scenario recorder, and a scala based DSL
Bootstrapping spring boot docker containers with maven