App下載

一處編譯處處運行如何實現?淺析語言的跨平臺性

猿友 2021-06-09 13:49:10 瀏覽數 (2964)
反饋

很多小伙伴們都很好奇,為什么 Java 可以一處編譯,處處運行?這是 Java 特有的功能嗎?接下來小編的這篇文章告訴你 Java 怎么實現一處編譯處處運行。

C語言的編譯運行方式

以 C 語言為例,我們要用 C 語言寫一段程序,需要先用 C 語言寫成 cpp 文件,然后使用編譯器將其編譯成可執(zhí)行文件。可執(zhí)行文件由二進制的機器碼組成,但是不同機器的CPU不一樣(決定了機器碼的不同),系統也不一樣(決定了可執(zhí)行文件格式的不同),所以它們編譯出來的二進制文件也是不一樣的。比如 Windows 編譯出來的是 ?obj,lib,dll,exe? 這樣的文件,而 Linux 編譯出來的是? .o,.a,.so? 這樣的文件。它們之間并不能通用。所以一份源代碼要在不同的電腦上運行需要重新編譯才能得到對應的可執(zhí)行文件。

Java的編譯運行方式

Java 和 C 語言不同,開發(fā)者用 Java 寫成 java 文件,使用 Java 編譯器編譯后可以得到 java 的 class 文件(這種文件又叫做 Java 字節(jié)碼文件,字節(jié)碼文件類似于機器碼,但機器碼直接在 CPU 上運行,而字節(jié)碼在 Java 虛擬機上運行)。然后將 class 文件放在相應系統的虛擬機上進行運行。不同的電腦雖然操作系統不同,CPU 也不同,但是它們安裝的 Java 虛擬機為 Java 代碼提供了統一的接口。只要目標機器可以安裝 Java 虛擬機,Java 的 class 文件就可以在目標機器上運行。

JavaScript等解釋型語言的運行方式

JavaScript 與 Java 不同,Java 需要將源代碼編譯后再放進 Java 虛擬機運行,而 JavaScript 直接將源代碼放進 JavaScript 解釋器運行。這樣的方式也讓 JavaScript 的可移植性變得十分強大。不過因為 JavaScript 沒有沒有經歷過編譯,所以在運行 JavaScript 代碼的時候解釋器要承擔額外的工作而導致效率變低。

小結

以 Java 為例,雖然不同平臺有著各自的不同情況,但 Java 虛擬機的存在讓 Java 最終運行的地方的情況相同,所以不需要分情況進行編譯。不同平臺的各種不同情況,只需要在 Java 虛擬機中進行處理即可。通俗的講,Java 虛擬機在不同的機器上為 Java 字節(jié)碼文件搭建了相同的舞臺。

以上就是關于怎么實現一處編譯處處運行的全部內容,更多技術類介紹文章盡請關注W3C技術頭條


0 人點贊