"Editor's note" Java is almost an introductory language for many programmers, and is also a popular programming language in the world. Andreas Kull, a foreign programmer, has compiled a very good Java development resource on GitHub and recommended it to everyone. Translation completed by importnew-Tang Yuhua.
 
The following is a list of specific resources.
  
Build 
The tools used to build the application are collected here.
 
 
  
  - Apache Maven:maven is built with claims and relies on management, preferring to build using conventions rather than configurations. MAVEN is superior to Apache Ant. The latter is configured in a process-based manner, so it is very difficult to maintain.
- The Gradle:gradle is built incrementally. Gradle is configured with groovy programming instead of traditional XML declarations. Gradle works well with Maven for dependency management and treats the ant script as a first-class citizen.
byte code OperationA library of functions that programmatically manipulate Java bytecode.
 
 
  
  - ASM: generic underlying bytecode operation and analysis.
- Javassist: Try simplified characters section code editing.
- BYTE Buddy: Use the streaming API to further simplify bytecode generation.
 Code Analysis
Software metrics and quality assessment tools.
 
 
  
  - Checkstyle: Static analysis of programming specifications and standards.
- FindBugs: Identify potential bugs with bytecode static analysis.
- PMD: Analysis of bad programming habits in source code.
- SonarQube: Provides an evaluation of the final results report by integrating additional analysis components with plugins.
 Compiler
Creates a framework for parsers, interpreters, and compilers.
 
 
  
  - ANTLR: Fully functional top-down analysis of complex frames.
- JavaCC: Relative ANTLR more specific, easy to get started. Support for grammatical grammar prediction (syntactic lookahead).
 Continuous integration
Tools that support continuous integration, testing, and application publishing.
 
 
  
  - Bamboo:atlassian's Continuous Integration (CI) solution includes many other products.
- Circleci: Hosting services are available for free trial.
- Codeship: Provides hosting services and offers limited free programs.
- Go:thoughtwork Open source Continuous integration solution.
- Jenkins: Provides server-based deployment services.
- Teamcity:jetbrain Continuous Integration program with free version.
- Travis: Provides managed services, often used in open source projects.
 Database
Tools, libraries for simplifying database interaction.
 
 
  
  - Flyway: Easily complete database migrations with the Java API.
- H2: Small SQL database, known for memory operations.
- JDBI: A handy jdbc abstraction.
- Jooq: Generates type-safe code based on SQL schema.
- Presto: Distributed SQL query engine for big data.
- QUERYDSL: Type-Safe unified query for Java.
 Date and time
A library of functions that handle dates and times.
 
 
  
  - Before the advent of Joda-time:java 8, it was the standard library of functions for date and time processing.
- Time4j:java Advanced date, Time function library.
 Dependency Injection
A library of functions that help code implement control inversion mode.
 
 
  
  - Dagger: Compile-time injection framework, no reflection, used primarily for Android development.
- Guice: Lightweight injection frame, powerful and dagger comparable.
 Development Library
Improve the development process from the basic level.
 
 
  
  - AspectJ: Programming extensions for facets, seamlessly connected to programs.
- Auto: Source code generator collection.
- DCEVM: By modifying the JVM, the loaded classes can be redefined indefinitely at run time. OpenJDK 7, 8 has provided support, see this branch (fork) for details.
- JRebel: Commercial software, no need to redeploy to instantly reload code and configuration.
- Lombok: Code generator designed to reduce Java redundancy code.
- RxJava: Creates an asynchronous, event-based application library of functions using observable sequences in the JVM.
- Spring Loaded: Another JVM class overload proxy.
- VERT.X:JVM Multi-language event-driven application framework.
 Distributed applications
A library of functions and frameworks for developing distributed, fault-tolerant applications.
 
 
  
  - Akka: Build the Toolkit and runtime required for concurrent, distributed, and fault-tolerant event-driven applications.
- Apache Storm: Distributed real-time computing systems.
- Apache ZooKeeper: Provides coordination services for large distributed systems using distributed configuration, synchronization, and naming registrations.
- Hazelcast: Distributed, highly scalable memory grid.
- Hystrix: Provides latency and fault-tolerant processing for distributed systems.
- JGroups: A set of toolkits that provide reliable message transfer that can be used to create clusters. Nodes in the cluster can send messages to each other.
- Quasar: Provides lightweight threading and actor for the JVM.
 Release
Tools for distributing Java applications using native format.
 
 
  
  - Bintray: Versioning binary releases, which can be used in conjunction with MAVEN or Gradle.
- IzPack: Establish authorization tools for cross-platform deployments.
- LAUNCH4J: Wraps the jar as a compact Windows executable file.
- PACKR: Package The program jar, resources, and JVM into native files for Windows, Linux, and Mac OS X.
 Document processing
A library of functions used to process documents in office format.
 
 
  
  - Apache POI: Supports Ooxml (XLSX, DOCX, PPTX) as well as OLE2 (XLS, DOC or PPT)-formatted documents.
- Jopendocument: Handles OpenDocument format documents.
 Game development
Game development Framework.
 
 
  
  - Jmonkeyengine: A game engine that supports modern 3D development.
- LibGDX: A comprehensive cross-platform advanced development Framework.
- LWJGL: Abstract The robust framework of OpenGL, CL, AL and other libraries.
 Gui
A library of functions used to create a modern graphical user interface.
 
 
  
  - Successor to the javafx:swing.
- Scene builder:javafx Virtual Layout tool.
 Performance
Resources related to high-performance computing, including collections and function libraries for many specific functions.
 
 
  
  - Disruptor: The Inter-thread message function library.
- Fastutil: Fast and compact Java Type Security collection.
- GS Collections: A collection framework inspired by Smalltalk.
- Hftc:hash set and Hash map.
- HPPC: Base type collection.
- Javolution: A library of functions for real-time embedded systems.
- Trove: Base type collection.
 Ide
View simplifies the development of an integrated development environment.
 
 
  
  - Eclipse: The background does a lot of work, known for its rich plugins.
- IntelliJ idea: It supports many JVM languages and offers many good options for Android development. Its commercial version is primarily for enterprise users.
- NetBeans: Integrates a number of Java SE and Java EE features, including database access, servers, HTML5, and Angularjs.
 Image processing
A library of functions used to help create, evaluate, or manipulate graphics.
 
 
  
  - picasso:android download image and image cache function library.
- ZXing: One-dimensional, two-dimensional barcode processing function library in many formats.
 Json
A library of functions that simplifies JSON processing.
 
 
  
  - Gson: Serializes Java objects into JSON and reverse operations. Provides good performance when used.
- Jackson: Similar to Gson, but if you need to initialize the Jackson Library frequently, it can cause performance problems.
 JVM and JDK
The current JVM, JDK implementation.
 
 
  
  - JDK 9:JDK 9 Early Access version.
- OpenJDK: Open source implementation.
 Log
Logs the application's Log function library.
 
 
  
  - Apache log4j 2: A complete rewrite of the previous version. The current version has a powerful plug-in and configuration architecture.
- Kibana: Analyze the logs and visualize them.
- LOGBACK:LOG4J works of the original class. proved to be a robust library of log functions, with groovy providing many interesting configuration options.
- Logstash: Log file Management tool.
- SLF4J: The log abstraction layer, which needs to be used in conjunction with a specific log framework.
 Machine learning
Tools that provide specific statistical algorithms. Its algorithms can be learned from the data.
 
 
  
  - Apache Hadoop: Open source software framework for large-scale data storage and processing on commercial hardware clusters.
- Apache Mahout: An extensible algorithm that focuses on collaborative filtering, clustering, and classification.
- Apache Spark: Open source data analytics cluster computing framework.
- H2O: An analysis engine used as a big data statistic.
- Weka: A collection of algorithms that are used as data mining, from preprocessing to visualization at all levels.
 News
A tool for message passing between clients to ensure protocol independence.
 
 
  
  - Apache ActiveMQ: An open source message broker (broker) that implements JMS to convert synchronous traffic to asynchronous communication.
- Apache Kafka: High throughput distributed messaging system.
- JBoss HornetQ: Clear, accurate, modular and easy-to-embed messaging tools.
- JEROMQ:ZEROMQ's pure Java implementation.
 Other
Other resources.
 
 
  
  - Design Patterns: Implements and interprets the most common pattern of designs .
- JIMFS: Memory file system.
- Lanterna: Simple console text GUI function library similar to curses.
- Lightadmin: Pluggable Crud UI library that can be used for rapid application development.
- Metrics: Create your own software metrics or add metrics to the support framework, publish via JMX or HTTP, or send to a database.
- Openrefine: Tools for dealing with chaotic data, including cleanup, transformations, scaling with Web service, and associating it to a database.
- Robovm:java Write native iOS apps.
 Natural language Processing
A library of functions that are designed to handle text.
 
 
  
  - Apache OPENNL: Tools for dealing with common tasks like word breakers.
- CORENLP: Stan's CORENLP provides a set of basic tools to handle tasks like tagging, entity name recognition, and sentiment analysis.
- Lingpipe: A set of tools that can handle a variety of tasks, support POS tagging, sentiment analysis, and more.
- Mallet: Statistics natural Language Processing, document classification, clustering, theme modeling and so on.
 Internet
Network programming function Library.
 
 
  
  - Netty: Building a high-performance network application Development framework.
- OkHttp: A Http+spdy Client for Android and Java applications.
 Orm
An API that handles object persistence.
 
 
  
  - Eclipselink: Supports many persistence standards, JPA, JAXB, JCA, and SDO.
- Hibernate: A widely used, robust persistence framework. Hibernate's technical community is very active.
- Ebean: An ORM framework that supports fast data access and encoding.
 Pdf
The resource used to help create a PDF file.
 
 
  
  - Apache FOP: Create PDF from XSL-FO.
- Apache PDFBox: A toolset for creating and manipulating PDFs.
- Lite version of Dynamicreports:jasperreports.
- IText: A library of easy-to-use PDF libraries to program the creation of PDF files. Note that a license is required for commercial use.
- JasperReports: a complex reporting engine.
 Rest Framework
The framework used to create restful services.
 
 
  
  - Dropwizard: A Web framework that favors its own use. Used to build Web applications using jetty, Jackson, Jersey, and metrics.
- Jersey:jax-rs reference implementation.
- Resteasy: A portable implementation that is fully certified by the JAX-RS specification.
- Retrofit: A Java type-safe rest client.
- Spark: A Java rest framework inspired by Sinatra.
- Swagger:swagger is a normative and complete framework that provides the description, production, consumption, and visualization of restful Web Service.
 Science
Library of functions for scientific computation and analysis.
 
 
  
  - Scavis: For scientific Computing, data analysis and data visualization environments.
 Search
Document indexing engine for search and analysis.
 
 
  
  - Apache SOLR: A full enterprise search engine. Optimized for high-throughput communications.
- Elasticsearch: A distributed, support multi-tenant (multitenant) Full-text search engine. Provides a restful web interface and a JSON document without schema.
 Safety
A library of functions for handling security, authentication, authorization, or session management.
 
 
  
  - Apache Shiro: Performs authentication, authorization, encryption, and session management.
- Cryptomator: Client cross-platform transparent encryption on the cloud.
- Keycloak: Integrates SSO and IDM for browser apps and restful Web service. It is still in beta, but looks promising.
- Picketlink:picketlink is a large-scale project for security and authentication management for Java Applications (Umbrella project).
- Spring Security: Focus on authentication, authorization, and multi-dimensional attack protection frameworks.
 Serialization of
A library of functions for efficient processing of serialization.
 
 
  
  - Flatbuffers: Serialization library for efficient use of memory and efficient access to serialized data without unpacking and parsing.
- Kryo: Fast and efficient object graphics serialization framework.
- Messagepack: An efficient binary serialization format.
 Server
The server that is used to deploy the application.
 
 
  
  - Apache TOMCAT: Application servers for Servlets and JSPs are robust and adaptable.
- Apache Tomee:tomcat plus Java EE.
- Glassfish:java EE Open Source Reference implementation, developed by Oracle funding.
- Jetty: A lightweight, compact application server that is typically embedded in a project.
- WildFly: Previously known as JBoss, developed by Red Hat. Supports many Java EE features.
 Template engine
A tool to replace an expression in a template.
 
 
  
  - Apache Velocity: Provides HTML page templates, email templates, and common open source code generator templates.
- Freemarker: A generic template engine that does not require any heavyweight or self-employed dependencies.
- Handlebars.java: A template engine written in Java with simple logic and support for semantic extensions (semantic mustache).
- JavaServer Pages: Common Web site templates that support custom tag libraries.
- Thymeleaf: Designed to replace JSP, supporting XML files.
 Test
Test content from object to interface, covering performance testing and benchmarking tools.
 
 
  
  - Apache JMeter: Functional Testing and performance evaluation.
- Arquillian: Integration test and functional line test platform, integrated with Java EE container.
- ASSERTJ: Supports streaming assertions to improve the readability of tests.
- JMH:JVM Micro Benchmark test tool.
- JUnit: Generic test framework.
- Mockito: Create test objects in automated unit tests to provide support for TDD or BDD.
- Selenium: Provides a portable software testing framework for Web applications.
- Selenide: Provides selenium with a precise perimeter API to write stable and readable UI tests.
- TestNG: Test Framework.
- VisualVM: Provides a visual way to view running application information.
 Tool class
Generic tool class function library.
 
 
  
  - Apache Commons: Functions that provide a variety of uses, such as configuration, validation, collections, file uploads, or XML processing.
- Guava: Collections, caches, support primitives, concurrency libraries, general annotations, string processing, I/O, and so on.
- Javatuples: As the name indicates, tuple support is provided. Although the concept of a tuple is still controversial.
 Web crawler
A library of functions for analyzing site content.
 
 
  
  - Apache Nutch: A highly scalable, scalable web crawler that can be used in production environments.
- CRAWLER4J: A simple lightweight crawler.
- Jsoup: Scraping, parsing, manipulating, and cleaning up HTML.
 Web Framework
A framework for handling the different levels of communication between Web applications.
 
 
  
  - Apache Tapestry: A component-based framework that uses Java to create dynamic, robust, and highly extensible web applications.
- Apache Wicket: A component-based Web application framework, similar to tapestry with a status display GUI.
- Google Web Toolkit: A set of web development tools that includes compilers, XML parsers, RCP APIs, JUnit integrations, internationalization support, and GUI controls that convert Java code to JavaScript on the client.
- The Grails:groovy framework is designed to provide an efficient development environment that uses conventions rather than configurations, without XML, and supports mixing (mixin).
- Play: Use conventions rather than configurations to support code hot loading and display errors in the browser.
- PRIMEFACES:JSF framework, available in Free edition and with technical support for commercial editions. Contains some front-end components.
- Spring Boot: Micro-framework simplifies the development of new spring programs.
- Spring: Designed to simplify the Java EE development process, providing dependency injection-related components and supporting aspect-oriented programming.
- Vaadin: An event-driven framework built on GWT. Using the server-side architecture, the client uses Ajax.
- Ninja:java full stack Web development framework. Very stable, fast and efficient.
- Ratpack: A set of Java development function libraries for building fast, efficient, extensible, and well-tested HTTP applications.
 Community
An active discussion area.
 
 
  
  - The subreddit of the R/java:java community.
- StackOverflow: Question and answer platform.
 Books that have an impact
A Java classic book with a wide range of influences and worth reading.
 
 
  
  - Effective Java (2nd Edition)
- Java Concurrency in practice| Java Concurrent Programming Combat
- Thinking in java| Chinese version
 Podcast
Can be programmed while listening to something.
 
 Twitter
account that deserves attention.
 
 
 
 - Adam Bien: Freelance, writer, JavaOne star speaker, consultant, Java Champion.
- Antonio Goncalves:java Champion, JUG Leader, Devoxx France, Java EE 6/7, JCP, writer.
- Arun Gupta:java Champion, JavaOne star speaker, JUG Leader, Devoxx4kids member, Red Hatter.
- Bruno borges:oracle Product Manager, Java Jock.
- Ed burns:oracle Technical Team consultant.
- Eugen paraschiv:spring Security Course author.
- James Weaver:java, JavaFX, IoT developer, author, and speaker.
- Java Ee:java EE Twitter official account.
- Java Magazine:java Magazine official account.
- Java.net:Java.net official account.
- Java:java Twitter official account.
- Javin Paul: Well-known Java blog author.
- Lukas eder:data geekery (JOOQ) founder and CEO.
- Mario Fusco:redhatter, jug Coordinator, active lecturer and author.
- Mark Reinhold:oracle, chief architect, Java Platform Development Group.
- Martijn Verburg:london JUG Co-Leader, speakers, writers, Java champion, etc.
- OPENJDK:OPENJDK official account.
- Reza Rahman:java EE, GlassFish, WebLogic preacher, writer, speaker, open source hacker.
- Simon Maple:java Champion, Virtualjug founder, LJC leader, rebellabs author.
- Stephen Colebourne:java Champion, the speaker.
- Tim Boudreau: Author, NetBeans Daniel.
- Trisha Gee:java Champion, speaker.
 Website
Worth reading the website.
 
 
  
  - Google Java Style
- Infoq
- Java Code Geeks
- java.net
- Javalobby
- Javaworld
- Rebellabs
- The Java specialist ' Newsletter
- TheServerSide.com
- Thoughts on Java
- Importnew (importnew focus on Java technology)
Java Programmer "Resource Encyclopedia"