簡體   English   中英

javac 和 Eclipse 編譯器有什么區別?

[英]What is the difference between javac and the Eclipse compiler?

Eclipse 的 Java 編譯器只是圍繞javac程序所包裹的同一核心的包裝器,還是完全是一個單獨的編譯器? 如果是后者,他們為什么要重新發明輪子?

Eclipse 已經實現了自己的編譯器,稱為Eclipse Compiler for Java (ECJ)。

它與 javac 不同,javac 是 Sun JDK 附帶的編譯器。 一個顯着的區別是 Eclipse 編譯器允許您運行實際上沒有正確編譯的代碼。 如果出現錯誤的代碼塊從未運行過,您的程序將運行良好。 否則,它會拋出一個異常,表明您試圖運行無法編譯的代碼。

另一個區別是 Eclipse 編譯器允許從 Eclipse IDE 內部進行增量構建,也就是說,一旦您完成輸入,所有代碼都會被編譯。

Eclipse 帶有自己的編譯器這一事實也很明顯,因為您可以在 Eclipse 中編寫、編譯和運行 Java 代碼,甚至無需安裝 Java SDK。

ECJ 優於 javac 的幾個例子是:

每個人都已經解釋過他們是不同的。 以下是我注意到的兩個編譯器之間的一些行為差異。 它們都歸結為(至少)其中一個實現中的錯誤。

編譯時優化相關

泛型類型推斷相關

Eclipse 的內置編譯器基於 IBM 的Jikes java 編譯器 (請注意,Eclipse 也是從 IBM 開始的)。 它在JDK中完全獨立於Sun的Java編譯器; 它不是 Sun 的javac的包裝器。

Jikes 已經存在很長時間了,它曾經比標准的 JDK Java 編譯器快很多(但我不知道這是否仍然正確)。 至於為什么 IBM 想要編寫自己的 Java 編譯器:可能是因為許可的原因(他們也有自己的 Java 實現)。

它完全是一個單獨的編譯器。 這是必需的,因為 javac 不允許編譯來自eclipse 站點的輕微損壞的代碼

增量 Java 編譯器。 作為 Eclipse 構建器實現,它基於從 VisualAge for Java 編譯器演變而來的技術。 特別是,它允許運行和調試仍然包含未解決錯誤的代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM