亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

一篇文章帶你入門Java基本概念

 更新時間:2021年08月04日 11:25:51   作者:zhrb  
本文主要介紹了Java編程的基本概念基本概念,可以幫助我們更加深刻的所要講解的Java命令,具有很好的參考價值。下面跟著小編一起來看下吧,希望能給你帶來幫助

Java基本概念

JDK包含了不少Java開發(fā)相關(guān)命令。如,javac、java、javap、javaw、javadoc。雖然現(xiàn)在的Java開發(fā)都使用IDE完成,基本上不會直接使用這些命令。但是理解這些命令的用法,可以讓我們更加扎實的掌握java編譯、運行等的基本概念。

在講解Java命令之前,我們先了解一些基本概念,可以幫助我們更加深刻的所要講解的Java命令。

一、JRE(Java運行時環(huán)境)

Java Runtime Environment。故名思意,包含了運行Java程序所需的環(huán)境,比如Java虛擬機、相關(guān)的類庫等相關(guān)資源。**你可以將JRE理解成一個運行在操作系統(tǒng)上的程序,該程序可以用來運行Java程序。**這個程序只用來運行運行Java程序,但并不包含Java開發(fā)的工具。因此,對于開發(fā)人員,只有JRE是不夠。對于需要運行的Java程序的普通用戶,只需要正確版本的JRE就可以運行Java程序了。

注意:每個操作系統(tǒng)上的JRE程序都是不一樣的,比如Windows與Linux上的JRE就不一樣。你可以將不一樣,理解成他們的代碼不同。因此你在下載時,會發(fā)現(xiàn)不同操作操作系統(tǒng)會有不同的JRE,即使是同一個操作系統(tǒng),32位與64位的JRE也不一樣。

二、JDK(Java開發(fā)工具)

Java Development Kit。包含了Java開發(fā)的工具,比如javac、javap命令、java源代碼等。對于開發(fā)人員,需要下載這個才能開發(fā)Java程序。

JDK 8及之前,安裝JDK的時候除了安裝JDK還會安裝一個獨立的JRE,因此你在安裝的時候,會發(fā)現(xiàn)要安裝兩個東西。這個JRE,可以運行兼容版本的Java程序。換句話說,對于所有Java程序,某個JRE是完全一樣的,不能單獨定制。注意:安裝JDK 8實際上安裝了兩個JRE。一個安裝在JDK目錄的jre目錄中,另一個安裝在你指定的其他目錄。

JDK 11及之后,不包含另一個獨立的JRE。JDK本身已經(jīng)包含了Java的運行時環(huán)境,不過這個運行時環(huán)境剝離了一些東西,比如默認不包含的Java Swing。Java 11使用了jigsaw模塊化系統(tǒng),你可以為java程序創(chuàng)建一個更小的適合該程序的JRE。比如,你的Java程序不包含Java Swing代碼,你可以使用jlink為你的程序定制一個更小的專屬于你的程序的JRE。

結(jié)論:

1.JDK 11后,你不需要安裝獨立的JRE,因為其已經(jīng)包含了。

2.JDK 11引入了模塊化系統(tǒng),你可以為自己的程序定制JRE。

三、Java源代碼文件(.class)

.java文件(后綴名為java,如Hello.java),包含Java源代碼。本質(zhì)上是一個文本文件,可通過文本編輯器編輯,不能直接運行。

四、Java字節(jié)碼文件(.java)

.class文件(如Hello.class),.java文件經(jīng)過javac命令編譯得到.class文件。是一個二進制文件,包含了Java虛擬機才看得懂的字節(jié)碼命令。

五、Java虛擬機(JVM)

Java Virtual Machine,簡稱JVM。通常來說JRE都要包含JVM。JVM是字節(jié)碼文件運行的環(huán)境,可以加載與運行Java類。你的.class實際上是跑在JVM上,而JVM則是一個獨立的程序,運行在操作系統(tǒng)上。每個操作系統(tǒng)上JVM的程序都不一樣。但他們有一個共同之處,就是都可以運行你的.class文件。

六、跨平臺運行

什么是跨平臺運行呢?

就是你編寫好的.java源代碼編譯為.class字節(jié)碼文件后,那么任何兼容該.class文件的JRE中的JVM都可以運行該字節(jié)碼文件。而無需考慮這個JRE到底是Linux下的,還是Windows下。簡單地說,你在Windows下編譯好的.class文件,拿到Linux下,只要JRE版本正確,就可以運行。注意:這里的兼容指的是,Java版本的向下兼容。比如,你在Java 8下編譯的字節(jié)碼文件,理論上來說Java 11是可以直接運行的。反之則不行。

相比較于C或C++語言,你在Windows下使用gcc工具編譯、鏈接成可執(zhí)行程序.exe。這個可執(zhí)行程序,在Linux下是無法執(zhí)行的。

為什么可以跨平臺呢?

關(guān)鍵在于JVM。.class字節(jié)碼文件是結(jié)構(gòu)中立的。所謂的結(jié)構(gòu)中立指的是.class文件包含的面向JVM的字節(jié)碼命令,而不是面對某個操作系統(tǒng)的機器碼。你在哪個操作系統(tǒng)上對某個.java文件進行編譯生成的.class文件都是一樣的(只要Java版本相同)。因此,不管你是Linux上的JVM還是Windows上的JVM,都可以運行這些.class文件中字節(jié)碼指令。見下圖。

在這里插入圖片描述

注意:字節(jié)碼不是機器碼,因此不能直接在操作系統(tǒng)上直接運行。只能先運行JVM,才能運行字節(jié)碼文件。這也就是早期Java程序慢的一個原因。

七、JDK與JRE、JVM的關(guān)系?

JDK包含了JRE與Java開發(fā)工具(如javac,java,jar, jlink等命令)。

JRE包含了JVM、Java類庫與一些資源文件。

八、幾個結(jié)論

1.Java程序的開發(fā)運行流程

編寫.java文件—經(jīng)過javac編譯—>.class文件—使用java命令載入—>載入到JVM運行。

如下圖所示。

在這里插入圖片描述

2.運行JAVA程序必須先運行JRE中的JVM。

3.Java程序是跨平臺的。編譯好的.class文件可以在不同操作系統(tǒng)上兼容的Java上運行。

4.Java 11及以后支持模塊化系統(tǒng)jigsaw。因此可為自己的Java程序定制化JRE。不過初學(xué)者,暫時不用考慮這些,直接使用默認的JRE即可。但碰到問題時(如要編寫Java Swing程序,卻提示錯誤),要了解問題可能產(chǎn)生的原因。

總結(jié)

本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Java中的ThreadPoolExecutor線程池詳解

    Java中的ThreadPoolExecutor線程池詳解

    這篇文章主要介紹了Java中的ThreadPoolExecutor線程池詳解,當(dāng)線程池中的線程數(shù)大于 corePoolSize 時,keepAliveTime 為多余的空閑線程等待新任務(wù)的最長時間,超過這個時間后多余的線程將被終止,需要的朋友可以參考下
    2023-12-12
  • java語言描述Redis分布式鎖的正確實現(xiàn)方式

    java語言描述Redis分布式鎖的正確實現(xiàn)方式

    這篇文章主要介紹了java語言描述Redis分布式鎖的正確實現(xiàn)方式,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Java繼承extends與super關(guān)鍵字詳解

    Java繼承extends與super關(guān)鍵字詳解

    本篇文章給大家詳細講述了Java繼承extends與super關(guān)鍵字的相關(guān)知識點,需要的朋友們可以參考學(xué)習(xí)下。
    2018-02-02
  • Java中Iterator與ListIterator迭代的區(qū)別

    Java中Iterator與ListIterator迭代的區(qū)別

    本文主要介紹了Java中Iterator與ListIterator迭代的區(qū)別,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • Java實現(xiàn)監(jiān)聽文件變化的三種方案詳解

    Java實現(xiàn)監(jiān)聽文件變化的三種方案詳解

    這篇文章主要介紹了Java實現(xiàn)監(jiān)聽文件變化的三種方法,每種方案給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • MyBatisPlus查詢投影與查詢條件詳細講解

    MyBatisPlus查詢投影與查詢條件詳細講解

    這篇文章主要介紹了MyBatisPlus DQL編程控制中的查詢投影、查詢條件,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 淺談String.split()遇到空字符串的幾種情況

    淺談String.split()遇到空字符串的幾種情況

    這篇文章主要介紹了淺談String.split()遇到空字符串的幾種情況,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Java切割字符串的踩坑實戰(zhàn)記錄

    Java切割字符串的踩坑實戰(zhàn)記錄

    最近在項目中使用了java中的分割字符串,踩了一個坑,充分了展示了自己對java底層的認知有很多的不足和欠缺,下面這篇文章主要給大家介紹了關(guān)于Java切割字符串的踩坑實戰(zhàn)記錄,需要的朋友可以參考下
    2022-11-11
  • 小議Java中final關(guān)鍵字使用時的注意點

    小議Java中final關(guān)鍵字使用時的注意點

    final關(guān)鍵字代表著最后、不可改變,無論是在用final修飾類、修飾方法還是修飾變量時,都要注意內(nèi)存分配的問題.這里來小議Java中final關(guān)鍵字使用時的注意點:
    2016-06-06
  • 指定jdk啟動jar包的方法總結(jié)

    指定jdk啟動jar包的方法總結(jié)

    這篇文章主要給大家總結(jié)介紹了關(guān)于指定jdk啟動jar包的方法,文中通過實例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2023-07-07

最新評論