556 votes

Comment j’ai « décompiler » fichiers de classe Java ?

Quel programme puis-je utiliser pour décompiler un fichier de classe ? J’ai parviendra réellement le code Java, ou c’est juste le code assembleur JVM ?

Pour les questions de performance Java sur ce site, je vois souvent des réponses de gens qui ont « décompilé » le fichier de classe Java pour voir comment le compilateur optimise certaines choses.

588voto

VonC Points 414372
  • La version finale de la JSR 176, de définir les principales caractéristiques de J2SE 5.0 (Java SE 5), a été publié le 30 septembre 2004.
  • La dernière version de Java pris en charge par JAD, le célèbre Java decompiler écrit par M. Pavel Kouznetsov, est JDK 1.3.
  • La plupart de la Java la décompilation téléchargeable aujourd'hui de l'Internet, tels que "DJ Java Decompiler" ou "Cavaj Java Decompiler", sont alimentés par JAD: ils ne peuvent pas afficher Java 5 sources.

Java Decompiler (Encore un Rapide Java decompiler) a:

  • Soutien explicite pour la décompilation et à l'analyse de Java 5+ ".catégorie" fichiers de.
  • Une belle interface:

screenshot

Il fonctionne avec les compilateurs de JDK 1.1.8 jusqu'à JDK 1.7.0, et les autres (Jikes, JRockit, etc.).

Il propose en ligne une version de démonstration en direct qui est en fait entièrement fonctionnel! Vous pouvez déposer un fichier jar sur la page et de voir la décompilation du code source sans rien installer.

101voto

Bill James Points 7554

Il y a un peu de la décompilation de la... Une recherche rapide, on obtient:

  1. Procyon (open-source et activement développé)
  2. Krakatau (open-source et activement développé)
  3. CFR (code source fermé et activement développé)
  4. JAD
  5. DJ Java Decompiler
  6. Moka

Et beaucoup plus.

Ces produire du code Java. Java est livré avec quelque chose qui vous permet de voir la JVM de byte code (javap).

51voto

Marko Points 13736

Pour voir le code source Java vérifier certains décompilateur. Allez chercher de jad.

Si vous voulez voir bytecode, il suffit d’utiliser javap qui vient avec le JDK.

29voto

bmaupin Points 1428

J'en ai essayé plusieurs, et Procyon semble fonctionner le mieux pour moi. Il est en développement actif et prend en charge de nombreuses fonctionnalités de la dernière version de Java.

Ce sont les autres que j'ai essayé:

  • CFR
    • Prometteur, mais n'ont souvent pas la méthode la décompilation. Je vais garder mes yeux sur celui-ci. Aussi activement développé avec les dernières fonctionnalités Java.
  • Krakatau
    • Prend une approche différente en ce qu'elle tente de sortie équivalent de code Java au lieu de tenter de reconstituer la source d'origine, qui a le potentiel de faire mieux pour l'obfuscation de code. De mon test, il était à peu près à égalité avec Procyon, mais toujours agréable d'avoir quelque chose de différent. J'ai eu à définir IGNORE_EXCEPTIONS = 1 dans Krakatau/java/javaclass.py donc il ne serait pas s'arrêter sur les erreurs. Activement développé et qui est assez intéressant c'est écrit en Python.
  • JD-GUI
  • JAD
    • Travaillé, mais ne supporte Java 1.4 et ci-dessous. Également disponible en tant que plug-in Eclipse. N'est plus en cours de développement.

18voto

sakana Points 1485

J’utilise JAD Decompiler.

Il y a un plugin Eclipse pour elle, jadeclipse. Il est assez agréable.

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