diff --git a/.github/workflows/update-readme.yml b/.github/workflows/update-readme.yml index b02700e7..c2c948d6 100644 --- a/.github/workflows/update-readme.yml +++ b/.github/workflows/update-readme.yml @@ -19,12 +19,12 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 # Fetch all history for git operations - name: Set up Java - uses: actions/setup-java@v4 + uses: actions/setup-java@v5 with: distribution: "temurin" java-version: "25" diff --git a/README.md b/README.md index e9b442ce..d3ebb8e4 100644 --- a/README.md +++ b/README.md @@ -118,6 +118,7 @@ _Frameworks and libraries that help implementing and verifying design and archit _Frameworks that help you to leverage LLMs and AI._ +- [JamJet](https://github.com/jamjet-labs/jamjet) - Agent runtime with a Java SDK for building AI agents, supporting graph-based workflow orchestration, multi-agent coordination, and MCP/A2A protocols. - [LangChain4j](https://github.com/langchain4j/langchain4j) - Simplifies integration of LLMs with unified APIs and a comprehensive toolbox. - [MCP Java SDK](https://github.com/modelcontextprotocol/java-sdk) - Enables applications to interact with AI models and tools through a standardized interface (i.e. Model Context Protocol), supporting both synchronous and asynchronous communication patterns. - [simple-openai](https://github.com/sashirestela/simple-openai) - Library to use the OpenAI API (and compatible ones) in the simplest possible way. @@ -144,6 +145,7 @@ _Tools that handle the build cycle and dependencies of an application._ - [Buck2](https://github.com/facebook/buck2) - Encourages the creation of small, reusable modules consisting of code and resources. - [Gradle](https://gradle.org) - Incremental builds programmed via Groovy instead of declaring XML. Works well with Maven's dependency management. +- [ReleaseRun](https://releaserun.com) - Dependency health checker for pom.xml and Gradle projects that scans for CVEs and outdated packages. ### Bytecode Manipulation _Libraries to manipulate bytecode programmatically._ @@ -186,6 +188,7 @@ _Libraries to assist with parsing command line arguments._ _Libraries that provide TUI frameworks, or building blocks related functions._ +- [AliveJTUI](https://github.com/yehorsyrin/alivejTUI) - Declarative, React-style TUI library for building terminal UIs as component trees with diff-based rendering, focus management, and themes. - [Jansi](https://github.com/fusesource/jansi) - ANSI escape codes to format console output. - [Jexer](https://gitlab.com/AutumnMeowMeow/jexer) - Advanced console (and Swing) text user interface (TUI) library, with mouse-draggable windows, built-in terminal window manager, and sixel image support. Looks like [Turbo Vision](https://en.wikipedia.org/wiki/Turbo_Vision). - [Text-IO](https://github.com/beryx/text-io) - Aids the creation of full console-based applications. @@ -222,6 +225,7 @@ _Frameworks and tools that enable code coverage metrics collection for test suit - [Clover](https://www.atlassian.com/software/clover) - Relies on source-code instrumentation instead of bytecode instrumentation. - [Cobertura](https://cobertura.github.io/cobertura/) - Relies on offline (or static) bytecode instrumentation and class loading to collect code coverage metrics. (GPL-2.0-only) +- [Delta Coverage](https://github.com/gw-kit/delta-coverage-plugin) - Computes code coverage of new and modified code based on a provided diff, supporting JaCoCo and IntelliJ coverage engines. - [JaCoCo](https://www.eclemma.org/jacoco/) - Framework that enables collection of code coverage metrics, using both offline and runtime bytecode instrumentation. ### Code Generators @@ -243,6 +247,7 @@ _Tools that generate patterns for repetitive code in order to reduce verbosity a - [JSpecify Package-Info Generator](https://github.com/bcaillard/jspecify-packageinfo-generator) - Maven plugin that automatically generates package-info.java files with JSpecify annotations (@NullMarked and @NullUnmarked), helping you manage nullness boundaries in your Java projects without manual boilerplate. - [Lombok](https://projectlombok.org) - Code generator that aims to reduce verbosity. - [Record-Builder](https://github.com/Randgalt/record-builder) - Companion builder class, withers and templates for Java records. +- [Spring CRUD Generator](https://github.com/mzivkovicdev/spring-crud-generator) - Maven plugin for generating Spring Boot CRUD applications from YAML/JSON specifications. - [Telosys](https://www.telosys.org/) - Simple and light code generator available as an Eclipse Plugin and also as a CLI. ### Compiler-compiler @@ -267,6 +272,7 @@ _Libraries that provide external configuration._ - [avaje config](https://avaje.io/config/) - Loads yaml and properties files, supports dynamic configuration, plugins, file-watching and config event listeners. - [centraldogma](https://github.com/line/centraldogma) - Highly-available version-controlled service configuration repository based on Git, ZooKeeper and HTTP/2. +- [ClearConfig](https://github.com/japgolly/clear-config-java) - Type-safe, composable configuration library with a focus on runtime clarity. - [config](https://github.com/lightbend/config) - Configuration library supporting Java properties, JSON or its human optimized superset HOCON. - [Configurate](https://github.com/SpongePowered/Configurate) - Configuration library with support for various configuration formats and transformations. - [Curator Framework](https://curator.apache.org/) - High-level API for Apache ZooKeeper. @@ -321,6 +327,7 @@ _Everything that simplifies interactions with the database._ - [Apache Calcite](https://calcite.apache.org) - Dynamic data management framework. It contains many of the pieces that comprise a typical database management system. - [Apache Drill](https://drill.apache.org) - Distributed, schema on-the-fly, ANSI SQL query engine for Big Data exploration. - [Apache Phoenix](https://phoenix.apache.org) - High-performance relational database layer over HBase for low-latency applications. +- [ArcadeDB](https://arcadedb.com) - Multi-model database supporting graphs, documents, key-value, time series, and vector embeddings with SQL, Cypher, Gremlin, MongoDB, and Redis API compatibility. - [ArangoDB](https://github.com/arangodb/arangodb-java-driver) - ArangoDB Java driver. - [Chronicle Map](https://github.com/OpenHFT/Chronicle-Map) - Efficient, in-memory (opt. persisted to disk), off-heap key-value store. - [Debezium](https://debezium.io/) - Low latency data streaming platform for change data capture. @@ -343,6 +350,7 @@ _Everything that simplifies interactions with the database._ - [MapDB](http://www.mapdb.org) - Embedded database engine that provides concurrent collections backed on disk or in off-heap memory. - [MariaDB4j](https://github.com/vorburger/MariaDB4j) - Launcher for MariaDB that requires no installation or external dependencies. - [Modality](https://github.com/arkanovicz/modality) - Lightweight ORM with database reverse engineering features. +- [Open J Proxy](https://github.com/Open-J-Proxy/ojp) - Type 3 JDBC driver and Layer 7 proxy server for decoupling applications from relational database connection management. - [OpenDJ](https://github.com/OpenIdentityPlatform/OpenDJ) - LDAPv3 compliant directory service, developed for the Java platform, providing a high performance, highly available, and secure store for the identities. - [Querydsl](http://www.querydsl.com) - Typesafe unified queries. - [QueryStream](https://github.com/querystream/querystream) - Build JPA Criteria queries using a Stream-like API. @@ -364,7 +372,7 @@ _Everything that simplifies interactions with the database._ _Libraries related to handling date and time._ - [iCal4j](https://github.com/ical4j/ical4j) - Parse and build iCalendar [RFC 5545](https://tools.ietf.org/html/rfc5545) data models. -- [Jollyday](https://github.com/svendiedrichsen/jollyday) - Determines the holidays for a given year, country/name and eventually state/region. +- [Jollyday](https://github.com/focus-shift/jollyday) - Determines the holidays for a given year, country/name and eventually state/region. - [ThreeTen-Extra](https://github.com/ThreeTen/threeten-extra) - Additional date-time classes that complement those in JDK 8. - [Time4J](https://github.com/MenoData/Time4J) - Advanced date and time library. (LGPL-2.1-only) @@ -381,6 +389,7 @@ _Libraries that help to realize the [Inversion of Control](https://en.wikipedia. - [Apache DeltaSpike](https://deltaspike.apache.org) - CDI extension framework. - [Avaje Inject](https://avaje.io/inject/) - Microservice-focused compile-time injection framework without reflection. - [Dagger](https://dagger.dev/) - Compile-time injection framework without reflection. +- [Dimension-DI](https://github.com/akardapolov/dimension-di) - JSR-330 runtime dependency injection using the JDK Class-File API. - [Feather](https://github.com/zsoltherpai/feather) - Ultra-lightweight, JSR-330-compliant dependency injection library. - [Governator](https://github.com/Netflix/governator) - Extensions and utilities that enhance Google Guice. - [Guice](https://github.com/google/guice) - Lightweight and opinionated framework that completes Dagger. @@ -456,6 +465,7 @@ _Libraries that assist with processing office document formats._ - [documents4j](https://documents4j.com/#/) - API for document format conversion using third-party converters such as MS Word. - [docx4j](https://www.docx4java.org/trac/docx4j) - Create and manipulate Microsoft Open XML files. - [fastexcel](https://github.com/dhatim/fastexcel) - High performance library to read and write large Excel (XLSX) worksheets. +- [Sheetz](https://github.com/chitralabs/sheetz) - Library for reading and writing Excel and CSV files with annotation-based mapping, streaming support, and built-in validation. - [zerocell](https://github.com/creditdatamw/zerocell) - Annotation-based API for reading data from Excel sheets into POJOs with focus on reduced overhead. ### Financial @@ -491,6 +501,7 @@ _Libraries that facilitate functional programming._ - [Functional Java](http://www.functionaljava.org) - Implements numerous basic and advanced programming abstractions that assist composition-oriented development. - [jOOλ](https://github.com/jOOQ/jOOL) - Extension to Java 8 that aims to fix gaps in lambda by providing numerous missing types and a rich set of sequential Stream API additions. - [Packrat](https://github.com/jhspetersson/packrat) - Gatherers library for Java Stream API. Gatherers can enhance streams with custom intermediate operations. +- [Parallel Collectors](https://github.com/pivovarit/parallel-collectors) - Stream API Collectors for parallel processing with custom thread pools, designed for I/O-heavy workloads. - [protonpack](https://github.com/poetix/protonpack) - Collection of stream utilities. - [StreamEx](https://github.com/amaembo/streamex) - Enhances Java 8 Streams. - [Vavr](https://www.vavr.io) - Functional component library that provides persistent data types and functional control structures. @@ -500,6 +511,7 @@ _Libraries that facilitate functional programming._ _Frameworks that support the development of games._ - [FXGL](https://almasb.github.io/FXGL/) - JavaFX Game Development Framework. +- [input4j](https://gurkenlabs.github.io/input4j/) - Lightweight, cross-platform library for gamepad and joystick input handling. - [JBox2D](http://www.jbox2d.org/) - Port of the renowned C++ 2D physics engine. - [jMonkeyEngine](https://jmonkeyengine.org) - Game engine for modern 3D development. - [libGDX](https://libgdx.com) - All-round cross-platform, high-level framework. @@ -762,10 +774,12 @@ _Everything else._ - [LittleProxy](https://github.com/adamfisk/LittleProxy) - High performance HTTP proxy atop Netty's event-based networking library. - [Modern Java - A Guide to Java 8](https://github.com/winterbe/java8-tutorial) - Popular Java 8 guide. - [Modernizer](https://github.com/gaul/modernizer-maven-plugin) - Detect uses of legacy Java APIs. +- [Nyagram](https://github.com/kaleert/nyagram) - Reactive, type-safe framework for Telegram bots based on Spring Boot 3 and Java 21. - [OctoLinker](https://github.com/OctoLinker/OctoLinker) - Browser extension which allows to navigate through code on GitHub more efficiently. - [OpenRefine](http://openrefine.org) - Tool for working with messy data: cleaning, transforming, extending it with web services and linking it to databases. - [PipelinR](https://github.com/sizovs/pipelinr) - Small utility library for using handlers and commands with pipelines. - [Polyglot for Maven](https://github.com/takari/polyglot-maven) - Extensions for Maven 3.3.1+ that allows writing the POM model in dialects other than XML. +- [Rollgate](https://rollgate.io) - Cloud-managed feature flag platform with a Java SDK, supporting gradual rollouts, A/B testing, and real-time updates. - [RR4J](https://github.com/Kartikvk1996/RR4J) - RR4J is a tool that records java bytecode execution and later allows developers to replay locally. - [Simple Java Mail](https://github.com/bbottema/simple-java-mail) - Mailing with a clean and fluent API. - [Smooks](https://github.com/smooks/smooks) - Framework for fragment-based message processing. (Apache-2.0 OR LGPL-3.0-or-later) @@ -865,6 +879,7 @@ _APIs that handle the persistence of objects._ - [EclipseLink](https://www.eclipse.org/eclipselink/) - Supports a number of persistence standards: JPA, JAXB, JCA and SDO. - [Hibernate](http://hibernate.org/orm/) - Robust and widely used, with an active community. (LGPL-2.1-only) - [MyBatis](https://github.com/mybatis/mybatis-3) - Couples objects with stored procedures or SQL statements. +- [mybatis-dynamic](https://github.com/myacelw/mybatis-dynamic) - Code-first dynamic ORM for MyBatis with runtime schema modification. - [MyBatis-Plus](https://github.com/baomidou/mybatis-plus) - A powerful enhanced toolkit of MyBatis for simplifying development. - [ObjectiveSql](https://github.com/braisdom/ObjectiveSql) - ActiveRecord ORM for rapid development and convention over configuration. - [Permazen](https://github.com/permazen/permazen) - Language-natural persistence layer. @@ -910,10 +925,12 @@ _Tools for performance analysis, profiling and benchmarking._ - [fastThread ![c]](https://fastthread.io) - Analyze and visualize thread dumps with a free cloud-based upload interface. - [GCeasy ![c]](https://gceasy.io) - Tool to analyze and visualize GC logs. It provides a free cloud-based upload interface. - [honest-profiler](https://github.com/jvm-profiling-tools/honest-profiler) - Low-overhead, bias-free sampling profiler. +- [Heap Seance](https://github.com/SegfaultSorcerer/heap-seance) - Memory leak diagnostics that orchestrates jcmd, jmap, jstat, JFR, Eclipse MAT, and async-profiler into a structured investigation workflow with confidence-based verdicts. - [jHiccup](https://github.com/giltene/jHiccup) - Logs and records platform JVM stalls. - [JITWatch](https://github.com/AdoptOpenJDK/jitwatch) - Analyze the JIT compiler optimisations made by the HotSpot JVM. - [JMH](http://openjdk.java.net/projects/code-tools/jmh/) - Harness for building, running, and analysing nano/micro/milli/macro benchmarks written in Java and other languages targeting the JVM. (GPL-2.0 only WITH Classpath-exception-2.0) - [LatencyUtils](https://github.com/LatencyUtils/LatencyUtils) - Utilities for latency measurement and reporting. +- [JVM Hotpath](https://github.com/sfkamath/jvm-hotpath) - Java agent for line-level execution frequency analysis to identify algorithmic bottlenecks. ### Platform @@ -1057,6 +1074,7 @@ _Libraries that handle security, authentication, authorization or session manage - [Apache Shiro](https://shiro.apache.org) - Performs authentication, authorization, cryptography and session management. - [Ayza](https://github.com/Hakky54/ayza) - High-level SSL configuration builder for configuring HTTP clients and servers with SSL/TLS. - [Bouncy Castle](https://www.bouncycastle.org/java.html) - All-purpose cryptographic library and JCA provider offering a wide range of functions, from basic helpers to PGP/SMIME operations. +- [Certificate Ripper](https://github.com/Hakky54/certificate-ripper) - CLI tool and library for extracting and exporting server certificates from HTTPS endpoints. - [DependencyCheck](https://github.com/jeremylong/DependencyCheck) - Detects publicly disclosed vulnerabilities contained within a project's dependencies. - [Cryptomator](https://cryptomator.org) - Multiplatform, transparent, client-side encryption of files in the cloud. (GPL-3.0-only) - [Hdiv](https://github.com/hdiv/hdiv) - Runtime application that repels application security risks included in the OWASP Top 10, including SQL injection, cross-site scripting, cross-site request forgery, data tampering, and brute force attacks. @@ -1077,6 +1095,7 @@ _Libraries that handle security, authentication, authorization or session manage - [Themis](https://github.com/cossacklabs/themis) - Multi-platform high-level cryptographic library provides easy-to-use encryption for protecting sensitive data: secure messaging with forward secrecy, secure data storage (AES256GCM); suits for building end-to-end encrypted applications. - [Tink](https://github.com/google/tink) - Provides a simple and misuse-proof API for common cryptographic tasks. - [Topaz](https://www.topaz.sh) - Fine-grained authorization for applications with support for RBAC, ABAC, and ReBAC. +- [MOSS](https://central.sonatype.com/artifact/com.mosscomputing/moss-sdk) - Cryptographic signing for AI agents using ML-DSA-44 post-quantum signatures, creating audit trails for attribution and compliance. ### Serialization @@ -1140,6 +1159,7 @@ _Testing for the software development process that emerged from TDD and was heav - [J8Spec](https://github.com/j8spec/j8spec) - Follows a Jasmine-like syntax. - [JBehave](https://jbehave.org) - Extensively configurable framework that describes stories. - [JGiven](http://jgiven.org) - Provides a fluent API which allows for simpler composition. +- [Kensa](https://github.com/kensa-dev/kensa) - Code-first BDD framework for Java and Kotlin that generates interactive HTML reports and sequence diagrams from test code. - [Lamdba Behave](https://github.com/RichardWarburton/lambda-behave) - Aims to provide a fluent API to write tests in long and descriptive sentences that read like plain English. - [Serenity BDD](https://github.com/serenity-bdd/serenity-core) - Automated Acceptance testing and reporting library that works with Cucumber, JBehave and JUnit to make it easier to write high quality executable specifications. @@ -1200,8 +1220,10 @@ _Other stuff related to testing._ - [pojo-tester](https://www.pojo.pl) - Automatically performs tests on basic POJO methods. (LGPL-3.0-only) - [raml-tester](https://github.com/nidi3/raml-tester) - Tests if a request/response matches a given RAML definition. - [Selfie](https://github.com/diffplug/selfie) - Snapshot testing (inline and on disk). +- [skipper-java](https://github.com/get-skipper/skipper-java) - Real-time test execution control via Google Spreadsheet, enabling instant toggle without code changes. - [Stebz](https://github.com/stebz/stebz) - Multi-approach framework for test steps managing. - [Testcontainers](https://github.com/testcontainers/testcontainers-java) - Provides throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container. +- [Java Evolved](https://javaevolved.github.io/) - Side-by-side comparisons of legacy and modern Java patterns. #### Mocking @@ -1233,12 +1255,16 @@ _Libraries which provide general utility functions._ - [JADE](https://jade.tilab.com) - Framework and environment for building and debugging multi-agent systems. (LGPL-2.0-only) - [Javadoc Publisher](https://github.com/MathieuSoysal/Javadoc-publisher.yml) - Generate Javadoc from your maven/gradle project and deploy it automatically on GitHub Page. - [Java Diff Utils](https://java-diff-utils.github.io/java-diff-utils/) - Utilities for text or data comparison and patching. +- [java-util](https://github.com/jdereg/java-util) - Zero-dependency, high-performance utilities featuring Converter (universal type conversion), DeepEquals, CaseInsensitiveMap, TTLCache, CompactMap, MultiKeyMap, and object graph traversal. - [JavaVerbalExpressions](https://github.com/VerbalExpressions/JavaVerbalExpressions) - Library that helps with constructing difficult regular expressions. +- [Jctx](https://github.com/Shashwat-Gupta57/jctx) - Reads a Java project and generates a structured context file so AI tools can understand and help plan the codebase. - [JGit](https://www.eclipse.org/jgit/) - Lightweight, pure Java library implementing the Git version control system. - [JKScope](https://github.com/evpl/jkscope) - Java scope functions inspired by Kotlin. +- [java-refined](https://github.com/JunggiKim/java-refined) - Zero-dependency refinement types for Java 8+ with type-safe wrappers covering numerics, strings, and collections. - [minio-java](https://github.com/minio/minio-java) - Provides simple APIs to access any Amazon S3-compatible object storage server. - [Protégé](https://protege.stanford.edu) - Provides an ontology editor and a framework to build knowledge-based systems. - [Semver4j](https://github.com/semver4j/semver4j) - Lightweight library that helps you handling semantic versioning with different modes. +- [Sift](https://github.com/Mirkoddd/Sift) - Type-safe, AST-based Regex Builder focused on readability and ReDoS prevention. - [Underscore-java](https://github.com/javadev/underscore-java) - Port of Underscore.js functions. ### Version Managers @@ -1277,6 +1303,7 @@ _Frameworks that handle the communication between the layers of a web applicatio - [PrimeFaces](https://www.primefaces.org) - JSF framework with both free and commercial/support versions and frontend components. - [Ratpack](https://ratpack.io) - Set of libraries that facilitate fast, efficient, evolvable and well-tested HTTP applications. - [Takes](https://github.com/yegor256/takes) - Opinionated web framework which is built around the concepts of True Object-Oriented Programming and immutability. +- [tinystruct](https://github.com/tinystruct/tinystruct) - Lightweight, pluggable framework for building Java applications with CLI, HTTP, and modular extension support. - [Vaadin](https://vaadin.com) - Full-stack open-source Java framework that simplifies web app development. Build complex, interactive applications with Java alone, and enhance with TypeScript and React components, without needing deep JavaScript, CSS, or HTML expertise. - [WebForms Core](https://github.com/webforms-core) - A technology for managing HTML tags from the server. - [Erupt](https://github.com/erupts/erupt) - Annotation-Driven Low-Code & JPA Visualization @@ -1400,6 +1427,7 @@ _Sites to read._ - [Java, SQL, and jOOQ](https://blog.jooq.org) - [Java.net](https://community.oracle.com/community/java) - [Javalobby](https://dzone.com/java-jdk-development-tutorials-tools-news) +- [TheCodeForge Java Tutorials](https://thecodeforge.io/java/) - [JavaWorld](https://www.javaworld.com) - [JAXenter](https://jaxenter.com) - [RebelLabs](https://zeroturnaround.com/rebellabs) @@ -1415,4 +1443,4 @@ Contributions are very welcome! Please have a look at the [CONTRIBUTING](https://github.com/akullpp/awesome-java/blob/master/CONTRIBUTING.md) guidelines and [the validation tools](https://github.com/akullpp/awesome-java-lint). -[c]: https://cdn.rawgit.com/akullpp/23246ca832bda82bb505230bf3538e2a/raw/d9bcdb769bf025292f9c6bc1290f01f1fcd1f864/commercial.svg \ No newline at end of file +[c]: https://cdn.rawgit.com/akullpp/23246ca832bda82bb505230bf3538e2a/raw/d9bcdb769bf025292f9c6bc1290f01f1fcd1f864/commercial.svg