awesome-java
Java通用基础组件汇总列表
https://github.com/wangchongjie/awesome-java
Last synced: 7 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.
- 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.
- Launch4j - Wraps JARs in lightweight and native Windows executables.
-
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.
-
Build
- Bazel - Build tool from Google that builds code quickly and reliably.
-
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.
-
Code Coverage
- Cobertura - Relies on offline (or static) bytecode instrumentation and class loading to collect code coverage metrics; GPLv2 licensed.
-
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.
- 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
- JFlex - A lexical analyzer generator.
-
Configuration
-
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.
-
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.
- MapDB - Embedded database engine that provides concurrent collections backed on disk or in off-heap memory.
-
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.
- Joda-Time - De facto standard date/time-library before Java 8.
-
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.
- Dagger2 - Compile-time injection framework without reflection.
-
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.
- AspectJ - Seamless aspect-oriented programming extension.
- 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.
-
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.
- Capsule - Simple and powerful packaging and deployment. A fat JAR on steroids or a "Docker for Java" that supports JVM-optimized containers.
-
Document Processing
- Apache POI - Supports OOXML (XLSX, DOCX, PPTX) as well as OLE2 (XLS, DOC or PPT).
-
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.
- Javaslang - Functional component library that provides persistent data types and functional control structures.
-
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.
- H2GIS - A spatial extension of the H2 database.
-
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.
-
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.
- Genson - Powerful and easy to use Java to JSON conversion 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.
- 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.
- Apache Log4j 2 - Complete rewrite with a powerful plugin and configuration architecture.
-
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
-
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.
- 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.
- LightAdmin - Pluggable CRUD UI library for rapid application development.
-
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.
- SPM - Commercial performance monitor with distributing transaction tracing for JVM apps.
- 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.
- New Relic - Commercial performance monitor.
-
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](http://openjdk.java.net/projects/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.
Programming Languages
Categories
Twitter
37
Testing
34
Database
15
Websites
13
Miscellaneous
12
Ancients
12
Development
10
REST Frameworks
10
Distributed Applications
9
Security
9
Machine Learning
9
PDF
9
Networking
9
Monitoring
9
Formal Verification
8
Web Frameworks
8
Utility
7
Logging
7
High Performance
6
Data structures
6
JSON
6
Functional Programming
6
Influential Books
6
Performance analysis
5
Dependency Injection
5
Continuous Integration
5
Messaging
5
JSON Processing
4
Imagery
4
Distribution
4
Date and Time
4
JVM and JDK
4
Serialization
4
Podcasts
4
Code Analysis
4
Bean Mapping
4
Bytecode Manipulation
4
Command-line Argument Parsers
4
GUI
3
Natural Language Processing
3
Science
3
Geospatial
3
CSV
3
Game Development
3
Server
2
Communities
2
Native
2
Configuration
2
Search
2
Template Engine
2
Platform
1
Code Coverage
1
ORM
1
Document Processing
1
Frontends
1
Caching
1
Reactive libraries
1
Cluster Management
1
Web Crawling
1
Compiler-compiler
1
Build
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