别克军威 發表於 2020-5-23 18:38:00

使用OpenJDK进行Delphi Android开发

<p><img src="https://img2020.cnblogs.com/blog/367202/202005/367202-20200523183704691-873930434.png"></p>
<p>&nbsp;</p>
<p><span><span>随着甲骨文收购Sun Microsystems,甲骨文已经成为Java商标的正式所有者和主要的“官方” Java发行商,因此出现很多JDK版本,并不出人意料。<br></span></span></p>
<p><span><span>首先,我先解释免责声明:我(Jim McKeeth)既不是律师也不是Java开发人员。</span><span>本文内容是与Java,Java开发和许可相关的许多复杂问题的高级概述。</span><span>本文的目的是帮助您提供足够的信息,通过这些信息助你成功,但是,如果您发现本文中的任何材料不足或不清楚,请自行研究或咨询律师。</span></span></p>
<p><span><span>Java由以下元素组成:</span></span></p>
<ul>
<li><strong><span><span>JVM</span></span></strong><span><span>:Java虚拟机是运行所有Java应用程序的虚拟机。</span><span>Java应用程序通常以Java字节码形式分布在JAR文件中。</span><span>Java字节码不是在物理计算机上本地运行的,而是在JVM上运行的。</span><span>JVM是一种即时编译器(JIT),可将Java字节码转换为本地机器代码。</span></span>
<ul>
<li><span><span>JVM的两种流行形式是Hotspot(Oracle JDK使用的官方JVM)和OpenJ9。</span></span></li>
<li><span><span>从技术上讲,Android没有JVM。</span><span>而是将Java字节码转换为Dalvik字节码,然后使用DVM(Dalvik虚拟机)运行它,或使用ART(Android运行时)进行编译。</span><span>两者都使用.dex文件,但是ART会将字节码转换为.elf(可执行和可链接格式)文件。</span><span>本文主要侧重于在Delphi中构建Android应用程序的Java桌面方面,但是为了清晰起见,我想对其进行添加。</span></span></li>

</ul>

</li>
<li><strong><span><span>JRE</span></span></strong><span><span>:Java运行时环境包含运行Java应用程序所需的主要库和JVM。</span><span>它包含运行应用程序和其他实用程序的Java.exe和Javaw.exe。</span></span></li>
<li><strong><span><span>JDK</span></span></strong><span><span>:Java开发工具包,或用于Java开发的SDK。</span><span>JDK是JRE的超集。</span><span>用于构建Java(和Android)应用程序的工具包,其中包含运行Java应用程序所需的一切。</span><span>它还包括诸如KeyTool.exe和JarSigner.exe之类的实用程序。</span></span></li>
<li><span><span>Oracle发布的Java平台有三种变体:标准版(Java SE),企业版(Java EE)和微型版(Java ME)。</span><span>该博客文章以及您将遇到的大多数用例都使用标准版。</span></span></li>

</ul>
<p><span><span>让人感兴趣的是</span></span><span><span>OpenJDK</span></span><span><span>,它是Java Standard Edition(SE)平台的免费和开源实现</span><span>。</span><span>从版本7开始,OpenJDK是Java SE的官方参考实现。</span></span></p>
<p><span><span>开源实现是根据GNU通用公共许可证版本2 [&nbsp;</span></span><span><span>Wikipedia</span></span><span><span>&nbsp;]&nbsp;</span><span>许可的</span><span>。</span><span>Java SE基于OpenJDK,就像Chrome浏览器基于开源Chromium项目一样。</span><span>包括您自己在内的任何人都可以下载OpenJDK源文件并创建二进制版本。</span><span>有很多公司提供支持,每个公司都提供自己的许可,支持和包括的组件形式。</span><span>这是其中的一些(这些是OpenJDK源代码的二进制发行版):</span></span></p>
<div class="content-scrollable-wrapper">
<table>
<tbody>
<tr>
<td>
<p><strong><br><span><span>建立</span></span></strong></p>





</td>
<td>
<p><strong><span><span>长期支持</span></span></strong></p>





</td>
<td>
<p><strong><span><span>许可许可</span></span></strong></p>





</td>
<td>
<p><strong><span><span>纯</span></span></strong></p>





</td>
<td>
<p><strong><span><span>商业支持</span></span></strong></p>





</td>





</tr>
<tr>
<td>
<p><strong><span><span>采用OpenJDK /&nbsp;</span></span><br></strong><strong><span><span>JClarity / IBM Java SDK</span></span></strong></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><em><span><span>可选的</span></span></em></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>





</tr>
<tr>
<td>
<p><strong><span><span>阿里巴巴Dragonwell</span></span></strong></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>没有</span></span></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>





</tr>
<tr>
<td>
<p><strong><span><span>亚马逊Corretto</span></span></strong></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>没有</span></span></p>





</td>
<td>
<p><span><span>没有</span></span></p>





</td>





</tr>
<tr>
<td>
<p><strong><span><span>阿祖尔祖鲁(Azul Zulu)</span></span></strong></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>没有</span></span></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>





</tr>
<tr>
<td>
<p><strong><span><span>BellSoft Liberica JDK</span></span></strong></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>没有</span></span></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>





</tr>
<tr>
<td>
<p><strong><span><span>ojdkbuild</span></span></strong></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>没有</span></span></p>





</td>





</tr>
<tr>
<td>
<p><strong><span><span>Oracle Java SE</span></span></strong></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>没有</span></span></p>





</td>
<td>
<p><span><span>没有</span></span></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>





</tr>
<tr>
<td>
<p><strong><span><span>Oracle OpenJDK</span></span></strong></p>





</td>
<td>
<p><span><span>没有</span></span></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>没有</span></span></p>





</td>





</tr>
<tr>
<td>
<p><strong><span><span>红帽OpenJDK</span></span></strong></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>没有</span></span></p>





</td>





</tr>
<tr>
<td>
<p><strong><span><span>Windows的Red Hat</span></span></strong></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>没有</span></span></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>





</tr>
<tr>
<td>
<p><strong><span><span>SAP SapMachine</span></span></strong></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>是</span></span></p>





</td>
<td>
<p><span><span>没有</span></span></p>





</td>
<td>
<p><span><span>没有</span></span></p>





</td>





</tr>
<tr>
<td colspan="5">
<p><em><span><span>资料来源:</span></span></em><span><em><span>https</span></em><em><span>:</span></em></span><em><span><span>//en.wikipedia.org/wiki/OpenJDK</span></span></em><em>&nbsp;</em></p>





</td>





</tr>





</tbody>





</table>





</div>
<p><span><span>尽管Oracle直接提供OpenJDK构建,但是Oracle直接提供的构建不包括长期或商业支持。</span><span>因此,Oracle希望切换到Oracle SE的非许可许可证(Oracle最近更改了Standard Edition JDK的许可证,该许可证是需要付费的商业使用支持合同)。</span><span>也就是说,OpenJDK需要许可证,但是来自Oracle的二进制分发版不需要许可证。</span></span></p>
<p><span><span>这就是AdoptOpenJDK(及其他)发挥作用的地方。</span><span>AdoptOpenJDK利用开源OpenJDK源代码,并提供具有长期支持(更新更新和修复),许可许可证和商业支持的二进制分发。</span><span>在社区和众多</span></span><span><span>供应商(</span></span><span><span>包括IBM,GoDaddy,Microsoft和Red Hat)</span><span>的支持下维护了</span><span>AdoptOpenJDK&nbsp;</span><span>。</span></span></p>
<p><span><span>RAD Studio不直接依赖Java,但是如果您使用Android SDK定位Android,则您正在使用Java。</span><span>当前的RAD Studio安装程序提供了一个选项,用于安装标准Oracle JDK(如果尚未安装)。</span><span>Embarcadero将更改默认选项,以在将来(通常在10.4.x中)安装AdoptOpenJDK。</span></span></p>
<p><span><span>使用哪种JDK和JRE取决于您。</span><span>在此博客文章中,</span><span>我</span><span>将向您展示</span><span>如何</span><span>使用</span></span><span><span>HotSpot JRE</span></span><span><span>切换</span><span>到</span></span><span><span>AdoptOpenJDK</span></span><span><span>(HotSpot是Oracle JDK使用的官方JVM,但是您可以选择其他选项)。</span></span></p>
<h2><span><span>在你开始之前</span></span></h2>
<p><span><span>如果您<strong>已经安装了Oracle JRE或JDK,则建议您卸载它</strong>,除非您具有依赖Java的其他软件。</span><span>如果仅为Delphi Android开发安装了Java,则可以安全地将其卸载。</span><span>根据您的更新方式,您可能会发现安装了多个版本。</span></span></p>
<h2><strong><span><span>安装</span></span></strong></h2>
<p><span><span>请访问</span><span>https://adoptopenjdk.net/</span></span><span><span>。</span><span>如果您使用的是Windows计算机,则默认情况下应选择所需的下载。</span><span>已经发布了较新的版本,但是为此,我们需要版本8。</span><span>对于包括Android开发在内的大多数用例,版本8是最受欢迎的版本。</span><span>其他版本不兼容。</span></span></p>
<p><img src="https://community.idera.com/resized-image/__size/1040x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-03-37/8867.AdoptOpenJDK_2D00_1.png"></p>
<p><span><span>如果您使用的是32位版本的Windows,则需要升级到64位平台。</span><span>升级完成后,继续安装。</span><span>您无需在64位Windows上安装32位版本。</span><span>如果要从另一台计算机访问该网站,则可以转到</span></span><span><span>另一平台/发行版页面</span></span><span><span>以找到所需的下载。</span></span><span><span>Windows x64需要完整的JDK(包括JRE)以及JRE。</span></span></p>
<p><img src="https://community.idera.com/resized-image/__size/1040x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-03-37/3125.AdoptOpenJDK_2D00_2.png"></p>
<p><span><span>您必须同意</span></span><span><span>GNU一般公共许可</span></span><span><span>进行</span><span>安装</span></span><span><span>。</span><span>这仅适用于JDK,不会影响您开发的项目(再次请教律师或亲自阅读并验证许可证)。</span><span>请注意,设置JAVA_HOME环境变量是安装程序默认未设置的可选项。</span><span>其他项目可以保留为默认值。</span></span></p>
<p><img src="https://community.idera.com/resized-image/__size/1040x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-03-37/6740.AdoptOpenJDK_2D00_3.png"></p>
<p><span><span>您现在要做的就是更新Delphi / RAD Studio IDE设置。</span><span>在“&nbsp;</span></span><strong><span><span>工具</span></span></strong><span><span>”→“&nbsp;</span></span><strong><span><span>选项</span></span></strong><span><span>”→“&nbsp;</span></span><strong><span><span>放置</span></span></strong><span><span>”→“&nbsp;</span></span><strong><span><span>SDK管理器</span></span></strong><span><span>继续”中,选择Android SDK(32位或64位)以移至“ Java”选项卡,显示屏幕,如以下屏幕快照所示有待确认。</span></span></p>
<p><img src="https://community.idera.com/resized-image/__size/1040x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-03-37/0564.Delphi-RAD-Studio-SDK-Manager-_2D00_-Android-_2D00_-Java-_2D00_-Before.png"></p>
<p><span><span>如果红线包围的区域中未显示黄色警告图标(三角形),则表明已检测到Oracle Java SE JDK,因此请正确完成卸载。</span><span>如果未检测到Java SE JDK,并且看到黄色的警告图标,请使用其旁边的浏览按钮来指定AdoptOpenJDK的安装路径。</span><span>对Android SDK中的所有Java条目执行此操作。</span></span></p>
<p><img src="https://community.idera.com/resized-image/__size/1040x0/__key/communityserver-blogs-components-weblogfiles/00-00-00-03-37/8551.Delphi-RAD-Studio-SDK-Manager-_2D00_-Android-_2D00_-Java-_2D00_-After.png"></p>
<p><span><span>您可能会感到所做的任何更改都没有改变,但是它的作用与删除Oracle Java之前的作用相同。</span><span>Oracle SE JDK和AdoptOpenJDK都基于相同的源代码,并且功能或行为没有差异。</span></span></p>
<h2><strong><span><span>其他安装方式</span></span></strong></h2>
<p><span><span>我在安装或更新AdoptOpenJDK时更喜欢的方法是</span><span>使用</span></span><span><span>Chocolatey Windows软件包管理器</span></span><span><span>。</span><span>使用Chocolatey的安装步骤如下:</span></span></p>
<p><img class="align-right lazyload" alt="巧克力包装经理" width="250" height="250" data-src="https://community.idera.com/resized-image/__size/256x256/__key/communityserver-blogs-components-weblogfiles/00-00-00-03-37/Chocolatey_5F00_icon.png"></p>
<ol>
<li><span><span>使用管理员权限打开PowerShell窗口</span></span></li>
<li><span><span>通过运行以下PowerShell cmdlet&nbsp;</span><span>Set-ExecutionPolicy Bypass -Scope Process -Force;&nbsp;</span></span><span><span>安装 :: SecurityProtocol = :: SecurityProtocol -bor 3072; iex (((新对象System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))</span></span></li>
<li><span><span>使用</span></span><span><span>以下命令</span><span>安装AdoptOpenJDK 8</span></span><br><span><span>choco install acceptopenjdk8</span></span></li>
<li><span><span>将来,如果要</span></span><br><span><span>更新AdoptOpenJDK8&nbsp;</span><span>,可以从以管理员权限运行的命令提示符下按以下方式执行它:</span><span>choco update acceptopenjdk8</span></span></li>





</ol>
<p><span><span>我非常喜欢Chocolaty的Package Manager(我有Pro订阅)。</span><span>我敢肯定,如果您查找有关程序包管理器的信息,您会发现此工具对于构建环境非常有用。</span></span></p>
<p><span><span><span><span>本文是Jim McKeeth的</span></span><span><span>“为Delphi Android开发采用OpenJDK”&nbsp;</span></span><span><span>的摘要。</span></span></span></span></p>
<p>原文地址:https://community.idera.com/developer-tools/b/blog/posts/adopting-the-openjdk-for-delphi-android-development-ja</p>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/kinglandsoft/p/12943897.html
頁: [1]
查看完整版本: 使用OpenJDK进行Delphi Android开发