1. 程式人生 > >菜鳥筆記 -- Question 3.1 聊聊跨平臺

菜鳥筆記 -- Question 3.1 聊聊跨平臺

ref 不同的 jvm 不同 mage 簡單 分享圖片 多繼承 用兩個

   學習Java的時候總是被用來吹噓說Java的跨平臺多麽多麽NB,可認真想想是那麽回事嗎?還記得嗎Java是從C++發展而來的,不僅吸收了C++語言的各種優點,還摒棄了C++裏難以理解的多繼承指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。知道了Java來自於C,那麽我們就有了一個以為C是跨平臺的嗎?

  C語言本來就是跨平臺的,不過是“源碼級”跨平臺。本來就存在針對linuxwindows的不同的編譯器。所以有C語言“一次編寫,到處編譯”,Java是“一次編譯,到處運行”的說法。如C++創始人酸溜溜的說法,

JVM造了一個新的平臺,讓所有Java程序只能在這個平臺上運行,而CC++的代碼可以在幾十個不同的平臺上運行,從源碼這個角度而言,CC++是跨平臺的,而Java不是。這裏所說的源碼是經過編寫未曾編譯的。那麽這麽看起來Java的跨平臺是不是真的有些雞肋了呢?

  這種說法也是有失偏頗的,因為JavaC針對的方向不同所以跨平臺承擔的責任也就不同了,C主要用於系統底層的開發,操作系統Linux,硬件驅動程序。所以對於跨平臺就是源碼級別的。而Java呢?

  Java的起源, 發明的初衷, 最開始Java是為了機頂盒開發的, 機頂盒用的CPU不是x86架構的intel CPU而是單片機,

而單片機的發展是很迅速的, 你花了半年為某種單片機開發了程序, 等程序出來了可能這個型號的單片機已經沒人用了, Sun當時是為了解決這個問題, 提出了程序只用寫一遍編譯一遍, 然後讓JVM來適應單片機型號的不同.這是最初的跨平臺,而發展到了今天呢?我們知道Java已經成為了web開發的主流語言,可是我們開發的時候是在Windows下開發,而部署往往是部署在LinuxUnix下的,所以此時Java的跨平臺就又可以大展神威了,因為不管什麽時候,Java說白了都是運行在JVM上的,真正需要跨平臺的是JVM,所以對於我們編寫程序來說,就讓編碼和跨平臺分開了,便利了開發。Java的跨平臺說白了就是下面的一張圖:

技術分享圖片

菜鳥筆記 -- Question 3.1 聊聊跨平臺