Library development

  • creating a jar/binary to use within other application, to provide some functionality

  • The user/consumer, can use the functionality how they see fit

  • This involves creating an API

    • A set of method signatures (method name, return type, inputs) as contracts that the use can use

      • This can include constructors, thus constructors need to be thought about too

    • This can lead to coupling, so changes to these api can break users

Design considerations

Backwards compatibility

Versioning

  • semantic

Tests

  • To check it works

  • To see how it works

    • Documented tests

    • example tests

Documentation

  • Java docs

  • wiki/readme

Access to library

  • Best to use a build (maven/gradle) and CI to create the binary, and push it to the repository

  • local

    • create jar, and add to class path

  • Allow users to create it locally

  • Create it and push it to a private/public repository (artifactory, maven, jitpack etc)

    • If paid, create and give it to them so they can add it

  • https://www.oracle.com/corporate/features/library-in-java-best-practices.html

  • https://www.youtube.com/watch?v=AX0e-Yi9f08 Writing a Java library with better experience -English version-

  • https://dzone.com/refcardz/java-api-best-practices

  • https://www.baeldung.com/design-a-user-friendly-java-library

  • https://jlbp.dev

Last updated