谈谈 JDK 和 SAPMachine 的关系
曾几何时,所谓 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 到底是什么鬼?
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/SapMachine/
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 之间的区别和联系。
版权声明: 本文为 InfoQ 作者【Jerry Wang】的原创文章。
原文链接:【http://xie.infoq.cn/article/5a834769ec7bf33027ee44b9a】。文章转载请联系作者。
评论