==========
Byte Buddy
==========

byte-buddy-1.6.14.jar

- Not modular, and no Automatic-Module-Name manifest attribute.
  Module name is therefore derived from filename -> byte.buddy -> PROBLEM: illegal module name!
  
$ jar --file byte-buddy-1.6.14.jar --describe-module
  
  | Unable to derive module descriptor for: byte-buddy-1.6.14.jar
  | byte.buddy: Invalid module name: 'byte' is not a Java identifier
  
  Bummer for this library...what to do?  [see next]


byte-buddy-1.7.0.jar

- Not modular, but manifest includes Automatic-Module-Name attribute.
  Automatic-Module-Name: net.bytebuddy
  
- Among the earliest popular libraries to declare an Automatic-Module-Name -> net.bytebuddy.  Wonder why...  [see prev]
  First introduced in 1.7.0, 14-May-2017.

- Inspecting the JAR shows:
  - requires java.base mandated
  - contains <package.name>                 [list of all contained packages - automatic module exports all its packages]


byte-buddy-1.9.10.jar

- Is modular, complete with module-info.class - BUT not at the top level, it's in META-INF/versions/9.
  Module name is explicitly defined to be net.bytebuddy.

- This is a multi-release JAR (MR-JAR) -> see file InspectingJARs.txt for details.
  Add the --release flag to inspect the JAR.
  
$ jar --file byte-buddy-1.9.10.jar --describe-module --release 11

- Inspecting the JAR shows:
  - several 'requires' directives           [a JDK internal module! and another ByteBuddy module]
  - several global exports                  [same list as "all contained packages" in 1.7.0 above - not much reorg here]
