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!