class_2:Java概念 java se ee me jdk jre jvm

一、什么是Java?

Java是一門面向對象的編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特征。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程 。

Java具有簡單性、面向對象、分布式、健壯性、安全性、平臺獨立與可移植性、多線程、動態性等特點 。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。

Java 技術 = Java 語言 + Java 平臺;Java 平臺 = JVM + JDK。

作者:南京網博教育
鏈接:https://www.zhihu.com/question/31455874/answer/2721177201
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。
?

二、什么是Java SE?

Java SE = JDK 根基。這么說吧,可以理解為JavaSE是Java的基石,如果將Java程序想象成一座高樓大廈,那么JavaSE就是地基。

官方解釋:

Java SE(Java Platform,Standard Edition)Java SE 以前稱為 J2SE。它允許開發和部署在桌面、服務器、嵌入式環境和實時環境中使用的 Java 應用程序。Java SE 包含了支持 Java Web服務開發的類,并為 Java Platform,Enterprise Edition(Java EE)提供基礎。

簡單點說:Java SE 標準版,是其他兩個版本的基礎,是做電腦上運行的軟件。

JavaSE包含了什么?

  1. 面向對象
  2. 多線程
  3. IO流
  4. JavaSwing

三、什么是Java EE?

JavaEE個人理解的就是在javaSE的基礎上,添磚加瓦后出現的一種規范,說是框架也行。

官方解釋:

Java EE,Java 平臺企業版(Java Platform Enterprise Edition) 之前稱為Java 2Platform, Enterprise Edition (J2EE) 2018年3月更名為 Jakarta EE(這個名稱應該還沒有得到群眾認可)。 是 Sun 公司為企業級應用推出的標準平臺,用來開發B/S架構軟件。同時要知道:JavaEE 是 Java 應用最廣泛的部分。

簡單點說:Java EE 企業版,一般開發企業級互聯網程序,是用來做網站的-(我們常見的JSP技術)

JavaEE包含了什么?

  1. serclet
  2. jstl
  3. jsp
  4. spring
  5. mybatis

四、什么是Java ME?

javaME這一塊只需要了解就可以了,因為現在很少有使用這個東西的了,但是作為java程序員,這些基本的板塊,還是的知道的。

官方解釋:

Java ME 又稱為J2ME(Java Platform,Micro Edition)是為機頂盒、移動電話和PDA之類嵌入式消費電子設備提供的Java語言平臺,包括虛擬機和一系列標準化的Java API。

簡單點說:Java ME 小型版,一般用于來研發嵌入式程序,已經被Android替代了,是做手機軟件的。

五、JavaSE,JavaEE,JavaME的關系

六、那么我們應該學習哪個呢?

1、Java EE 是開發 WEB 應用的!例如網站,網頁等,Java EE 包含Java SE,要想學好Java EE,除了Java SE 精通外,你還要學一些其他的框架以及知識,例如Spring、SpringMVC、MyBatis 等一些框架。Java 最厲害,用的最多的地方就是做 WEB 應用。當然 WEB 應用大體也可分為 前端開發 和 后端開發(服務器開發)兩類,但是不管怎么樣,Java SE 是基礎,是必須要好好學的。

2、Java SE 是 Java EE 的基礎所開發的東西也不一樣,如果想找一份好的工作還是把 Java SE 學好學精可以找一個幾千塊的工作,如果把 Java EE 學精那么相信你的工資很快就會超過 20k。

前言

大多數人剛接觸Java的時候都會經常看到JDK、JRE、JVM,但可能一直迷迷糊糊,不知道它們之間真正的作用和含義,而了解JDK、JRE、JVM分別是什么及它們之間的關系有助于我們更加深刻的理解java語言的特性。

Java程序是運行在JVM(Java虛擬機)上的,在開發程序之前要配置Java開發環境,而配置環境要做的就是JDK的安裝和配置。

三者的大致結構是這樣的,簡單來說就是JDK包含JRE,JRE又包含JVM的關系。如下圖所示:
在這里插入圖片描述

一、JDK簡單介紹

JDK:Java Development Kit 是Java的標準開發工具包(普通用戶只需要安裝 JRE來運行 Java 程序。而程序開發者必須安裝JDK來編譯、調試程序)。它提供了編譯、運行Java程序所需的各種工具和資源,包括Java編譯器、Java運行環境JRE,以及常用的Java基礎類庫等,是整個JAVA的核心。

JDK一般有三種版本:

SE(J2SE),standard edition,標準版,是我們通常用的一個版本 EE(J2EE),enterpsise edtion,企業版,使用這種JDK開發J2EE應用程序, ME(J2ME),micro edtion,主要用于移動設備、嵌入式設備上的java應用程序 (相對來說現在使用的很少了)

JDK安裝目錄下各個子文件目錄和文檔作用的詳細介紹

下圖是Java8中JDK的安裝目錄在這里插入圖片描述
bin文件里面存放了JDK的各種開發工具的可執行文件,主要的是編譯器(javac.exe)

db文件是一個先進的全事務處理的基于Java技術的數據庫(jdk自帶數據庫db的使用)

include文件里面是Java和jvm交互用的頭文件

jre為java運行環境

lib文件存放的是JDK工具命令的實際執行程序

二、JRE

JRE:Java runtime environment 是運行基于Java語言編寫的程序所不可缺少的運行環境,用于解釋執行Java的字節碼文件。

也是通過它,Java的開發者才得以將自己開發的程序發布到用戶手中,讓用戶使用。JRE中包含了Java virtual machine(JVM),runtime class libraries和Java application launcher,這些是運行Java程序的必要組件。與大家熟知的JDK不同,JRE是Java運行環境,并不是一個開發環境,所以沒有包含任何開發工具(如編譯器和調試器),只是針對于使用Java程序的用戶。
在這里插入圖片描述
下圖是Java8中JRE的安裝目錄,里面有兩個文件夾bin和lib。你可以認為bin里的就是JVM,lib中則是JVM工作所需要的類庫,而JVM和 lib和起來就稱為JRE在這里插入圖片描述
從JDK11開始,JDK和JRE都是在一起的,安裝后默認是沒有JRE的。如果需要JRE這個單獨目錄,可以在JDK目錄下面去打開命令窗口,然后執行如下命令(win10執行這個生成JRE需要目錄權限):

bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre

執行完之后就會生成JRE,但無論使用tomcat 還是eclipse,沒有JRE文件夾實際上并不影響你的使用。

三、JVM

JVM:Java Virtual Machine 是Java的虛擬機,是JRE的一部分。它是整個java實現跨平臺的最核心的部分,負責解釋執行字節碼文件,是可運行java字節碼文件的虛擬計算機。

所有平臺的上的JVM向編譯器提供相同的接口,而編譯器只需要面向虛擬機,生成虛擬機能識別的代碼,然后由虛擬機來解釋執行。

四、Java跨平臺的原因

使用Java編譯器編譯Java程序時,生成的是與平臺無關的字節碼,這些字節碼只面向JVM。不同平臺的JVM都是不同的,但它們都提供了相同的接口。

JVM是Java程序跨平臺的最核心的部分,只要為不同平臺實現了相應的虛擬機,編譯后的Java字節碼就可以在該平臺上運行。其屏蔽了與具體操作系統平臺相關的信息,使得Java程序只需生成在Java虛擬機上運行的目標代碼(字節碼),就可以在多種平臺上不加修改地運行。

正是因為有了JVM的存在,Java才實現了強大的跨平臺特性。

五、jvm執行程序的過程

  1. 加載.class 文件
    所有的java程序會首先被編譯為.class的類文件,這種類文件可以在虛擬機上執行。也就是說class并不直接與機器的操作系統相對應,而是經過虛擬機間接與操作系統交互,由虛擬機將程序解釋給本地系統執行。只有JVM還不能成功執行.class的類文件,因為在解釋class的時候JVM需要調用解釋所需要的類庫lib,而jre包含lib類庫。
    運行class文件
    可以在命令行中輸入 java 字節碼文件名 ,此時啟動了一個jvm,加載字節碼文件名.class字節碼文件到內存,然后jvm運行內存中的字節碼指令
    在IDE上就類似于點擊運行按鈕。
  2. 管理并分配內存
  3. 執行垃圾收集
    調用垃圾收集器進行垃圾回收

六、三者的區別與聯系

  • JDK用于開發,是給開發人員用的,JRE 用于運行java程序,和JVM是給普通用戶使用的。如果只是運行Java程序,可以只安裝JRE,無序安裝JDK。也就是說:使用JDK開發完成的java程序,交給JRE去運行。
  • JDK包含了JRE,JDK 和 JRE 中都包含 JVM。也可以說JDK是JRE+Java的開發工具。JRE包含了JVM+Java語言的核心類庫。

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/news/210442.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/210442.shtml
英文地址,請注明出處:http://en.pswp.cn/news/210442.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

JDK 9 模塊化系統 (Module System) 和 多版本兼容 Jar (Multi-Release Jar)

博文目錄 文章目錄 Module System原因JDK 模塊化模塊描述文件關鍵字 啟用模塊化測試結論 Multi-Release jar (MRJAR)原因原理結論用 IDEA 創建多版本兼容 Jar項目結構pom.xml測試 Module System 原因 Java 9引入了模塊化系統的主要原因是為了解決Java平臺面臨的復雜性和可維…

線程的使用(二)

新增實現方式之實現Callable接口 特點 1、可以有返回值。 2、方法可以拋異常。 3、支持泛型的返回值。 4、需借助FutureTask類,比如獲取返回值。 步驟 1、創建一個實現Callable接口的實現類。 2、重寫call方法, 將此線程需執行的操作聲明在call&…

C++中STL的容器vector

文章目錄 什么是vectorvector與普通順序表不同的點 vector的成員函數operatoroperator[]begin與end與iteratorsize()capacityresizeemptyreservepush_backpop_backinserteraseswapclear成員變量 總結 什么是vector vector:是數據結構里面的順序表,開辟一…

【LeetCode刷題】數組篇2

🎇數組中等題Part 🌈 開啟LeetCode刷題之旅 🌈 文章目錄 🎇數組中等題Part🍰229.多數元素II👑思路分析1.哈希表法2.摩爾投票法(進階) 🍰15.三數之和👑思路分析1.排序雙指針 &#x…

ES6拓展API

1.對象API拓展 is 判斷兩個值是否相等 is(0,-0);false is(NaN,NaN) true (NaN NaN) false // 1.is 判斷兩個值是否相等 console.log(Object.is(1,1)); console.log(Object.is(0,-0));//返回false console.log(0 -0); console.log(Object.is(NaN,NaN)); console.log(NaN…

音樂曲譜軟件Guitar Pro 8.1.1 破解版下載和網盤補丁

Guitar Pro 8.1.1 for Mac 中文破解版是一款功能強大的音樂曲譜軟件,非常適合學習如何玩,改進技巧,重現喜愛的歌曲或陪伴自己。可以幫助我們進行吉他的學習、繪譜與創作,它包含了幾乎所有的吉他現有指法及音色,在做彈撥…

角谷定理 C語言xdoj32

角谷定理定義如下: 對于一個大于1的整數n,如果n是偶數,則n n / 2。如果n是奇數,則n 3 * n 1,反復操作后,n一定為1。 例如輸入22的變化過程: 22 ->11 -> 34 -> 17 -> 52 -> 26 …

電源小白入門學習3——電源系統常見元件選型MOS管、二極管、電感篇

電源小白入門學習3——電源系統常見元件選型MOS管、二極管、電感篇 MOS管二極管電感 書接上文,上一期我們講了電阻、電容選型中需要注意的事項,下面我們接著來介紹MOS管和二極管。 MOS管 關于MOS管的基本原理和內部的一些結構,PN結、半導體的…

FPGA 低延時 TCP UDP IP協議棧兼容1G 10G 25G MAC

在計算和數據中心、軍事和航天、政府、儀器與測量、金融服務和廣播和視頻等行業,需要高可靠性的硬件和軟件產品,幫助客戶更快地開發部署新一代產品,減少技術和市場風險,我司研發的低延遲TCP/IP的IP核的傳輸速率高于傳統網口&#…

游戲Undercut使用python代碼實現

游戲Undercut是一個紙牌游戲,兩位選手各有編號1-5的5張牌。每一輪中每個玩家選擇一張牌,然后依次出示各自的牌。如果兩張牌數相同,則沒有比分。另有兩種情況:兩張牌的數字只相差1(這就是所謂的Undercut游戲&#xff09…

【工具類】Excel 多 Sheet 導入工具類

使用反射封裝,實現統一讀取 import cn.afterturn.easypoi.excel.annotation.Excel; import cn.afterturn.easypoi.excel.annotation.ExcelTarget; import cn.hutool.core.annotation.AnnotationUtil; import cn.hutool.core.io.IoUtil; import cn.hutool.core.util.…

創建個人網站(一)從零開始配置環境,搭建項目

目錄 前言配置環境前端后端遇到的問題1.安裝了nvm和node,vscode沒反應2.安裝完腳手架之后vue指令不存在 前言 從剛開始學前端的html直到現在前后端都有在開發,我一直都有一個想法,就是創建自己的網站,我相信大家都有這個想法&…

uni-app 設置當前page界面進入直接變為橫屏模式

首先 我們打開項目的 manifest.json 在左側導航欄中找到 源碼視圖 然后找到 app-plus 配置 在下面加上 "orientation": [//豎屏正方向"portrait-primary",//豎屏反方向"portrait-secondary",//橫屏正方向"landscape-primary",//橫屏…

99、NeRF ray space

CG相機模型 在圖形學中最常用的相機模型的原理和小孔成像是類似的。 不同之處在于,如上圖,小孔成像得到的圖像是倒立的,但是我們希望得到的圖像是正向的,因此,我們選擇小孔前成像。 從 3D 到 2D 的投影,…

Grad-CAM原理

這篇是我對嗶哩嗶哩up主 霹靂吧啦Wz 的視頻的文字版學習筆記 感謝他對知識的分享 只要大家一提到深度學習 缺乏一定的解釋性 比如說在我們之前講的分類網絡當中 網絡它為什么要這么預測 它針對每個類別所關注的點在哪里呢 在great cam這篇論文當中呢 就完美的解決了在cam這篇論…

java多線程(常用方法、實現方式、線程安全問題、生命周期、線程池)

多線程相關的三組概念 程序和進程 程序(program):一個固定的運行邏輯和數據的集合,是一個靜態的狀態,一般存儲在硬盤中。簡單來說就是我們編寫的代碼 進程(process):一個正在運行的…

Python 中的 queue 模塊隊列詳解;隊列如何使用——如何處理信息在多個線程間安全交換的多線程程序?

queue 模塊即隊列,特別適合處理信息在多個線程間安全交換的多線程程序中。下面我們對 queue 模塊進行一個詳細的使用介紹。 1 queue 模塊定義的類和異常 queue 模塊定義了以下四種不同類型的隊列,它們之間的區別在于數據入隊列之后出隊列的順序不同。 …

cmake編譯數據庫

在使用CMake進行編譯時,如果你想生成編譯數據庫,你可以定義CMAKE_EXPORT_COMPILE_COMMANDS選項。具體的命令如下: cmake -DCMAKE_EXPORT_COMPILE_COMMANDS1或者在CMakeLists.txt顯示的使能配置 set(CMAKE_EXPORT_COMPILE_COMMANDS ON)這將會…

游戲玩家升級不傷手之選,光威龍武系列超強性能

得益于國產存儲芯片的崛起,現在的內存條價格太香了。要放在前幾年,購買內存條時都會優先考慮國際一線品牌。隨著內存條行業發生巨變,國產品牌光威GLOWAY,是全球前三的內存模組廠商嘉合勁威旗下品牌,它推出的內存條產品…

Zebec 推出由 Visa、萬事達網絡支持的即時支付卡,加密支付新征程

“Zebec現已推出全新的加密支付卡,該卡由Visa、萬事達網絡支持,具備即時、多鏈、非托管、無需KYC、免費等特性,其能夠通過加密錢包與多條主流公鏈鏈接并直接調用支付,這將是加密支付領域的里程碑事件。” 在2023年的12月8日&#…