Java版本安裝完整指南 - marcobehler
本指南是有關如何查詢和安裝最新Java等的實用資訊,瞭解Java發行版之間的差異(AdoptOpenJdk,OpenJDK,OracleJDK等)。
1. 我只想要一個下載連結,並且瞭解其他所有資訊。我應該去哪兒?
轉到AdoptOpenJDK網站,選擇最新的Java版本,然後下載並安裝它。然後回到本指南,也許仍然可以學習有關Java版本的一兩個知識。
2.我應該使用哪個Java版本?
截至2019年9月,Java 13是最新發布的Java版本,每6個月更新一次。因此,Java 14計劃於2020年3月釋出,Java 15計劃於2020年9月釋出,以此類推。過去,Java的釋出週期更長,最長可達3-5年!
隨著大量新版本的推出,基本上存在以下實際使用情況:
- 公司中的舊專案經常被Java 8所困擾(請參閱為什麼公司仍被Java 8所困擾?)。因此,您也將不得不使用Java 8。
- 有些舊專案甚至卡在Java 1.5(2004年釋出)或1.6(2006年釋出)上-抱歉,朋友們!
- 如果要確保使用最新的IDE,框架和構建工具並啟動新專案,則可以毫不猶豫地使用Java 11(LTS)或最新的Java 13。
- Android開發有一個特殊領域,其中Java版本基本上停留在Java 7上,並提供了一組特定的Java 8功能。或者您切換為使用Kotlin程式語言。
3.為什麼公司仍然堅持使用Java 8?
公司仍然堅持使用Java 8的原因多種多樣,僅舉幾例:
- 構建工具(Maven,Gradle等)和一些庫最初都存在Java版本> 8的錯誤,並且需要更新。即使在今天,例如Java> = 9,某些構建工具在構建Java專案時也會列印出“反射訪問”警告,即使構建良好,也只是“感覺未準備好”。
- 直到Java 8為止,您幾乎都在使用Oracle的JDK構建,並且您不必在乎許可。但是,甲骨文在2019年更改了許可計劃,這使網際網路發瘋,大量文章說“ Java不再免費了”-隨後出現了很多混亂。但是,這並不是真正的問題,您可以在本指南的Java Distributions部分中進行了解。
- 一些公司制定了僅使用LTS版本並依靠其OS供應商向其提供這些版本的策略,這需要時間。
總結一下:您遇到了一系列實際問題(升級工具,庫,框架)和政治問題。
4. 為什麼有些Java版本(例如8)也稱為1.8?
9之前的Java版本僅具有不同的命名方案。因此,Java 8也可以稱為1.8,Java 5也可以稱為1.5等等。當您發出“ java -version”命令時,這些版本的輸出如下:
c:\Program Files\Java\jdk1.8.0_191\bin>java -version java version "1.8.0_191" (1) Java(TM) SE Runtime Environment (build 1.8.0_191-b12) Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode) |
這簡直就是Java8。隨著Java 9切換到基於時間的發行版,命名方案也發生了變化,並且Java版本不再以1.x作為字首。現在,版本號如下所示:
c:\Program Files\Java\jdk11\bin>java -version openjdk version "11" 2018-09-25 (1) OpenJDK Runtime Environment 18.9 (build 11+28) OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode) |
5.Java版本之間有什麼區別?我應該學習特定的嗎?
對於其他程式語言,並且版本之間存在重大差異,例如Python 2至3,您可能想知道是否同樣適用於Java。
Java是特別在這方面,因為它是非常向後相容。這意味著您的Java 5或8程式可以保證與Java 8-13虛擬機器一起執行-除了一些您現在無需擔心的例外。
例如,您的程式依賴Java 13功能,而Java 8 JVM根本不提供該功能,因此它顯然無法以其他方式工作。
這意味著兩件事:
- 您不僅可以“學習”特定的Java版本,例如12。
- 而是,直到Java 8為止,您都將在所有語言功能方面都有良好的基礎。這是一個良好的基礎。
- 然後,從這樣的指南中瞭解Java 9-13附帶了哪些附加功能,並儘可能使用它們。
6.Java版本之間這些新功能的示例是什麼?
看一下Java Features 8-13部分。
但根據經驗:較舊,較長的發行週期(3-5年,直到Java 8)意味著每個發行版都有許多新功能。
6個月的釋出週期意味著每個版本的功能要少得多,因此您可以快速掌握Java 9-13語言功能。
7.JRE和JDK有什麼區別?
到目前為止,我們僅談論“ Java”。但是Java到底是什麼?
首先,您需要區分JRE(Java執行時環境)和JDK(Java開發工具包)。
從歷史上看,如果您只對執行Java程式感興趣,則僅下載JRE。JRE除其他外包括Java虛擬機器(JVM)和“ java”命令列工具。
要開發新的Java程式,您需要下載JDK。JDK包括JRE擁有的所有內容,以及編譯器javac和其他幾個工具,例如javadoc(Java文件生成器)和jdb(Java Debugger)。
直到Java 8為止,Oracle網站都將JRE和JDK作為單獨的下載提供-儘管JDK始終始終在單獨的資料夾中包含JRE。在Java 9中,這種區別基本上已經消失了,並且您總是在下載JDK。JDK的目錄結構也已更改,不再具有顯式的JRE資料夾。
因此,即使某些發行版(請參閱Java發行版部分)仍提供單獨的JRE下載,似乎仍存在僅提供JDK的趨勢。因此,從現在開始,我們將交替使用Java和JDK。
8.那我該如何安裝Java或JDK呢?
目前,請忽略Java-Docker映象,.msi包裝器或特定於平臺的軟體包。最後,Java只是一個.zip檔案,僅此而已。
因此,將Java安裝到計算機上所需要做的就是解壓縮jdk- {5-13} .zip檔案。您甚至不需要管理員許可權。
您解壓縮後的Java檔案如下所示:
Directory C:\dev\jdk-11 12.11.2019 19:24 <DIR> . 12.11.2019 19:24 <DIR> .. 12.11.2019 19:23 <DIR> bin 12.11.2019 19:23 <DIR> conf 12.11.2019 19:24 <DIR> include 12.11.2019 19:24 <DIR> jmods 22.08.2018 19:18 <DIR> legal 12.11.2019 19:24 <DIR> lib 12.11.2019 19:23 1.238 release |
魔術發生在/ bin目錄中,在Windows下看起來像這樣:
Directory C:\dev\jdk-11\bin ... 12.11.2019 19:23 272.736 java.exe ... 12.11.2019 19:23 20.832 javac.exe ... |
因此,您所需要做的就是解壓縮該檔案並將/ bin目錄放在PATH變數中,以便可以從任何地方呼叫“ java”命令。
(如果您想知道,GUI安裝程式(例如來自Oracle或AdoptOpenJDK的GUI安裝程式)將為您解壓縮並修改PATH變數。
要驗證您是否正確安裝了Java,則只需執行“ java -version”。如果輸出看起來像下面的輸出,那就很好了。
openjdk version "11" 2018-09-25 OpenJDK Runtime Environment 18.9 (build 11+28) OpenJDK 64-Bit Server VM 18.9 (build 11+28, mixed mode) |
現在剩下一個問題:您從哪裡獲得Java .zip檔案?這將我們帶到了發行主題。
Java發行版
有許多提供Java下載的站點(閱讀:JDK),目前尚不清楚“誰提供什麼許可以及哪種許可”。
1.OpenJDK專案
在Java原始碼方面(讀:你的JRE / JDK的原始碼),也只有一個,生活在OpenJDK專案現場。
但是,這只是原始碼,而不是可分發的內部版本(請考慮:您的.zip檔案以及針對特定作業系統的已編譯Java命令)。從理論上講,您和我可以從該原始碼生成一個內部版本,將其命名為MarcoJDK,然後開始分發它。但是我們的發行版將缺乏認證,無法合法地稱自己為Java SE相容。
這就是為什麼在實踐中,有少數供應商實際上建立了這些構建,並透過了認證(請參閱TCK),然後進行分發。
而且,儘管供應商無法在生成新的Java構建之前從String類中刪除方法,但他們可以新增商標(是!)或新增他們認為有用的其他實用程式(例如CLI)。但是除此之外,所有 Java發行版的原始原始碼都是相同的。
2. OpenJDK構建(由Oracle)和OracleJDK構建
從原始碼構建Java的供應商之一是Oracle。這導致了兩個不同的Java發行版,一開始可能會非常混亂。
- OpenJDK由Oracle(!)構建。這些版本是免費的且沒有商標,但Oracle不會在Java 14推出後立即釋出Java 13等舊版本的更新。
- OracleJDK是品牌的商業版本,從2019年許可證更改開始。這意味著它可以在開發中免費使用,但是如果在生產中使用Oracle,則需要付費。為此,您將獲得更長的支援,即,如果JVM發瘋,則可以更新版本和電話號碼。
現在,從歷史上講(Java 8之前的版本),OpenJDK構建和OracleJDK構建之間存在實際的源差異,您可以說OracleJDK是“更好”的。但是到今天為止,這兩個版本基本上是相同的,只是有微小的差異。
然後歸結為您想要安裝的Java版本的付費商業支援(電話號碼)。
AdoptOpenJDK
2017年,一組Java使用者組成員,開發人員和供應商(亞馬遜,微軟,Pivotal,Redhat等)建立了一個名為AdoptOpenJDK的社群。
它們提供了免費的,堅如磐石的OpenJDK構建,具有更長的可用性/更新,甚至為您提供了兩種不同的Java虛擬機器的選擇:HotSpot和OpenJ9。
如果您要安裝Java,強烈建議。
Azul Zulu,Amazon Corretto,SAPMachine
您可以在OpenJDK Wikipedia站點上找到OpenJDK構建的完整列表。其中包括Azul Zulu,Amazon Corretto以及SapMachine等。為了簡化起見,可以歸結為您擁有不同的支援選項/維護保證。
但是,請務必檢視各個網站,以瞭解每種發行版本的優勢。
建議
要從頭開始重申,除非您有非常特殊的要求,否則請在2019年從https://adoptopenjdk.net獲取jdk.zip(.tar.gz / .msi / .pkg)檔案或選擇提供的軟體包由您的作業系統供應商提供。
相關文章
- Java版本功能差異一覽指南 - marcobehlerJava
- Java 8-13版本功能差異一覽指南 - marcobehlerJava
- Java 12版本完整指南新功能 | Henn IdanJava
- Spring事務管理:非常規指南 - marcobehlerSpring
- Git 版本控制系統的完整指南Git
- 使用金鑰安裝Visio 2019專業版完整指南
- Java中實現GraphQL完整指南Java
- Oracle 23ai free 版本地化安裝指南OracleAI
- 完整安裝always on叢集
- Mysql 5.7 免安裝版windows安裝完整教程MySqlWindows
- Linux安裝minikube指南Linux
- Electron安裝打包指南
- Linux安裝JDK完整步驟LinuxJDK
- 安裝centOS版本oracleCentOSOracle
- 安裝mysql(版本:8.0.28)MySql
- 解除安裝windows安裝ubuntu的完全指南WindowsUbuntu
- 【Invoke AI】安裝部署指南AI
- TongWeb7 安裝指南Web
- dapr 環境安裝指南
- Redis 安裝避坑指南Redis
- Minix安裝及配置指南
- Adobe Audition各版本安裝包下載與安裝
- Mysql--所有版本安裝以及完全解除安裝MySql
- Torch GPU版本的安裝GPU
- Tensorflow GPU版本安裝教程GPU
- ubuntu 安裝指定版本dockerUbuntuDocker
- Pytorch的GPU版本安裝PyTorchGPU
- Ubuntu安裝golang多版本UbuntuGolang
- Nginx安裝(詳細版本)Nginx
- Laravel 6.0 lts版本安裝Laravel
- Composer安裝Laravel指定版本Laravel
- git Windows版本安裝教程GitWindows
- 安裝其他版本的 LaravelLaravel
- 如何在Java中使用檔案操作API: java.nio.file.Path?- marcobehlerJavaAPI
- JavaScript IndexedDB 完整指南JavaScriptIndex
- Windows Terminal完整指南Windows
- GOOGLE RANKBRAIN 完整指南GoAI
- Adobe After Effects各版本安裝包下載與安裝