根据此前开源中国发起的 Java
版本使用调查澳门新葡萄京官网注册,,国内的
Java 主力版本仍是 Java 8,有近 70% 的用户表示仍在使用 Java
8
。所以对于「Java 8
是否要收费」这个问题,十分有必要阐述清楚,以消除不必要的恐慌。

澳门新葡萄京官网注册 1vs.png

本文授权转载自微信公众号“码农翻身”,作者:刘欣

首先要明确一点,Java
仍然是免费的,并不需要付费使用!

在本文中,我们将探讨Oracle Java Development
Kit和OpenJDK之间的差异并进行比较。

JDK8从2019年1月开始就要收费了,怎么办呢?

下面解释「Java 8 要收费」这个说法的不合理之处

Oracle
JDK由Oracle公司开发,该公司是Sun许可证,基于Java标准版规范实现。它以二进制产品的形式发布。它支持多种操作系统,如Windows,Linux,Solaris,MacOS等。它支持不同的平台,如Intel
32位和64位架构,ARM架构和SPARC。它完全基于Java编程语言。之后,该许可证宣布将根据GPL许可证发布。Oracle
JDK包含许多组件作为库形式的编程工具集合。

其实这个问题本身就是有问题的,因为收费的并不是JDK8 ,而是JDK8后续的update

先说说所谓的「收费」是怎么回事Oracle
一直以来的政策均是如此,所谓「收费」是面向到达生命周期阶段的 Java
版本,即每个 Oracle JDK 版本的免费 bug
修复和安全维护是有期限的,到期后不再为大众提供开放维护。如需继续维护,则要「付费」获取更新或者技术支持。

我们来看看Java SE的历史:

什么是update?如果你下载过JDK,就会看到那些8u191,
8u192这样的东西,191,192就是update的编号。

划重点了!收费,指的是企业用户如果要继续使用2019年1月以后发布的 Java 8
更新,需要付费购买 Oracle 的商业许可证。

  • JDK Beta – 1995
  • JDK 1.0 – 1996年1月
  • JDK 1.1 – 1997年2月
  • J2SE 1.2 – 1998年12月
  • J2SE 1.3 – 2000年5月
  • J2SE 1.4 – 2002年2月
  • J2SE 5.0 – 2004年9月
  • Java SE 6 – 2006年12月
  • Java SE 7 – 2011年7月
  • Java SE 8 – 2014年3月
  • Java SE 9 – 2017年9月
  • Java SE 10 – 2018年3月
  • Java SE 11 – 2018年9月
  • Java SE 12 – 2019年3月

这些update中通常会包含对JDK bug的fix,或者一些功能的改变,增强,拿update
172为例:

这是由于2019年1月份之后,Oracle Java 8
的公开更新将不向没有商用许可证的业务、商用或生产用途提供详情请查看官方的公告
>>> 

注意:不再支持斜体版本。

1.这个update修改了下面两个方法的文档,让文档描述和方法的实现一致:

澳门新葡萄京官网注册 2

我们可以看到Java SE的主要版本大约每两年发布一次,直到Java SE 7.从Java SE
6开始花了五年时间,之后又花了三年时间到达Java SE 8。

java.awt.Toolkit.getImage

java.awt.Toolkit.createimage

到这里,相信各位已了解所谓的「收费」是怎么回事了。「收费」面向的对象一直都是企业用户,至于个人用户,可以继续免费更新到2020年12月

自Java SE
10以来,我们可以期待每六个月发布一次新版本。但是,并非所有版本都是长期支持版本。由于Oracle的发布计划,LTS产品发布仅每三年发布一次。

2.增加了在Windows8及以上版中,对Swing/AWT文本组件自动显示触摸键盘的功能

澳门新葡萄京官网注册 3

OpenJDK是Java SE平台版的开源和免费实现,它是Sun
Corporation(现在的Oracle
Corporation)于2006年开始的开发结果。它是根据GNU
GPL许可证授权的。它最初于2007年发布。它由Oracle Corporation,Red
Hat,IBM,Apple Inc.,OpenJDK和Java Community等开发。它是使用C
++和Java编程语言编写的。它支持不同的操作系统,如FreeBSD,Linux,Microsoft
Windows,Mac OS X. OpenJDK是Java SE Platform Edition的官方参考实现。

3.36个Bug Fix

像这种公告,大体上没毛病,但问题不是「因 Oracle JDK
许可变更」,而是这本来就是 Oracle
的更新策略,旨在鼓励开发者升级到更高版本的 JDK。

现在让我们看看OpenJDK版本:

假设JDK 8u192是2018年的最后一个update
,你下载并且安装了,那可以继续免费使用下去,没有任何问题。

因为 Oracle JDK 8 u191 是2019年1月前发布的最新版本,所以只要一直使用
JDK 8 u191 以及更早的版本,就不需付费。

  • OpenJDK 6项目 – 基于JDK 7,但经过修改后提供了Java 6的开源版本
  • OpenJDK 7项目 – 2011年7月28日
  • OpenJDK 7u项目 – 该项目开发Java Development Kit 7的更新
  • OpenJDK 8项目 – 2014年3月18日
  • OpenJDK 8u项目 – 该项目开发Java Development Kit 8的更新
  • OpenJDK 9项目 – 2017年9月21日
  • JDK项目于2018年3月10日至20日发布
  • JDK项目于2018年9月11日至25日发布
  • JDK项目发布12 – 稳定阶段

但是从2019年1月开始,如果你还想获取JDK的update ,对不起,你需要付费订阅。

不过根据开源中国此前报道的一篇「Java SE 11.0.2(LTS)、8u201 / Java SE
8u202
发布」资讯,有用户回复表示,Java
的更新弹出信息显示为:

澳门新葡萄京官网注册 4对比图.jpg

这个订阅服务的价格是这样的:

Java SE 8 is going through the End of Public Updates process for
legacy releases. Oracle will continue to provide free public updates
and auto updates of Java SE 8, until at least the end of December 2020
for Personal Users, and January 2019 for Commercial Users. Personal
Users continue to get free Java SE 8 updates from Oracle at java.com
(or via auto update), and Commercial Users continue to get free
updates to Java SE 8 from OTN for free under the BCL license. Starting
with the April 2019 scheduled quarterly critical patch update, Oracle
Customers can access updates to Java SE 8 for commercial use from
Oracle through My Oracle Support and via corporate auto update where
applicable (Visit My.Oracle Support Note 1439822.1 – All Java SE
Downloads on MOS – Requires Support Login)

Oracle与OpenJDK都是市场上的热门选择;
让我们讨论一下OracleJDK与OpenJDK之间的一些主要差异:

对于PC,每用户每月是2.5美元,对于服务器/云部署,每个processor每月是25美元,当然,数量多的话可以打折。

意思即是,2019年4月起的更新将影响公司或企业用户;正在安装的版本则不受影响。按这个说法,JDK
8 u201 和 JDK 8 u202 仍可免费使用。

  1. Oracle JDK版本将每三年发布一次,而OpenJDK版本每三个月发布一次。

  2. Oracle
    JDK将更多地关注稳定性,它重视更多的企业级用户,而OpenJDK经常发布以支持其他性能,这可能会导致不稳定。

  3. Oracle JDK支持长期发布的更改,而Open
    JDK仅支持计划和完成下一个发行版。

  4. Oracle JDK根据二进制代码许可协议获得许可,而OpenJDK根据GPL
    v2许可获得许可。使用Oracle平台时会产生一些许可影响。如Oracle
    宣布的那样,在没有商业许可的情况下,在2019年1月之后发布的Oracle Java
    SE
    8的公开更新将无法用于商业,商业或生产用途。但是,OpenJDK是完全开源的,可以自由使用。

  5. Oracle JDK的构建过程基于OpenJDK,因此OpenJDK与Oracle
    JDK之间没有技术差异。

  6. 顶级公司正在使用Oracle JDK,例如Android Studio,Minecraft和IntelliJ
    IDEA开发工具,其中Open JDK不太受欢迎。

  7. Oracle JDK具有Flight Recorder,Java Mission Control和Application
    Class-Data Sharing功能,Open JDK具有Font
    Renderer功能,这是OpenJDK与Oracle JDK之间的显着差异。

  8. Oracle
    JDK具有良好的GC选项和更好的渲染器,而OpenJDK具有更少的GC选项,并且由于其包含自己的渲染器的分布,因此具有较慢的图形渲染器选项。

  9. 在响应性和JVM性能方面,Oracle JDK与OpenJDK相比提供了更好的性能。

  10. 与OpenJDK相比,Oracle
    JDK的开源社区较少,OpenJDK社区用户的表现优于Oracle
    JDK发布的功能,以提高性能。

  11. 如果使用Oracle
    JDK会产生许可影响,而OpenJDK没有这样的问题,并且可以以任何方式使用,以满足完全开源和免费使用。

  12. Oracle
    JDK在运行JDK时不会产生任何问题,而OpenJDK在为某些用户运行JDK时会产生一些问题。

  13. 根据使用方的使用和许可协议,现有应用程序可以从Oracle JDK迁移到Open
    JDK,反之亦然。

  14. Oracle
    JDK将从其10.0.X版本将收费,用户必须付费或必须依赖OpenJDK才能使用其免费版本。

  15. Oracle
    JDK不会为即将发布的版本提供长期支持,用户每次都必须通过更新到最新版本获得支持来获取最新版本。

  16. Oracle
    JDK以前的1.0版以前的版本是由Sun开发的,后来被Oracle收购并为其他版本维护,而OpenJDK最初只基于Java
    SDK或JDK版本7。

  17. Oracle
    JDK发布时大多数功能都是开源的,其中一些功能免于开源,并且根据Sun的许可授权,而OpenJDK发布了所有功能,如开源和免费。

  18. Oracle JDK完全由Oracle公司开发,而Open JDK项目由IBM,Apple,SAP
    AG,Redhat等顶级公司加入和合作。

Oracle为什么要这么干呢?

当然,如果你需要使用最新的 Java 特性,从 JDK 11 开始,Oracle 提供了
OpenJDK 的下载包,可用于商业和生产用途。

以下是Oracle与OpenJDK之间最重要的比较:

我推测有两个原因,第一个原因可以理解:Oracle JDK8
2014年3月发布,到2019年1月正式进入“End of Public
Updates”,这个版本Oracle支持了将近5年时间,一个版本的软件不可能无限期地支持下去,那样维护成本太高。

建议各个公司的技术负责人,认真检查线上运行的各个 Java
版本,确保版本在许可范围之内。另外,以后到官网下载 JDK 包时,请选择
OpenJDK 。

Oracle与OpenJDK之间比较 Oracle JDK OpenJDK
执照 它是根据GPL许可证授权的 它是根据GNU GPL许可证授权的
发展 由Sun Microsystems Inc.开发 由Oracle,OpenJDK和Java社区开发
性能 根据Sun JDK的开发和实现提供性能 提供由Oracle JDK之上的一些供应商开发的高性能
可扩展性 根据Sun的实施 可以使用其他库或Oracle JDK进行改进
费用 Sun的官方执行许可证 开源和免费实施可供免费使用
速度 由Sun Microsystems Inc.开发 第三方供应商将通过进行一些调整来提高JVM的速度
操作系统 支持Windows,Linux,Solaris,MacOS FreeBSD,Linux,Microsoft Windows,Mac OS X.
便于使用 可以与任何应用程序开发一起使用 可以与任何应用程序开发和其他开源工具一起使用,以提高开源实现模型的性能。

第二个原因可能是没有多少人购买它的Java SE Advanced, Java SE Advanced
Desktop或者Java SE Suite,这三个家伙是什么东西?我们稍后解释。

所以,「Java 8
要收费」这样一句话,没有说清楚明确的对象和具体的条件,作为严谨的开发者,无中生有的事,你再把它宣传一遍,等于你也有责任吧……

Oracle JDK可用于开发Java
Web应用程序,独立应用程序以及许多其他图形用户界面以及其他开发工具。Oracle
JDK执行的所有操作或任务也可以由OpenJDK执行,但只有Oracle与OpenJDK之间的区别在于Open
JDK在现有Oracle
JDK之上的许可和其他工具集成和实现。使用OpenJDK的优点是可以根据应用程序的要求修改性能,可伸缩性和实现,以根据需要调整Java虚拟机。

你也许注意到了,我刚才再说JDK的时候,特别加上了Oracle这个词,这是因为Java虚拟机的规范是开放的,任何人都可以去实现。

(文/开源中国)    

OpenJDK的优势更多,Oracle JDK的使用在Oracle
JDK实现中使用的标准方面也有一些好处,这将确保应用程序稳定和良好维护。

老刘在2017年编程提高群第一季中,不就和大家一起实现了一个极为简单的版本吗?当然那不能称为JVM,只实现了对Class文件的解析,和一个能实现顺序,分支,循环,多态的简单执行引擎。

其实现在的JDK提供者非常多,不像微软的.NET,独此一家,别无分号。

Open JDK

这个不多说,免费的开源实现,以GPL
License发布,很多Linux发行版中都会包含这个Open JDK。

参与开发的大佬们有Oracle, RedHat ,Azul System, IBM , Apple , SAP。

Oracle JDK

就是我们常说的Java JDK,也是最常用的一个,是Oracle公司对Java SE的实现。

如果更详细分的话,可以分为Oracle JDK和Oracle JRE。

比如你想玩Minecraft这样需要Java的游戏,那只需要从java.com下载一个JRE就够了。

如果你想基于Java做开发,那就需要从Oracle Technology
Network网站上下载JDK了。

其他公司提供的JDK

有实力的大公司,都有可能开发自己的JDK,比如IBM,肯定要为自家的操作系统AIX,还有z/OS开发SDK。

我在IBM工作的时候,根本就没有用过Oracle JDK,公司也不让用啊。

HP,SAP也有自己的JDK ,可以为自己的硬件和软件做定制。

Oracle Java SE Advanced, JavaSE Advanced Desktop, Java SE Suite

这名字老长了,也有点费解,简单来说,这是个收费的服务,是Oracle为企业级用户提供的高级工具和功能,可以监控、部署、管理企业级的Java程序,与此同时,你还可以下载那些老版本的JDK及其update

换句话说,如果你购买了这个服务,自然就不用担心什么JDK update收费的问题。

但是问题在于,到底有多少公司再使用这个服务?如果你的公司在使用,欢迎告知。

所以我猜测Oracle耍了一点小手段,以后不要这个收费的服务了,把这些高级的功能加上JDK
update打包,统一成一个新的服务,就是之前说的订阅服务。

总结一下

如果你的公司已经买了这个Java SE Advanced,Java SE
Suite的License,什么都不用担心,你很安全。

如果你的公司正在使用Oracle JDK
8并且还想在2019年1月之后获得那些更新和支持,你需要购买Orace的订阅服务。

如果你的公司一直在在升级你的Oracle
JDK,比如说已经升级到JDK9了,你什么服务都不用购买,因为那个订阅服务主要解决的是老版本的Update的问题。

或者可以选择一个没有public update的Oracle
JDK,这也很常见,很多JDK已经非常稳定了,比如Oracle JDK
7发布日期是2011年7月,“End of Public
Updates”是2015年4月,我估计现在还有不少公司还在使用JDK7这个已经没有public
update的版本吧!

如果真的出现了巨大的安全漏洞,你又没法升级JDK,那只好去购买订阅服务去Fix了。

当然,你的公司也可以选择纯开源OpenJDK。

注意,我这里说的都是公司,都是商业用途,如果只是个人学习Java的话,没什么影响!

后记:这篇文章是我从网络上查阅资料,综合分析后写的,如果有不正确的地方,欢迎批评指正。

参考资料:

《Oracle Java SE and Oracle Java Embedded Products》

《Java SE 概览》

《Java SE Offerings》

《How to Prep for New Updates to Oracle Java SE 8 Licensing》

《End of Public Updates is a Process, not an Event》

更多内容可关注作者微信公众号“码农翻身”