Différence entre le fichier .jar et le fichier .dll

J’apprends Java ces jours-ci et j’ai passé beaucoup de temps avec .NET alors quand je veux exporter ou importer des bibliothèques, elles sont généralement au format .dll appelé assemblage dans l’environnement .Net et elles sont compilées en IL et ils peuvent avoir des ressources comme les images, XML, audio et son sur toutes les manières.

Je me demande aussi le même processus en Java. J’ai lu des documents mais ils m’ont en fait confondu et pour clarifier les choses, j’ai besoin de votre aide, les gars.

Des questions:

  1. .NET Assembly est la même chose que java .jar?
  2. .dll contient du code IL compilé et .jar contient des fichiers de code .class / byte respectés?
  3. Ils disent des ressources, de quel genre de ressources parlons-nous ici? Images, fichiers .txt, etc. ou tous possibles?

  4. J’ai examiné AWS (API Amazon Web Service pour Java) et j’ai vu trois fichiers .jar et ils sont

    1. aws-java-sdk-1.1.1.jar
    2. aws-java-sdk-1.1.1-javadoc.jar
    3. aws-java-sdk-1.1.1-sources.jar

et ils contiennent des fichiers .class – une documentation Java au format html et des fichiers .java qui ne sont toujours pas compilés. Alors, j’ai réalisé que .jar n’inclut pas seulement les codes d’octets compilés (.class) et d’autres choses.

  1. Lorsque je souhaite importer des bibliothèques Java, dois-je toujours importer des fichiers .jar?
  2. Lorsque je veux exporter mes propres bibliothèques java, dois-je exporter dans un fichier .jar.

Merci d’avance pour votre aide.

Est-ce qu’un assemblage .NET est la même chose que java .jar?

Ils jouent le même rôle, oui.

.dll contient du code IL compilé et .jar contient des fichiers de code .class / byte respectés?

Oui. Bien que les fichiers JAR ne soient que des fichiers zip (vous pouvez les ouvrir dans votre outil Zip préféré), ils peuvent donc contenir à peu près n’importe quoi.

Ils disent des ressources, de quel genre de ressources parlons-nous ici? Images, fichiers .txt, etc. ou tous possibles?

Tout type de fichier est autorisé dans un JAR. Votre code Java peut accéder au contenu des fichiers dans le fichier jar via, par exemple, getResourceAsStream ou getResource . De toute évidence, les fichiers .class dans un JAR sont traités spécialement (en tant que bytecode).

J’ai examiné AWS (API de service Web Amazon pour java) et j’ai vu trois fichiers .jar: aws-java-sdk-1.1.1.jar, aws-java-sdk-1.1.1-javadoc.jar, aws-java-sdk-1.1.1-sources.jar

L’emballage ci-dessus est assez commun. Parfois, les gens utilisent .jar comme une extension de fichier alternative à .zip . Je trouve cette pratique déroutante, mais ce n’est pas rare, et Amazon l’a fait dans ce cas. Je pense que cette pratique est devenue plus courante avec le lancement de Maven, qui stocke le code source de référence dans les fichiers nommés .jar.

aws-java-sdk-1.1.1.jar – C’est le seul fichier nécessaire à la compilation et à l’exécution. Il contient les classes (fichiers .class) et les ressources nécessaires au fonctionnement de la bibliothèque.

aws-java-sdk-1.1.1-sources.jar – Ceci est juste un fichier zip qui contient le code source (fichiers .java) pour la bibliothèque. Ce n’est pas nécessaire pour la compilation ou l’exécution. Il est fourni pour vous aider à résoudre les problèmes que vous pouvez rencontrer lors de l’utilisation de la bibliothèque. Vous pouvez décompresser ce fichier et lire le code source de votre disque dur. Cependant, votre EDI peut probablement utiliser ce fichier directement en créant une “pièce jointe source” dans le fichier JAR de la bibliothèque principale. Avec cette bibliothèque-> association source configurée dans votre EDI, votre EDI pourra vous montrer le code source de la bibliothèque lorsque vous utilisez la fonctionnalité “Aller à la définition” de votre EDI sur une classe de bibliothèque.

aws-java-sdk-1.1.1-javadoc.jar – Ceci est juste un fichier zip qui contient le JavaDoc pour la bibliothèque. Encore une fois, il n’est pas nécessaire pour la compilation ou l’exécution. JavaDoc est juste HTML, vous pouvez donc décompresser ce fichier et lire le HTML JavaDoc directement depuis votre disque dur. Cependant, la plupart des IDE peuvent créer une “pièce jointe javadoc” dans la bibliothèque principale, ce qui vous permet de récupérer JavaDoc sensible au contexte pour la bibliothèque depuis l’EDI. En fait, la plupart des IDE peuvent générer le JavaDoc à la volée à partir de -sources.jar, donc j’utilise rarement les javadoc jars.

Lorsque je souhaite importer des bibliothèques Java, dois-je toujours importer des fichiers .jar?

C’est généralement appelé “append des JAR au classpath”, mais oui. Vous devez presque toujours aider Java à trouver tous les fichiers JAR que vous utilisez en construisant un chemin de classe chaque fois que vous construisez ou exécutez. En général, l’utilisation de fichiers JAR et de chemins de classes est un processus beaucoup plus manuel et explicite que l’utilisation de DLL dans .NET. Par exemple: Java n’a pas d’équivalent direct du “Global Assembly Cache” de .NET; De plus, Java Java ne chargera pas automatiquement les fichiers .jars du répertoire de travail.

Il existe quelques autres techniques pour créer un chemin de classe plus “automatique”, mais elles sont en quelque sorte avancées: les chemins de classes Manifest.MF sont possibles, par exemple – mais cette approche est rarement utilisée car fragile. À partir de Java 6, Java ne prend en charge que l’utilisation de caractères génériques dans le chemin de classe .

Lorsque je veux exporter mes propres bibliothèques java, dois-je exporter dans un fichier .jar

C’est standard, oui.

Je peux répondre à une partie de cette question 🙂

Si je comprends bien, un jar n’est qu’un fichier “Java Archive”. Il peut contenir tout ce que vous voulez, mais est le plus souvent utilisé pour dissortingbuer des versions binarys de bibliothèques. Il peut également être utilisé pour dissortingbuer des exécutables – un double-clic sur un fichier JAR lance l’application, si c’est comme cela qu’elle a été empaquetée.

En tant que tel, il peut être difficile de savoir à quoi sert un fichier jar particulier. Par exemple, quelle est la fonction aws-java-sdk-1.1.1-sources.jar ? Est-ce un auto-installateur? Une archive de code compressée? Sans lire la documentation, c’est n’importe qui.


Edit: par exemple, je viens de télécharger le fichier JAI jar en supposant que c’était une version binary de la bibliothèque. Mais en fait, il contient l’application d’installation.

Pour répondre à cette question spécifique.

  1. aws-java-sdk-1.1.1.jar
  2. aws-java-sdk-1.1.1-javadoc.jar
  3. aws-java-sdk-1.1.1-sources.jar

Le 1) est le fichier archive java du compilateur (jar), qui dans .NET est appelé une DLL. Le 2) est le javadoc. Une documentation HTML des classes Java (trouvée en 1)) avec la description de la méthode. Le 3) est le code source (fichiers java) de 1).

  1. Lorsque je souhaite importer des bibliothèques Java, dois-je toujours importer des fichiers .jar?
  2. Lorsque je veux exporter mes propres bibliothèques java, dois-je exporter dans un fichier .jar.

Pour 1) Si vous devez utiliser une classe qui se trouve dans un fichier JAR, vous devez importer ce fichier dans votre projet.

Pour 2) Vous n’avez pas besoin de Vous pouvez regrouper vos fichiers de dépendance dans votre bibliothèque ou les regrouper dans leurs propres fichiers JAR et les importer dans votre projet.

  1. .NET Assembly est la même chose que java .jar? Réponse: oui.
  2. .dll contient du code IL compilé et .jar contient des fichiers de code .class / byte respectés? Réponse: les fichiers .jar sont un fichier archivé de ressources java, de classes, d’images / d’icons / etc. c’est nécessaire pour une application, comme dans .DLL. Les fichiers de classe contiennent des codes source Java de compilation (appelé bytecode Java).