當前位置:首頁 » 編程軟體 » 編譯和jvm關系

編譯和jvm關系

發布時間: 2022-08-26 05:26:39

⑴ JRE和JVM有什麼關系

簡單地說,jre包含jvm,jvm是運行java的核心虛擬機,而運行java程序不僅需要核心虛擬機,還需要其他的類載入器,位元組碼校驗器,以及大量的基礎類庫。jre除了包含jvm外,還包含運行java程序的其他環境支持。

jre 即java運行時環境,全稱是Java Runtime Environment,是java程序運行的必須條件。jvm (Java Virtual Machine) 即java虛擬機,是可以運行java位元組碼文件的虛擬計算機。

(1)編譯和jvm關系擴展閱讀

JRE是運行基於Java語言編寫的程序所不可缺少的運行環境。也是通過它,Java的開發者才得以將自己開發的程序發布到用戶手中,讓用戶使用。JRE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,這些是運行Java程序的必要組件。

與大家熟知的JDK不同,JRE是Java運行環境,並不是一個開發環境,所以沒有包含任何開發工具(如編譯器和調試器),只是針對於使用Java程序的用戶。

金字塔結構 JDK=JRE+JVM+其它運行Java程序一般都要求用戶的電腦安裝JRE環境(Java Runtime Environment);沒有jre,java程序無法運行;而沒有java程序,jre就沒有用武之地。

⑵ 關於JVM和編譯器

編譯為位元組碼的JAVA程序可以直接在JVM上運行,無需再次編譯.

C程序必須在不同的平台重新編譯,並且可能需要依據不同的系統修改程序中用到的數據類型.

⑶ 編譯器 JVM JDK JRE JSE是什麼 關系都有什麼用,都怎麼樣工作的

java是面向對象編程,一切皆對象。這個觀念要以後慢慢才能了解,無論怎麼樣講都是初學者理解不了的。所以還需要多多練習。
C語言是面向過程編程的。所以沒有「類」的概念,而java的類卻更符合人類的思維方式,C語言更符合機器的思維方式。

還有就是,千萬不要把C語言的一些概念和java混淆,這是兩種不同類型的語言,java是純的面向對像的編程語言,而C是面向過程的。以後的學習中你會發現java比C更有優勢。再重申一下,最好不要把C的概念和java做對比。你把java當作一門新的語言來學。 唯一可以借鑒C的就是語法和編程的一些基本概念如數據類型,設計模式之類的。

jvm 是java虛擬機,將java的class位元組碼文件翻譯成二進制可執行程序。
jdk 是java的開發包 java sdk, java的開發工具,包含SUN公司提供的java API,將java源碼編譯為class位元組碼文件,通常jdk中就包含了jre。
jre 是java運行時,用於執行java程序。
jse 是java標准開發,jse 就是java開發的一種,標准開發,例如開發桌面程序。

其餘的還有 javaEE, javaMe 前者是java的企業應用,後者是java的嵌入式開發,例如java手機程序。

如果netbeans能運行,說明你安裝的netbeans已經包含了JDK,而jdk里已經包含了jre和jvm,故以後就可以省心了,至於環境變數的事情,你可以去搜索一下,很簡單的配置,有個好消息告訴你,如果你是按照安裝向導操作的,向導會自動將環境變數寫進去。

java基礎類庫就是API,而你說的「庫」我不太明白是什麼意思。

jdk是開發工具包,裡麵包含 javaSE, JRE, JVM
jdk 把.java文件編譯成為.class位元組碼文件
然後JRE調用JVM將位元組碼文件翻譯成可供機器執行的程序。就這樣了啊。

最後說一句: 不推薦使用Netbeans, 現在公司里都用Eclipse,這才是趨勢。

************************************8
繼續補充
angelicdemon 所說的沒錯,IDE環境會在配置文件里自己寫上jdk和jre的路徑以便找到他們。
但是經過安裝向導安裝jdk後確實會自動將java所需要的環境變數寫進系統環境變數中。再有,如果使用IDE的話 環境變數沒啥用處,只有用命令行模式編譯java源碼才會有用處。

另外: Eclipse絕對是現在公司的首選,因為公司里的項目用ECLIPSE構建的,源碼上傳到版本控制系統後,同步後,你用Netbeans打不開,還得重新構建,麻煩嗎? 再說了NB和EC還是有相當大區別的。
還有就是,這句話最重要,如果你真的是java初學者,絕對不要用IDE,用記事本+命令行 這樣才能真正掌握java的機理。 哈哈 累死我了,就寫到這吧
angelicdemon 看來也和這貼幹上了。
一會兒這貼成論文貼了
***********************************

以上回答可能有錯誤,要參考其他人的答案。

⑷ java編譯器和JVM有什麼區別

java編譯器把java源碼編譯成位元組碼 (.class文件).
jvm是在運行期將class文件編譯成機器碼文件.供程序運行.

⑸ java編譯器和java虛擬機的關系

java編譯器是開發java程序用的
java虛擬機是java跨平台的解釋java程序和運行java程序用的

⑹ java中eclipse,jdk,jvm,jre,編譯器的區別

JVM就是常說的java虛擬機,它是整個java實現跨平台的 最核心的部分,所有的java程序會首先被編譯為.class的類文件,這種類文件可 以在虛擬機上執行,也就是說class並不直接與機器的操作系統相對應,而是經過虛擬機間接與操作系統交互,由虛擬機將程序解 釋給本地系統執行。

  1. JVM 是 Java 平台的基礎,和實際的機器一樣,它也有自己的指令集,並且在運行 時操作不同的內存區域。 JVM 通過抽象操作系統和 CPU 結構,提供了一種與平台無關的代碼執行方法,即與特殊的實現方 法、主機硬體、主機操作系統無關。但是在一些小的方面, JVM 的實現也是互不相同的,比如垃圾回收 演算法,線程調度演算法(可能不同 OS 有不同的實現)。JVM 的主要工作是解釋自己的指令集(即位元組碼)到 CPU 的指令集或 OS 的系統調用,保護用戶免被惡意程序騷擾。 JVM 對上層的 Java 源文件是不關心的,它關注的只是由源文件生成的類文件( class file )。類文件的 組成包括 JVM 指令集,符號表以及一些補助信息。



JRE是指java運行環境。光有JVM還不能成class的 執行,因為在解釋class的時候JVM需要調用解釋所需要的類庫lib。 在JDK的安裝目 錄里你可以找到jre目錄,裡面有兩個文件夾bin和lib,在 這里可以認為bin里的就是jvm,lib中則是jvm工 作所需要的類庫,而jvm和 lib和起來就稱為jre。所以,在你寫完java程序編譯成.class之後,你可以把這個.class文件 和jre一起打包發給朋友,這樣你的朋友就 可以運行你寫程序了。(jre里有運行.class的java.exe)

  1. JRE 是 Sun 公司發布的一個更大的系統,它裡面就有一個 JVM 。 JRE 就與具體的 CPU 結構和操作系統有關,我們從 Sun 下載 JRE 的時候就看到了不同的各種版本。同 JVM 一起組成 JRE 的還有一些 API (如 awt , swing 等)。 JRE 是運行 Java 程序必不可少的。

  2. JRE ( Java Runtime Environment ),是運行 Java 程序必不可少的(除非用其他一些編譯環境編譯成.exe可執行文件……),JRE的 地位就象一台PC機一樣,我們寫好的Win32應用程序需要操作系統幫 我們運行,同樣的,我們編寫的Java程序也必須要JRE才能運行。

  3. JRE裡面有一個 JVM , JRE 與具體的 CPU 結構和操作系統有關,我們從 Sun 下載 JRE 的時候就看到了不同的各種版本,,同 JVM 一起組成 JRE 的還有 一些 API (如 awt , swing 等), JRE 是 運行 Java 程序必不可少的.

JDK是java開發工具包,基本上每個學java的人都會先在機器 上裝一個JDK,那他都包含哪幾部分呢?讓我們看一下JDK的安裝目錄。在目錄下面有 六個文件夾、一個src類庫源碼壓縮包、和其他幾個聲明文件。其中,真正在運行java時起作用的 是以下四個文件夾:bin、include、lib、 jre。現在可以看出這樣一個關系,JDK包含JRE,而JRE包 含JVM。

    1. bin:最主要的是編譯器(javac.exe)

    2. include:java和JVM交互用的頭文件

    3. lib:類庫

    4. jre:java運行環境

      (注意:這里的bin、lib文件夾和jre里的bin、lib是 不同的)總的來說JDK是用於java程序的開發,而jre則 是只能運行class而沒有編譯的功能,eclipse、idea等 其他IDE有自己的編譯器而不是用JDK bin目錄中自帶的,所以在安裝時你會發現他們只要求選中jre路徑就ok了。

三者聯系:

  1. Java 喊出的帶有標志性的口號「 Write Once , Run Anywhere (一次編寫,到處運行)」,正是建立在 JRE 的基礎之上。何以實現?就是在 Java 應用程序和操作系統之間增加了一虛擬層—— JRE 。

  2. 程序源代碼不是直 接編譯、鏈接成機器代碼,而是先轉化到位元組碼( bytecode ) 這種特殊的中間形式,位元組碼再轉換成機器碼或系統調用。前者是傳統的編譯方法,生成的機器代碼就不可避免地跟特殊的操作系統和特殊的機器結構相關。而 Java 程序的位元組碼文件可以放到任意裝有 JRE 的計算機運行,再由不同 JRE 的將它們轉化成相應的機器代碼,這就實現了 Java 程序的可移植性。這樣程序員也不用去 關心程序運行的具體環境,而可以專心編寫軟體。這種分層抽象、隱藏細節的思想在計算機科學中處處可見,比如機器組織結構的設計、網路協議的實現等。 Pascal 語言的發明者 Niklaus Wirth ,就富有預見性地指出應該有這樣一種可移植的語言,其生成的中間代碼可以在一台假想的機器( a hypothetical machine )上運行。

  3. 而 Java 虛擬機( Java virtual machine 或 JVM )就是這樣的一台機器,它模擬實際處理器的結構,解釋位元組碼。 怎麼一會說是 JRE ,一會兒又成了 JVM ,兩者是否同物不同名? 回答是否定的。

  4. JRE的地位就象一台PC機一樣,我們寫好的Win32應用程序需要操作系統幫 我們運行,同樣的,我們編寫的Java程序也必須要JRE才能運行。

  5. 要運行Applet,在客戶端必須安裝有 JRE,即「運行時」,容易一點理解,就象所謂的「插件」,要開發JAVA應用程序Web應用,就必須在伺服器端安裝相應的 JVM+JDK 了(開發應用 Java web應用 時,客戶端不需要安裝任何的JVM)如果使用JAVA開發應用,就需要安裝 JRE+JDK,就是 J2SE. 。如果在客戶端運行Applet,客戶端瀏覽器必須嵌有JAVA JVM,如果沒有,就需要安裝,即: 在客戶端創建JRE(運行時,包含JVM),而客戶端是不需要做開發的,所以,JDK就沒有必要安裝 了。不同版本的Applet在不同的JVM下可能無法正常運行,而Microsoft JVM只是Sun JVM的「低版本」,微軟在windows xp/2003中乾脆將JVM去掉了.

⑺ jdk中有編譯器,解釋器,jvm,那麼它們是如何配合工作的呢

Java源代碼---->編譯器---->Java位元組碼(即虛擬指令)---->jvm---->解釋器----->二進制機器碼

⑻ jdk,jre,jvm三者間有何關系

JVM:Java虛擬機,它是整個java實現跨平台的最核心的部分,所有的java程序會首先被編譯為.class的類文件,這種類文件可以在虛擬機上執行。

JRE:Java運行環境,光有JVM還不能讓class文件執行,因為在解釋class的時候JVM需要調用解釋所需要的類庫lib。

JDK:Java開發工具包

JDK,JRE,JVM三者關系概括如下:

JDK是JAVA程序開發時用的開發工具包,其內部也有Java運行環境JRE。JRE是Java程序運行時需要的運行環境,就是說如果你光是運行Java程序而不是去搞開發的話,只安裝JRE就能運行已經存在的Java程序了。JDk、JRE內部都包含JAVA虛擬機JVM,JAVA虛擬機內部包含許多應用程序的類的解釋器和類載入器等等。

⑼ 請詳細說明JDK JRE JVM之間的關系

JDK是JAVA的核心,包括JRE(JAVA 虛擬環境)、編譯器等,JDK的主流產品是由SUN公司開發的,JDK本身是用JAVA編寫的,安裝包的SRC.ZIP就是JDK的源碼
JVM(JAVA虛擬機),是可以運行JAVA代碼的假想計算機,主要任務是把JAVA位元組碼編譯成特定計算機的機器指令,是JAVA實現「一次運行,處處運行」的關鍵
JRE是JAVA運行環境,包括JVM、JAVA平台核心類和支持文件,如果只是運行JAVA程序的話,可以下載JRE就可以了,如果要開發的話,就要下JDK了。
JAVA運行順序,先編寫JAVA程序塊,然後通過JDK的編譯器把JAVA程序編譯成位元組碼生成class文件,然後通過JVM運行,主要指令有 javac a.java,java a

MFC,微軟基礎類(Microsoft Foundation Classes),提供一組通用的可重用的類庫供開發人員使用,用於在C++環境下編寫應用程序的一個框架和引擎,是一種Application Framework,一般與VC++綁定的
作為Application Framework,MFC的使用只能提高某些情況下的開發效率,只起到輔助作用,而不能替代整個Win32 程序設計。但是由於簡單性,好多人認為VC++開發必須用MFC,其實這是不對的
VC++是個集成開發環境,不需要再下載別的軟體

⑽ java jdk與編譯器有什麼關系

jdk包含編譯器,編譯器就一個文件 javac.exe

熱點內容
怎麼才能知道電視是不是安卓系統 發布:2025-02-07 03:04:23 瀏覽:815
銀行更改密碼紅色預警是什麼意思 發布:2025-02-07 02:54:22 瀏覽:551
androiddomain 發布:2025-02-07 02:46:04 瀏覽:843
埠掃描源碼 發布:2025-02-07 02:31:01 瀏覽:470
androidurl獲取圖片 發布:2025-02-07 02:22:11 瀏覽:482
調用上傳 發布:2025-02-07 02:19:53 瀏覽:84
aix編譯安裝 發布:2025-02-07 02:19:52 瀏覽:906
android界面設計尺寸 發布:2025-02-07 02:16:25 瀏覽:898
zenly安卓為什麼會一直閃 發布:2025-02-07 02:12:02 瀏覽:358
為什麼安卓手機界面總出廣告 發布:2025-02-07 02:10:33 瀏覽:244