Oracle JDK 和 OpenJDK的区别

简介: Oracle JDK vs OpenJDK

Oracle JDK和OpenJDK是两个Java开发工具包(JDK)的发行版,它们之间有一些关键的区别。这两个发行版都提供了进行Java开发所需的工具和库,但在许可、支持和更新方面存在一些差异。

  1. 1.许可:
  • Oracle JDK:在过去,Oracle JDK是在商业许可下提供的。从JDK 11(2018年9月)开始,Oracle改变了其许可模式。Oracle JDK现在采用订阅模型,用户需要为特定版本(例如JDK 11)之后的商业支持和更新付费。
  • OpenJDK:另一方面,OpenJDK具有开源许可证(GNU通用公共许可证第2版,并带有Classpath例外),允许自由使用、分发和修改源代码。
  1. 2.支持:
  • Oracle JDK:采用订阅模型,Oracle为Oracle JDK提供商业支持和长期更新。这包括修复错误、安全补丁和其他更新,但需要付费订阅。
  • OpenJDK:OpenJDK通常由社区推动,虽然有组织和供应商提供OpenJDK版本的支持,但并不是由Oracle直接提供。支持和更新的程度可能因涉及的组织或供应商而异。
  1. 3.更新:
  • Oracle JDK:Oracle通常为其JDK提供定期更新和长期支持(LTS)版本。但是,对于JDK 11之后的LTS版本,更新和支持可能需要商业订阅。
  • OpenJDK:OpenJDK也会从社区获得定期更新,但具体发行版或供应商可能会因此而异。
  1. 4.TCK(技术兼容性测试套件):
  • Oracle JDK:Oracle JDK经过使用Java技术兼容性测试套件(TCK)的兼容性测试,以确保符合Java规范。
  • OpenJDK:OpenJDK可以从源代码编译,并经过相同的TCK测试以实现兼容性。某些发行版也可能通过了TCK测试,提供了与Java平台兼容的保证。

总之,Oracle JDK过去是商业许可下的JDK,但已转向订阅模型。另一方面,OpenJDK是开源的且免费提供。这两个发行版都可以用于Java开发,但选择可能取决于许可要求、支持需求和对开源软件的偏好。由于其开源特性和社区驱动的开发,许多开发人员和组织已转向使用OpenJDK或其他基于OpenJDK的发行版。

目录
相关文章
|
SQL Oracle 关系型数据库
避坑,Oracle中left join 与 (+) 的区别
避坑,Oracle中left join 与 (+) 的区别
|
6月前
|
存储 算法 Java
JvM JDK JRE 三者区别与联系详解
本文深入解析了Java编程中的三个核心概念:JVM(Java虚拟机)、JDK(Java开发工具包)和JRE(Java运行环境)。JVM是执行Java字节码的虚拟计算机,实现“一次编译,到处运行”;JDK包含JRE及开发工具,用于编写和调试Java程序;JRE负责运行已编译的Java程序。文章详细阐述了它们的功能、组成及应用场景,并通过实例说明其在实际开发中的作用,帮助开发者理解三者联系与区别,提升开发效率与问题解决能力。适合Java初学者及进阶开发者学习参考。
1009 3
|
10月前
|
SQL Oracle 关系型数据库
MySQL 和 Oracle 的区别?
本文对比了Oracle和MySQL数据库的多个方面。Oracle适用于大型数据库,支持高并发和大访问量,市场占有率为40%,安装占用空间较大,约3G;而MySQL适合中小型应用,是开源免费的,安装仅需152M。两者在主键生成、字符串处理、SQL语句、事务处理等方面存在差异。Oracle功能更为强大,尤其在企业级应用中表现突出,而MySQL则以简单易用见长。
1254 7
MySQL 和 Oracle 的区别?
|
9月前
|
Java Spring
JDK动态代理和CGLIB动态代理的区别
Spring AOP中的动态代理主要有两种方式,JDK动态代理和CGLIB动态代理: ● JDK动态代理只提供接口的代理,不支持类的代理Proxy.newProxyInstance(类加载器, 代理对象实现的所有接口, 代理执行器) ● CGLIB是通过继承的方式做的动态代理 , 如果某个类被标记为final,那么它是无法使用 CGLIB做动态代理的。Enhancer.create(父类的字节码对象, 代理执行器)
|
存储 Oracle 关系型数据库
Oracle和MySQL有哪些区别?从基本特性、技术选型、字段类型、事务、语句等角度详细对比Oracle和MySQL
从基本特性、技术选型、字段类型、事务提交方式、SQL语句、分页方法等方面对比Oracle和MySQL的区别。
2311 18
Oracle和MySQL有哪些区别?从基本特性、技术选型、字段类型、事务、语句等角度详细对比Oracle和MySQL
|
Java 编译器 API
深入解析:JDK与JVM的区别及联系
在Java开发和运行环境中,JDK(Java Development Kit)和JVM(Java Virtual Machine)是两个核心概念,它们在Java程序的开发、编译和运行过程中扮演着不同的角色。本文将深入解析JDK与JVM的区别及其内在联系,为Java开发者提供清晰的技术干货。
262 1
|
小程序 Java 程序员
JDK 和 JRE 有什么区别
JDK(Java Development Kit)是Java开发工具包,包含编译器、调试器等开发工具,用于开发Java程序。JRE(Java Runtime Environment)是Java运行环境,包含Java虚拟机和类库,用于运行Java程序。简言之,JDK用于编写Java程序,JRE用于运行这些程序。
428 2
|
Java
Java基础之 JDK8 HashMap 源码分析(中间写出与JDK7的区别)
这篇文章详细分析了Java中HashMap的源码,包括JDK8与JDK7的区别、构造函数、put和get方法的实现,以及位运算法的应用,并讨论了JDK8中的优化,如链表转红黑树的阈值和扩容机制。
220 1
|
Dubbo Java 应用服务中间件
剖析Tomcat线程池与JDK线程池的区别和联系!
剖析Tomcat线程池与JDK线程池的区别和联系!
499 0
剖析Tomcat线程池与JDK线程池的区别和联系!
|
存储 安全 Java
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程是什么,JDK、JRE、JVM的联系与区别;什么是程序计数器,堆,虚拟机栈,栈内存溢出,堆栈的区别是什么,方法区,直接内存
JVM常见面试题(二):JVM是什么、由哪些部分组成、运行流程,JDK、JRE、JVM关系;程序计数器,堆,虚拟机栈,堆栈的区别是什么,方法区,直接内存

推荐镜像

更多