awesome-java
Java通用基础组件汇总列表
https://github.com/wangchongjie/awesome-java
Last synced: 27 days ago
JSON representation
Ancients
- Apache OpenNLP - Toolkit for common tasks like tokenization.
- Hudson - Continuous integration server still in active development.
- JavaCC - More specific and slightly easier to learn. Has syntactic lookahead.
- GlassFish - Application server and reference implementation for Java EE sponsored by Oracle.
- JavaServer Faces - Oracle's open-source implementation of the JSF standard, Mojarra.
- JavaServer Pages - Common templating for websites with custom tag libraries.
- Quartz - Open-source job scheduler library with Apache 2.0 license.
- Trove - Primitive collections.
- JUnit - Common testing framework.
- Java Modeling Language (JML) - Behavioral interface specification language that can be used to specify the behavior of code modules. It combines the design by contract approach of Eiffel and the model-based specification approach of the Larch family of interface specification languages, with some elements of the refinement calculus. Used by several other verification tools.
Bean Mapping
- JMapper - Using byte code manipulation for lightning fast mapping. Supporting annotations, API or XML configuration.
- MapStruct - Code generator which simplifies mappings between different bean types, based on a convention over configuration approach.
- Orika - Orika is a Java Bean mapping framework that recursively copies (among other capabilities) data from one object to another.
- Selma - Stupid Simple Statically Linked Mapper. Selma is an Annotation Processor Based bean mapper.
Bytecode Manipulation
- Byte Buddy - Further simplifies bytecode generation with a fluent API.
- ASM - All purpose, low level, bytecode manipulation and analysis.
- cglib - Bytecode generation library.
- Javassist - Tries to simplify the editing of bytecode.
Caching
- Caffeine - High performance, near optimal caching library.
Cluster Management
- Singularity - Singularity is a Mesos framework that makes deployment and operations easy. It supports web services, background workers, scheduled jobs, and one-off tasks.
Code Analysis
- Checkstyle - Static analysis of coding conventions and standards.
- Error Prone - Catches common programming mistakes as compile-time errors.
- PMD - Source code analysis for finding bad coding practices.
- FindBugs - Static analysis of bytecode to find potential bugs.
- Codacy - Continuous static analysis, code coverage, and software metrics to automate code reviews.
Code Coverage
Command-line Argument Parsers
- args4j - Small library to parse command like arguments similar to javac.
- JCommander - Command line arguments parsing framework with custom types and validation via implementing interfaces.
Communities
- r/java - Subreddit for the Java community.
- vJUG - Virtual Java User Group.
- stackoverflow - Question/answer platform.
Configuration
Continuous Integration
CSV
- Super CSV - Powerful CSV parser with support for Dozer, Joda-Time and Java 8.
- uniVocity-parsers - One of the fastest and most feature-complete CSV. Also comes with parsers for TSV and fixed width records.
- opencsv - Simple CSV parser with a commercial-friendly license.
Database
- Apache Hive - Data warehouse infrastructure built on top of Hadoop.
- H2 - Small SQL Database notable for its in-memory functionality.
- JDBI - Convenient abstraction of JDBC.
- jOOQ - Generates typesafe code based on SQL schema.
- Realm - Mobile database to run directly inside phones, tablets or wearables.
- Vibur DBCP - JDBC connection pool library which offers advanced performance monitoring capabilities.
- Chronicle Map - Efficient in-memory (opt. persisted to disk) off-heap key-value store.
- eXist - A NoSQL document database and application platform.
- FlexyPool - Brings metrics and failover strategies to the most common connection pooling solutions.
- HikariCP - High performance JDBC connection pool.
- Presto - Distributed SQL query engine for big data.
- Querydsl - Typesafe unified queries.
- Speedment - A database access library that utilizes the Java 8 Stream API for querying.
- Flyway - Simple database migration tool.
Data structures
- Apache Avro - Data interchange format featuring among others: dynamic typing, untagged data, absence of manually assigned IDs.
- Apache Orc - Fast and efficient columnar storage format for hadoop based workloads.
- Apache Thrift - Data interchange format that originated at Facebook.
- Protobuf - Google's data interchange format.
- Wire - Clean, lightweight protocol buffers.
- SBE - Simple Binary Encoding, one of the fastest message formats around.
Date and Time
- Almanac Converter - Simple conversion between different calendar systems.
- ThreeTenBP - Port of JSR 310 (java.time package) by the author of Joda-Time.
- Time4J - Advanced date and time library.
Dependency Injection
- Inversion of Control
- Apache DeltaSpike - CDI extension framework.
- HK2 - Light-weight and dynamic dependency injection framework.
- Guice - Lightweight but powerful framework that completes Dagger.
Development
- DCEVM - Modification of the JVM that allows unlimited redefinition of loaded classes at runtime.
- Immutables - Scala-like case classes.
- Lombok - Code-generator which aims to reduce the verbosity.
- ADT4J - JSR-269 code generator for algebraic data types.
- Auto - Collection of source code generators.
- HotswapAgent - Unlimited runtime class and resource redefinition.
- JHipster - Yeoman source code generator to create applications based on Spring Boot and AngularJS.
- Spring Loaded - Class reloading agent.
Distributed Applications
- Orbit - Virtual Actors, adding another level of abstraction to traditional actors.
- Quasar - Lightweight threads and actors for the JVM.
- Atomix - Fault-tolerant distributed coordination framework.
- Hystrix - Provides latency and fault tolerance.
- JGroups - Toolkit for reliable messaging and creating clusters.
- Apache Storm - Realtime computation system.
- Axon Framework - Framework for creating CQRS applications.
- Copycat - Fault-tolerant state machine replication framework.
Distribution
- Bintray - Version control for binaries which handles the publishing. Can also be used with Maven or Gradle and has a free plan for open-source software or several business plans.
- JitPack - Easy to use package repository for GitHub. Builds Maven/Gradle projects on demand and publishes ready-to-use packages.
- Nexus - Binary management with proxy and caching capabilities.
Formal Verification
- Daikon - Daikon detects likely program invariants and can generate JML specs based on those invariats.
- Java Path Finder (JPF) - JVM formal verification tool containing a model checker and more. Created by NASA.
- CATG - Concolic unit testing engine. Automatically generates unit tests using formal methods.
- OpenJML - Translates JML specifications into SMT-LIB format and passes the proof problems implied by the program to backend solvers.
- JMLOK 2.0 - Detects nonconformances between code and JML specification through the feedback-directed random tests generation, and suggests a likely cause for each nonconformance detected.
- KeY - The KeY System is a formal software development tool that aims to integrate design, implementation, formal specification, and formal verification of object-oriented software as seamlessly as possible. Uses JML for specification and symbolic execution for verification.
Frontends
Functional Programming
- Functional Java - Implements numerous basic and advanced programming abstractions that assist composition-oriented development.
- derive4j - Java 8 annotation processor and framework for deriving algebraic data types constructors, pattern-matching, morphisms.
- Fugue - Functional extensions to Guava.
- jOOλ - Extension to Java 8 which aims to fix gaps in lambda, providing numerous missing types and a rich set of sequential Stream API additions.
Game Development
- jMonkeyEngine - Game engine for modern 3D development.
- libGDX - All-round cross-platform, high-level framework.
- LWJGL - Robust framework that abstracts libraries like OpenGL/CL/AL.
Geospatial
- Geotoolkit.org - Library for developing geospatial applications. Built on top of the Apache SIS project.
- Geo - GeoHash utilities in Java.
GUI
- JavaFX - The successor of Swing.
- SWT - The Standard Widget Toolkit (SWT) is a graphical widget toolkit for use with the Java platform.
- Scene Builder - Visual layout tool for JavaFX applications.
High Performance
- HPPC - Primitive collections.
- GS Collections - Collection framework inspired by Smalltalk.
- JCTools - Concurrency tools currently missing from the JDK.
- Koloboke - Hash sets and hash maps.
- Agrona - Data structures and utility methods that are common in high-performance applications.
- fastutil - Fast and compact type-specific collections.
Imagery
- ZXing - Multi-format 1D/2D barcode image processing library.
- Imgscalr - Simple and efficient hardware-accelerated image-scaling library implemented in pure Java 2D.
- Thumbnailator - Thumbnailator is a high-quality thumbnail generation library for Java.
- TwelveMonkeys - Collection of plugins which extend the number of supported image file formats.
Influential Books
JSON
- Gson - Serializes objects to JSON and vice versa. Good performance with on-the-fly usage.
- Jackson - Similar to GSON but has performance gains if you need to instantiate the library more often.
- Jackson-datatype-money - Open-source Jackson module to support JSON serialization and deserialization of JavaMoney data types.
- JSON-io - Convert Java to JSON. Convert JSON to Java. Pretty print JSON. Java JSON serializer.
- LoganSquare - JSON parsing and serializing library based on Jackson's streaming API. Outperforms GSON & Jackson's library.
JSON Processing
- fastjson - Very fast processor with no additional dependencies and full data binding.
- Jolt - JSON to JSON transformation tool.
- JsonSurfer - Streaming JsonPath processor dedicated to processing big and complicated JSON data.
- JsonPath - Extract data from JSON using XPATH like syntax.
JVM and JDK
Logging
- Kibana - Analyzes and visualizes log files. Some features require payment.
- Logbook - Extensible, open-source library for HTTP request and response logging.
- Logstash - Tool for managing log files.
- Graylog - Open-source aggregator suited for extended role and permission management.
- Logback - Robust logging library with interesting configuration options via Groovy.
Machine Learning
- Apache Flink - Fast and reliable large-scale data processing engine.
- Apache Mahout - Scalable algorithms focused on collaborative filtering, clustering and classification.
- JSAT - Algorithms for pre-processing, classification, regression, and clustering with support for multi-threaded execution.
- Oryx 2 - A framework for building real-time large scale machine learning applications, which also includes end-to-end applications for collaborative filtering, classification, regression, and clustering.
- Weka - Collection of algorithms for data mining tasks ranging from pre-processing to visualization.
- DeepDive - Creates structured information from unstructured data and integrates it into an existing database.
- Deeplearning4j - Distributed and multi-threaded deep learning library.
- H2O - Analytics engine for statistics over big data.
Messaging
Miscellaneous
- Codename One - Cross platform solution for writing native mobile (iOS, Android, etc.)
- Design Patterns - Implementation and explanation of the most common design patterns.
- Failsafe - Simple failure handling with retries and circuit breakers.
- J2ObjC - Java to Objective-C translator for porting Android libraries to iOS.
- jabba - Java Version Manager inspired by nvm.
- Jimfs - In-memory file system.
- Lanterna - Easy console text GUI library similar to curses.
- Modern Java - A Guide to Java 8 - Popular Java 8 guide.
- TypeTools - Tools for resolving generic types.
- JPad - Snippet runner.
Monitoring
- Jolokia - JMX over REST.
- Kamon - Tool for monitoring applications running on the JVM.
- Prometheus - Provides a multi-dimensional data model, DSL, autonomous server nodes and much more.
- Glowroot - Open source Java APM.
- JavaMelody - Performance monitoring and profiling.
- Stagemonitor - Open source performance monitoring and transaction tracing for JVM apps.
- Pinpoint - Open source APM tool.
Native
- JNA - Work with native libraries without writing JNI. Also provides interfaces to common system libraries.
- JNR - Work with native libraries without writing JNI. Also provides interfaces to common system libraries. Same goals as JNA, but faster, and serves as the basis for the upcoming Project Panama.
Natural Language Processing
- DKPro - A collection of re-usable NLP tools for linguistic pre-processing, machine learning, lexical resources, etc.
- LingPipe - Toolkit for a variety of tasks ranging from POS tagging to sentiment analysis.
- CoreNLP - Stanford's CoreNLP provides a set of fundamental tools for tasks like tagging, named entity recognition, sentiment analysis and many more.
Networking
- Grizzly - NIO framework. Used as a network layer in Glassfish.
- Async Http Client - Asynchronous HTTP and WebSocket client library.
- Comsat - Integrates standard Java web-related APIs with Quasar fibers and actors.
- Finagle - Extensible RPC system used to construct high-concurrency servers. It implements uniform client and server APIs for several protocols, and is protocol agnostic, which simplifies the implementation of new protocols.
- gRPC - RPC framework based on protobuf and HTTP/2.
- Riptide - Client-side response routing for Spring's RestTemplate.
- urnlib - Java library for representing, parsing and encoding URNs as in RFC 2141.
- Undertow - Web server providing both blocking and non-blocking API’s based on NIO. Used as a network layer in WildFly.
- DynamicReports - Simplifies JasperReports.
- flyingsaucer - XML/XHTML and CSS 2.1 renderer.
- JasperReports - Complex reporting engine.
Performance analysis
- YourKit Java Profiler - Commercial profiler.
- jHiccup - Logs and records platform JVM stalls.
- LatencyUtils - Utilities for latency measurement and reporting.
- honest-profiler - An low-overhead, bias-free sampling profiler.
Podcasts
- The Java Posse - Discontinued as of 02/2015.
- The Java Council
Reactive libraries
- RxJava - Library for composing asynchronous and event-based programs using observable sequences from the JVM.
REST Frameworks
- Jersey - JAX-RS reference implementation.
- Dropwizard - Opinionated framework for setting up modern web applications with Jetty, Jackson, Jersey and Metrics.
- Microserver - monolith and pure microservices styles.
- rest.li - Framework for building robust, scalable RESTful architectures using type-safe bindings and asynchronous, non-blocking IO with an end-to-end developer workflow that promotes clean practices, uniform interface design and consistent data modeling.
- RestExpress - Thin wrapper on the JBoss Netty HTTP stack to provide scaling and performance.
- Feign - HTTP client binder inspired by Retrofit, JAXRS-2.0, and WebSocket.
- Restlet Framework - Pioneering framework with powerful routing and filtering capabilities, unified client and server API.