使用OpenJDK进行Delphi Android开发

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用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是最受欢迎的版本。其他版本不兼容。

技术图片

如果您使用的是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的安装步骤如下:

技术图片

  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

 

以上是关于使用OpenJDK进行Delphi Android开发的主要内容,如果未能解决你的问题,请参考以下文章

Delphi Android ActivityManager

关闭 Android 模拟器后 OpenJDK 继续运行

是否可以通过openjdk在android上运行java应用程序

Delphi使用android的NDK是通过JNI接口,封装好了,不用自己写本地代码,直接调用

openjdk8 for Android 7.1.2 版本

如何使用Delphi更改Android应用程序中的标题栏颜色