Skip to content

Latest commit

 

History

History
45 lines (27 loc) · 2.81 KB

personal-picks.md

File metadata and controls

45 lines (27 loc) · 2.81 KB

Personal Picks: Good Java Libraries

Build

  • Maven - Uses XML configuration for declaring project structure, dependencies, and plugins. Not the prettiest, but the most straight forward of the systems for the most part.
  • Gradle - Uses Groovy to create a build script with configuration-like declarations. Incredibly flexible, but potentially to your own detriment. Easy to overcomplicate builds, and the plugin system deprecates dozens of features every release so updating often breaks your builds.
  • Saker.build - An interesting alternative to Gradle that supports more than just Java projects.

Bytecode

  • ASM - Arguably the best Java bytecode library out there currently. Its fast, abstracts away a lot of tedious aspects of the class file format, and is extremely well maintained.
  • ByteBuddy - Code generation / manipulation library built on top of ASM. Simplifies usage of ASM by a significant degree.

Command Line

  • picocli - "A mighty tiny CLI" is indeed a well-deserved description. Add a few annotations to classes representing your command line flags and arguments and the rest is done automatically for you.

Collections

Dependency Injection & CDI

  • Feather - Ultra-lightweight JSR-330 complaint library.
  • Dirk - Lightweight and customizable DI framework supporting JSR-330, Jakarta-Inject, and CDI. Documentation in main readme is top-notch.
  • Weld - Moving beyond DI, CDI offers a set of additional useful features. Weld is the CDI reference implementation.

Events

  • ssbus - Performance oriented event bus using runtime class generation.

Introspection / Reflection

  • deencapsulation & Venuzdonoa - Don't like Java 9+ modules? Just disable the module system then!
  • Objenesis - Allow instantiation of any object type by bypassing the constructor. Can be quite useful in some circumstances.

Json

  • Gson - The most popular Json library. API is stupid simple and is easily configured, though most situations should work out of the box.

Serialization

  • Kryo - Automatic binary serialization that isn't terrible. Highly configurable and can yield incredibly compact data formats when used well.