2010-09-15 31 views
12

我對.Net和什麼程序集都很熟悉 - 但遺憾的是我的Java知識並沒有那麼強大。是一個類似於.Net程序集的Java JAR文件嗎?

我知道Java和.Net是不同的「世界」(可能就像比較蘋果和梨),但是JAR和.Net是否組合大致等價的概念?

  • 既可以包含資源和元數據:

    編輯:在最初的反應

    我解釋這是是的,他們有相似的方式更新基地。

但是,有一些核心的差異:

  • .NET程序集編譯一個JAR是沒有的。
  • JAR文件不需要製作Java應用程序; .NET應用程序需要.Net程序集。

[這不是時候了宗教戰爭 - 我想知道是否/如何我的.NET程序集的理解多少,我可以申請讓我的頭圍繞Java(也許這甚至會幫助Java人走向另一條路)。]

+1

另請參閱:http://stackoverflow.com/questions/3629291/is-a-java-package-the-equivalent-of-a-net-assembly – ColinD 2010-09-15 20:14:25

+0

這是一個相當接近的近似值。雖然有很多不同之處。 (例如,Assembly.GetTypes在Java中沒有模擬) – 2010-09-15 20:14:55

+0

@ColinD - 感謝您的鏈接。 – 2010-09-15 21:40:18

回答

5

我會說不,他們是不一樣的概念,注意到一個JAR可以用於一個程序集。如果你真的想讓你的頭部圍繞一個JAR文件,只要把它想成一個ZIP文件即可。這就是它的全部。

大多數情況下,該存檔包含已編譯的類文件。大多數情況下,這些類文件都是按照類的包的層次結構排列的。

但JAR文件經常包含其他東西,如消息包,圖像,甚至源文件。我鼓勵你用你選擇的解壓縮客戶端破解一個,然後看看裏面。

然而,JAR格式是打包Java庫或應用程序的最常見方式,因此它們非常相似。

從語言的角度來看,製作Java應用程序或庫不需要JAR文件,我也不會說它們是Java的固有文件,但是標準庫和JDK都支持處理JAR文件。

+0

「大多數情況下,該檔案包含已編譯的類文件。」 - 這是否意味着它並不總是必須? – 2010-09-15 21:48:35

+1

@Adrian K:對,它不需要。例如,庫的編譯文件,doc文件和源文件通常會分佈在3個不同的jar文件中,但實際上並不需要源代碼和文檔在jar中而不是簡單的.zip文件。 – ColinD 2010-09-15 23:30:47

8

這裏有一些技術上的差異,但是它們在大多數時候都沒什麼後果,所以基本上,是的,它們是相同的概念。

+0

謝謝;我明白你爲什麼說他們是同一個概念。 – 2010-09-19 21:30:08

4

在一個層面上,它們在概念上相似(包中的字節代碼塊)。但是,它們的實施是非常不同的。

JAR文件實際上是一個ZIP文件,其中包含一些元數據和所有Java .class文件(是的,您可以將其打開爲ZIP文件並在裏面看到)以及其他任何內容(資源等)。

.NET程序集實際上是一個有效的Win32 PE文件,在某種程度上可以這樣處理。 .NET。exe文件實際上是作爲載入框架的本地代碼開始執行的,然後載入字節碼。 「執行」JAR文件需要通過.bat文件或文件關聯來啓動Java運行時,該文件然後單獨加載JAR文件。

相關問題