歡迎光臨
每天分享高質量文章

003-005:Java平臺相關的面試題

閱讀本文大概需要3分鐘。

003:位元組碼是什麼?

在Java中,位元組碼存放於以.class結尾的二進制檔案。

位元組碼之於Java,類似於彙編語言之於C/C++。對於C/C++語言來說,不同的平臺需要不同的編譯器,以應對不同的操作系統和機器指令集;對於Java來說,只需要一個編譯器(javac),編譯形成的位元組碼是一種通用的代碼,可以運行在任何安裝了JVM的機器上,也就實現了所謂的“一次編寫、到處運行”。

使用位元組碼和虛擬機的語言不只有Java一種,Java是現在最出名的語言,LISP是更古老的語言(該語言主要用於人工智慧和科學計算);其他使用類似於位元組碼的語言有Icon和Prolog

004:比較下JDK、JVM和JRE的不同

JVM是運行Java應用的虛擬機,主要模塊有:類加載子系統、運行時資料區、即時編譯(JIT)子系統、垃圾收集子系統等;

JRE是Java運行時環境,主要包括Java SE API(基礎類庫和UI類庫)和Java應用的部署套件。

JDK是最大的概念,包括:JVM + JRE + Java語言 + JDK輔助工具(javac、jmap等)

005:C++和Java之間最大的不同是什麼?

Java和C++的設計標的不同:(1)C++最初的設計標的是為了擴展C語言的能力,主要的應用場景是系統應用開發,跟C語言相比,C++增加了面向物件能力、異常處理、強大的資源管理能力、泛型編程、模板編程以及STL庫等能力;(2)Java的設計標的是更加普遍,是純粹的OOP語言、支持併發、更好的可移植性(跨平臺能力),Java利用JVM實現了較高的安全性和可移植性。

我認為,C++和Java最主要的幾個不同可以列舉如下(其他語言特性的不同在此不做討論):

C++ Java
平臺獨立性 C++是平臺相關性語言 Java是平臺無關性語言
指標 C++支持指標變數,因此我們可以將任何變數的地址存放在一個指標變數中 Java不支持指標變數
語言級別 C++既可以當作是高級語言,也可以當作是機器級別的語言 Java是純粹的高級語言
記憶體管理 C++需要程式員手動管理記憶體的分配和釋放 Java在大多數情況下不需要關心記憶體的分配和釋放

參考資料

  1. bytecode (https://whatis.techtarget.com/definition/bytecode)

往期精彩回顧
002-如何理解Java的平臺獨立性

001-為什麼Java能這麼流行

MAT入門到精通(二)

MAT入門到精通(一)

    閱讀原文

    赞(0)

    分享創造快樂