it-swarm-eu.dev

Différence entre les fichiers .jar et .dll

J'apprends Java ces jours-ci et j'ai passé beaucoup de temps avec .NET donc quand je veux exporter ou importer des bibliothèques, elles sont généralement au format .dll qui s'appelle Assembly in L'environnement .Net et ils sont compilés en IL et ils peuvent avoir des ressources comme des images, xml, audio et son sur, de toutes les manières.

Je me demande le même processus dans Java aussi. J'ai lu des documents mais ils m'ont un peu dérouté et pour clarifier les choses, j'ai besoin de votre aide les gars.

Questions:

  1. L'assemblage .NET est la même chose que Java .jar?
  2. .dll contient le code IL compilé et .jar contient les fichiers de code .class/byte conformes?
  3. Ils disent des ressources, de quel type de ressources nous parlons ici? Images, fichiers .txt, etc. ou tous possibles?

  4. J'ai examiné AWS (Amazon Web Service API 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 - Java au format html et 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 aussi d'autres choses.

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

Merci d'avance pour votre aide.

63
Tarik

Un assemblage .NET est-il la même chose que Java .jar?

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

. dll contient le code IL compilé et .jar contient les fichiers de code .class/byte conformes?

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 type de ressources parlons-nous ici? Images, fichiers .txt, etc. ou tous possibles?

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

J'ai examiné AWS (Amazon Web Service API pour Java) et j'ai vu trois fichiers .jar et ce sont: 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 courant. Parfois, les gens utilisent . Jar comme 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 des fichiers nommés .jar.

aws-Java-sdk-1.1.1.jar - C'est le seul fichier nécessaire pour 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 - Ce n'est qu'un fichier Zip qui contient le code source (fichiers .Java) de la bibliothèque. Il 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 IDE peut probablement utiliser ce fichier directement en créant une "pièce jointe source" au fichier JAR de la bibliothèque principale. Avec cette association bibliothèque-> source configurée dans votre IDE, votre IDE sera en mesure de vous montrer le code source de la bibliothèque lorsque vous utilisez la fonction "Aller à la définition" de votre IDE 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, ce n'est pas nécessaire pour la compilation ou l'exécution. JavaDoc est juste du HTML, vous pouvez donc décompresser ce fichier et lire le JavaDoc HTML directement depuis votre disque dur. Cependant, la plupart des IDE peuvent créer une "pièce jointe javadoc" à la bibliothèque principale, ce qui vous permet d'extraire JavaDoc contextuel pour la bibliothèque à partir de l'IDE. En fait, la plupart des IDE peuvent générer le JavaDoc à la volée à partir du -sources.jar, donc j'utilise rarement les jars javadoc.

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

Cela s'appelle généralement "ajouter des fichiers JAR au chemin de classe", mais oui. Vous avez presque toujours besoin d'aider Java trouver tous les JAR que vous utilisez en construisant un chemin de classe chaque fois que vous construisez ou exécutez. En général, l'utilisation des JAR et des chemins de classe est un processus beaucoup plus manuel et explicite que d'utiliser des DLL dans .NET. Par exemple: Java n'a pas d'équivalent direct du "Global Assembly cache" de .NET; Vanilla Java ne se chargera pas automatiquement automatiquement). jars du répertoire de travail.

Il existe quelques autres techniques pour créer un chemin de classe plus "automatique", mais elles sont plutôt avancées: les chemins de classe Manifest.MF sont possibles, par exemple - mais cette approche est rarement utilisée car elle est fragile. À partir de Java 6, Java a un support limité pour l'utilisation de caractères génériques dans le chemin de classe .

Lorsque je souhaite exporter mes propres Java, dois-je exporter dans un fichier .jar

C'est standard, oui.

80
Mike Clark

Je peux répondre partie à 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 distribuer des versions binaires de bibliothèques. Il peut également être utilisé pour distribuer des exécutables - double-cliquer sur un fichier JAR lancera l'application, si c'est comme ça qu'elle a été empaquetée.

En tant que tel, il peut être difficile de dire à quoi un fichier jar particulier est destiné. Par exemple, qu'est-ce que aws-Java-sdk-1.1.1-sources.jar ?. S'agit-il d'un auto-installateur? Une archive de code compressée? Sans lire la documentation, c'est la supposition de personne.


Edit: cas d'espèce, je viens de télécharger le JAI jar fichier en supposant qu'il s'agissait d'une version binaire de la bibliothèque. Mais en fait, il contient l'application d'installation.

9

Pour répondre à cette question précise.

  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 compilateur Java (jar), qui dans .NET est appelé DLL. Le 2) est le javadoc. Une documentation HTML de Java (trouvées en 1)) avec 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 souhaite 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 devrez importer ce jar dans votre projet.

Pour 2) Vous n'en avez pas besoin. Vous pouvez regrouper vos pots de dépendance dans votre bibliothèque ou les empaqueter chacun dans leurs propres pots et les importer dans votre projet.

  1. L'assemblage .NET est la même chose que Java .jar? Answer: Yes.
  2. .dll contient le code IL compilé et .jar contient les fichiers de code .class/byte conformes? Réponse: .jar files est un fichier archivé de Java ressources, classes, images/icônes/etc. Qui est nécessaire pour une application, tout comme dans .DLL. Les fichiers de classe contiennent la compilation Java codes source (Appelé Java bytecode).
8
Buhake Sindi