A. java裡面的jar包是否就相當於c#編譯生成的dll文件
dll文件,俗稱動態鏈接庫文件,是有執行程序可調用的二進制文件,也就是計算機能識別的二進制代碼,任何語言都可以調用。只是方法不同而已。
jar文件,一般是由java虛擬機解析的,其實相當於將一系列的位元組碼文件(.java文件)或者包,java虛擬機這些文件通過一些演算法序列化(壓縮),就形成了jar文件。但程序需要執行時java虛擬機將位元組碼文件再次編譯成二進制文件供計算機執行。
PS:這就是java是跨平台的原因。所有程序的位元組碼文件相同。不同操作系統上只需安裝不同的java虛擬機就可以執行相同的程序。
B. jar包會泄露源碼嗎
不會。因為jar包是Java中的一種壓縮文件格式,其中包含了編譯後的Java類文件和資源文件等,並不包含源代碼。當我們將Java源代碼編譯成位元組碼後,就無法直接查看源代碼了。當其他人使用我們的jar包時,只能通過反編舉仿譯技術將位元組碼轉化成Java源代碼進行查看,但這並不是泄露源代碼,因為反編譯後的代碼並不完全等同於原始的Java源代碼,而且反編譯後的代碼會失去注釋、變數名等重要信息,閱讀和使用派明難度也會大大提高。
另外,為了保護源代碼的安全性,開發者可以使用一些Java代碼混淆工具對jar包進行混淆,以此來使得反編譯後的代碼更加難以閱讀和理解,從而正羨纖提高源代碼的安全性和保密性。
C. Java中Jar包為什麼能輕易就給反編譯了
java中jar包輕易的被反編譯是由於java的特性決定的。java中的jar包的實質內容是java源代碼編譯後的.class文件,由於java的面向對象特性和java的反射技術,可以很容易的通過對.class文件進行反射來得到java的源代碼,也就是反編譯!對於java的反編譯,並不是所有內容都會反編譯出來,java源文件中的注釋、泛型等內容在經過編譯和反編譯之後會丟失。
D. java中jar包和lib的區別
jar包是編譯時使用,假如編譯出錯代碼沒問題一定是jar包的問題,lib是運行時使用,比如程序啟動後出錯了但是編譯沒有問題,就可能是lib出錯了,不會是jar包的問題。