La classe Package représente un paquetage Java contenant un ensemble d'interfaces, de classes et d'exceptions.

Elle ne possède pas de constructeurs, mais peut être instanciée par l'intermédiaire de la méthode statique getPackage().

Package paquetage = Package.getPackage("javax.xml.parsers");

Une autre méthode dénommée getPackages() retourne tous les paquetages connus du chargeur de classe en cours, dans un tableau d'objets de type Package.

public class Paquetage {
  public static void main(String[] args) {
    Package[] paquetages = Package.getPackages();
    for(int i = 0; i < paquetages.length; i++){
      System.out.println("Le paquetage " + paquetages[i].getName());
    }
  }
}

Un objet Class dispose également d'une méthode permettant de renvoyer son propre paquetage d'appartenance, à partir de sa méthode d'instance getPackage()

Class obj = Class.forName("java.util.jar");
Package paquetage = obj.getPackage();

La classe Package est essentiellement composer de méthodes retournant des informations sur lui-même (get), et vérifiant des caractéristiques spécifiques (is).

Plusieurs informations relatives à l'implémentation et la spécification du paquetage, peuvent être obtenues sous la forme d'une chaîne de caractères, par les méthodes suivantes :

getImplementationTitle()retourne le titre du paquetage.
getImplementationVendor()retourne le nom de l'organisation, du vendeur ou de la compagnie qui a fournit l'implémentation.
getImplementationVersion()retourne la version de l'implémentation.
getSpecificationTitle()retourne le titre de la spécification que le paquetage implémente.
getSpecificationVendor()retourne le nom de l'organisation, du vendeur, ou de la compagnie qui possèdent et maintiennent la spécification des classes qui implément le paquetage.
getSpecificationVersion()retourne le numéro de version de la spécification que le paquetage implémente.
public class Paquetage {
    public static void main(String[] args) {
      if (args.length > 0){
        Package paquetage = Package.getPackage(args[0]);
        System.out.println(paquetage);
        if(paquetage != null){
          System.out.println("Distributeur implementation : " 
                                      + paquetage.getImplementationTitle());
          System.out.println("Version implementation : " 
                                      + paquetage.getImplementationVendor());
          System.out.println("Titre implementation : " 
                                      + paquetage.getImplementationVersion());
          System.out.println("Titre specification : " 
                                      + paquetage.getSpecificationTitle());
          System.out.println("Distributeur specification : " 
                                      + paquetage.getSpecificationVendor());
          System.out.println("Version specification : " 
                                      + paquetage.getSpecificationVersion());
        }
      }
    }
}

La méthode isCompatibleWith() permet de déterminer si la paquetage en cours est compatible avec le numéro de version de spécification spécifié en argument. Le numéro de version est composé de chiffres entiers séparés par des points ("."), comme par exemple 2.0 ou 1.3.6.

if (isCompatibleWith("2.5.1")){
    //Instructions...
}

Les méthodes isSealed() vérifient si le paquetage courant est scellé. En effet, les fichiers JAR et les paquetages peuvent être optionnellement scellés, de telle sorte qu'un paquetage puisse imposer une uniformité au sein d'une version. Un paquetage scellé dans un fichier JAR indique que toutes les classes définies dans ce paquetage doivent provenir du même fichier JAR. Dans le cas contraire, une exception SecurityException serait lancée.

if (paquetage.isSealed()){
    //Instructions...
}