Mah*_*Lak 45 java migration java-8 java-11
我们计划将Java 8项目迁移到使用Java 11.但是我注意到Java 11没有JRE文件夹.
在Java 9和Java 10中,文件夹结构被更改,即,java\jdk1.x
或者java\jre1.x
在x
java 9或10中.
但是在Java 11中,我只获得了一个文件夹,即java\jdk-11
.如果没有jre,我的客户如何使用我的应用程序?
我所理解的是Java 11正在强制模块化我们的应用程序,并且需要使用jlink来创建我们自己的jre以在客户端中运行应用程序.
我的理解是否正确?
jwe*_*ing 64
20年来,JDK附带了一个JRE,它只是安装在系统上不同目录中的一部分功能.
实际上,它附带了两个相同的JRE,一个安装在JDK安装目录中,另一个安装在JDK安装目录之外.
这一直困扰着我,因为完全浪费了维护人员的努力来实现这一点,并且完全浪费了安装它的计算机上的磁盘空间,因为JRE只是复制了JDK可以做的一些事情.已经做好了
最后,在Java 11中,Oracle和OpenJDK团队决定结束这种愚蠢并只发布一个东西,即JDK.安装时这个JDK在硬盘上实际上比以前的旧JRE小,甚至删除了一些有效的参数,你需要为磁盘空间有限的设备单独使用JRE,这一论点从未解释为什么2个JRE会首先安装一个JDK,但是为了证明需要将JRE作为JDK的精简运行时环境.
因此,不需要单独的JRE,并且很长一段时间没有一个,更不用说包括并强行安装它作为JDK安装的一部分.
不,您不需要创建自己的JRE.只需在客户端计算机上安装OpenJDK,并确保将$ JAVA_HOME/bin添加到系统路径,就像使用旧JRE一样.
哦,剥去任何java*.exe文件的Windows目录树,旧的JRE安装程序的某些版本不会放在那里,以及系统路径也有一些JRE安装程序添加了一些奇怪的条目.
Bas*_*que 13
没有jre,我的客户将如何使用我的应用程序?
?在基于Java的应用程序中捆绑Java实现。
学习关于:
我了解到Java 11正在强制将我们的应用程序模块化
不,严格来说,不需要模块化。大多数现有的应用程序都可以在Java 11中按原样运行。您可以继续在Java 11中进行开发而无需对代码进行模块化。但是对于您的情况,对于GUI桌面或移动应用程序,则需要在应用程序中打包JVM。模块化和使用jlink工具可能是实现此目的的最佳方法。相比之下,基于服务器的基于Servlet的应用程序或微服务服务器无需模块化,尽管最终可能这样做是个好主意。
我注意到Java 11没有JRE文件夹。
Oracle不再打算让最终用户安装JRE或JDK。浏览器中的Java Applet和Java Web Start应用程序交付已被淘汰,最终用户不需要JRE。基于Java的应用程序应捆绑自己的Java实现。唯一有意识地安装JDK的人将是开发人员和服务器端sysadmins。
有些人对Java Everywhere梦想的逝去感到失望。而且他们可能不得不为每个主机OS(macOS,Linux,Windows等)构建其应用程序而感到恼火。另一方面,一些开发人员很乐意将Java实现(现在比以往更小)捆绑在一起,因为这消除了最终用户下载,安装,更新系统范围的Java实现的麻烦。还消除了与公司IT部门进行争斗以在用户的PC上安装Java的麻烦。众所周知,将Java与应用程序捆绑在一起可简化测试和支持,并确切控制涉及的Java版本和发行版。顺便说一句,这种与应用程序捆绑在一起的Java并不是全新的:Apple已在macOS和iOS应用程序商店中支持了很多年。
重要:
这是一个流程图,可以帮助您在提供Java 11实现的各种供应商之间寻找和确定。
查看AdoptOpenJDK项目网站以下载最新的JRE和JDK https://github.com/AdoptOpenJDK/openjdk-jdk11
我已经使用他们的夜间构建来解决JDK包https://adoptopenjdk.net/releases.html?variant=openjdk11#x64_linux中缺少JRE的问题
只需将JRE解压缩到JDK文件夹中就可以了。