1、JAVA虚拟机

1. 走进java

   Java不仅仅是一门编程语言,它还是一个由一系列计算机软件和规范组成的技术体系,这个技术体系提供了完整的用于软件开发和跨平台部署的支持环境,并广泛应用于嵌入式系统、移动终端、企 业服务器、大型机等多种场合。
   Java能获得如此广泛的认可,除了它拥有一门结构严谨、面向对象的编程语言之外,还有许多不 可忽视的优点:
  • 它摆脱了硬件平台的束缚,实现了“一次编写,到处运行”的理想;
  • 它提供了一种相对 安全的内存管理和访问机制,避免了绝大部分内存泄漏和指针越界问题;
  • 它实现了热点代码检测和运 行时编译及优化,这使得Java应用能随着运行时间的增长而获得更高的性能;
  • 它有一套完善的应用程 序接口,还有无数来自商业机构和开源社区的第三方类库来帮助用户实现各种各样的功能

Java技术体系、发展史

JAVA组成部分

  • JDK:Java程序设计语言、Java虚拟机、Java类库这三部分统称为JDK(Java Development Kit),JDK是用于支持Java程序开发的最小环境。
  • JRE:Java类库API中的Java SE API子集和Java虚拟机
    JAVA的体系结构
    ** JDK按照业务分为以下4个部分**
  • Java Card:支持Java小程序(Applets)运行在小内存设备(如智能卡)上的平台;
  • Java ME(Micro Edition)支持Java程序运行在移动终端(手机、PDA)上的平台;
  • Java SE(Standard Edition) 以前称为 J2SE,支持面向桌面级应用的Java平台,提供了完整的Java核心API,它允许开发和部署在桌面、服务器、嵌入式环境和实时环境中使用的 Java 应用程序。Java SE 包含了支持 Java Web 服务开发的类,并为 Java Platform,Enterprise Edition(Java EE)提供基础。
  • Java EE(Enterprise Edition)支持使用多层架构的企业应用(如ERP、MIS、CRM应用)的 Java平台,除了提供Java SE API外,JavaEE 号称有十三种核心技术。它们分别是:JDBC、JNDI、EJB、RMI、Servlet、JSP、XML、JMS、Java IDL、JTS、JTA、JavaMail和JAF。 这条产品线在JDK 6以前被称为J2EE,在JDK 10以后被Oracle放弃,捐献给Eclipse基金会管理,此后被 称为Jakarta EE。

java发展史

java发展史概括图

  • JDK 8的第一个正式版本2014年3月18日发布,JDK 8提供了那些曾在JDK 7中规划过,但最终未能在 JDK 7中完成的功能,主要包括:
    对Lambda表达式的支持,这让Java语言拥有了流畅的函数式表达能力;内置Nashorn JavaScript引擎的支持;新的时间、日期API。 ·JEP 122:彻底移除HotSpot的永久代。
    ……

  • JDK 9是2017年9月21日发布的,JDK 9总算带着 Jigsaw最终发布了(经历了6轮投票),还增强了若干工具(JS Shell、JLink、JHSDB等),整顿了 HotSpot各个模块各自为战的日志系统,支持HTTP 2客户单API等91个JEP
    同年Oracle因为版本太多的问题,结掉“每个JDK版本最少维护三年”的优良传统,从此以后,每六个JDK大版本中才会被划出一个长期 支持(Long Term Support,LTS)版,只有LTS版的JDK能够获得为期三年的支持和更新,普通版的 JDK就只有短短六个月的生命周期。JDK 8和JDK 11会是LTS版,再下一个就到2021年发布的JDK 17了

  • JDK 10如期发布,2018年3月20日,这版本的主要研发目标是内部重构。
    如统一源仓库、统一 垃圾收集器接口、统一即时编译器接口(JVMCI在JDK 9已经有了,这里是引入新的Graal即时编译 器)等,这些都将会是对未来Java发展大有裨益的改进,但对普通用户来说JDK 10的新特性就显得乏
    在此阶段,在2018年3月Oracle将Java EE‘扫地出门’,所有权赠予给Eclipse基金会,唯一的条件是不可以使用任何关于java的商标,所以取而代之的将是Jakarta EE。

  • JDK 11发布,2018年9月25日,这是一个LTS版本的JDK,包含17个JEP。 其中有ZGC这样的革命 性的垃圾收集器出现,也有把JDK 10中的类型推断加入Lambda语法这种可见的改进。
    Oracle宣布以后将会同时 发行两个JDK:一个是以GPLv2+CE协议下由Oracle发行的OpenJDK(本书后面章节称其为Oracle OpenJDK),另一个是在新的OTN协议下发行的传统的OracleJDK,这两个JDK共享绝大部分源码, 在功能上是几乎一样的,核心差异是前者可以免费在开发、测试或生产环境中使用,但是只有半 年时间的更新支持;后者个人依然可以免费使用,但若在生产环境中商用就必须付费,可以有三年时 间的更新支持。如果说由此能得出“Java要收费”的结论,那是纯属标题党,最多只能说Oracle在迫使商 业用户要么不断升级JDK的版本,要么就去购买商业支持。

  • JDK 12发布,2019年3月20日,只包含8个JEP,其中主要有Switch表达式、Java微测试套件 (JMH)等新功能,最引人注目的特性无疑是加入了由RedHat领导开发的Shen-andoah垃圾收集器。 Shenandoah作为首个由非Oracle开发的垃圾收集器,其目标又与Oracle在JDK 11中发布的ZGC几乎完全 一致,两者天生就存在竞争。Oracle马上用实际行动抵制了这个新收集器,在JDK 11发布时才说应尽 可能保证OracleJDK和OpenJDK的兼容一致,转眼就在OracleJDK 12里把Shenandoah的代码通过条件编 译强行剔除掉,使其成为历史上唯一进入了OpenJDK发布清单,但在OracleJDK中无法使用的功能。

JVM虚拟机

  • 虚拟机始祖:Sun Classic/Exact VM
  • 武林盟主:HotSpot VM
    其实HotSpot与Exact虚拟机基本上是同时期的独立产品,前者要早些。HotSpot是基于准确式内存管理的,HotSpot虚拟机的热点代码探测能力可以通过执行计数器找出最具有编译价值的代码,然后通知即时编译器以方法为单位进行编译。如果一个方法被频繁调 用,或方法中有效循环次数很多,将会分别触发标准即时编译和栈上替换编译(On-Stack Replacement,OSR)行为。
    通过编译器与解释器恰当地协同工作,可以在最优化的程序响应时间与 最佳执行性能中取得平衡,而且无须等待本地代码输出才能执行程序,即时编译的时间压力也相对减 小,这样有助于引入更复杂的代码优化技术,输出质量更高的本地代码。
    Oracle收购Sun以后,把原来BEA JRockit中的优秀特性融合到 HotSpot之中,JDK 8时期,里面的HotSpot就已是两者融合的结果,HotSpot在这个过程 里移除掉永久代,吸收了JRockit的Java Mission Control监控工具等功能。
  • 小家碧玉:Mobile/Embedded VM
  • 天下第二:BEA JRockit/IBM J9 VM
  • 软硬合璧:BEA Liquid VM/Azul VM
  • Apache Harmony/Google Android Dalvik VM
  • (没有成功,但并非失败)Microsoft JVM及其他
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值