вторник, 17 июля 2012 г.

Java декомпилятор. Установка декомпилятора в Eclipse


Часто у новичков, а порой и у бывалых программистов возникают детские вопросы. К такой категории можно отнести вопрос как декомпилировать в java или как установить java декомпилятор? Поэтому данная статья нацелена на ликвидацию вопросительных знаков над темой java-декомпиляторов.


Самое первое, что узнает человек при работе с Java - то что весь программный код (содержится в файлах *.java) после компиляции превращается в байт-код (содержится в файлах *.class), который уже и попадает на выполнение в JVM. Предыдущее предложение описывает идеальную ситуацию, однако бывают случаи, когда человек пишет на Java, при этом даже не подозревая об этом, но не будем о грустном.

Итак, декомпилятор вам понадобится только в том случае, если у вас нет исходных файлов (*.java), а имеются в наличии лишь бинарники (*.class). В случае, если у вас на момент прочтения это статьи, Eclipse IDE не оснащена декомпилятором, то можно рассмотреть следующий пример:

1:  public class Testoid {  
2:    public static void main(String[] args) {  
3:      Boolean bool = true;      
4:    }  
5:  }  

Теперь попробуйте скопировать это все к себе в Эклипс и передать курсор в строку №3, классу Boolean, после чего нажмите на клавиатуре кнопку F3. В результате должна открыться новая вкладка с именем Boolean.class и наполнением вроде такого: Source not found...

Проблема теперь стала более ясной, даже очевидной. Для ее решения, а если более конкретно, то для просмотра исходного кода класса Boolean, нам понадобится установить java-декомпилятор и повторить попытку.

Существует множество декомпиляторов, но я буду говорить о том, которым пользуюсь сам - JD. По этой же ссылке можно увидеть инструкции по установке, но на английском языке. Если в комментариях будут просьбы сделать такую же инструкцию, только на RUS, то я скорее всего откажу, т.к. дублировать нет смысла, да и английский всем рекомендую учить.

После установки (надеюсь удачной), возвращаемся к ранее опубликованным 5 строкам кода и проделываем те же не хитрые манипуляции с классом Boolean в строке №3. Результатом должна стать новая вкладка с именем Boolean.class с наполнением:


1:  package java.lang;  
2:  import java.io.Serializable;  
3:  public final class Boolean  
4:   implements Serializable, Comparable<Boolean>  
5:  {  
6:   public static final Boolean TRUE = new Boolean(true);  
7:   public static final Boolean FALSE = new Boolean(false);  
8:   public static final Class<Boolean> TYPE = Class.getPrimitiveClass("boolean");  
9:   private final boolean value;  
10:   private static final long serialVersionUID = -3665804199014368530L;  
11:   public Boolean(boolean paramBoolean)  
12:   {  
13:    this.value = paramBoolean;  
14:   }  
15:   public Boolean(String paramString)  
16:   {  
17:    this(toBoolean(paramString));  
18:   }  
19:  ...  

По большей мере это все, что нужно было написать для хорошего старта. Далее все зависит от вашего интереса и потребностей.

Комментариев нет:

Отправить комментарий