学习java前我们先了解下这几个词的区别,HotSpot、JDK、JRE、OpenJDK、Oracle JDK

一、HotSpot

运营是运行字节码的虚拟机平台。HotSpot是JVM(Java Virtual Machine),是一个运行Java字节码的虚拟机,具有语言无关性和平台无关性。平台无关性:我们java编写的程序可以运行在window、mac、Linux上就是HotSpot的平台无关性。 语言无关性:比如Java、kotlin、Scala、Clojure、Groovy、Jython、JRuby、Ceylon、Eta、Haxe、net等语言可以运行JVM上。 目前JVM的平台无关性让java长期成为编程语言的TOP1,后续语言无关性是否也能让java更上一层楼也说不准。

1、HotSpot包括

Java ClassLoader、Java字节码解释器、Client和Server模式的虚拟机针对不同用途做优化、垃圾回收器、一组运行时库。为什么叫HotSpot?因为这款虚拟机当时就是为了性能而打造,会分析程序执行的热点(hotspots),将这些热点即时编译以优化性能,固取名HotSpot。

2、HotSpot现状

 实现语言:C++

代码规模:2007年Sun估算了下HotSpot大约有250,000行代码。

 许可证:2006年11月13日,HotSpot JVM和JDK开始使用GPLV2许可证,随后加入到了Java 7中。

二、JDK

JDK是开发工具集合。JDK(Java Development Kit),Java开发工具集,是Java SE、Java EE、Java ME的一种实现(为毛Java要搞这么多平台),以二进制应用形式发布,包含一个JVM和「其他开发Java应用程序所需的东西」,jdb包含组件如下。

appletviewer – this tool can be used to run and debug Java applets without a web browser apt – the annotation-processing tool[4]extcheck – a utility that detects JAR file conflictsidlj – the IDL-to-Java compiler. This utility generates Java bindings from a given Java IDL file.jabswitch – the Java Access Bridge. Exposes assistive technologies on Microsoft Windows systems.java – the loader for Java applications. This tool is an interpreter and can interpret the class files generated by the javac compiler. Now a single launcher is used for both development and deployment. The old deployment launcher, jre, no longer comes with Sun JDK, and instead it has been replaced by this new java loader.javac – the Java compiler, which converts source code into Java bytecodejavadoc – the documentation generator, which automatically generates documentation from source code commentsjar – the archiver, which packages related class libraries into a single JAR file. This tool also helps manage JAR files.javafxpackager – tool to package and sign JavaFX applicationsjarsigner – the jar signing and verification tooljavah – the C header and stub generator, used to write native methodsjavap – the class file disassemblerjavaws – the Java Web Start launcher for JNLP applicationsJConsole – Java Monitoring and Management Consolejdb – the debuggerjhat – Java Heap Analysis Tool (experimental)jinfo – This utility gets configuration information from a running Java process or crash dump. (experimental)jmap Oracle jmap - Memory Map– This utility outputs the memory map for Java and can print shared object memory maps or heap memory details of a given process or core dump. (experimental)jmc – Java Mission Controljps – Java Virtual Machine Process Status Tool lists the instrumented HotSpot Java Virtual Machines (JVMs) on the target system. (experimental)jrunscript – Java command-line script shell.jstack – utility that prints Java stack traces of Java threads (experimental)jstat – Java Virtual Machine statistics monitoring tool (experimental)jstatd – jstat daemon (experimental)keytool – tool for manipulating the keystorepack200 – JAR compression toolpolicytool – the policy creation and management tool, which can determine policy for a Java runtime, specifying which permissions are available for code from various sources.VisualVM – visual tool integrating several command-line JDK tools and lightweight[clarification needed] performance and memory profiling capabilitieswsimport – generates portable JAX-WS artifacts for invoking a web service.xjc – Part of the Java API for XML Binding (JAXB) API. It accepts an XML schema and generates Java classes.

为什么Java搞这么多平台呢?估计是不同场景下的开发所需的API大不相同,全整合到一起又嫌大,所以分不同场景搞了多个平台吧。

三、OpenJDK

开源版本JDK。 Open Java Development Kit是Java SE的开源免费实现。Sun公司在JavaOne 2006会议上宣布将开源Java,随后在2006年11月13日Sun以GPL许可发布了HotSpot以及编译器,并承诺JDK剩余的部分将会在2007年5月以GPL发布,"除开一些Sun无权以GPL许可发布源码的组件之外"。2007年5月8日,Sun以GPL许可发布了Java类库的源码,除开一些第三方授权给Sun的受限的部分,如Java图形用户接口等。Sun决定接下来要替换掉这些受到专利保护的部分,从而使Java类库完全免费。2007年5月,OpenJDK类库有4%的部分有专利保护。2008年5月发布的OpenJDK 6,只剩下不到1%的部分(SNMP的实现,非Java规范的部分)。到2009年4月OpenJDK 7发布时,所有专利保护部分终于全部去除。

四、OracleJDK

商业版本JDK。Oracle JDK采用了商业实现,而OpenJDK使用的是开源的FreeType。当然,“相同”是建立在两者共有的组件基础上的,Oracle JDK中还会存在一些Open JDK没有的、商用闭源的功能,例如从JRockit移植改造而来的Java Flight Recorder。预计以后JRockit的MissionControl移植到HotSpot之后,也会以Oracle JDK专有、闭源的形式提供。Oracle的项目发布经理Joe Darcy在OSCON 2011上对两者关系的介绍也证实了OpenJDK 7和Oracle JDK 7在程序上是非常接近的,两者共用了大量相同的代码(如下图,注意图中提示了两者共同代码的占比要远高于图形上看到的比例),所以我们编译的OpenJDK,基本上可以认为性能、功能和执行逻辑上都和官方的Oracle JDK是一致的。OpenJDK是OracleJDK的子集合,他们授权的方式不同。

五、JRE

Java运行时环境,顾名思义就是指运行java程序所需要的环境,那么运行Java程序的最小集合就是JRE了,显然包含一个JVM,再加上一些Java类库就可以了,其他东西都不需要。在这个基础上再加上一些编译调试工具啥的(比如javac, jstack工具)就是上面说的JDK了。所以如果你只是要运行Java程序,有JRE就可以了,但如果要开发Java程序,就得有JDK。

1、HotSpot And OpenJDK And OracleJDK And JER区别相关推荐

  1. 配置环境变量OpenJDK和OracleJDK区别

    如何配置环境变量 1.配置jdk的基础目录: JAVA_HOME: D:\JDK\jdk1.8.0_161 配置jdkd的可执行文件路径 Path: D:\JDK\jdk1.8.0_161\bin 或 ...

  2. OpenJDK和Java API区别_Linux下的JDK和OpenJDK有什么具体的区别

    大多数Linux发行版本里,内置或者通过软件源安装JDK的话,都是安装的openjdk. openjdk是jdk的开放原始码版本,以GPL协议的形式放出. openjdk只包含最精简的JDK 在安装o ...

  3. JVM Hotspot 虚拟机与 DalvikART 虚拟机堆栈的区别

    文章目录 Hotspot 虚拟机与 Dalvik 虚拟机的区别 Android 内存管理模型 JVM 与 Dalvik 虚拟机在栈的区别 AOT(Ahead Of Time)预先编译机制 JVM 与 ...

  4. JVM类加载过程,JDK和JER区别

    java类被加载过程 类装载器把一个类装入Java虚拟机中,要经过三个步骤来完成: ①加载(以二进制形式来生成java.lang.Class对象) ②链接(又分为验证.准备和解析) 校验:检查导入类或 ...

  5. HotSpot虚拟机的介绍

    HotSpot虚拟机由Longview Technologies小公司设计,1997年,由Sun公司收购:2009年Sun被Oracle收购. jdk1.3时HotSpot VM成为了默认的java虚 ...

  6. Oracle与OpenJDK之间的区别

    简介 在本文中,我们将探讨Oracle Java Development Kit和OpenJDK之间的差异并进行比较. Oracle JDK Oracle JDK由Oracle公司开发,该公司是Sun ...

  7. HotSpot C2编译器

     可以先看看前同事Vladimir Ivanov讲解JIT编译器: JIT-compiler in JVM seen by a Java developer, Vladimir Ivanov, J ...

  8. 微服务中使用 OpenJ9 JVM 内存占用降60%(相对HotSpot)

    欢迎访问陈同学博客原文 随着微服务的普及,许多企业踏上微服务之旅. 微服务化后,应用数量可能高一个数量级.一般企业,以前三五个应用能支撑业务,微服务化之后应用数量可能多达几十个.每个微服务往往独立部署 ...

  9. linux安装java_linux中替换系统自带的OpenJDK

    OpenJDK和SUN JDK的区别: 授权协议的不同:OpenJDK采用GPL V2协议放出,而SUN JDK则采用JRL放出.两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在 ...

最新文章

  1. 牛客网(剑指offer) 第九题 变态跳台阶
  2. Asp.Net Core 中IdentityServer4 授权中心之自定义授权模式
  3. P5369-[PKUSC2018]最大前缀和【状压dp】
  4. extJs相关名字解释
  5. 信息学奥赛C++语言:数字三角形2
  6. linux grep命令例子,详解linux grep命令
  7. 萌新的Python练习菜鸟100例(十八)求s=a+aa+aaa+aaaa+aa...a的值
  8. Git撤销修改、回退版本相关命令
  9. 全志v3s学习笔记(6)——Bsp内核编译与烧录
  10. absolute 宽度自适应
  11. python 省略号 三个点...的含义
  12. 关于netty的IllegalReferenceCountException refCnt: 0, decrement: 1
  13. 第5-2课:图的拓扑排序
  14. Word中的公式编辑器插入自动编号公式时,隐藏必要的分章节字符串的办法
  15. 物联网中常提到的M2M究竟是什么?
  16. SpringBoot用MultipartFile.transferTo传递相对路径的问题
  17. PowerBI-时间智能函数-DATEADD
  18. 英汉小词典 java_英汉小词典 java随机存取文件流应用 version1.0
  19. android 不卡 华为,荣耀Magic是什么系统 华为荣耀Magic手机是不是也不卡?
  20. 063 邪恶八进制域名收集

热门文章

  1. jsp中定义日期格式
  2. 京东2015校园招聘笔试编程题
  3. Blender新手入门练习 宝剑
  4. 解决tar (child): gzip: Cannot exec: Too many levels of symbolic links
  5. 华为云高校开发者青年班第七期——DevCloud的托马斯商城部署——知识点总结
  6. [Python公开课]零基础玩转Python基础篇----第四节:Python的字符串
  7. python格式化字符_Python格式化字符串
  8. 吉大C语言程序设计作业,吉大19年9月《C语言程序设计》作业考核试题答案
  9. Irvue for Mac(壁纸软件)
  10. php中trim 的作用,PHP trim()函数的作用和使用方法