當前位置:首頁 » 編程軟體 » jvm虛擬機編譯二進制

jvm虛擬機編譯二進制

發布時間: 2022-08-24 00:41:37

編譯器 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要運行要經過如下步驟:

1、源代碼文件.java經過javac命令的編譯形成.class位元組碼文件。

2、然後位元組碼文件經過一番步驟後java虛擬機將這些二進制位元組碼按照一定的方式讀入內存中的不同區域形成了二進制位元組碼的活化狀態。

3、虛擬機使用位元組碼指定的命令執行這些指令,其間使用位元組碼中存儲的數據,最終完成了任務。

從上面的步驟可以看出,源文件在編譯生成.class位元組碼文件後,需要通過虛擬機才能被執行。如果你是Java的初學者,可以到秒秒學學習了解下Java的相關課程。

Ⅲ 求Java虛擬機詳解

1 Java技術與Java虛擬機

說起Java,人們首先想到的是Java編程語言,然而事實上,Java是一種技術,它由四方面組成:Java編程語言、Java類文件格式、Java虛擬機和Java應用程序介面(JavaAPI)。它們的關系如下圖所示:

圖4:虛擬機的運行過程

4 結束語

本文通過對JVM的體系結構的深入研究以及一個Java程序執行時虛擬機的運行過程的詳細分析,意在剖析清楚Java虛擬機的機理。

Ⅳ Java的「一次編譯到處運行」

JAVA的跨平台是有條件的!
就是在各個平台必須安裝有JAVA運行的支持環境(Sun
Java
Runtime
Environment
)。
JAVA編譯的結果是一種中間碼,需要運行環境解釋並執行。
而EXE生成的是最終二進制代碼,只適合於某個特定的平台。
一般的開發都是在WINDOWS環境下,如果拿到LINUX之類的平台下顯然不支持。
而現在的操作系統好象沒有不支持JAVA的。

Ⅳ 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虛擬機內部包含許多應用程序的類的解釋器和類載入器等等。

Ⅵ java中什麼是能夠在計算機CPU上執行的二進制代碼

java中的JVM是能夠在計算機CPU上執行的二進制代碼。

  • java的執行過程

Java代碼需要經過編譯和解釋兩個步驟,才在能在平台上運行。首先java語言的編譯器,幫java代碼編譯成class的位元組碼,之後通過java虛擬機(JVM)來解釋執行。

  • java代碼的編譯

java代碼是如何編譯的?

首先編譯的解釋:把用高級程序設計語言書寫的源程序,翻譯成等價的計算機匯編語言或機器語言書寫的目標程序的翻譯程序。編譯的具體過程,可以看看《編譯原理》相關的書籍。

其實java的編譯過程,和通常c/c++還是不同的。

java編譯後的位元組碼文件格式主要分為兩部分:常量池和方法位元組碼。常量池記錄的是代碼出現過的所有token(類名,成員變數名等等)以及符號引用(方法引用,成員變數引用等等);方法位元組碼放的是類中各個方法的位元組碼。

Java編譯器卻不將對變數和方法的引用編譯為數值引用,也不確定程序執行過程中的內存布局,而是將些符號引用信息保留在位元組碼中,由解釋器在運行過程中創立內存布局,然後再通過查表來確定一個方法所在的地址,這樣就有效地保證了java的可移植性和安全性。

c/c++的編譯,當C編譯器編譯生成一個對象的代碼時,該代碼是為在某一特定硬體平台運行而生成的。因此在編譯過程中,編譯程序通過查表將所有對符號的引用轉換為特定的內存偏移量,以保證程序運行。

  • java虛擬機(JVM)

簡單的可以這樣理解它的功能:就是將java編譯之後的位元組碼,解釋成cpu能夠執行的二進制代碼。

JVM是一個虛構出來的計算機,是通過在實際的計算機上模擬模擬各種計算機功能來實現的。JVM有自己完善的硬體架構,如處理器、堆棧、寄存器等,還具有相應的指令系統。JVM的主要工作是解釋自己的指令集(即位元組碼)並映射到本地的CPU的指令集或OS的系統調用。Java語言是跨平台運行的,其實就是不同的操作系統,使用不同的JVM映射規則,讓其與操作系統無關,完成了跨平台性。JVM對上層的Java源文件是不關心的,它關注的只是由源文件生成的類文件(class file)。類文件的組成包括JVM指令集,符號表以及一些補助信息。

java虛擬機工作的原理,可以自己找一下網上的資料。大家還需要思考的問題,jvm的內存、jvm的垃圾回收(GC)、Android的朋友還要區分(Dalvik 和標准 Java 虛擬機JVM)的區別。

  • 總結:

java代碼編譯之後,可以直接運行在Windows或者其它裝有JVM虛擬機的系統下。而C或C++直接編譯成與機器和操作系統相關的代碼。所以C語言編譯的程序沒有跨平台性,就算沒有使用到操作系統相關的API,在不同的系統下也必須重新編譯才能運行。

Ⅶ Java虛擬機的基本運行流程是什麼

1.Java語言運行的過程

Java語言寫的源程序通過Java編譯器,編譯成與平台無關的『位元組碼程序』(.class文件,也就是0,1二進製程序),然後在OS之上的Java解釋器中解釋執行。

也相當與

註:JVM(java虛擬機)包括解釋器,不同的JDK虛擬機是相同的,解釋器不同。

2.JVM:

JVM是java的核心和基礎,在java編譯器和os平台之間的虛擬處理器。它是一種利用軟體方法實現的抽象的計算機基於下層的操作系統和硬體平台,可以在上面執行java的位元組碼程序。

java編譯器只要面向JVM,生成JVM能理解的代碼或位元組碼文件。Java源文件經編譯成位元組碼程序,通過JVM將每一條指令翻譯成不同平台機器碼,通過特定平台運行。

JVM執行程序的過程 :

I.載入。class文件

II.管理並分配內存

III.執行垃圾收集

JRE(java運行時環境)由JVM構造的java程序的運行環境

Ⅷ java源文件是通過java虛擬機JVM(javac命令)編譯成類文件,那類文件又是通過什麼工具(java命令)執行呢

java是編譯成位元組碼(即類文件的編碼),位元組碼是一種中間碼,比機器碼更抽象,通常被看成二進制或十六進制,而計算機中也是以二進制來計算的,也正是因為這個原因java可以跨平台。執行類文件就是再把位元組碼翻譯成符合本地機器的指令去執行,也是由JVM做的。所以java的編譯執行過程是:源文件---->位元組碼----->本地機器碼。這就是為什麼java運行起來比C語言慢的原因,因為多了一步翻譯位元組碼的過程。

Ⅸ jvm是什麼

jvm是java虛擬機規范,您的推薦答案答的是啥玩意啊?我要是HR,准T他,驢唇不對馬嘴,我作為HR,我想要問你的是你了解JVM嗎?你能通過jvm進行分析嗎?誰問你java是啥來著?jvm分為這么幾個大部分,classloader類載入器,內存管理,GC,excution engine執行引擎,本地指令等部分。其中需要中級程序員必須掌握的是classloader,內存,GC和執行引擎。尤其內存部分,必須要熟練,這是基礎。

熱點內容
加密狗是啥 發布:2025-02-06 03:48:03 瀏覽:552
phpcopy文件 發布:2025-02-06 03:41:26 瀏覽:410
系統配置頁面怎麼設置 發布:2025-02-06 03:36:34 瀏覽:693
家庭電腦搭建流媒體伺服器 發布:2025-02-06 03:19:02 瀏覽:342
matlab稀疏矩陣存儲 發布:2025-02-06 03:07:54 瀏覽:838
國際服2b2t伺服器地址 發布:2025-02-06 03:06:28 瀏覽:390
c語言輸出b 發布:2025-02-06 03:06:27 瀏覽:31
普通火車wifi密碼多少 發布:2025-02-06 03:04:20 瀏覽:436
可編程監控 發布:2025-02-06 03:03:33 瀏覽:645
c語言取隨機數 發布:2025-02-06 02:46:57 瀏覽:863