下好以后解壓就可以用了,軟件就只有一個exe文件和一個幫助文件,為了方便使用,我直接將exe文件放到JDK的bin目錄里了:)
創(chuàng)新互聯-專業(yè)網站定制、快速模板網站建設、高性價比宿遷網站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式宿遷網站制作公司更省心,省錢,快速模板網站建設找我們,業(yè)務覆蓋宿遷地區(qū)。費用合理售后完善,10多年實體公司更值得信賴。
下面先來看看從網上搜集來的介紹:在眾多的JAVA反編譯工具中,有幾種非常著名的工具使用了相同的核心引擎——JAD,其中主要包括:Front
End Plus、mDeJava、Decafe Pro、Cavaj Java Decompiler、DJ Java
Decompiler、NMI’s Java Class Viewer和國產的JAVA源代碼反編譯專家。
JAD本身是一個命令行工具,沒有圖形界面,上述的這些工具大多是在JAD內核的基礎之上加了一個圖形界面而已。這么多種產品的共同選擇,足可證明JAD
在JAVA反編譯領域中的尊貴地位。 JAD是使用Microsoft Visual
C++開發(fā)的,運行速度非???,可以處理很復雜的JAVA編譯文件。眾多的參數使JAD可以靈活應付多種加密手段,令反編譯的代碼更加優(yōu)化和易讀。由于
JAD參數太多,沒必要一一解釋,其中有幾個最常用的如下:
-d dir - 用于指定輸出文件的目錄
-s ext - 輸出文件擴展名(默認為: .jad),通常都會把輸出文件擴展名直接指定為.java,以方便修改的重新編譯。
-8 - 將Unicode字符轉換為ANSI字符串,如果輸出字符串是中文的話一定要加上這個參數才能正確顯示。
最常用的反編譯指令如下所示:
Jad -d c:\test -s .java -8 HelloWorld.class
這將當前目錄下的HelloWorld.class反編譯為HelloWorld.java并保存在c:\test目錄里,其中的提示輸出為中文,
而不是Unicode代碼。
附件:對下載后的說明文檔的簡單翻譯,希望對你有所幫助(mathsfan修改于2006.10.29,翻譯的不好請見諒)0、1略去2、怎樣使用JAD
反編譯一個簡單的java class文件'example1.class'用如下命令: jad example1.class
這個命令將在當前目錄下創(chuàng)建一個'example1.jad'文件,假如當前目錄下存在這個文件,則JAD會提示你覆蓋它與否。選項
-o 允許覆蓋時沒有任何提示。選項 -s ext允許改變輸出文件的后綴名: jad -sjava example1.class
這個命令將要創(chuàng)建'example1.java'文件。在一起使用-o 和
-sjava選項時請小心,因為JAD會附帶的重寫你的源文件。JAD使用JAVA
class的名字作為輸出文件的名字。例如,假如class文件'example1.class'包含JAVA class
'test1'那么JAD將會創(chuàng)建文件'test1.jad'而不是'example1.jad'。假如你想具體指明你的輸出文件的名字使用輸出重命名:
jad -p example1.class myexm1.java
選項 –d允許你具體指明另外的輸出文件目錄,不管這個目錄是新建的、默認的或者當前目錄。例如:
jad -o -dtest -sjava *.class
(或者 jad -o -d test -s java *.class, 這個有同樣的效果)
這個命令將在當前目錄下反編譯所有的.class文件并在'test'文件夾下建立所有擴展名為.java的輸出文件。
假如你想反編譯整個目錄樹下的JAVA classes,使用如下命令:
jad -o -r -sjava -dsrc tree/**/*.class
這個命令將反編譯當前目錄樹里所有的.class文件并且在當前目錄下建立src文件夾后根據包的名字來輸出文件。例如,假如有一個文件
'tree/a/b/c.class'在包'a.b'下包含了class 'c',那么輸出文件的名字為'src/a/b/c.java'。
在先前的命令上將通配符那里注釋掉。則它是用JAD來處理而不是command殼,所以在UNIX上的最后一次參數將會被單獨引用。
jad -o -r -sjava -dsrc 'tree/**/*.class'
你想檢查編譯后的文件的正確性或者出于好奇的情況下,這里有一個選項 –a 將會告訴JAD給輸出的JAVA虛擬字節(jié)碼注解。
HTML分析是一個比較復雜的工作,Java世界主要有幾款比較方便的分析工具:
1.Jsoup?
Jsoup是一個集強大和便利于一體的HTML解析工具。它方便的地方是,可以用于支持用jQuery中css selector的方式選取元素,這對于熟悉js的開發(fā)者來說基本沒有學習成本。
String content = "blabla";
Document doc = JSoup.parse(content);
Elements links = doc.select("a[href]");
Jsoup還支持白名單過濾機制,對于網站防止XSS攻擊也是很好的。
2.HtmlParser
HtmlParser的功能比較完備,也挺靈活,但談不上方便。這個項目很久沒有維護了,最新版本是2.1。HtmlParser的核心元素是Node,對應一個HTML標簽,支持getChildren()等樹狀遍歷方式。HtmlParser另外一個核心元素是NodeFilter,通過實現NodeFilter接口,可以對頁面元素進行篩選。這里有一篇HtmlParser的使用文章:使用 HttpClient 和 HtmlParser 實現簡易爬蟲。
3.Apache tika
tika是專為抽取而生的工具,還支持PDF、Zip甚至是Java?Class。使用tika分析HTML,需要自己定義一個抽取內容的Handler并繼承org.xml.sax.helpers.DefaultHandler,解析方式就是xml標準的方式。crawler4j中就使用了tika作為解析工具。SAX這種流式的解析方式對于分析大文件很有用,我個人倒是認為對于解析html意義不是很大。
InputStream inputStream = null;
HtmlParser htmlParser = new HtmlParser();
htmlParser.parse(new ByteArrayInputStream(page.getContentData()),
contentHandler, metadata, new ParseContext());
4.HtmlCleaner與XPath
HtmlCleaner最大的優(yōu)點是:支持XPath的方式選取元素。XPath是一門在XML中查找信息的語言,也可以用于抽取HTML元素。XPath與CSS Selector大部分功能都是重合的,但是CSS Selector專門針對HTML,寫法更簡潔,而XPath則是通用的標準,可以精確到屬性值。XPath有一定的學習成本,但是對經常需要編寫爬蟲的人來說,這點投入絕對是值得的。
下面將分別講解重載與重寫:
1、重載overloading
1) 方法重載是讓類以統一的方式處理不同類型數據的一種手段。多個同名函數同時存在,具有不同的參數個數/類型。重載是一個類中多態(tài)性的一種表現。
2) Java的方法重載,就是在類中可以創(chuàng)建多個方法,它們具有相同的名字,但具有不同的參數和不同的定義。調用方法時通過傳遞給它們的不同參數個數和參數類型給它們的不同參數個數和參數類型給它們的不同參數個數和參數類型來決定具體使用哪個方法, 這就是多態(tài)性。
3) 重載的時候,方法名要一樣,但是參數類型和個數不一樣,返回值類型可以相同也可以不相同。無法以返回型別作為重載函數的區(qū)分標準。
示例代碼:
public class Dog {
Dog()
{
this.bark();
}
void bark()//bark()方法是重載方法
{
System.out.println("no barking!");
this.bark("female", 3.4);
}
void bark(String m,double l)//注意:重載的方法的返回值都是一樣的,
{
System.out.println("a barking dog!");
this.bark(5, "China");
}
void bark(int a,String n)//不能以返回值區(qū)分重載方法,而只能以“參數類型”和“類名”來區(qū)分
{
System.out.println("a howling dog");
}
public static void main(String[] args)
{
Dog dog = new Dog();
//dog.bark();
//dog.bark("male", "yellow");
//dog.bark(5, "China");
}
}
2、重寫overriding
1) 父類與子類之間的多態(tài)性,對父類的函數進行重新定義。如果在子類中定義某方法與其父類有相同的名稱和參數,我們說該方法被重寫 (Overriding)。在Java中,子類可繼承父類中的方法,而不需要重新編寫相同的方法。但有時子類并不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要采用方法的重寫。方法重寫又稱方法覆蓋。
2) 若子類中的方法與父類中的某一方法具有相同的方法名、返回類型和參數表,則新方法將覆蓋原有的方法。如需父類中原有的方法,可使用super關鍵字,該關鍵字引用了當前類的父類。
3) 子類函數的訪問修飾權限不能少于父類的;
示例代碼:
public class Base
{
void test(int i)
{
System.out.print(i);
}
void test(byte b)
{
System.out.print(b);
}
}
public class TestOverriding extends Base
{
void test(int i)
{
i++;
System.out.println(i);
}
public static void main(String[]agrs)
{
Base b=new TestOverriding();
b.test(0)
b.test((byte)0)
}
}
這時的輸出結果是1 0,這是運行時動態(tài)綁定的結果。
常用的工具有:
Eclipse ? 據數據顯示很多Java開發(fā)人員的Java開發(fā)工具便是Eclipse,這主要得益于Eclipse是一個開源的、可以基于Java的可擴展開發(fā)平臺。Eclipse本身而言,它只是一個框架和一組服務,但可以通過插件組件構建開發(fā)環(huán)境。
editplus ?EditPlus是一款由韓國 Sangil Kim (ES-Computing)開發(fā)的編輯器,可以作為C,Java,Php等等語言的一個簡單的IDE。EditPlus擁有無限制的撤消與重做、英文拼字檢查、自動換行、列數標記、搜尋取代、同時編輯多文件、全屏幕瀏覽功能,也是一款常見的Java開發(fā)工具。
NetBeans ? NetBeans提供了功能全面的陣列,如轉換器,編輯器和代碼分析器,使用這些工具可以幫助我們使用的Java技術實現應用程序。NetBeans工具范圍相當廣泛,是一款的Java開發(fā)工具。
Junit ? ?Junit是一個可以幫助Java開發(fā)人員編寫和運行測試的單元測試框架。JUnit和市場上其他類似的框架有著本質的區(qū)別。主要表現在你可以一次測試一個代碼塊,而不需要等待該模塊在運行測試前完成。實際上是你可以“先測試,然后寫代碼”
VisualVM ? ?VisualVM也是一款使用較多的Java開發(fā)工具。它最主要的功能便是可以排查故障,可以使用VisualVM整合多命令行JDK工具。如jvmstat、JMX和Serviceability Agent(SA)中使用VisualVM。VisualVM最出名的是附加了API,以獲得更多的數據,以及自動使用更快捷。
Gradle ? ?Gradle是一個自動化項目工具,是建立在Apache Maven和Apache Ant的功能上。雖然Gradle并不是的構建工具(的是Maven,64%的Java開發(fā)人員會選擇它),但它的普及速度很快。它同時也可作為默認的Android構建開發(fā)工具。
SparkJava ? ?SparkJava是一款體形輕巧,功能強大的Web應用框架。Spark可以通過一些繁瑣的XML配置來使用Spark框架編寫應用程序。能讓我們花最少的精力來開發(fā)Java的Web應用程序。是一款的Java web開發(fā)工具。
Clover ? ?Clover主要用于代碼覆蓋,可以幫助用于測試應用程序的代碼。我們可以在IDE或持續(xù)集成系統中運行Clover。能夠讓測試的運行速度更快。是Java開發(fā)測試必不可少的工具之一。