使用OpenJDK進行Delphi Android開發


 

隨着甲骨文收購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 / 
JClarity / IBM Java SDK

可選的

阿里巴巴Dragonwell

沒有

亞馬遜Corretto

沒有

沒有

阿祖爾祖魯(Azul Zulu)

沒有

BellSoft Liberica JDK

沒有

ojdkbuild

沒有

Oracle Java SE

沒有

沒有

Oracle OpenJDK

沒有

沒有

紅帽OpenJDK

沒有

Windows的Red Hat

沒有

SAP SapMachine

沒有

沒有

資料來源:https://en.wikipedia.org/wiki/OpenJDK 

盡管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是最受歡迎的版本。其他版本不兼容。

下載AdoptOpenJDK

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

下載適用於Windows x64的AdoptOpenJDK

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

自定義您的AdOpenOpenJDK安裝

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

Delphi RAD Studio SDK管理器-Android-Java選項卡-之前

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

Delphi RAD Studio SDK管理器-Android-Java-After

您可能會感到所做的任何更改都沒有改變,但是它的作用與刪除Oracle Java之前的作用相同。Oracle SE JDK和AdoptOpenJDK都基於相同的源代碼,並且功能或行為沒有差異。

其他安裝方式

我在安裝或更新AdoptOpenJDK時更喜歡的方法是使用Chocolatey Windows軟件包管理器使用Chocolatey的安裝步驟如下:

巧克力包裝經理

  1. 使用管理員權限打開PowerShell窗口
  2. 通過運行以下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'))
  3. 使用以下命令安裝AdoptOpenJDK 8
    choco install acceptopenjdk8
  4. 將來,如果要
    更新AdoptOpenJDK8 ,可以從以管理員權限運行的命令提示符下按以下方式執行它:choco update acceptopenjdk8

我非常喜歡Chocolaty的Package Manager(我有Pro訂閱)。我敢肯定,如果您查找有關程序包管理器的信息,您會發現此工具對於構建環境非常有用。

本文是Jim McKeeth的“為Delphi Android開發采用OpenJDK” 的摘要。

原文地址:https://community.idera.com/developer-tools/b/blog/posts/adopting-the-openjdk-for-delphi-android-development-ja

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM