97 votes

Que contient exactement un fichier jar ?

En tant que stagiaire, j'utilise le code de l'entreprise dans mes projets et ils m'envoient généralement une jar pour travailler. Je l'ajoute à la compilation path en Eclipse et d'habitude tout va bien et dandy.

Cependant, j'ai eu la curiosité de savoir ce que chaque classe contenait et lorsque j'essaie d'ouvrir une des classes dans le menu de l'application jar il me dit que j'ai besoin d'un fichier source.

Qu'est-ce que cela signifie ? Je viens d'un C/C++ fond ainsi qu'un jar similaire à une version déjà compilée .o et tout ce que je peux voir est le .h des choses ? Ou y a-t-il un code réel dans le jar que j'utilise et qui est crypté pour que je ne puisse pas le lire ?

Merci pour toutes les réponses !

Edit :
Merci, les gars, je savais que c'était une sorte d'archive, mais je ne comprenais pas pourquoi, lorsque j'ai essayé d'ouvrir l'application .class les dossiers, j'ai un tas de personnages aléatoires. Le résultat était similaire lorsque j'ai essayé d'ouvrir un fichier de type .o en C, donc je voulais juste m'en assurer.
Merci !

97voto

ThiefMaster Points 135805

Un fichier JAR est en fait un simple fichier ZIP. Il peut contenir n'importe quoi - généralement, il contient du code Java compilé (*.class), mais parfois aussi du code source Java (*.java).

Cependant, Java peut être décompilé - si le développeur a obscurci son code, vous n'obtiendrez aucun nom de classe/fonction/variable utile.

57voto

Jon Skeet Points 692016

Cependant, je suis devenu curieux de savoir ce que chaque classe contenait et lorsque j'essaie d'ouvrir une des classes du fichier jar, il me dit que j'ai besoin d'un fichier source.

Un fichier jar est essentiellement un fichier zip contenant des fichiers .class et éventuellement d'autres ressources (et des métadonnées sur le jar lui-même). Il est difficile de comparer C à Java, car le code à barres Java conserve beaucoup plus de métadonnées que la plupart des formats binaires. es le code compilé au lieu du code source.

Si vous ouvrez le fichier jar avec un utilitaire zip ou exécutez jar xf foo.jar vous pouvez en extraire les fichiers et y jeter un coup d'œil. Notez que vous ne devez pas besoin de un fichier jar pour exécuter le code Java - les chargeurs de classes peuvent charger les données des classes directement à partir du système de fichiers, ou à partir d'URL, ainsi qu'à partir de fichiers jar.

19voto

Ajay George Points 4936

La meilleure façon de comprendre ce que contient le fichier jar est d'exécuter ce :

Allez à la ligne de commande et exécutez jar tvf jarfilename.jar

16voto

theglauber Points 4937

A jar est un fichier zip avec quelques fichiers supplémentaires contenant des métadonnées. (Malgré l'extension .jar, il s'agit d'un format zip, et tous les utilitaires qui traitent les fichiers .zip sont également capables de traiter les fichiers .jar).

http://docs.oracle.com/javase/8/docs/technotes/guides/jar/index.html

Les fichiers Jar peuvent contenir tout type de fichiers, mais ils contiennent généralement des fichiers de classe et des fichiers de configuration (propriétés), des graphiques et d'autres fichiers de données nécessaires à l'application.

Les fichiers de classe contiennent du code Java compilé, qui est exécutable par la machine virtuelle Java.

http://en.wikipedia.org/wiki/Java_class_file

12voto

oxy_js Points 987

JAR est l'abréviation de Java ARchive. Il s'agit d'un format de fichier basé sur le célèbre format de fichier ZIP et utilisé pour regrouper de nombreux fichiers en un seul. Bien que JAR puisse être utilisé comme un outil d'archivage général, la motivation première de son développement était que les applets Java et leurs composants requis (fichiers .class, images et sons) puissent être téléchargés dans un navigateur en une seule transaction HTTP, plutôt que d'ouvrir une nouvelle connexion pour chaque élément. Cela améliore considérablement la vitesse à laquelle une applet peut être chargée sur une page Web et commencer à fonctionner. Le format JAR prend également en charge la compression, qui réduit la taille du fichier et améliore encore le temps de téléchargement. En outre, les entrées individuelles d'un fichier JAR peuvent être signées numériquement par l'auteur de l'applet pour authentifier leur origine.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X