JavaHiddenGems
Make sure to start the Docker-webserver-cache container before running the OWASP dependency check or the Old GroupIds Alerter.
Cache Maven builds to make them faster https://maven.apache.org/extensions/maven-build-cache-extension/
Create and change PDF files or extract content from PDF files https://pdfbox.apache.org/
Create, change and read files based on the Office Open XML standards (OOXML) such as Word and Excel files. https://poi.apache.org/
Verify the Java code's architecture with unit tests. https://www.archunit.org/
Test code with assertions. https://assertj.github.io/doc/
Generator for ServiceLoader service providers. https://github.com/google/auto
Generate immutable value classes. https://github.com/google/auto
Test asynchronous applications with a DSL. https://github.com/awaitility/awaitility
Create (Docker) images. https://buildpacks.io/
Classpath and module scanner for Java and other JVM languages. https://github.com/classgraph/classgraph
Suite of tools for deep learning on the JVM. https://projects.eclipse.org/projects/technology.deeplearning4j/ https://www.rcp-vision.com/build-your-first-neural-network-with-eclipse-deeplearning4j/ No example yet
Testing equals() and hashCode(). https://jqno.nl/equalsverifier/
Parse markdown and render to HTML. See the build/extensions configuration in the Examples/pom.xml file https://github.com/vsch/flexmark-java
Load testing for web applications. https://github.com/gatling/gatling
Dependency injection framework. https://github.com/google/guice
Query language for APIs. https://www.graphql-java.com/
Merge data with Mustache/Handlebars templates. Comparable to Pebble Templates. https://github.com/jknack/handlebars.java
PDF library https://itextpdf.com/en Be aware of the quite limiting license: https://fossa.com/blog/open-source-software-licenses-101-agpl-license/
Apache PDFBox may be used as an alternative.
Code coverage library. https://www.jacoco.org/jacoco/ coverage unit test and running application
Java Genetic Algorithm, Evolutionary Algorithm, Genetic Programming, and Multi-objective Optimization library. https://jenetics.io/ No example yet
J2CL is a transpiler from Java to Closure style JavaScript. https://github.com/google/j2cl https://www.gwtproject.org/ More info https://lofidewanto.medium.com/web-browser-programming-in-java-e69a153fcb15 No example yet
Monitor and diagnose applications, can also be used together with Flight Recorder. https://docs.oracle.com/en/java/java-components/jdk-mission-control/8/user-guide/
Collecting diagnostic and profiling data for a running application. https://developers.redhat.com/blog/2020/08/25/get-started-with-jdk-flight-recorder-in-openjdk-8u#using_jdk_flight_recorder_with_jdk_mission_control
Java API for generating .java source files. Be careful the one from Square is no longer maintained. There are some alternatives such as for example the one below. https://github.com/palantir/javapoet
Edit and run source-only Java programs. https://www.jbang.dev/
Relational database access. https://jdbi.org/
Build optimized Docker and OCI images without a Docker daemon. https://github.com/GoogleContainerTools/jib
Assert Flight Recorder events. https://github.com/moditect/jfrunit
Generate custom Java runtime images with only the required platform modules. https://www.baeldung.com/jlink https://access.redhat.com/documentation/en-us/openjdk/11/html/using_jlink_to_customize_java_runtime_environment/index
Describe architectural styles such as layered, onion and hexagonal with annotations. Explicitly use DDD concepts with annotations or interfaces instead of naming classes ...Entity. ByteBuddy is used to map the annotations to Spring Data annotations during the build. https://github.com/xmolecules/jmolecules
Distributed job scheduler. https://www.jobrunr.io/en/
Integrate SQL queries in Java. https://www.jooq.org/
Create native installers and packages. https://www.baeldung.com/java14-jpackage
Package and distribute the application to Homebrew, Chocolatey and others. https://jreleaser.org/
Interactive shell to learn and prototype Java code. https://en.wikipedia.org/wiki/JShell
HTML parser. https://jsoup.org/
Parsing, formatting and validating phone numbers. https://github.com/google/libphonenumber
Code generator to map between bean types. https://mapstruct.org/
Search dependency coordinates in Maven Central. https://github.com/mthmulders/mcs
Analyze and manipulate artifacts. https://maven.apache.org/plugins/maven-dependency-plugin/
Enforce constraints such as the Maven or JDK version. The Maven Enforcer Plugin
Generate reports about the project. https://maven.apache.org/plugins/maven-project-info-reports-plugin/
Manage artifact versions. https://www.mojohaus.org/versions-maven-plugin/ https://github.com/ben-manes/gradle-versions-plugin
Manages Maven version and configuration so the application uses the same setup everywhere. https://maven.apache.org/wrapper/
Deliver application metrics from Spring Boot. https://micrometer.io/
Java serializer that does not require you to implement an interface or put annotations in your classes. https://microstream.one/
Verify the modular structure for Spring Boot applications between modules based on ArchUnit. https://github.com/moduliths/moduliths
Faster Maven builds. The mvnd
Checks for deprecated groupIds/ArtifactIds and suggests alternatives. https://github.com/jonathanlermitage/oga-maven-plugin https://github.com/jonathanlermitage/oga-gradle-plugin
Seach and transform Java applications, for instance to update frameworks, or to migrate to other frameworks. https://docs.openrewrite.org/
Detect publicly disclosed vulnerabilities in dependencies. https://jeremylong.github.io/DependencyCheck/dependency-check-maven/ https://jeremylong.github.io/DependencyCheck/dependency-check-gradle/index.html
Be aware that the plugin uses a CVE database and that one has some changes coming in the endpoints such as rate limits and an API key: https://nvd.nist.gov/General/News/changes-to-feeds-and-apis. Google also has a CVE database https://github.com/github/advisory-database#license but it looks like there's no (Maven) plugin for it yet.
Library to enforce rules for passwords. https://www.passay.org/
Templating engine comparable to Handlebars https://pebbletemplates.io/
One file framework to create Java command line applications. https://picocli.info/
End-to-end testing for web applications. https://playwright.dev/ No example yet
Test your unit tests by automatically changing production code and rerunning the tests to see if they still pass. The Pitest
Creates pull requests to update the dependencies. https://docs.renovatebot.com/java/
Creates pull requests to update the dependencies. https://docs.github.com/en/code-security/dependabot
Fault tolerance library. https://github.com/resilience4j/resilience4j No example yet
Test and validate REST services. https://rest-assured.io/
Supports building REST applications. https://github.com/resteasy/Resteasy
Type safe HTTP client. https://square.github.io/retrofit/
Guarantees that scheduled tasks are executed at most once at the same time in a distributed environment. https://github.com/lukas-krecan/ShedLock
Manage multiple versions of Software Development Kits (SDK's). https://sdkman.io/
Perform data engineering, science and machine learning on a single machine and on clusters. https://spark.apache.org/ https://github.com/apache/spark
Provides database, Selenium and many other containers to test against in unit tests. https://www.testcontainers.org/ https://github.com/testcontainers/testcontainers-java
Solve planning and scheduling challenges such as vehicle routing, rostering, create schedules etcetera. https://timefold.ai/
Feature flaggs. https://www.togglz.org/ https://github.com/togglz/togglz
Load and reload configuration such as property files. https://github.com/lightbend/config https://github.com/arkadius/tsc-reload
Functional library. https://www.vavr.io/ https://github.com/vavr-io/vavr
Create mock APIs. http://wiremock.org https://github.com/wiremock/wiremock
Password strength estimator. Several implementations exist for Java. https://github.com/nulab/zxcvbn4j https://github.com/GoSimpleLLC/nbvcxz