Java相关的库/框架/软件
- Awesome Java
- Bean Mapping-Bean映射
- Build-构建
- Bytecode Manipulation-字节码操作
- Caching-缓存
- Code Analysis-代码分析
- Code Coverage-代码覆盖率
- Code Generators-代码生成
- Command-line Argument Parsers-命令行解析
- Compiler-compiler-编译器
- Configuration-配置
- CSV-CSV
- Data structures-数据结构
- Database-数据库
- Date and Time-日期和时间
- Dependency Injection-依赖注入
- Development-开发
- Distributed Applications-分布式应用
- Distributed Transactions-分布式事务
- Distribution-发布
- Document Processing-文档解析
- Functional Programming-函数式编程
- Geospatial-地理位置
- High Performance-高性能
- HTTP Clients-HTTP客户端
- IDE-IDE
- Imagery-图片
- JSON Processing-JSON处理
- JSON-JSON
- JVM and JDK-JVM和JDK
- Logging-日志
- Machine Learning-机器学习
- Messaging-消息
- Miscellaneous-杂项
- Monitoring-监控
- Microservice-微服务
- Networking-网络
- ORM-对象关系映射
- PDF-PDF
- Performance analysis-性能分析
- Platform-平台
- Reactive libraries-响应式
- REST Frameworks-REST框架
- Search-搜索
- Security-安全
- Serialization-序列化
- Server-服务器
- Template Engine-模板引擎
- Testing-测试
- Utility-工具
- Web Crawling-web爬虫
- Web Frameworks-web开发框架
- Version Managers-版本管理
- Resources-资源
bean映射相关的框架.
- Dozer - Mapper that copies data from one object to another using annotations and API or XML configuration.
- MapStruct - Code generator that simplifies mappings between different bean types, based on a convention-over-configuration approach.
build构建工具
- Apache Maven - java标准构建工具
- Gradle -基于Groovy取代xml的构建工具
编程操作字节码.
- ASM - All-purpose, low-level bytecode manipulation and analysis.
- Byte Buddy - Further simplifies bytecode generation with a fluent API.
- cglib - Bytecode generation library.
- Javassist - Tries to simplify bytecode editing.
提供缓存的库
- Caffeine - High-performance, near-optimal caching library.
- Ehcache - Distributed general-purpose cache.
- Infinispan - Highly concurrent key/value datastore used for caching.
都是为了保证代码质量
- Checkstyle - Static analysis of coding conventions and standards.
- Error Prone - Catches common programming mistakes as compile-time errors.
- Infer - Modern static analysis tool for verifying the correctness of code.
- jQAssistant - Static code analysis with Neo4J-based query language.
- NullAway - Eliminates NullPointerExceptions with low build-time overhead.
- SonarJava - Static analyzer for SonarQube & SonarLint.
- Sourcetrail ![c] - Visual source code navigator.
测试代码覆盖率
- Clover ![c] - Relies on source-code instrumentation instead of bytecode instrumentation.
- JaCoCo - Framework that enables collection of code coverage metrics, using both offline and runtime bytecode instrumentation.
代码生成降低重复编码.
- Auto - Generates factory, service, and value classes.
- FreeBuilder - Automatically generates the Builder pattern.
- Immutables - Annotation processors to generate simple, safe and consistent value objects.
- JavaPoet - API to generate source files.
- JHipster - Yeoman source code generator for Spring Boot and AngularJS.
- Joda-Beans - Small framework that adds queryable properties to Java, enhancing JavaBeans.
- Lombok - Code generator that aims to reduce verbosity.
更容易创建命令行工具.
- Airline - Annotation-based framework for parsing Git-like command-line arguments.
- JCommander - Command-line argument-parsing framework with custom types and validation via implementing interfaces.
- picocli - ANSI colors and styles in usage help. Can be included as source to avoid dependency. Annotation-based, POSIX/GNU/any syntax, subcommands, strong typing for both options and positional args.
创建解释器/编译器
用来抽象外部配置管理.
- cfg4j - Modern configuration library for distributed apps written in Java.
- config - Configuration library for JVM languages.
- owner - Reduces boilerplate of properties.
简化写入读取CSV.
- jackson-dataformat-csv - Jackson extension for reading and writing 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 parsers. Also comes with parsers for TSV and fixed-width records.
简化数据库操作.
- Apache Phoenix - High-performance relational database layer over HBase for low-latency applications.
- Chronicle Map - Efficient, in-memory (opt. persisted to disk), off-heap key-value store.
- FlexyPool - Brings metrics and failover strategies to the most common connection pooling solutions.
- Flyway - Simple database migration tool.
- H2 - Small SQL database notable for its in-memory functionality.
- HikariCP - High-performance JDBC connection pool.
- JDBI - Convenient abstraction of JDBC.
- Jedis - Small client for interaction with Redis, with methods for commands.
- Jest - Client for the Elasticsearch REST API.
- jetcd - Client library for etcd.
- jOOQ - Generates typesafe code based on SQL schema.
- Liquibase - Database-independent library for tracking, managing and applying database schema changes.
- MapDB - Embedded database engine that provides concurrent collections backed on disk or in off-heap memory.
- OrientDB - Embeddable distributed database written on top of Hazelcast.
- Presto - Distributed SQL query engine for big data.
- Realm - Mobile database to run directly inside phones, tablets or wearables.
- Redisson - Allows for distributed and scalable data structures on top of a Redis server.
- Xodus - Highly concurrent transactional schema-less and ACID-compliant embedded database.
高效率数据结构
- Apache Avro - Data interchange format with dynamic typing, untagged data, and absence of manually assigned IDs.
- Apache Orc - Fast and efficient columnar storage format for Hadoop-based workloads.
- Apache Parquet - Columnar storage format based on assembly algorithms from Google's paper on Dremel.
- Apache Thrift - Data interchange format that originated at Facebook.
- Protobuf - Google's data interchange format.
- Tape - A lightning-fast, transactional, file-based FIFO.
- Wire - Clean, lightweight protocol buffers.
操作日期和时间
便于实现控制反转IOC
- Dagger2 - Compile-time injection framework without reflection.
- Governator - Extensions and utilities that enhance Google Guice.
- Guice - Lightweight and opinionated framework that completes Dagger.
开发相关的东东
- AspectJ - Seamless aspect-oriented programming extension.
- DCEVM - JVM modification that allows unlimited redefinition of loaded classes at runtime.
- HotswapAgent - Unlimited runtime class and resource redefinition.
- JavaParser - Parse, modify and generate Java code.
- JRebel ![c] - Instantly reloads code and configuration changes without redeploys.
一些分布式应用框架.
- Apache Geode - In-memory data management system that provides reliable asynchronous event notifications and guaranteed message delivery.
- Apache Storm - Realtime computation system.
- Apache ZooKeeper - Coordination service with distributed configuration, synchronization, and naming registry for large distributed systems.
- Atomix - Fault-tolerant distributed coordination framework.
- Axon Framework - Framework for creating CQRS applications.
- Failsafe - Simple failure handling with retries and circuit breakers.
- Hazelcast ![c] - Highly scalable in-memory datagrid with a free open-source version.
- Hystrix - Provides latency and fault tolerance.
- JGroups - Toolkit for reliable messaging and cluster creation.
- Orbit - Virtual actors; adds another level of abstraction to traditional actors.
- Quasar - Lightweight threads and actors for the JVM.
- resilience4j - Functional fault tolerance library.
- Zuul - A gateway service that provides dynamic routing, monitoring, resiliency, security, and more.
分布式事务
- Atomikos - Provides transactions for REST, SOA and microservices with support for JTA and XA.
- Bitronix - A simple but complete implementation of the JTA 1.1 API.
- Narayana - Provides support for traditional ACID and compensation transactions, also complies with JTA, JTS and other standards.
发布打包
- Capsule - Simple and powerful packaging and deployment. A fat JAR on steroids, or a "Docker for Java" that supports JVM-optimized containers.
- 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.
- Nexus ![c] - Binary management with proxy and caching capabilities.
- packr - Packs JARs, assets and the JVM for native distribution on Windows, Linux and Mac OS X.
处理office文档
- Apache POI - Supports OOXML (XLSX, DOCX, PPTX) as well as OLE2 (XLS, DOC or PPT).
- documents4j - API for document format conversion using third-party converters such as MS Word.
- docx4j - Create and manipulate Microsoft Open XML files.
函数式编程
- cyclops-react - Monad and stream utilities, comprehensions, pattern matching, functional extensions for all JDK collections, future streams, trampolines and much more.
- Fugue - Functional extensions to Guava.
- Functional Java - Implements numerous basic and advanced programming abstractions that assist composition-oriented development.
- jOOλ - 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.
- StreamEx - Enhances Java 8 Streams.
- Vavr - Functional component library that provides persistent data types and functional control structures.
操作地理位置坐标
- Apache SIS - Library for developing geospatial applications.
- Geotoolkit.org - Library for developing geospatial applications. Built on top of the Apache SIS project.
- GeoTools - Library that provides tools for geospatial data.
- GraphHopper - Road-routing engine. Used as a Java library or standalone web service.
- H2GIS - A spatial extension of the H2 database.
高性能相关的操作和类库.
- Agrona - Data structures and utility methods that are common in high-performance applications.
- Disruptor - Inter-thread messaging library.
- Eclipse Collections - Collections framework inspired by Smalltalk.
- fastutil - Fast and compact type-specific collections.
- HPPC - Primitive collections.
- JCTools - Concurrency tools currently missing from the JDK.
- Koloboke - Hash sets and hash maps.
HTTP相关操作
- Async Http Client - Asynchronous HTTP and WebSocket client library.
- Feign - HTTP client binder inspired by Retrofit, JAXRS-2.0, and WebSocket.
- OkHttp - HTTP+SPDY client.
- Ribbon - Client-side IPC library that is battle-tested in cloud.
集成开发工具.
- Eclipse - 开源集成开发环境.
- IntelliJ IDEA -支持很多JVM语言的IDE,有社区版本和商业版本.
- NetBeans - JAVA SE和JAVA EE的开发环境.
操作图片
- Imgscalr - Simple, efficient and hardware-accelerated image-scaling library implemented in pure Java 2D.
- Thumbnailator - High-quality thumbnail generation library.
- TwelveMonkeys - Collection of plugins that extend the number of supported image file formats.
- ZXing - Multi-format 1D/2D barcode image processing library.
序列化/反序列化JSON/JAVA OBJ.
- Genson - Powerful and easy-to-use Java-to-JSON conversion library.
- Gson - Serializes objects to JSON and vice versa. Good performance with on-the-fly usage.
- HikariJSON - High-performance JSON parser, 2x faster than Jackson.
- jackson-modules-java8 - Set of Jackson modules for Java 8 datatypes and features.
- Jackson - Similar to GSON, but offers performance gains if you need to instantiate the library more often.
- jsoniter - Fast and flexible library with iterator and lazy parsing API.
- LoganSquare - JSON parsing and serializing library based on Jackson's streaming API. Outperforms GSON & Jackson's library.
- Moshi - Modern JSON library, less opinionated and uses built-in types like List and Map.
解析JSON格式
- fastjson - Very fast processor with no additional dependencies and full data binding.
- JsonPath - Extract data from JSON using XPATH-like syntax.
JVM和JDK的实现
- Avian - JVM with both JIT and AOT modes. Includes an iOS port.
- OpenJ9 - High performance, enterprise calibre, flexibly licensed, openly governed cross platform Java Virtual Machine extending and augmenting the runtime technology components from the Eclipse OMR and OpenJDK project.
- OpenJDK - Open-source implementation for Linux.
- ParparVM - VM with non-blocking, concurrent GC for iOS.
日志相关
- Apache Log4j 2 - Complete rewrite with a powerful plugin and configuration architecture.
- Kibana - Analyzes and visualizes log files. Some features require payment.
- Logback - Robust logging library with interesting configuration options via Groovy.
- Logstash - Tool for managing log files.
- SLF4J - Abstraction layer/simple logging facade.
机器学习
- Apache Flink - Fast, reliable, large-scale data processing engine.
- Apache Mahout - Scalable algorithms focused on collaborative filtering, clustering and classification.
- Apache Spark - Data analytics cluster-computing framework.
- DatumBox - Provides several algorithms and pre-trained models for natural language processing.
- Deeplearning4j - Distributed and multi-threaded deep learning library.
- H2O - Analytics engine for statistics over big data.
- Oryx 2 - Framework for building real-time, large-scale machine learning applications. 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.
事件消息.
- Aeron - Efficient, reliable, unicast and multicast message transport.
- Apache ActiveMQ - Message broker that implements JMS and converts synchronous to asynchronous communication.
- Apache Camel - Glues together different transport APIs via Enterprise Integration Patterns.
- Apache Kafka - High-throughput distributed messaging system.
- Hermes - Fast and reliable message broker built on top of Kafka.
- Nakadi - Provides a RESTful API on top of Kafka.
- RabbitMQ - RabbitMQ is the most widely deployed open source message broker.
查漏补缺
- CQEngine - Ultra-fast, SQL-like queries on Java collections.
- Design Patterns - Implementation and explanation of the most common design patterns.
- Failsafe - Simple failure handling with retries and circuit breakers.
- JBake - Static website generator.
- JBot - Framework for building chatbots.
- Jimfs - In-memory file system.
- Joda-Money - Basic currency and money classes and algorithms not provided by the JDK.
- LightAdmin - Pluggable CRUD UI library for rapid application development.
- Modern Java - A Guide to Java 8 - Popular Java 8 guide.
- Modernizer - Detect uses of legacy Java APIs.
- OpenRefine - Tool for working with messy data: cleaning, transforming, extending it with web services and linking it to databases.
- Polyglot for Maven - Extensions for Maven 3.3.1+ that allows writing the POM model in dialects other than XML.
- OctoLinker - Browser extension which allows to navigate through code on GitHub more efficiently.
管理微服务
- Apollo - Libraries for writing composable microservices.
- consul-api - Client for the Consul API: a distributed, highly available and datacenter-aware registry/discovery service.
- Eureka - REST-based service registry for resilient load balancing and failover.
在生产环境下监控java
- Glowroot - Open-source Java APM.
- inspectIT - Captures detailed run-time information via hooks that can be changed on the fly. It supports tracing over multiple systems via the OpenTracing API and can correlate the data with end user monitoring.
- JavaMelody - Performance monitoring and profiling.
- jmxtrans - Connect to multiple JVMs and query them for their attributes via JMX. Its query language is based on JSON, which allows non-Java programmers to access the JVM attributes. Supports different output writes, including Graphite, Ganglia, and StatsD.
- Kamon - Tool for monitoring applications running on the JVM.
- Metrics - Expose metrics via JMX or HTTP and send them to a database.
- Pinpoint - Open-source APM tool.
- Prometheus - Provides a multi-dimensional data model, DSL, autonomous server nodes and much more.
- Stagemonitor - Open-source performance monitoring and transaction tracing for JVM apps.
创建网络服务器
- Finagle - Extensible RPC system for constructing high-concurrency servers. It implements uniform client and server APIs for several protocols, and is protocol-agnostic to simplify implementation of new protocols.
- Grizzly - NIO framework. Used as a network layer in Glassfish.
- gRPC - RPC framework based on protobuf and HTTP/2.
- MINA - Abstract, event-driven async I/O API for network operations over TCP/IP and UDP/IP via Java NIO.
- Netty - Framework for building high-performance network applications.
- Nifty - Implementation of Thrift clients and servers on Netty.
- Undertow - Web server providing both blocking and non-blocking APIs based on NIO. Used as a network layer in WildFly.
ORM持久化
- Apache Cayenne - Provides a clean, static API for data access. Also includes a GUI Modeler for working with database mappings, and DB reverse engineering and generation.
- Ebean - Provides simple and fast data access.
- EclipseLink - Supports a number of persistence standards: JPA, JAXB, JCA and SDO.
- Hibernate - Robust and widely used, with an active community.
- MyBatis - Couples objects with stored procedures or SQL statements.
操作创建PDF
- Apache PDFBox - Toolbox for creating and manipulating PDFs.
- Dynamic Jasper - Abstraction layer to JasperReports.
- flyingsaucer - XML/XHTML and CSS 2.1 renderer.
- iText ![c] - Creates PDF files programmatically.
- JasperReports - Complex reporting engine.
性能分析及调优
- honest-profiler - A low-overhead, bias-free sampling profiler.
- jHiccup - Logs and records platform JVM stalls.
- JMH - a Java harness for building, running, and analysing nano/micro/milli/macro benchmarks written in Java and other languages targeting the JVM.
- JProfiler ![c] - Database profiling for JDBC, JPA and NoSQL, with JEE support.
- XRebel ![c] - Real-time profiling for web applications, with an in-browser widget.
一站式平台.
- Light-Java - A fast, lightweight and productive microservices framework with built-in security.
- Spring - Provides many packages for dependency injection, aspect-oriented programming, security, etc.
开发响应式应用
- Akka - Toolkit and runtime for building concurrent, distributed, fault-tolerant and event-driven applications.
- Reactive Streams - Provides a standard for asynchronous stream processing with non-blocking backpressure.
- Reactor - Library for building reactive fast-data applications.
- vert.x - Polyglot event-driven application framework.
创建REST服务
- Dropwizard - Opinionated framework for setting up modern web applications with Jetty, Jackson, Jersey and Metrics.
- Jersey - JAX-RS reference implementation.
- Microserver — A convenient, extensible microservices plugin system for Spring & Spring Boot. With more than 30 plugins and growing, it supports both micro-monolith and pure microservices styles.
- rest.li - Framework for building robust, scalable RESTful architectures using typesafe bindings and asynchronous, non-blocking IO with an end-to-end developer workflow that promotes clean practices, uniform interface design and consistent data modeling.
- RESTEasy - Fully certified and portable implementation of the JAX-RS specification.
- RestExpress - Thin wrapper on the JBoss Netty HTTP stack that provides scaling and performance.
- Spark - Sinatra inspired framework.
搜索引擎相关
- Apache Lucene - High-performance, full-featured, cross-platform, text search engine library.
- Apache Solr - Enterprise search engine optimized for high-volume traffic.
- Elasticsearch - Distributed, multitenant-capable, full-text search engine with a RESTful web interface and schema-free JSON documents.
Libraries that handle security, authentication, authorization or session management.
- Apache Shiro - Performs authentication, authorization, cryptography and session management.
- Cryptomator - Multiplatform, transparent, client-side encryption of files in the cloud.
- jjwt - JSON web token for Java and Android.
- Keycloak - Integrated SSO and IDM for browser apps and RESTful web services.
- Keywhiz - System for distributing and managing secrets.
- OACC - Provides permission-based authorization services.
- pac4j - Security engine.
- PicketLink - Umbrella project for security and identity management.
- Vault - Secures, stores, and tightly controls access to tokens, passwords, certificates, API keys, and other secrets. It handles leasing, key revocation, key rolling, and auditing. Through a unified API, users can access an encrypted Key/Value store and network encryption-as-a-service, or generate AWS IAM/STS credentials, SQL/NoSQL databases, X.509 certificates, SSH credentials, and more.
操作序列化
- FlatBuffers - Memory-efficient serialization library that can access serialized data without unpacking and parsing it.
- FST - JDK-compatible, high-performance object graph serialization.
- Kryo - Fast and efficient object graph serialization framework.
服务器相关
- Apache Tomcat - Robust, all-round server for Servlet and JSP.
- Jetty - Provides a Web server and javax.servlet container, plus support for HTTP/2, WebSocket, OSGi, JMX, JNDI, JAAS and many other integrations.
- nanohttpd - Tiny, easily embeddable HTTP server.
- WildFly - Formerly known as JBoss and developed by Red Hat with extensive Java EE support.
模板引擎
- Handlebars.java - Logicless and semantic Mustache templates.
- Jtwig - Modular, configurable and fully tested template engine.
- Thymeleaf - Aims to be a substitute for JSP and works for XML files.
测试相关
测试异步服务
- Awaitility - DSL for synchronizing asynchronous operations.
- GreenMail - In-memory email server for integration testing. Supports SMTP, POP3 and IMAP including SSL.
- REST Assured - DSL for easy testing of REST/HTTP services.
BDD
- Cucumber - Provides a way to describe features in a plain language which customers can understand.
- JBehave - Extensively configurable framework that describes stories.
- JGiven - Provides a fluent API which allows for simpler composition.
- Lamdba Behave - Aims to provide a fluent API to write tests in long and descriptive sentences that read like plain English.
生成随机数据
- Fixture Factory - Generates fake objects from a template.
- Randomized Testing - JUnit test runner and plugins for running JUnit tests with pseudo-randomness.
提供测试框架
- ArchUnit - Test library for specifying and asserting architecture rules.
- Apache JMeter - Functional testing and performance measurements.
- Arquillian - Integration and functional testing platform for Java EE containers.
- Citrus - Integration testing framework that focuses on both client- and server-side messaging.
- Gatling - Load testing tool designed for ease of use, maintainability and high performance.
- JUnit - Common testing framework.
- Pact JVM - Consumer-driven contract testing.
- PIT - Fast mutation-testing framework for evaluating fault-detection abilities of existing JUnit or TestNG test suites.
提供匹配支持.
- AssertJ - Fluent assertions that improve readability.
- JSONAssert - Simplifies testing JSON strings.
- Truth - Google's assertion and proposition framework.
虚拟相关对象.
- Mockito - Mocking framework that lets you write tests with a clean and simple API.
- MockServer - Allows mocking of systems integrated with HTTPS.
- Moco - Concise web services for stubs and mocks.
- PowerMock - Mocks static methods, constructors, final classes and methods, private methods, and removal of static initializers.
- WireMock - Stubs and mocks web services.
提供参数化测试方法
- Burst - A unit testing library for varying test data.
- JUnitParams - Creates readable and maintainable parametrised tests.
Libraries which provide general utility functions.
- Apache Commons - Provides configuration, validation, collections, file uploading, XML processing and other general-purpose functions.
- CRaSH - Provides a shell into a JVM that's running CRaSH. Used by Spring Boot and others.
- Dex - Java/JavaFX tool capable of powerful ETL and data visualization.
- Gephi - Cross-platform for visualizing and manipulating large graph networks.
- Guava - Collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O, and more.
- JavaVerbalExpressions - Library that helps with constructing difficult regular expressions.
- Protégé - Provides an ontology editor and a framework to build knowledge-based systems.
配置不同的JDK版本.
- jabba - Java Version Manager inspired by nvm. Supports Mac OS X, Linux and Windows.
- jenv - Java Version Manager inspired by rbenv. Can configure globally or per project. Tested on Debian and Mac OS X.
- SDKMan - Java Version Manager inspired by RVM and rbenv. Supports UNIX-based platforms and Windows.
爬虫.
- Apache Nutch - Highly extensible, highly scalable web crawler for production environments.
- Crawler4j - Simple and lightweight web crawler.
- jsoup - Scrapes, parses, manipulates and cleans HTML.
- StormCrawler - SDK for building low-latency and scalable web crawlers.
Web开发框架.
- Apache Tapestry - Component-oriented framework for creating dynamic, robust, highly scalable web applications.
- Apache Wicket - Component-based web application framework similar to Tapestry, with a stateful GUI.
- Blade - Lightweight, modular framework that aims to be elegant and simple.
- Firefly - Asynchronous framework for rapid development of high-performance web application.
- Jooby - Scalable, fast and modular micro-framework that offers multiple programming models.
- Play - Built on Akka, it provides predictable and minimal resource consumption (CPU, memory, threads) for highly-scalable applications in Java and Scala.
- Ratpack - Set of libraries that facilitate fast, efficient, evolvable and well-tested HTTP applications.
- Vaadin - Event-driven framework built on top of GWT. Uses server-side architecture with Ajax on the client side.
Active discussions.
- r/java - Subreddit for the Java community.
- stackoverflow - Question/answer platform.
- VirtualJUG - Virtual Java User Group.
必读书籍
- Core Java Volume I--Fundamentals
- Core Java, Volume II--Advanced Features
- Effective Java (3rd Edition)
- Java Concurrency in Practice
- Thinking in Java
网站.