曾几何时,所谓 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 之间的区别和分割。
发表回复