共计 2746 个字符,预计需要花费 7 分钟才能阅读完成。
曾几何时,所谓 Oracle 要对 Java 免费
的新闻,在网上传得满城风雨。这个新闻被专业人士视为题目党,而国内泛滥技术论坛,比方某乎社区上,有很多大神对 Java 免费
这个说法做出了十分业余的解读,笔者这里就不班门弄斧了,Bing 搜索引擎依据“Oracle Java 免费”的关键字搜寻,第一条搜寻后果就很值得一读。
本文想阐述的重点,是介绍 JDK,Oracle JDK, Open JDK 和 SAP JDK 这几个名词的关系。
JDK – Java Development Kit
Java 编程语言的软件开发工具包,是 Java 开发的外围,蕴含了 Java 运行环境即 JVM(Java Virtual Machine)和 Java 零碎类库,以及大量工具。
笔者以前在 SAP 德国总部和 CRM 开发团队一位领有 20 年 ABAP 编程教训的德国老同事闲聊,谈到近些年来越来越多的 SAP 产品技术栈换成了 Java,这位共事从没接触过 Java,好奇地问我啥是 JDK.
我过后给他的解释是 (为了节俭篇幅,笔者这里就不放英文了),“想想你在 SAPGUI 里编写的 ABAP 代码,激活后运行在 C /C++ 实现的 ABAP 运行时(runtime) 也就是 ABAP 虚拟机里。”
“另外,Netweaver ABAP 平台提供了很多基础设施层面的性能,比方用于 HTTP 通信的 CL_HTTP_CLIENT 和 CL_HTTP_SERVER, ABAP 里有很多这种类库,都存储在 BASIS 这个包和它的子包上面。所以 ABAP Development Kit 就是 ABAP 运行时和 ABAP 类库的组合,而 JDK 就是 Java 运行时和 Java 类库的组合,就这么简略。”
看到德国共事露出了了解后的笑容,笔者心想,有一点我没通知你,和 ABAP 这种 Server Side 的开发模式相比,用 Java 开发企业级利用免不了在本地搭各种开发环境,因而 Java 开发人员要有在本地搭环境时可能会遇到各种各样问题的心理准备。当初笔者的敌人吴脊 2015 年退出 SAP 成都研究院时,Jerry 作为他的导师,一起在本地搭一个 Java 开发环境,最初花了一周的工夫才搭好。在那一周的工夫里,上面这句话,Jerry 说了起码不下十次:
在我电脑上是好的。
Oracle JDK
创立了 Java 编程语言的 Sun 公司,于 2009 年以 74 亿美元的白菜价被 Oracle 收买之后,越来越多的 Java 初学者将 Oracle JDK 等同为 JDK. 这并不奇怪,毕竟 Google JDK 关键字,位于搜寻后果前列的全是 www.oracle.com 结尾的页面:
因为 Oracle 和 SAP 的关系(SAP 从业者都懂的),在 Oracle 旗下的 Java 传出“要免费”的音讯后,一部分应用 Java 进行二次开发的 SAP 从业者们心里未免感到缓和,其实大可不必。
还记得笔者读本科的时候,一心想干掉 Java 的微软已经搞出一个叫做 J ++ 的编程语言,以及对应的 Visual J++ 这个 IDE. 不过过后笔者就读的电子科大计算机学院的编程课全用的 C /C++,我四周意识的同学们也没人捣鼓这个语言。这个 J++ 尽管有着和 Java 雷同的语法和关键字,然而只能运行在微软的操作系统上,起初据说山寨了 Java 的微软被 Sun 告了,赔了 20 亿美元,而后就没有而后了。
有意思的是,起初微软公布了一封公开信:
原文如下:
这封信是发给 Open JDK 社区的,微软首先发表本人正式退出 Open JDK 社区,动机之一是因为微软有越来越多的产品和服务须要依赖于 Java, 比方 Azure 上的 Java Runtime. 正如笔者最近工作的一个我的项目用到的 SAP Commerce Cloud on Azure,就是这种依赖的受益者。
接着微软在公开信中,低调地抵赖 Oracle 是 Open JDK 我的项目的大佬,本人的团队退出 Open JDK 社区后,会从小 bug 修复和性能 backport 动手,致力成为一名社区好公民。果然英雄所见略同,以前 Jerry 的开发团队每当退出一个新产品的开发小家庭之初,也是通过修 bug 和做 downport 来把握开发常识和相熟流程的。
信中最初一句话:We look forward to participating in the future of Java —— Java 的将来,微软也冀望参加其中。
所以,这个 Open JDK 到底是什么鬼?
官网:https://openjdk.java.net/
Open JDK 是 Sun 在 2006 年末把 Java 开源而造成的我的项目,而 Oracle JDK 是基于 Open JDK 的商业实现。Open JDK 和 Oracle JDK 的关系,好比 Open UI5 和 SAP UI5, Kyma 和 SAP Cloud Platform Extension Factory 一样。
java -version 的输入如果看到呈现了 HotSpot,阐明是 Oracle JDK:
而 Jerry 的阿里云 ECS 上,输入则是 Open JDK:
说了这么多,和 SAP 有啥关系?
大家能够拜访这个公网链接:https://sap.github.io/SapMach…
SAPMachine,是一个 SAP 基于 Open JDK 打造的 JDK,在前者的根底上,SAP 针对企业级利用须要的可支持性 (supportability) 和可靠性 (reliability) 等方面做了加强。
SAPMachine 既能够在上述 github 链接里下载,也能够在 SAP 官网下载:
像 SAP 这样基于 Open JDK 之上为本人的企业量身定做一个 JDK 进去的做法在业界十分广泛。
比方亚马逊的 Corretto,源代码地址:
https://github.com/corretto
还有国内阿里巴巴的 AJDK: Dragonwell
能够说阿里的解决方案之所以能禁受诸如双十一这样对高并发高可用性要求极高的残酷场景下的考验,阿里本人的 JDK 功不可没。
上面一段话来自阿里云栖社区一篇帖子:
撑持双 11 每秒 17.5 万单事务 阿里巴巴对 JVM 都做了什么?
最早从 2010 年,阿里巴巴就开始了基于 OpenJDK6 的 JVM 定制优化工作,这也是国内第一个优化、定制且开源的服务器版 Java 虚拟机。2015 年开始,阿里巴巴 JVM 团队开始着手在 OpenJDK8 进行优化和定制工作,力求在稳定性,性能优化,以及技术前瞻性方面,满足阿里巴巴,蚂蚁金服,以及菜鸟疾速倒退的业务需要。定制的版本被命名为 AJDK(Alibaba JDK),目前淘宝、天猫,蚂蚁,菜鸟,简直所有的外围利用都从 Oracle JDK 切换到了 AJDK 上,并通过了双 11 的考验。
心愿通过本文的介绍,大家可能对几种不同的 JDK 有一个最根本的理解。
总结
本文首先从 Oracle 要对 Java 免费的新闻聊起,介绍了对于 Java 初学者来说,容易混同的几个名词,JDK,Oracle JDK, Open JDK 和 SAP JDK 之间的区别和分割。