JavaDeveloper,是时候删除你的JRE了!

2014年Java8发布,不知不觉已过去5年了。支持模块化的Java 9 2017年发布后,Java发布进入了快车道,计划六个月一个版本,一年二个版本,小步快跑。版本号大有要超越chrome的趋势。随后在2018年发布了Java 10和11,今年三月发布了Java12. 特别注意的Java 11是一个LTS版本,如果企业采用最新版本的话,最好使用这个版本的JDK。

但是企业应用的jdk升级总是滞后的,相信大多数企业使用最多的任然是Java8. 一些遗留应用 依然使用6,7,甚至5都有可能。这就造成了开发者在开发机器上安装了多个版本的jdk。比如我就安装了6 7 8 9 11 ,为了尝鲜刚安装12.

对于入行较早的开发者,大都知道jdk和jre这两个概念。这里不再细说。多数java初学者,刚开始的时候,可能被两个名词给稍稍困扰一下。一般来说常用的原则是开发人员安装jdk,最终用户安装jre。但是这jdk里面还包含了一个jre目录。通常安装jdk时,又可能安装了一个jre的过程。这样造成的后果是开发人员安装同一个java版本,需要安装一个jdk,另外捎带安装一个jre,系统存在多个jre。

这种情况在java9之后就不存在了,因为java9 的模块化设计,单独一个jre已经没有必要了。再加上浏览器对applet放弃支持,最终用户系统不需要安装java了。所以就没有单独的jre了。一个jdk解决问题,干净清爽。

到这里,你可能会问,jre和applet怎么扯上了?这要回到java的历史说起,Java语言最初出现的目的就是为了提高有线电视中浏览器交互性,运行后来名叫applet的这个东西。不过在20多年后的今天,H5和各种Web技术的发展,Java applets这个技术已经逐渐被各个浏览器放弃支持,先是chrome 45版本,后有2018年的firefox,具体参见:https://www.java.com/en/download/faq/firefox_java.xml

https://www.java.com/en/download/faq/chrome.xml

 

普通用户安装jre的目的就是运行applets,现在Java起源的applets被放弃了,另一个要使用jre的桌面端有趣的技术是Java Web Start,通过浏览器launch应用,这个应用是一个本地应用,拉起后和浏览器就没关系了。javaws使用的是一个叫做 JNLP,但是按照java roadmap, JNLP is no longer a part of Java SE (from version 11 onward),这个技术也被放弃了。所以jre就没有存在的意思了。当初宣传的Java Everywhere,现在Java已经从大众用户视野中消失了,Java也退出了大众用户端桌面领域了。。不仅令人唏嘘。

 

 

JavaDeveloper,是时候删除你的JRE了!_第1张图片

 

所以,是时候删除这些jre了。让这个java图标消失把。

那么,如果我的应用是java编写的,分发给最终用户怎么办呢?很简单,包含一个jdk就好,新版本的jdk大小比原来的jre大不了多少。如果应用对大小要求很严格,那么你可以使用jlink来裁剪你需要的模块减小应用的最终尺寸。jlink使用详见: https://medium.com/codefx-weekly/is-jlink-the-future-1d8cb45f6306

 

其实每个应用一个jdk也很好,防止只有一个jdk安装造成的混乱不兼容问题。也省了用户下载安装jre/jdk的麻烦。况且现在各个平台无论桌面和移动都采用应用市场的模式,而不是各个网站下载app,Java Web Start停止支持也有这方面的原因。

 

Java对Client端一些技术支持可以参见: Read this white paper by Oracle of 2018-03, Java Client Roadmap Update ,大概看了对AWT Swing支持到2026年,未来10年的发展,谁知道呢?

 

但是Java并没有真实消失,服务器端是Java重点关注的领域,Java还在!

 

 

参考:

 

https://stackoverflow.com/questions/53733312/where-is-jre-11

https://stackoverflow.com/questions/52584888/how-to-use-jdk-without-jre-in-java-11

https://www.oracle.com/technetwork/java/java-se-support-roadmap.html

 

你可能感兴趣的:(JAVA-java)