Sort common resources based on java platform, and organize java Platform
Common resources based on the java platform are sorted out here.
Translation from: akullpp | awesome-java
Everyone learns and makes progress together.
If it is useful, mark it, like it, or comment it out to let more people know. Thanks.
Build
The tools used to build applications are collected here.
- Apache Maven: Maven uses declarations for building and dependency management. It prefers to use conventions instead of configurations for building. Maven is better than Apache Ant. The latter adopts a procedural method for configuration, so maintenance is quite difficult.
- Gradle: Gradle is incremental. Gradle uses Groovy programming instead of traditional XML declarations for configuration. Gradle can be used with Maven for dependency management, and Ant scripts can be used as first-class citizens.
Bytecode operation
Programming the Java bytecode function library.
- ASM: common underlying bytecode operation and analysis.
- Javassist: attempts to simplify bytecode editing.
- Byte Buddy: Uses stream API to further simplify bytecode generation.
Code Analysis
Software Measurement and quality evaluation tools.
- Checkstyle: Static Analysis of programming specifications and standards.
- FindBugs: identifies potential bugs Through static bytecode analysis.
- PMD: Analyze bad programming habits in source code.
- SonarQube: integrates other analysis components through the plug-in to provide the final evaluation result report.
Compiler
Create a framework for analyzer, interpreter, and compiler.
- Anlr: A Comprehensive top-down analysis complex framework.
- JavaCC: it is more specific than anlr and easier to get started. Supports syntaxes and syntaxes (syntactic lookahead ).
Continuous Integration
Supports continuous integration, testing, and application release tools.
- Bamboo: continuous integration (CI) solution of Atlassian, including many other products.
- CircleCI: Provides hosting services for free trial.
- Codeship: Provides hosting services and limited free plans.
- Go: ThoughtWork open-source continuous integration solution.
- Jenkins: provides server-based Deployment services.
- TeamCity: continuous integration solution for JetBrain, which is available in the free version.
- Travis: Provides hosting services and is often used in open-source projects.
Database
Tools and libraries that simplify database interaction.
- Flyway: use Java APIs to easily migrate databases.
- H2: A small SQL database, known for memory operations.
- JDBI: convenient JDBC abstraction.
- JOOQ: generate type security code based on SQL schema.
- Presto: distributed SQL query engine for big data.
- Querydsl: Unified query for Java type security.
Date and Time
The date and time function library.
- Joda-Time: before the emergence of Java 8, it is a standard function library for date and Time processing.
- Time4J: Java advanced date and time function library.
Dependency Injection
Function library that helps code implement control reversal mode.
- Dagger: Injection framework in the compilation phase, which does not use reflection and is mainly used for Android development.
- Guice: a lightweight injection framework with powerful functions comparable to Dagger.
Development Library
Improve the development process at the basic level.
- AspectJ: supports cross-section programming extensions and seamless connection with programs.
- Auto: a collection of source code generators.
- DCEVM: by modifying the JVM, You can redefine loaded classes infinitely at runtime. OpenJDK 7 and 8 are supported. For details, see this branch (fork ).
- JRebel: commercial software. Code and configuration can be re-loaded immediately without redeployment.
- Lombok: code generator designed to reduce redundant Java code.
- RxJava: Creates asynchronous and event-based function libraries using the observed sequence in JVM.
- Spring Loaded: Another JVM class overload proxy.
- Vert. x: JVM multi-language event-driven application framework.
Distributed Application
Function libraries and frameworks used to develop distributed and fault-tolerant applications.
- Akka: Toolkit and runtime required to build concurrent, distributed, and fault-tolerant event-driven applications.
- Apache Storm: Distributed Real-time computing system.
- Apache ZooKeeper: it is a large-scale distributed system that provides coordination services using distributed configuration, synchronization, and name registration.
- Hazelcast: distributed, highly scalable memory grid.
- Hystrix: Provides latency and fault tolerance for distributed systems.
- JGroups: A toolkit that provides reliable message transmission for creating clusters. Nodes in the cluster can send messages to each other.
- Quasar: Provides Lightweight threads and Actor for JVM.
Release
A tool that distributes Java applications in the local format.
- Bintray: Version Control for Binary release, which can be used with Maven or Gradle.
- IzPack: used to create an authorization tool for cross-platform deployment.
- Launch4j: Package JAR files into small Windows executable files.
- Packr: packages program JAR, resources, and JVM into local files for Windows, Linux, and Mac OS X.
Document Processing
Function library used to process documents in Office format.
- Apache POI: supports OOXML (XLSX, docx, PPTX) and OLE2 (XLS, DOC or PPT) files.
- JOpenDocument: Process 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: abstracts the robust frameworks of libraries such as OpenGL, CL, and AL.
GUI
This function is used to create a function library for modern graphic user interfaces.
- JavaFX: the successor of Swing.
- Scene Builder: JavaFX virtual layout tool.
High Performance
Resources related to high-performance computing, including collections and function libraries with many specific functions.
- Disruptor: the message function library between threads.
- Fastutil: a fast and compact Java type security set.
- GS Collections: A Collection framework inspired by Smalltalk.
- Hftc: Hash set and hash map.
- HPPC: a set of basic types.
- Javolution: A function library for real-time embedded systems.
- Trove: a set of basic types.
IDE
View simplifies the integrated development environment for development.
- Eclipse: the background has done a lot of work and is known for its rich plug-ins.
- IntelliJ IDEA: supports many JVM languages and provides many good options for Android development. Its commercial version is intended for enterprise users.
- NetBeans: integrates many Java SE and Java EE features, including database access, servers, HTML5, and AngularJS.
Image Processing
A function library used to help create, evaluate, or operate graphics.
- Picasso: Android downloads image and image cache function libraries.
- ZXing: one-and two-dimensional bar code processing function libraries in multiple formats.
JSON
A function library that simplifies JSON processing.
- Gson: serialize Java objects into JSON and reverse operations. It provides good performance during use.
- Jackson: similar to GSON, but frequent Jackson library initialization may cause performance problems.
JVM and JDK
Current JVM and JDK implementations.
- JDK 9: an earlier version of JDK 9.
- OpenJDK: open-source implementation.
Logs
Record the application's log function library.
- Apache Log4j 2: The previous version is completely rewritten. The current version has a powerful plug-in and configuration architecture.
- Kibana: analyzes and visualizes logs.
- Logback: the original work of Log4j. It turns out to be a robust log function library and many interesting configuration options are provided through Groovy.
- Logstash: a log file management tool.
- SLF4J: log abstraction layer, which must be used with a specific log framework.
Machine Learning
Provides tools for specific statistical algorithms. Its algorithms can be learned from data.
- Apache Hadoop: Open-Source Software Framework for large-scale data storage and processing on commercial hardware clusters.
- Apache Mahout: A scalable algorithm that focuses on collaborative filtering, clustering, and classification.
- Apache Spark: open-source data analysis cluster computing framework.
- H2o: Used as an analysis engine for big data statistics.
- Weka: a set of algorithms used for data mining, from preprocessing to visualization.
Message
A tool that transmits messages between clients to ensure protocol independence.
- Apache ActiveMQ: implements the open-source message proxy (broker) of JMS, which can convert synchronous communication to asynchronous communication.
- Apache Kafka: A high-throughput distributed message system.
- JBoss HornetQ: a clear, accurate, modular, and easy-to-embed messaging tool.
- JeroMQ: pure Java implementation of ZeroMQ.
Others
Other resources.
- Design Patterns: Implements and explains the most common Design Patterns.
- Jimfs: memory file system.
- Lanterna: A simple console text GUI function library similar to curses.
- LightAdmin: plug-in crud ui function library for Rapid Application Development.
- Metrics: Create your own software metric or add measurement information for the supported framework, publish it through JMX or HTTP, or send it to the database.
- OpenRefine: a tool used to process chaotic data, including cleaning, transforming, using Web Service for extension, and associating it to a database.
- RoboVM: Write native iOS applications in Java.
Natural Language Processing
Function library used to process texts.
- Apache OpenNL: a tool used to process common tasks such as word segmentation.
- CoreNLP: stanfo's CoreNLP provides a set of basic tools for processing tasks such as tags, entity name recognition, and sentiment analysis.
- LingPipe: a set of tools that can process various tasks and support POS tags and sentiment analysis.
- Mallet: Statistics Natural Language Processing, document classification, clustering, topic modeling, etc.
Network
Network programming function library.
- Netty: Build a high-performance network application development framework.
- OkHttp: an HTTP + SPDY client for Android and Java applications.
ORM
APIS that process Object persistence.
- EclipseLink: supports many persistence standards, such as JPA, JAXB, JCA, and SDO.
- Hibernate: a widely used and robust persistence framework. The Hibernate technology community is very active.
- Ebean: supports fast data access and encoding ORM framework.
PDF
Resources used to help create PDF files.
- Apache FOP: Create a PDF from a XSL-FO.
- Apache Development Box: a set of tools used to create and operate PDF files.
- DynamicReports: A lite version of JasperReports.
- IText: An easy-to-use PDF function library used to program the creation of PDF files. Note: a license is required for commercial purposes.
- JasperReports: a complex report engine.
REST framework
The framework used to create a RESTful service.
- Dropwizard: A Web framework that you prefer to use. Used to build Web applications, using Jetty, Jackson, Jersey, and Metrics.
- Jersey: JAX-RS reference implementation.
- RESTEasy: fully certified portable implementation by JAX-RS specifications.
- Keep fit: a Java-type secure REST client.
- Spark: a Java REST framework inspired by Sinatra.
- Swagger: Swagger is a standardized and complete framework that provides descriptions, production, consumption, and visualization of RESTful Web Services.
Science
Function library for scientific computing and analysis.
- SCaVis: Used in scientific computing, data analysis, and data visualization environments.
Search
The document index engine is used for search and analysis.
- Apache Solr: a complete enterprise search engine. High-throughput communication is optimized.
- Elasticsearch: a distributed, multi-tenant full text search engine. Provides RESTful Web interfaces and JSON documents without schema.
Security
Function library for security, authentication, authorization, or session management.
- Apache Shiro: Performs authentication, authorization, encryption, and session management.
- Cryptomator: transparent client-side encryption on the cloud.
- Keycloak: integrates SSO and IDM for browser applications and RESTful Web Services. It is still in beta, but it looks very promising.
- PicketLink: PicketLink is a large-scale Project for Java application security and identity authentication management (Umbrella Project ).
- Spring Security: focuses on the authentication, authorization, and multi-dimensional attack protection framework.
Serialization
Function library used to efficiently process serialization.
- FlatBuffers: serialization function library, efficient use of memory, efficient access to serialized data without unpacking and parsing.
- Kryo: a fast and efficient object graphics serialization framework.
- MessagePack: an efficient binary serialization format.
Server
The server used to deploy the application.
- Apache Tomcat: Applicable to Servlet and JSP application servers with good robustness and applicability.
- Apache TomEE: Tomcat and Java EE.
- GlassFish: Java EE open source reference implementation, funded by Oracle.
- Jetty: a lightweight and small application server, usually embedded in a project.
- WildFly: formerly known as JBoss, developed by Red Hat. Supports many Java EE functions.
Template engine
A tool used to replace expressions in a template.
- Apache Velocity: provides HTML page templates, email templates, and general open source code generator templates.
- FreeMarker: A general template engine that does not require any heavyweight or self-used dependencies.
- Handlebars. java: The template engine written in Java is simple in logic and supports semantic extension (semantic Mustache ).
- Assumerver Pages: a common website template that supports custom tag libraries.
- Thymeleaf: it is designed to replace JSP and supports XML files.
Test
The test content covers performance testing and benchmarking tools from objects to interfaces.
- Apache JMeter: functional testing and performance evaluation.
- Arquillian: An Integrated Testing and functional testing platform that integrates Java EE containers.
- AssertJ: supports stream assertions to improve the readability of the test.
- JMH: a JVM microbenchmark testing tool.
- JUnit: General testing framework.
- Mockito: creates test objects in automated unit tests to support TDD or BDD.
- Selenium: Provides portable software testing frameworks for Web applications.
- Selenide: provides precise peripheral APIs for Selenium to write stable and readable UI tests.
- TestNG: test framework.
- VisualVM: allows you to visually view information about running applications.
Tool
Common tool library.
- Apache Commons: provides functions for various purposes, such as configuration, verification, collection, file upload, and XML processing.
- Guava: Set, cache, support for basic types, concurrent function libraries, common annotations, string processing, I/O, etc.
- Javatuples: Provides tuple support as the name indicates. Although the concept of tuple is still controversial.
Web Crawler
Function library used to analyze website content.
- Apache Nutch: highly scalable Web Crawler that can be used in production environments.
- Crawler4j: simple lightweight crawler.
- JSoup: scrape, parse, operate, and clear HTML.
Web Framework
A framework used to process communication between different layers of Web applications.
- Apache Tapestry: A component-based framework that uses Java to create dynamic, robust, and highly scalable Web applications.
- Apache Wicket: A component-based Web application framework, similar to the Status display GUI of Tapestry.
- Google Web Toolkit: a set of Web development tools, including the compiler, XML parser, rcp api, JUnit integration, international support, and GUI controls that convert Java code to JavaScript on the client.
- Grails: Groovy framework, designed to provide an efficient development environment, using conventions instead of configuration, without XML, and supporting mixin ).
- Play: Uses conventions instead of configurations. It supports code hot loading and displays errors in the browser.
- PrimeFaces: JSF framework, which provides the free version and commercial version with technical support. Contains some front-end components.
- Spring Boot: microframework, which simplifies the development process of new Spring programs.
- Spring: aims to simplify the Java EE development process, provide dependency injection-related components, and support for Aspect-Oriented Programming.
- Vaadin: a gwt-based event-driven framework. The server architecture is used, and the client uses Ajax.
- Ninja: Java full-stack Web development framework. Very stable, fast, and efficient.
- Ratpack: A group of Java development libraries used to build fast, efficient, scalable, and test complete HTTP applications.
Resource community
Active discussion board.
- R/java: Subreddit of the Java Community.
- Stackoverflow: Q & A platform.
Influential books
A classic Java book with a wide range of influences and worth reading.
- Valid Java (2nd Edition)
- Java Concurrency in Practice | Java concurrent programming Practice
- Thinking in Java | Chinese Version
Podcasts
Something that can be programmed and listened.
Twitter
Accounts worth attention.
- Adam Bien: freelancer, writer, JavaONE star speaker, Consultant, Java Champion.
- Antonio Goncalves: Java Champion, JUG Leader, Devoxx France, Java EE 6/7, JCP, and writers.
- Arun Gupta: Java Champion, JavaONE star speaker, JUG Leader, member of copyright xx4kids, and Red Hatter.
- Bruno Borges: Oracle product manager and Java Jock.
- Ed Burns: Oracle Technical Team consultant.
- Eugen Paraschiv: Author of the Spring security course.
- James Weaver: Java, JavaFX, IoT developers, authors and speakers.
- Java EE: official account of Java EE Twitter.
- Java Magazine: the official account of Java Magazine.
- Java.net: official account of Java.net.
- Java: Java Twitter official account.
- Javin Paul: well-known author of Java blogs.
- Lukas Eder: Founder and CEO of Data Geekery (jOOQ.
- Mario Fusco: RedHatter, JUG coordination, active lecturer and author.
- Mark Reinhold: chief architect of Oracle and Java platform development team.
- Martijn Verburg: London JUG co-leader, speaker, writer, and Java Champion.
- OpenJDK: the official account of OpenJDK.
- Reza Rahman: Java EE, GlassFish, WebLogic evangelist, writer, speaker, and open source hacker.
- Simon Maple: Founder of Java Champion, virtualJUG, LJC leader, and RebelLabs.
- Stephen Colebourne: Java Champion, speaker.
- Tim Boudreau: writer, NetBeans Daniel.
- Trisha Gee: Java Champion, speaker.
Website
Websites worth reading.
- Google Java Style
- InfoQ
- Java Code Geeks
- Java.net
- Javalobby
- JavaWorld
- RebelLabs
- The Java Specialist 'Newsletter
- TheServerSide.com
- Thoughts On Java
- ImportNew (ImportNew focuses on Java Technology)
Translation from: akullpp | awesome-java
Everyone learns and makes progress together.
If it is useful, mark it, like it, or comment it out to let more people know. Thanks.