
隨着甲骨文收購Sun Microsystems,甲骨文已經成為Java商標的正式所有者和主要的“官方” Java發行商,因此出現很多JDK版本,並不出人意料。
首先,我先解釋免責聲明:我(Jim McKeeth)既不是律師也不是Java開發人員。本文內容是與Java,Java開發和許可相關的許多復雜問題的高級概述。本文的目的是幫助您提供足夠的信息,通過這些信息助你成功,但是,如果您發現本文中的任何材料不足或不清楚,請自行研究或咨詢律師。
Java由以下元素組成:
- JVM:Java虛擬機是運行所有Java應用程序的虛擬機。Java應用程序通常以Java字節碼形式分布在JAR文件中。Java字節碼不是在物理計算機上本地運行的,而是在JVM上運行的。JVM是一種即時編譯器(JIT),可將Java字節碼轉換為本地機器代碼。
- JVM的兩種流行形式是Hotspot(Oracle JDK使用的官方JVM)和OpenJ9。
- 從技術上講,Android沒有JVM。而是將Java字節碼轉換為Dalvik字節碼,然后使用DVM(Dalvik虛擬機)運行它,或使用ART(Android運行時)進行編譯。兩者都使用.dex文件,但是ART會將字節碼轉換為.elf(可執行和可鏈接格式)文件。本文主要側重於在Delphi中構建Android應用程序的Java桌面方面,但是為了清晰起見,我想對其進行添加。
- JRE:Java運行時環境包含運行Java應用程序所需的主要庫和JVM。它包含運行應用程序和其他實用程序的Java.exe和Javaw.exe。
- JDK:Java開發工具包,或用於Java開發的SDK。JDK是JRE的超集。用於構建Java(和Android)應用程序的工具包,其中包含運行Java應用程序所需的一切。它還包括諸如KeyTool.exe和JarSigner.exe之類的實用程序。
- Oracle發布的Java平台有三種變體:標准版(Java SE),企業版(Java EE)和微型版(Java ME)。該博客文章以及您將遇到的大多數用例都使用標准版。
讓人感興趣的是OpenJDK,它是Java Standard Edition(SE)平台的免費和開源實現。從版本7開始,OpenJDK是Java SE的官方參考實現。
開源實現是根據GNU通用公共許可證版本2 [ Wikipedia ] 許可的。Java SE基於OpenJDK,就像Chrome瀏覽器基於開源Chromium項目一樣。包括您自己在內的任何人都可以下載OpenJDK源文件並創建二進制版本。有很多公司提供支持,每個公司都提供自己的許可,支持和包括的組件形式。這是其中的一些(這些是OpenJDK源代碼的二進制發行版):
|
|
長期支持 |
許可許可 |
純 |
商業支持 |
| 采用OpenJDK / |
是 |
是 |
可選的 |
是 |
| 阿里巴巴Dragonwell |
是 |
是 |
沒有 |
是 |
| 亞馬遜Corretto |
是 |
是 |
沒有 |
沒有 |
| 阿祖爾祖魯(Azul Zulu) |
是 |
是 |
沒有 |
是 |
| BellSoft Liberica JDK |
是 |
是 |
沒有 |
是 |
| ojdkbuild |
是 |
是 |
是 |
沒有 |
| Oracle Java SE |
是 |
沒有 |
沒有 |
是 |
| Oracle OpenJDK |
沒有 |
是 |
是 |
沒有 |
| 紅帽OpenJDK |
是 |
是 |
是 |
沒有 |
| Windows的Red Hat |
是 |
是 |
沒有 |
是 |
| SAP SapMachine |
是 |
是 |
沒有 |
沒有 |
盡管Oracle直接提供OpenJDK構建,但是Oracle直接提供的構建不包括長期或商業支持。因此,Oracle希望切換到Oracle SE的非許可許可證(Oracle最近更改了Standard Edition JDK的許可證,該許可證是需要付費的商業使用支持合同)。也就是說,OpenJDK需要許可證,但是來自Oracle的二進制分發版不需要許可證。
這就是AdoptOpenJDK(及其他)發揮作用的地方。AdoptOpenJDK利用開源OpenJDK源代碼,並提供具有長期支持(更新更新和修復),許可許可證和商業支持的二進制分發。在社區和眾多供應商(包括IBM,GoDaddy,Microsoft和Red Hat)的支持下維護了AdoptOpenJDK 。
RAD Studio不直接依賴Java,但是如果您使用Android SDK定位Android,則您正在使用Java。當前的RAD Studio安裝程序提供了一個選項,用於安裝標准Oracle JDK(如果尚未安裝)。Embarcadero將更改默認選項,以在將來(通常在10.4.x中)安裝AdoptOpenJDK。
使用哪種JDK和JRE取決於您。在此博客文章中,我將向您展示如何使用HotSpot JRE切換到AdoptOpenJDK(HotSpot是Oracle JDK使用的官方JVM,但是您可以選擇其他選項)。
在你開始之前
如果您已經安裝了Oracle JRE或JDK,則建議您卸載它,除非您具有依賴Java的其他軟件。如果僅為Delphi Android開發安裝了Java,則可以安全地將其卸載。根據您的更新方式,您可能會發現安裝了多個版本。
安裝
請訪問https://adoptopenjdk.net/。如果您使用的是Windows計算機,則默認情況下應選擇所需的下載。已經發布了較新的版本,但是為此,我們需要版本8。對於包括Android開發在內的大多數用例,版本8是最受歡迎的版本。其他版本不兼容。

如果您使用的是32位版本的Windows,則需要升級到64位平台。升級完成后,繼續安裝。您無需在64位Windows上安裝32位版本。如果要從另一台計算機訪問該網站,則可以轉到另一平台/發行版頁面以找到所需的下載。Windows x64需要完整的JDK(包括JRE)以及JRE。

您必須同意GNU一般公共許可進行安裝。這僅適用於JDK,不會影響您開發的項目(再次請教律師或親自閱讀並驗證許可證)。請注意,設置JAVA_HOME環境變量是安裝程序默認未設置的可選項。其他項目可以保留為默認值。

您現在要做的就是更新Delphi / RAD Studio IDE設置。在“ 工具”→“ 選項”→“ 放置”→“ SDK管理器繼續”中,選擇Android SDK(32位或64位)以移至“ Java”選項卡,顯示屏幕,如以下屏幕快照所示有待確認。

如果紅線包圍的區域中未顯示黃色警告圖標(三角形),則表明已檢測到Oracle Java SE JDK,因此請正確完成卸載。如果未檢測到Java SE JDK,並且看到黃色的警告圖標,請使用其旁邊的瀏覽按鈕來指定AdoptOpenJDK的安裝路徑。對Android SDK中的所有Java條目執行此操作。

您可能會感到所做的任何更改都沒有改變,但是它的作用與刪除Oracle Java之前的作用相同。Oracle SE JDK和AdoptOpenJDK都基於相同的源代碼,並且功能或行為沒有差異。
其他安裝方式
我在安裝或更新AdoptOpenJDK時更喜歡的方法是使用Chocolatey Windows軟件包管理器。使用Chocolatey的安裝步驟如下:
- 使用管理員權限打開PowerShell窗口
- 通過運行以下PowerShell cmdlet Set-ExecutionPolicy Bypass -Scope Process -Force; 安裝[Chocolatey
] [System.Net.ServicePointManager] :: SecurityProtocol = [System.Net.ServicePointManager] :: SecurityProtocol -bor 3072; iex (((新對象System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1')) - 使用以下命令安裝AdoptOpenJDK 8
choco install acceptopenjdk8 - 將來,如果要
更新AdoptOpenJDK8 ,可以從以管理員權限運行的命令提示符下按以下方式執行它:choco update acceptopenjdk8
我非常喜歡Chocolaty的Package Manager(我有Pro訂閱)。我敢肯定,如果您查找有關程序包管理器的信息,您會發現此工具對於構建環境非常有用。
本文是Jim McKeeth的“為Delphi Android開發采用OpenJDK” 的摘要。

