使用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 / |
是 |
是 |
可选的 |
是 |
阿里巴巴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” 的摘要。