首页 > 数据库 >什么是字节码,JAVASE,Oracle JDK 总结

什么是字节码,JAVASE,Oracle JDK 总结

时间:2024-10-09 11:48:23浏览次数:3  
标签:Java JDK OpenJDK 应用程序 开源 Oracle JAVASE

 JAVASE和JAVAEE

  • Java SE(Java Platform,Standard Edition): Java 平台标准版,Java 编程语言的基础,它
  • 包含了支持 Java 应用程序开发和运行的核心类库以及虚拟机等核心组件。Java SE 可以用于构建桌面应用程序或简单的服务器应用程序。
  • Java EE(Java Platform, Enterprise Edition ):Java 平台企业版,建立在 Java SE 的基础上,包含了支持企业级应用程序开发和部署的标准和规范(比如 Servlet、JSP、EJB、JDBC、JPA、JTA、JavaMail、JMS)。 Java EE 可以用于构建分布式、可移植、健壮、可伸缩和安全的服务端 Java 应用程序,例如 Web 应用程序。

简单来说,Java SE 是 Java 的基础版本,Java EE 是 Java 的高级版本。Java SE 更适合开发桌面应用程序或简单的服务器应用程序,Java EE 更适合开发复杂的企业级应用程序或 Web 应用程序。

除了 Java SE 和 Java EE,还有一个 Java ME(Java Platform,Micro Edition)。Java ME 是 Java 的微型版本,主要用于开发嵌入式消费电子设备的应用程序,例如手机、PDA、机顶盒、冰箱、空调等。Java ME 无需重点关注,知道有这个东西就好了,现在已经用不上了。

什么是字节码?采用字节码的好处是什么?

Java 程序从源代码到运行的过程如下图所示

 我们需要格外注意的是 .class->机器码 这一步。在这一步 JVM 类加载器首先加载字节码文件,然后通过解释器逐行解释执行,这种方式的执行速度会相对比较慢。而且,有些方法和代码块是经常需要被调用的(也就是所谓的热点代码),所以后面引进了 JIT(Just in Time Compilation) 编译器,而 JIT 属于运行时编译。当 JIT 编译器完成第一次编译后,其会将字节码对应的机器码保存下来,下次可以直接使用。而我们知道,机器码的运行效率肯定是高于 Java 解释器的。这也解释了我们为什么经常会说 Java 是编译与解释共存的语言

  Oracle JDK 和 OpenJDK :

可能在看这个问题之前很多人和我一样并没有接触和使用过 OpenJDK 。那么 Oracle JDK 和 OpenJDK 之间是否存在重大差异?下面我通过收集到的一些资料,为你解答这个被很多人忽视的问题。

首先,2006 年 SUN 公司将 Java 开源,也就有了 OpenJDK。2009 年 Oracle 收购了 Sun 公司,于是自己在 OpenJDK 的基础上搞了一个 Oracle JDK。Oracle JDK 是不开源的,并且刚开始的几个版本(Java8 ~ Java11)还会相比于 OpenJDK 添加一些特有的功能和工具。

其次,对于 Java 7 而言,OpenJDK 和 Oracle JDK 是十分接近的。 Oracle JDK 是基于 OpenJDK 7 构建的,只添加了一些小功能,由 Oracle 工程师参与维护。

最后,简单总结一下 Oracle JDK 和 OpenJDK 的区别:

  • 是否开源:OpenJDK 是一个参考模型并且是完全开源的,而 Oracle JDK 是基于 OpenJDK 实现的,并不是完全开源的(个人观点:众所周知,JDK 原来是 SUN 公司开发的,后来 SUN 公司又卖给了 Oracle 公司,Oracle 公司以 Oracle 数据库而著名,而 Oracle 数据库又是闭源的,这个时候 Oracle 公司就不想完全开源了,但是原来的 SUN 公司又把 JDK 给开源了,如果这个时候 Oracle 收购回来之后就把他给闭源,必然会引起很多 Java 开发者的不满,导致大家对 Java 失去信心,那 Oracle 公司收购回来不就把 Java 烂在手里了吗!然后,Oracle 公司就想了个骚操作,这样吧,我把一部分核心代码开源出来给你们玩,并且我要和你们自己搞的 JDK 区分下,你们叫 OpenJDK,我叫 Oracle JDK,我发布我的,你们继续玩你们的,要是你们搞出来什么好玩的东西,我后续发布 Oracle JDK 也会拿来用一下,一举两得!)OpenJDK 开源项目:https://github.com/openjdk/jdk
  • 是否免费:Oracle JDK 会提供免费版本,但一般有时间限制。JDK17 之后的版本可以免费分发和商用,但是仅有 3 年时间,3 年后无法免费商用。不过,JDK8u221 之前只要不升级可以无限期免费。OpenJDK 是完全免费的。

标签:Java,JDK,OpenJDK,应用程序,开源,Oracle,JAVASE
From: https://blog.csdn.net/2301_78714573/article/details/142770575

相关文章

  • Java开发之JDK下载
    JDK是什么?JDK(JavaDevelopmentKit)是Java开发工具包,包含了编译、运行Java程序所需的工具和环境。如何下载JDK?访问Oracle官网:打开Oracle的Java官网:JavaDownloads|Oracle选择适合的版本:根据你的操作系统(Windows、macOS、Linux)和项目需求选择合适的JDK版本。一般来说,选......
  • JDK特性
    目录说出5个JDK1.8引入的新特性?什么是Lambda表达式?它在Java中如何使用?什么是Lambda表达式?Lambda表达式的语法:Lambda表达式在Java中的使用:函数式接口:说出5个JDK1.8引入的新特性?Lambda表达式:JDK1.8引入了Lambda表达式,使得开发者能够以更简洁的方式编写匿名函数或......
  • 深入了解Oracle OCP认证,开启数据库专业之旅
    使用Oracle数据库的公司内部,经常有员工们在讨论OCP认证(OracleCertifiedProfessional,Oracle认证专家),这是甲骨文Oracle公司提供的一种专业认证,认证用于使用者在Oracle技术领域的专业知识和技能。在这里,有一点需要大家知道,虽然OCP认证一般指的是Oracle数据库管理员中级认证,但实......
  • Hive3.1.3 环境搭建之初始化数据到Oracle
    1、新建配置文件hive-site.xml<?xmlversion="1.0"encoding="UTF-8"standalone="no"?><?xml-stylesheettype="text/xsl"href="configuration.xsl"?><configuration><property> <name>jav......
  • zulu JDK 有带 jvisualMachine 吗
    ZuluJDK(AzulZuluOpenJDK发行版)自带了一系列工具来管理和监控Java应用程序,但ZuluJDK不包含OracleJDK中的图形化监控工具JavaVisualVM(即jvisualvm)或JConsole。这些工具主要是OracleJDK特有的,通常不包含在OpenJDK发行版中。不过,你有以下几种选择来使用VisualV......
  • MemoryAnalyzer指定JDK版本
    小手追梦于2021-06-2809:56:24发布阅读量2w收藏20点赞数21分类专栏:java版权java专栏收录该内容171篇文章4订阅订阅专栏问题描述MemoryAnalyzer启动时报错看了日志,提示需要jdk11才可以运行,但是我的环境变量配置的是jdk8,这咋整?不想更改环境变量中的jdk配置信息,因为......
  • Centos7.9环境下安装Oracle12c 12.1.0【超级详细】
    目录1、软件包下载2、关闭防火墙3、安装依赖包4、创建用户和组 5、修改内核限制参数 6、手动配置内核参数7、修改login配置文件8、修改profile文件9、配置环境变量10、设置DISPLAY变量11、将系统换成英文 12、解压、授权13、安装数据库13.1、安装软件13.2、......
  • Jdk动态代理源码
    Proxy代码:java.lang.reflect.ProxyProxy提供了创建动态代理类和实例的静态方法,它也是由这些方法创建的所有动态代理类的超类。构造一个新的Proxy实例,并指定调用处理器InvocationHandler。protectedProxy(InvocationHandlerh){Objects.requireNonNull(h);......
  • Oracle获取所有表名信息和获取指定表名字段信息
      获取所有表名信息selectt.ownertable_dbname,t.table_name,t.num_rowstable_rows,s.bytestable_sizefromall_tablestleftjoindba_segmentssons.segment_name=t.table_nameands.owner=t.ownerands.segment_type='TABLE'where1=1ANDt.own......
  • windows10如何安装jdk8,并且配置java home环境?超详细!
    前言大家好,我是小徐啊。记得我刚学习Java的时候,我的老师第一步就是教我们如何安装jdk并且配置java环境。这应该算是学习Java的第一步吧。虽然这个安装过程对我来说已经不是非常难了,但是我知道,对于一些刚入门的小伙伴还是经常容易搞错的,所以,今天小徐就写一篇详细的教程,来帮助大家......