awesome-java
Java通用基础组件汇总列表
https://github.com/wangchongjie/awesome-java
Last synced: 3 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.
- Trove - Primitive collections.
- 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.
- Apache Ant - Build process management with XML.
- Apache Velocity - Templates for HTML pages, emails or source code generation in general.
- FreeMarker - General templating engine without any heavyweight or opinionated dependencies.
- Launch4j - Wraps JARs in lightweight and native Windows executables.
- TestNG - Testing framework.
-
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.
- Dozer - Mapper that copies data from one object to another, using annotations, API or XML configuration.
- ModelMapper - ModelMapper is an intelligent object mapping library that automatically maps objects to each other.
-
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.
- jQAssistant - Static code analysis with Neo4J-based query language.
- SonarQube - Integrates other analysis components via plugins and provides an overview of the metrics over time.
-
Code Coverage
- Cobertura - Relies on offline (or static) bytecode instrumentation and class loading to collect code coverage metrics; GPLv2 licensed.
- JaCoCo - Framework that enables collection of code coverage metrics, using both offline and runtime bytecode instrumentation; prominently used by EclEmma, the Eclipse code-coverage plugin.
-
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.
- JOpt Simple - Simple parser that uses the POSIX getopt() and GNU getopt_long() syntaxes. Does not use annotations, uses a fluent API instead.
-
Communities
-
Compiler-compiler
- ANTLR - Complex full-featured framework for top-down parsing.
-
Configuration
-
Constraint Satisfaction Problem Solver
- Choco - Off-the-shelf constraint satisfaction problem solver, which uses constraint programming techniques.
- JaCoP - Includes an interface for the FlatZinc language, enabling it to execute MiniZinc models.
- OptaPlanner - Business planning and resource scheduling optimization solver.
-
Continuous Integration
- Bamboo - Atlassian's solution with good integration of their other products. You can either apply for an open-source license or buy it.
- fabric8 - Integration platform for containers.
- Go - ThoughtWork's open-source solution.
- Travis - Hosted service often used for open-source projects.
- Jenkins - Provides server-based deployment services.
- fabric8 - Integration platform for containers.
- Go - ThoughtWork's open-source solution.
-
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.
- Redisson - Allows for distributed and scalable data structures on top of a Redis server.
-
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.
- Persistent Collection - Persistent and immutable analogue of the Java Collections Framework.
-
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.
- JRebel - Commercial software that instantly reloads code and configuration changes without redeploys.
-
Distributed Applications
- Copycat - Fault-tolerant state machine replication framework.
- JGroups - Toolkit for reliable messaging and creating clusters.
- 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.
- Hazelcast - Highly scalable in-memory datagrid.
- Lagom - Framework for creating microservice-based systems.
-
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.
- Central Repository - Largest binary component repository available as a free service to the open-source community. Default used by Apache Maven and available in all other build tools.
- IzPack - Setup authoring tool for cross-platform deployments.
- packr - Packs JARs, assets and the JVM for native distribution on Windows, Linux and Mac OS X.
-
Document Processing
- Apache POI - Supports OOXML (XLSX, DOCX, PPTX) as well as OLE2 (XLS, DOC or PPT).
- docx4j - Creating and manipulating Microsoft Open XML files.
-
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.
- Checker Framework - Pluggable type systems. Includes nullness types, physical units, immutability types and more.
- 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.
- Checker Framework - Pluggable type systems. Includes nullness types, physical units, immutability types and more.
-
Frontends
-
Functional Programming
- Functional Java - Implements numerous basic and advanced programming abstractions that assist composition-oriented development.
- Javaslang - Functional component library that provides persistent data types and functional control structures.
- 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.
- cyclops-react - Monad and stream utilities, comprehensions, pattern matching, functional extensions for all JDK collections, future streams, trampolines and much more.
-
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.
- H2GIS - A spatial extension of the H2 database.
- Geo - GeoHash utilities in Java.
- GeoTools - Library that provides tools for geospatial data.
- H2GIS - A spatial extension of the H2 database.
- Jgeohash - Library that can assist Java developers in using the GeoHash algorithm.
- Mapsforge - Software for the rendering of maps based on OpenStreetMap data.
- Spatial4j - General purpose spatial/geospatial ASL licensed open-source Java library.
-
GUI
- Scene Builder - Visual layout tool for JavaFX applications.
- JavaFX - The successor of Swing.
- SWT - The Standard Widget Toolkit (SWT) is a graphical widget toolkit for use with the Java platform.
-
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.
- Disruptor - Inter-thread messaging library.
-
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
- JDK 9 - Early access releases of JDK 9.
- ParparVM - VM with non-blocking concurrent GC for iOS.
- OpenJDK - Open-source implementation for Linux.
- Avian - JVM with both a JIT & AOT modes. Includes an iOS port.
- Zulu OpenJDK 9 - Early access OpenJDK 9 builds for Windows, Linux, and Mac OS X.
- Zulu OpenJDK - OpenJDK builds for Windows, Linux, and Mac OS X through Java 8.
-
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.
- tinylog - Lightweight logging framework with static logger class.
- Graylog - Open-source aggregator suited for extended role and permission management.
- Logback - Robust logging library with interesting configuration options via Groovy.
- SLF4J - Abstraction layer which is to be used with an implementation.
- tinylog - Lightweight logging framework with static logger class.
-
Machine Learning
- Apache Flink - Fast and reliable large-scale data processing engine.
- Apache Mahout - Scalable algorithms focused on collaborative filtering, clustering and classification.
- Weka - Collection of algorithms for data mining tasks ranging from pre-processing to visualization.
- 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
- RocketMQ - A fast, reliable, and scalable distributed messaging platform.
- Aeron - Efficient reliable unicast and multicast message transport.
- Nakadi - Provides a RESTful API on top of Kafka.
- JeroMQ - Implementation of ZeroMQ.
- Apache Camel - Glues together different transport APIs via Enterprise Integration Patterns.
-
Miscellaneous
- Codename One - Cross platform solution for writing native mobile (iOS, Android, etc.)
- JPad - Snippet runner.
- Design Patterns - Implementation and explanation of the most common design patterns.
Programming Languages
Categories
Twitter
42
Testing
35
Database
15
Ancients
15
Websites
13
Miscellaneous
12
Distributed Applications
11
REST Frameworks
11
Monitoring
11
Networking
10
Machine Learning
9
Development
9
PDF
8
Geospatial
8
Formal Verification
8
Logging
8
Code Analysis
7
Security
7
Continuous Integration
7
High Performance
7
Data structures
7
Utility
7
JVM and JDK
6
Performance analysis
6
Distribution
6
Influential Books
6
Web Frameworks
6
Bean Mapping
6
Functional Programming
6
Messaging
5
JSON
5
Podcasts
4
Dependency Injection
4
Bytecode Manipulation
4
Serialization
4
JSON Processing
4
Imagery
4
CSV
3
Game Development
3
Date and Time
3
GUI
3
Constraint Satisfaction Problem Solver
3
Natural Language Processing
3
Reactive libraries
3
Command-line Argument Parsers
3
Communities
2
Server
2
Configuration
2
Native
2
Code Coverage
2
Search
2
Science
2
Web Crawling
2
Document Processing
2
ORM
1
Caching
1
Frontends
1
Cluster Management
1
Compiler-compiler
1
Template Engine
1
Sub Categories
Keywords
java
44
microservices
5
spring-boot
4
serialization
4
monitoring
4
rpc
4
java-8
3
static-analysis
3
spring
3
android
3
database
3
testing
2
data-structures
2
json
2
json-parser
2
test-driven-development
2
client-side
2
http
2
plugin-extension
2
spring-boot-starter
2
c
2
testing-tools
2
c-plus-plus
2
junit
2
grpc
2
marshalling
2
protobuf
2
kafka
2
messaging
2
java-library
2
connection-pool
2
annotation-processor
2
machine-learning
2
async
2
performance
2
static-code-analysis
2
javafx
2
code-quality
2
metrics
2
stream
2
apm
2
xml
1
high-performance
1
jdbc
1
cloning
1
kryo
1
tei-xml
1
nosql
1
native-xml-database
1
exist-db
1