1. 程式人生 > >JVM、JRE與JDK簡介

JVM、JRE與JDK簡介

一、 JVM

       JVM(Java Virtual Machine),是架構在Linux、Windows等各種作業系統平臺之上的一種虛擬的機器。

       它為所有編譯程式提供一個共同的介面,編譯程式只需要面向虛擬機器,生成虛擬機器能夠理解的程式碼,然後由直譯器來將虛擬機器程式碼轉換為特定系統的機器碼執行。在Java中,這種供虛擬機器理解的程式碼叫做位元組碼(ByteCode)(class檔案的內容),它不面向任何特定的處理器,只面向虛擬機器。每一種平臺的直譯器是不同的,但是實現的虛擬機器是相同的。Java源程式經過編譯器編譯後變成位元組碼,位元組碼由虛擬機器解釋執行,虛擬機器將每一條要執行的位元組碼送給直譯器,直譯器將其翻譯成特定機器上的機器碼,然後在特定的機器上執行。

       這也是Java能夠跨平臺的原因。對於計算機而言,只認識一種語言,也就是0、1序列組成的機器指令。當我們用Java或者C++等語言寫好程式時,計算機是看不懂它們的,這就需要一個翻譯員將我們寫好的程式碼翻譯成0、1序列組成的機器指令,這個翻譯員的工作就是編譯(Compiler)。

        而其中的問題在於,每個平臺認識的0、1序列並不一樣。某個指令在Windows上是0101,在Linux下可能就是1010,因此必須使用不同的編譯程式為不同平臺編譯出可執行的機器碼,這樣無法做到跨平臺。

        Java程式要想執行,也要通過編譯。不過Java編譯時,並不直接編譯為依賴於平臺的0、1序列,而是翻譯為位元組碼(ByteCode)。

Java原始碼副檔名為.java,經過編譯後變成副檔名為.class的位碼。如果想要執行位碼文件,目標平臺必須安裝JVM。JVM會將位碼翻譯為與平臺相關的機器碼,如圖1所示。


圖 1

        不同的平臺需要安裝專屬該平臺的JVM。打個比方就是,你講中文(.java),Java編譯程式幫你翻譯為英文(.class),這份英語檔案到各地後,再由當地看得懂的人(JVM)翻譯為當地語言(機器碼)。

        所以,JVM就是把.class位碼文件,翻譯成所在平臺看得懂的0、1序列。這樣就能達到跨平臺的目的。需要記住的是:對Java程式而言,只認識一種作業系統,就是JVM,.class位碼文件就是JVM的可執行檔案。Java是執行與JVM上的,而JVM去與底層平臺(如Linux)等進行溝通,但是我們不必考慮這些。

二、JRE與JDK

        拿一句最基礎的程式碼為例:

        System.out.println(“Hello World”);

        Java是個標準,System、out、println都是標準中規範的名稱。實際上必須有人根據標準寫出System.java,編譯為System.class,這樣才能直接使用System類上out物件的println()方法。
       而寫出System.java的廠商(如Sun、IBM)必須根據相關的JSR標準檔案將標準連結庫開發出來,這樣寫好的Java程式在Sun、IBM等廠商開發的JVM上執行時,引用如System這些標準API,才能執行在不同平臺。

       在圖2可以看到JavaSE API包含各種常用的連結庫,像是通用的集合(Collection)、輸入/輸出、聯機資料庫的JDBC、撰寫視窗程式的AWT與Swing等,這些都在各個JSR標準檔案規範之中。


圖 2

        JRE(Java Runtime Environment)是Java執行環境,包括JavaSE API與JVM。使用JavaSE API中的連結庫,在安裝有JRE的計算機上就可以直接執行。

        前面說過,要在,java中撰寫Java程式語言,使用編譯程式編譯為.class文件,其中編譯程式這樣的工具程式就有JDK提供,全名為JavaDevelopment Kit。

        JDK包括了javac、appletviewer、javadoc等工具程式,對於要開發Java程式的人,必須安裝JDK。JDK本身包括了JRE,這樣才能執行Java程式。總的來說,JDK包括了Java程式語言、工具程式與JRE,JRE則包括了部署技術、JavaSE API與JVM。

相關推薦

JVMJREJDK簡介

一、 JVM        JVM(Java Virtual Machine),是架構在Linux、Windows等各種作業系統平臺之上的一種虛擬的機器。        它為所有編譯程式提供一個共同的介面,編譯程式只需要面向虛擬機器,生成虛擬機器能夠理解的程式碼,然後由直譯

JVMJREJDK的關係

最開始學 Java 的時候不是很在意這些比較基礎的東西,只是知道怎麼使用。現在學得有些日子了,雖然也不是很清楚底層的具體實現,但是對於整個體系的搭建大致有了一些瞭解。最近由於找到工作了比較鬆懈,而且也在考駕照,所以有些日子沒學習了。今天一時想起,把之前的筆記整理了一下,順便

JAVA學習筆記系列3-JVMJREJDK的區別

JVM(Java Virtual Machine)就是一個虛擬的用於執行bytecode位元組碼的“虛擬計算機”。它和os打交道 JRE(Java Runtime Environment)包含:Java虛擬機器、庫函式、執行java應用程式所必須的檔案。它包含了JVM JDK(Java Developme

理解JVMJREJDK

JVM    JVM,全稱為Java Virtual Machine,中文的意思是:Java虛擬機器。   在理解Java虛擬機器這個定義之前,我們先講講為何叫虛擬機器呢?稱為虛擬機器,顧名思義,它應該不是真實存在的。那它是什麼呢?在這裡,我們把它理解為一種規範(就像

針對初學者瞭解JVMJREJDK三者間的區別和聯絡

      首先說Java程式語言,它是一門高階程式語言,具體由誰何時建立的,讀者可以到網上查詢相關資料,這裡就不再贅述。那麼,談到Java就不得不談談JVM、JRE和JDK三者間的區別和聯絡。       JVM:英文全稱Java Virtual Machine,字面意思

Java筆記 - JDKJREJVM

inter path mach 指令 ima title 變量 applet 20px (1)JDK與JRE JDK(JAVA Development Kit)不僅包含java運行時環境JRE(JAVA Runtime Environment)的超集,還為開發者還

簡述JVMJREJDK的關系及作用

java程序 虛擬 不能 window jvm 運行 ron 作用 虛擬機 1、JVM:java虛擬機 。     作用:保證java語言跨平臺。 2、JRE:java運行環境 jre=java虛擬機+核心類庫。     作用:java程序的運行環境。 3、JDK :jav

第一記-JVMJREJDK

高階語言分編譯語言和解釋語言。 編譯是編譯器把原始碼編譯成本地機器可識別的機器碼,只需執行一次,程式執行速度快,然而不可移植到其它平臺。 解釋在每次程式執行時都進行一次編譯,可以移植到其它平臺,程式執行速度變慢。 java語言是將原始碼(以.java結尾的檔案)轉換為位元組碼檔案(.class),然後由

Java基礎(一)——JVMJREJDKJavac等

Life is like a box of chocolates,you never konw what you're going to get. 在大學的時候已經學習過java,但是對java瞭解的越多越發現自己越來越不瞭解java。這有點像自以為擁有了整

JVMJREJDK區別和聯絡

JVM:字面意思是java虛擬機器,它是用來載入並執行.class檔案的軟體JRE:字面意思是java執行時環境,它包含JVM和一些常用的類庫,類庫就是我們在編寫好java程式後所依賴的核心類和支援檔

JVMJREJDK相關概念

www. 語言 java基礎 使用 ica java開發工具 devel j2e 開發者 **轉載** 文章出處 https://www.cnblogs.com/zhangzongxing01/p/5559126.html JDK(Java Development

JVMJreJdksdk關係

JVM: Java虛擬機器(Java Virtual Machine 簡稱JVM)是執行所有Java程式的抽象計算機,是Java語言的執行環境,它是Java 最具吸引力的特性之一。jvm是java針對不同平臺編寫的編碼解析工具,能將java程式碼編譯為位元組碼。這是java跨

java的幾個版本以及jvmjrejdkJava SEJava EEJava ME

哈哈還沒有展開它們的子選項呢,讓人眼花繚亂,下面介紹大家使用的比較廣泛的名詞吧: (一)J2SE Java2平臺標準版(Java2 Platform Standard Edition),主要面向個人PC桌面應用程式開發,其中包括: 1、Java執行環境(Java Runtime Environment, JR

JAVA JREJDK的區別(簡潔,詳細,精闢)

Oracle has two products that implement Java Platform Standard Edition (Java SE) 8: Java SE Development Kit (JDK) 8 and Java SE Runtime Environment (JR

java JDKJREJVM 的區別聯系

pan 及其 調試工具 編譯 java開發工具 font jre cpu devel      JVM:(Java Virtual Machine)就是java虛擬機。   JRE:(Java Runtime Enviromental)java運行環境,包括了JVM

Java JDKJREJVM的區別聯系

自己 title category 工具 編寫 image src 通過 基礎 title: Java JDK、JRE、JVM的區別與聯系 date: 2018-03-17 23:07:33 category: 原創 --- JDK: 全名:Java Developmen

JDKJREJVM的區別聯絡

本文章僅供本人學習參考,如有錯誤和不妥,望指正~~ 轉載連結:https://jingyan.baidu.com/article/425e69e6077283be15fc16ed.html   前幾天面試的時候被問到JDK、JRE、JVM三者的區別,雖然答了出來,但是有些細節還

0JDKJREJVM區別聯絡

1.基本概念 JVM : 全稱 Java Virtual Machine,即java虛擬機器,是一個用於執行位元組碼的”虛擬計算機”。由於不同的作業系統有不同的虛擬機器,Java虛擬機器在執行位元組碼時,把位元組碼解釋成具體平臺上的機器指令執行。實現了“一次編譯,隨處執行”。 這也是J

2018/12/9 JDKJREJVM區別聯絡

Eg:        首先舉個簡單的例子,比如你要用Gephi這款軟體,需要配置java環境,如果你配置JDK——開發java程式用的開發包,還需要進一步配置環境變數,如果你配置好了JRE——執行java程式的環境,就可以直接使用Gephi。 &nbs

【Java SE】————JDKJREJVM簡介

JDK、JRE、JVM簡介:  JVM(Java Virtual Machine,Java虛擬機器)的縮寫,JVM是一種用於計算裝置的規範,它是一個虛構出來的計   算機,是通過在實際的計算機上模擬