Skip to content

johanjanssen/JavaHiddenGems

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JavaHiddenGems

Make sure to start the Docker-webserver-cache container before running the OWASP dependency check or the Old GroupIds Alerter.

Apache Maven Build Cache Extension

Cache Maven builds to make them faster https://maven.apache.org/extensions/maven-build-cache-extension/

Apache PDFBox

Create and change PDF files or extract content from PDF files https://pdfbox.apache.org/

Apache POI

Create, change and read files based on the Office Open XML standards (OOXML) such as Word and Excel files. https://poi.apache.org/

ArchUnit

Verify the Java code's architecture with unit tests. https://www.archunit.org/

AssertJ

Test code with assertions. https://assertj.github.io/doc/

AutoService

Generator for ServiceLoader service providers. https://github.com/google/auto

AutoValue

Generate immutable value classes. https://github.com/google/auto

Awaitility

Test asynchronous applications with a DSL. https://github.com/awaitility/awaitility

Buildpacks

Create (Docker) images. https://buildpacks.io/

ClassGraph

Classpath and module scanner for Java and other JVM languages. https://github.com/classgraph/classgraph

Eclipse Deeplearning4j

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

EqualsVerifier

Testing equals() and hashCode(). https://jqno.nl/equalsverifier/

flexmark-java

Parse markdown and render to HTML. See the build/extensions configuration in the Examples/pom.xml file https://github.com/vsch/flexmark-java

Gatling

Load testing for web applications. https://github.com/gatling/gatling

Google Guice

Dependency injection framework. https://github.com/google/guice

GraphQL Java

Query language for APIs. https://www.graphql-java.com/

Handlebars.java

Merge data with Mustache/Handlebars templates. Comparable to Pebble Templates. https://github.com/jknack/handlebars.java

iText

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.

Jacoco

Code coverage library. https://www.jacoco.org/jacoco/ coverage unit test and running application

Jenetics

Java Genetic Algorithm, Evolutionary Algorithm, Genetic Programming, and Multi-objective Optimization library. https://jenetics.io/ No example yet

J2CL / GWT

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

Java/JDK Mission Control

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/

Java/JDK Flight Recorder

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

JavaPoet

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

Jbang

Edit and run source-only Java programs. https://www.jbang.dev/

Jdbi

Relational database access. https://jdbi.org/

Jib

Build optimized Docker and OCI images without a Docker daemon. https://github.com/GoogleContainerTools/jib

JfrUnit

Assert Flight Recorder events. https://github.com/moditect/jfrunit

jlink

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

jMolecules

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

JobRunr

Distributed job scheduler. https://www.jobrunr.io/en/

jOOQ

Integrate SQL queries in Java. https://www.jooq.org/

jpackage

Create native installers and packages. https://www.baeldung.com/java14-jpackage

JReleaser

Package and distribute the application to Homebrew, Chocolatey and others. https://jreleaser.org/

JShell

Interactive shell to learn and prototype Java code. https://en.wikipedia.org/wiki/JShell

jsoup

HTML parser. https://jsoup.org/

libphonenumber

Parsing, formatting and validating phone numbers. https://github.com/google/libphonenumber

MapStruct

Code generator to map between bean types. https://mapstruct.org/

Maven Central Search (mcs)

Search dependency coordinates in Maven Central. https://github.com/mthmulders/mcs

Maven Dependency Plugin

Analyze and manipulate artifacts. https://maven.apache.org/plugins/maven-dependency-plugin/

Maven Enforcer Plugin

Enforce constraints such as the Maven or JDK version. The Maven Enforcer Plugin

Maven Projects Info Reports Plugin

Generate reports about the project. https://maven.apache.org/plugins/maven-project-info-reports-plugin/

Maven Versions Plugin / Gradle Versions Plugin

Manage artifact versions. https://www.mojohaus.org/versions-maven-plugin/ https://github.com/ben-manes/gradle-versions-plugin

Maven Wrapper

Manages Maven version and configuration so the application uses the same setup everywhere. https://maven.apache.org/wrapper/

Micrometer application monitoring

Deliver application metrics from Spring Boot. https://micrometer.io/

MicroStream

Java serializer that does not require you to implement an interface or put annotations in your classes. https://microstream.one/

Moduliths

Verify the modular structure for Spring Boot applications between modules based on ArchUnit. https://github.com/moduliths/moduliths

mvnd (Apache Maven Daemon)

Faster Maven builds. The mvnd

Old GroupIds Alerter Maven Plugin / Old GroupIds AlerterGradle Plugin

Checks for deprecated groupIds/ArtifactIds and suggests alternatives. https://github.com/jonathanlermitage/oga-maven-plugin https://github.com/jonathanlermitage/oga-gradle-plugin

OpenRewrite

Seach and transform Java applications, for instance to update frameworks, or to migrate to other frameworks. https://docs.openrewrite.org/

(OWASP) Dependency Check Maven / (OWASP) Dependency Check Gradle

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.

Passay

Library to enforce rules for passwords. https://www.passay.org/

Pebble Templates

Templating engine comparable to Handlebars https://pebbletemplates.io/

picocli

One file framework to create Java command line applications. https://picocli.info/

Playwright

End-to-end testing for web applications. https://playwright.dev/ No example yet

Pitest or PIT Mutation Testing

Test your unit tests by automatically changing production code and rerunning the tests to see if they still pass. The Pitest

Renovate

Creates pull requests to update the dependencies. https://docs.renovatebot.com/java/

Dependabot

Creates pull requests to update the dependencies. https://docs.github.com/en/code-security/dependabot

Resilience4j

Fault tolerance library. https://github.com/resilience4j/resilience4j No example yet

REST Assured

Test and validate REST services. https://rest-assured.io/

RESTEasy

Supports building REST applications. https://github.com/resteasy/Resteasy

Retrofit

Type safe HTTP client. https://square.github.io/retrofit/

ShedLock

Guarantees that scheduled tasks are executed at most once at the same time in a distributed environment. https://github.com/lukas-krecan/ShedLock

SDKMAN!

Manage multiple versions of Software Development Kits (SDK's). https://sdkman.io/

Spark

Perform data engineering, science and machine learning on a single machine and on clusters. https://spark.apache.org/ https://github.com/apache/spark

Testcontainers

Provides database, Selenium and many other containers to test against in unit tests. https://www.testcontainers.org/ https://github.com/testcontainers/testcontainers-java

Timefold

Solve planning and scheduling challenges such as vehicle routing, rostering, create schedules etcetera. https://timefold.ai/

Togglz

Feature flaggs. https://www.togglz.org/ https://github.com/togglz/togglz

Lightbend/TypeSafe config and tsc-reload

Load and reload configuration such as property files. https://github.com/lightbend/config https://github.com/arkadius/tsc-reload

Vavr

Functional library. https://www.vavr.io/ https://github.com/vavr-io/vavr

Wiremock

Create mock APIs. http://wiremock.org https://github.com/wiremock/wiremock

zxcvbn

Password strength estimator. Several implementations exist for Java. https://github.com/nulab/zxcvbn4j https://github.com/GoSimpleLLC/nbvcxz

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published