From graduation to the present work 4 years, their Lin Lin always has written a lot of precipitation and experience.

After sorting out the work experience yesterday, I found that it is helpful to review and help myself as well as others.

Decided to finish sorting out so many practical tools, put out and we share ~

The first part

build

Here is a collection of tools for building applications.

Apache Maven: Maven uses declarations to build and does dependency management, preferring to build using conventions rather than configurations. Maven is superior to Apache Ant. The latter is configured in a procedural manner, so it is quite difficult to maintain.

Gradle: Gradle builds incrementally. Gradle is configured through Groovy programming rather than traditional XML declarations. Gradle works well with Maven for dependency management and treats Ant scripts as first-class citizens.

Bytecode manipulation

A library of functions that programmatically manipulate Java bytecode.

ASM: Generic low-level bytecode manipulation and analysis.

Javassist: Try to simplify bytecode editing.

Byte Buddy: Further simplifies bytecode generation using a “streaming API.”

The code analysis

Software measurement and quality assessment tools.

Checkstyle: Static analysis of programming specifications and standards.

FindBugs: Find potential bugs through bytecode static analysis.

PMD: Analysis of bad programming habits in source code.

SonarQube: Integrates with other analysis components through plug-ins to provide reports on the final results of assessments.

The compiler

A framework for creating parsers, interpreters, and compilers.

ANTLR: Fully functional top-down analysis complex framework.

JavaCC: More concrete and slightly easier to get started with than ANTLR. Syntactic lookahead is supported.

Continuous integration

Tools that support continuous integration, testing, and application publishing.

Bamboo: Atlassian’s Continuous Integration (CI) solution, which includes many other products.

CircleCI: Offers hosting services with a free trial.

Codeship: Provides hosting services with limited free plans.

Go: ThoughtWork Open source continuous integration solution.

Jenkins: Provide server-based deployment services.

TeamCity: JetBrain continuous integration solution, available for free.

Travis: Provides a managed service, often used in open source projects.

The database

Tools and libraries to simplify database interaction.

Flyway: Easy database migration using Java apis.

H2: Small SQL database, known for memory manipulation.

JDBI: Convenient JDBC abstraction.

JOOQ: Generates type-safe code based on SQL Schema.

Presto: Distributed SQL query engine for big data.

Querydsl: Type safe unified queries for Java.

Date and time

A library of functions that handle dates and times.

Joda-time: Before Java 8, it was the standard library for date and Time processing.

Time4J: Java advanced date and time function library.

# Bold style # Part 2

Dependency injection

A library of functions to help code implement inversion of control patterns.

Dagger: Compile-time injection framework without reflection, used mainly for Android development.

Guice: Lightweight injection framework, as powerful as Dagger.

The development of the library

Improve the development process at the base level.

AspectJ: Section-oriented programming extensions that seamlessly connect to programs.

Auto: Collection of source code generators.

DCEVM: By modifying the JVM, loaded classes can be redefined unlimited times at run time. OpenJDK 7 and 8 already provide support. See this fork for more details.

JRebel: Commercial software that reloads code and configuration instantly without redeployment.

Lombok: Code generator designed to reduce Java code redundancy.

RxJava: Create libraries of functions for asynchronous, event-based applications using observable sequences in the JVM.

Spring Loaded: Another JVM class-loading agent.

Vert. x: JVM multilingual event-driven application framework.

Distributed application

Libraries and frameworks for developing distributed, fault-tolerant applications.

Akka: Toolkit and runtime needed to build concurrent, distributed, and fault-tolerant event-driven applications.

Apache Storm: Distributed real-time computing system.

Apache ZooKeeper: Provides coordination services for large distributed systems using distributed configuration, synchronization, and name registration.

Hazelcast: Distributed, highly scalable memory grid.

Hystrix: Provides delay and fault tolerant processing for distributed systems.

JGroups: A set of toolkits that provide reliable messaging and can be used to create clusters. Nodes in a cluster can send messages to each other.

Quasar: Provides lightweight threads and actors for the JVM.

The second part

release

Tools for distributing Java applications in native formats.

Bintray: Versioning binary publishing and can be used with Maven or Gradle.

IzPack: Build licensing tools for cross-platform deployment.

Launch4j: Wraps jars as small Windows executables.

Packr: Packages program JARS, resources, and JVMS as 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) and OLE2 (XLS, DOC or PPT) files.

JOpenDocument: Processes OpenDocument documents.

The game development

Game development framework.

JMonkeyEngine: A game engine that supports modern 3D development.

LibGDX: a comprehensive cross-platform advanced development framework.

LWJGL: A robust framework that abstracts libraries such as OpenGL, CL, AL, etc.

GUI

A library of functions used to create modern graphical user interfaces.

JavaFX: The successor to Swing.

Scene Builder: JavaFX virtual layout tool.

A high performance

Resources related to high performance computing, including collections and libraries of many specific functions.

Disruptor: A library of interthread message functions.

Fastutil: Fast and compact Java type-safe collection.

GS Collections: Smalltalk-inspired Collections framework.

HFTC: Hash set and Hash map.

HPPC: Collection of primitive types.

Javolution: A function library for real-time embedded systems.

Trove: Set of basic types.

IDE

View an integrated development environment that simplifies development.

Eclipse: Does a lot of work in the background and is known for its rich plug-ins.

IntelliJ IDEA: Supports many JVM languages and provides many good options for Android development. The commercial version is aimed primarily at enterprise users.

NetBeans: Integrates many Java SE and Java EE features, including database access, servers, HTML5, and AngularJS.

The image processing

A library of functions to help create, evaluate, or manipulate graphics.

Picasso: Android download images and image caching libraries.

ZXing: one-dimensional and two-dimensional bar code processing function library in a variety of formats.

JSON

A library of functions to simplify JSON processing.

Gson: Serialize Java objects to JSON and reverse. Provides excellent performance when used.

Jackson: Similar to GSON, but with performance issues if the Jackson library needs to be initialized frequently.

The JVM and the JDK

Current JVM, JDK implementation.

JDK 9: An early access version of JDK 9.

OpenJDK: Open source implementation.

The log

A library of logging functions for logging applications.

Apache Log4j 2: A complete rewrite of the previous version. The current version has a powerful plug-in and configuration architecture.

Kibana: Analyze and visualize logs.

Logback: Log4j. Turns out to be a robust library of logging functions, offering a lot of interesting configuration options through Groovy.

Logstash: Log file management tool.

SLF4J: Logging abstraction layer that needs to work with a concrete logging framework.

Continuous updates…

If you need complete information, you can send me a private message. I will send you the local version sorted before!