1 JVM JDK JRE之间的区别以及使用字节码的好处

打印 上一主题 下一主题

主题 820|帖子 820|积分 2460

JDK

jdk是编译java源文件成class文件的,我们使用javac下令把java源文件编译成class文件。
我们在java安装的目录下找到bin文件夹,如下图所示:

遵照着编译原理,把java源文件编译成JVM可识别的机器码。
此中还包括jar打包工具等。主要是针对开发人员使用。
JRE

JRE包罗java虚拟机和java所必要的核心类库。核心类库主要是java.lang包和java程序实行所必要体系类,如根本数据范例、根本数学函数、字符串的处理惩罚、线程、非常类。jdk1.8和之前的安装中会把jre安装好。在之后的版本中(oracle)后必要编译jre文件
JVM

Java Virtual Machine是java虚拟机,虚拟机可识别class文件,差别的平台有对应的JVM,jvm对class文件的识别也是划一的。以是java语言可以或许跨平台。
什么是字节码

java源代码编译成的class文件,正常的处理惩罚器识别不了class文件,只有JVM可识别class文件。class文件就是字节码文件
接纳字节码的好处

Java语言通过字节码的方式,在一定程度上办理了传统解释型语言实行服从低的问题,同时又保存相识释型语言可移植的特点。以是Java程序运行时比较高效,而且,由于字节码并不专对一种特定的机器,因此,Java程序无须重新编译便可在多种差别的计算机上运行
java的编译器和解释器

Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只必要面向虚拟机,生成虚拟机可以或许理解的代码,然后由解释器来将虚拟机代码转换为特定体系的机器码实行。在Java中,这种供虚拟机理解的代码叫做字节码(即扩展为.class的文件),它不面向任何特定的处理惩罚器,只面向虚拟机。每一种平台的解释器是差别的,但是实现的虚拟机是相同的。Java源程序颠末编译器编译后变成字节码,字节码由虚拟机解释实行,虚拟机将每一条要实行的字节码送给解释器,解释器将其翻译成特定机器上的机器码,然后在特定的机器上运行,这就是上面提到的Java的特点的编译与解释并存的解释
Java源代码–>编译器–>jvm可实行的Java字节码(即虚拟指令)–>jvm–>jvm中解释器—>机器可实行的二进制机器码–>程序运行
Oracle JDK 和 OpenJDK 的对比


  • Oracle JDK版本将每三年发布一次,而OpenJDK版本每三个月发布一次;
  • OpenJDK 是一个参考模型而且是完全开源的,而Oracle JDK是OpenJDK的一个实现,并不是完全开源的;
  • Oracle JDK 比 OpenJDK 更稳定。OpenJDK和Oracle JDK的代码险些相同,但Oracle JDK有更多的类和一些错误修复。因此,假如您想开发企业/商业软件,我发起您选择Oracle JDK,因为它颠末了彻底的测试和稳定。某些情况下,有些人提到在使用OpenJDK 大概会遇到了许多应用程序崩溃的问题,但是,只需切换到Oracle JDK就可以办理问题;
  • 在响应性和JVM性能方面,Oracle JDK与OpenJDK相比提供了更好的性能;
  • Oracle JDK不会为即将发布的版本提供长期支持,用户每次都必须通过更新到最新版本获得支持来获取最新版本;
  • Oracle JDK根据二进制代码许可协议获得许可,而OpenJDK根据GPL v2许可获得许可

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

伤心客

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表