Splitting software into multiple applications and libraries. Most practical ways!

This page summarizes the projects mentioned and recommended in the original post on /r/java

Our great sponsors
  • WorkOS - The modern API for authentication & user identity.
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • Onboard AI - ChatGPT with full context of any GitHub repo.
  • app

    {:git/url "https://github.com/company/app" :deps/root "./libraries/log" :sha "1469cc96b85c2c65a52df9e3a4914dde1b4c816f"}

  • bach

    🎼 Bach Builds (on(ly)) Modules

    Projects like bach do serve to make the case that, if the resolution/build library piece were filled in, building and maintaining a multi module or multi-whatever project using just javac/jar/etc with Java build programs would be practical.

  • WorkOS

    The modern API for authentication & user identity. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • coursier

    Pure Scala Artifact Fetching

    Could a Java project use a similar scheme? Probably, but the practicality of that is dependent on programatic resolution tools like coursier which don't exist in a convenient form for Java programmers quite yet.

  • meyvn

    Next-gen builds for Clojure

    His other ask about developing against multiple codebases, that's what snapshot artifacts are for. And then the rest of the talk is about how he's made deps.edn, which is basically Apache Ivy in Clojure. I say Ivy and not Maven because it's only focused on dependency resolution, but then of course someone makes https://github.com/danielsz/meyvn to use the deps.edn for compile and publishing too, by delegating it back to Maven 🤦.

  • tools.deps.alpha

    A functional API for transitive dependency graph expansion and the creation of classpaths

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts