一、什么是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包含了什么?
- 面向對象
- 多線程
- IO流
- 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包含了什么?
- serclet
- jstl
- jsp
- spring
- 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執行程序的過程
- 加載.class 文件
所有的java程序會首先被編譯為.class的類文件,這種類文件可以在虛擬機上執行。也就是說class并不直接與機器的操作系統相對應,而是經過虛擬機間接與操作系統交互,由虛擬機將程序解釋給本地系統執行。只有JVM還不能成功執行.class的類文件,因為在解釋class的時候JVM需要調用解釋所需要的類庫lib,而jre包含lib類庫。
運行class文件
可以在命令行中輸入 java 字節碼文件名 ,此時啟動了一個jvm,加載字節碼文件名.class字節碼文件到內存,然后jvm運行內存中的字節碼指令
在IDE上就類似于點擊運行按鈕。 - 管理并分配內存
- 執行垃圾收集
調用垃圾收集器進行垃圾回收
六、三者的區別與聯系
- JDK用于開發,是給開發人員用的,JRE 用于運行java程序,和JVM是給普通用戶使用的。如果只是運行Java程序,可以只安裝JRE,無序安裝JDK。也就是說:使用JDK開發完成的java程序,交給JRE去運行。
- JDK包含了JRE,JDK 和 JRE 中都包含 JVM。也可以說JDK是JRE+Java的開發工具。JRE包含了JVM+Java語言的核心類庫。
?