前言
关于Oracle JDK开始收费:从2009年Oracle收购Sun公司,当时就有不少人开始担心Java收费的问题了。果不其然,这一天来了:时隔10年,Oracle于2019年4月16号宣布JDK开始商用收费,JDK从8u211版本开始。
Tips:8u211以下版本(比如JDK 8u210)不升级就不收费,升级但不商用也不收费
2021年9月,Oracle在发布Java 17时,开始提供一个不收费的许可模式(NFTC协议地址:https://www.oracle.com/downloads/licenses/no-fee-license.html),该许可会在三年内免费提供季度更新。但该模式只限于该版本的迭代,允许用户免费使用,甚至包括商业用途(不能与付费产品捆绑在一起),而不适用于 Java 7、8和11等早期版本,这就是口口相传的Java 17开始“免费”了。
Tips:好好阅读Oracle的收费规则、条款,会发现真tm套路多
市场上对 Java使用有很多混乱的地方,Oracle JDK收费还是不收费,几句话没法说清楚。总而言之,言而总之,不管你使用的是哪一个版本,只要你是从Oracle的网站上下载补丁和更新,那就得需要一个支持许可证,就(可能)需要收费。
Oracle号称是一个律师公司,在收费、打官司这一块,还没怕过谁。谨慎使用,特别对于大公司
官方Oracle JDK
在sun被oracle收购以后,很多人以为Java就是Oracle JDK。其实,跟其他OpenJDK发行版一样,它只是Java平台标准版的一种实现。所谓Java收费了,只是oracle JDK收费了,其他jdk仍可以免费使用。
Java的特点是百花齐放,不像c#或者go只有一家主导。
oracle jdk收费了,没关系,不是只有它可用。
java还有很多免费的主流的jdk发行版本,记录下来备忘!
阿里龙井openjdk的商标“Alibaba Dragonwell”
Oracle JDK持有Java商标,可以使用它以及宣传它,而OpenJDK不能使用Java商标(关键字)。这一点从java -version
里能看出来:
OpenJDK(sun JDK)
OpenJDK是其他所有jdk发行版的基础,可以用于开发和测试,但不建议将它用于Java生产环境。
Twitter用的就是OpenJDK:
Google用的也是OpenJDK。
Amazon、阿里,甚至Goldman Sachs,大家都在用OpenJDK…
生产上不建议直接使用OpenJDK的主要原因包括其性能问题、缺乏某些必要的诊断工具、以及可能的兼容性问题。
性能问题:OpenJDK在性能上可能不如Oracle JDK,尤其是在没有JIT(Just In Time)编译器的情况下,纯解释程序的执行速度较慢,这可能会影响到生产环境的性能要求1。
缺乏必要的诊断工具:OpenJDK在某些版本中删除了如VisualVM和jhat等JVM诊断工具,这对于需要监控和调试的生产环境来说是一个不利因素2。
兼容性问题:OpenJDK在某些情况下可能无法完全兼容所有的Java应用程序,尤其是在没有进行充分的测试和验证的情况下,直接使用OpenJDK可能会导致兼容性问题,从而影响生产环境的稳定性和可靠性2。
综上所述,虽然OpenJDK作为一个开源的Java实现,提供了许多优势,如灵活性、可定制性等,但在生产环境中使用时,需要考虑到其可能带来的性能、工具支持和兼容性问题,确保在决定使用前进行充分的测试和验证。
Temurin(Eclipse)
Temurin由Eclipse开源基金会旗下的Adoptium工作组维护,基于openjdk构建的免费的jdk发行版(之前是AdoptOpenJDK),可用于在Java生产环境中替代oracle jdk。
Semeru(IBM openjdk)
Semeru是由IBM基于openjdk构建的免费jdk发行版,jvm采用IBM开源的openj9,性能优越,大幅减小Java应用程序的内存占用。推荐用于生产环境,是代替oracle jdk的优秀选择。
Corretto(Amazon)
Amazon Corretto-OpenJDK 的免费多平台发行版-AWS云服务
Corretto是由亚马逊维护的基于openjdk的免费的jdk生产就绪版本,提供长期支持,其中包括性能增强和安全修复。在亚马逊内部有数以千计的Java应用程序基于Corretto执行,支撑亚马逊电子商务网站和aws在Linux上高速稳定运行。
Dragonwell(阿里龙井openjdk)
龙井(Dragonwell)是由中国著名的电子商务公司阿里巴巴主导开源的openjdk发行版,阿里巴巴的主要业务都运行在基于Linux和Dragonwell的Java应用程序上。
8和11 两个版本
毕昇JDK(Huawei OpenJDK)
毕昇JDK | OpenJDK | openEuler社区官网
毕昇JDK是中国领先的科技公司华为内部基于OpenJDK定制的Huawei JDK的开源版本,运行在华为内部500多个产品上。毕昇JDK是一款高性能、可用于生产环境的OpenJDK发行版。它对华为内部Java应用场景中遇到的一些性能问题和稳定性问题进行了修复,并在ARM架构上进行了性能优化和稳定性增强,在ARM架构上更稳定,在大数据等场景下可以获得更好的性能。
Kona JDK(腾讯OpenJDK)
https://github.com/Tencent/TencentKona-17
Kona JDK是中国领先的互联网公司腾讯基于 OpenJDK 定制开发的 JDK 版本,广泛服务于腾讯内部业务和腾讯云上客户,经过了内部大数据和AI等复杂业务场景的验证,为腾讯 Java 生态提供专业持续的保障,具有稳定性高、安全性高、性能好等特点。
微软OpenJDK
您没看错,是它,曾经与Java为敌的微软也有基于OpenJDK的构建版本。微软首次向 OpenJDK 贡献代码是在 2014 年。2018年甲骨文将 OpenJDK 的源码库迁移至 GitHub,当时的 GitHub 刚刚被微软收购,此后微软与 OpenJDK 的关系也更进了一步。
Azul Zulu(最稳定最安全 OpenJDK 版本)
Azul | The Java Platform for the Modern Cloud Enterprise
Azul Zulu是Java标准版(“Java SE”)规范的开源实现。它是OpenJDK开源项目的二进制构建,有免费版本和收费的商业支持版本。Azul号称是全球最大的 OpenJDK商业版提供商,世界唯一100% 基于 Java 的公司。提供世界上最安全、最稳定的 OpenJDK 版本。
SapMachine(SAP OpenJDK)
SapMachine | An OpenJDK release maintained and supported by SAP
SapMachine是由SAP基于OpenJDK构建的免费的下游版本。它用于为希望使用OpenJDK运行Java应用程序的SAP客户和合作伙伴构建和维护SAP支持的OpenJDK版本。
Liberica JDK(BellSoft OpenJDK)
Liberica JDK | Java runtime from an OpenJDK contributor
Liberica JDK是一个100%开源的Java实现。它是由BellSoft基于OpenJDK构建的,并且所有Liberica版本都包含JavaFX。
GraalVM(oracle开发并开源)
与其他jdk发行版不同,GraalVM是一个通用虚拟机,由oracle开发并开源。
它可以运行用Javascript、Python、Ruby和基于JVM的语言(如Java、Scala、Groovy、Kotlin、Clojure)和基于LLVM的语言(例如C和C++)编写的应用程序。
GraalVM消除了编程语言之间的隔离,并实现了共享运行时中的互操作性。它可以像Go语言一样把java程序打包为本机可执行程序直接运行,也可以像OpenJDK一样作为运行时来运行java程序。
GraalVM 可作为 GraalVM Enterprise 和 GraalVM Community 版本使用,包括对 Java 11 和 Java 17 的支持。
GraalVM Enterprise 基于 Oracle JDK,而 GraalVM Community 基于 OpenJDK。
GraalVM 适用于 x86 64 位和 AArch64 系统上的 Linux 和 macOS,以及 x86 64 位架构上的 Windows。 根据平台的不同,发行版以 .tar.gz 或 .zip 存档形式提供。 有关安装说明,请参阅入门指南。