"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 Operation
A 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"