java9新特性-21-java的动态编译器
1. 官方Feature
243: Java-Level JVM Compiler Interface
295: Ahead-of-Time Compilation
2. 产生背景
Oracle 一直在努力提高 Java 启动和运行时性能,希望其能够在更广泛的场景达到或接近本地语言的性能。但是,直到今天,谈到 Java,很多 C/C++ 开发者还是会不屑地评价为启动慢,吃内存。
简单说,这主要是因为 Java 编译产生的类文件是 Java 虚拟机可以理解的二进制代码,而不是真正的可执行的本地代码,需要 Java 虚拟机进行解释和编译,这带来了额外的开销。
3.使用说明
JIT(Just-in-time)编译器可以在运行时将热点编译成本地代码,速度很快。但是 Java 项目现在变得很大很复杂,因此 JIT 编译器需要花费较长时间才能热身完,而且有些 Java 方法还没法编译,性能方面也会下降。AoT 编译就是为了解决这些问题而生的。
在 JDK 9 中,AOT(JEP 295: Ahead-of-Time Compilation)作为实验特性被引入进来,开发者可以利用新的 jaotc 工具将重点代码转换成类似类库一样的文件。虽然仍处于试验阶段,但这个功能使得 Java 应用在被虚拟机启动之前能够先将 Java 类编译为原生代码。此功能旨在改进小型和大型应用程序的启动时间,同时对峰值性能的影响很小。
但是 Java 技术供应商 Excelsior 的营销总监 Dmitry Leskov 担心AoT 编译技术不够成熟,希望 Oracle 能够等到 Java10 时有个更稳定版本才发布。
另外 JVMCI (JEP 243: Java-Level JVM Compiler Interface)等特性,对于整个编程语言的发展,可能都具有非常重要的意义,虽然未必引起了广泛关注。目前 Graal Core API 已经被集成进入 Java 9,虽然还只是初始一小步,但是完全用 Java 语言来实现的可靠的、高性能的动态编译器,似乎不再是遥不可及,这是 Java 虚拟机开发工程师的福音。
与此同时,随着 Truffle 框架和 Substrate VM 的发展,已经让个别信心满满的工程师高呼“One VM to Rule Them All!”, 也许就在不远的将来 Ploygot 以一种另类的方式成为现实。
作者:尚硅谷面试官宋红康
链接:https://www.jianshu.com/p/415ebd959872
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
java9新特性-21-java的动态编译器的更多相关文章
- 【Java基础】Java9 新特性
		Java9 新特性 模块化系统 Java 和相关生态在不断丰富的同时也越来越暴露出一些问题: Java 运行环境的膨胀和臃肿.每次 JVM 启动的时候,至少会 30-60MB 的内存加载,主要原因是 ... 
- java9新特性-1-概述
		经过4次跳票,历经曲折的java 9 终于终于在2017年9月21日发布. 2.哪些人适合看这套视频? 已经熟悉或熟练运用java 8 及 之前 java 版本的开发人员.科研人员.学生及 ... 
- 传统JIT和java9新特性AOT理解
		java慢的原因 1. 除了少量基本类型用栈存储外,所有对象都使用堆存储.堆的性能低于栈. 2. 很多强制类型转换(cast)或加查,耗用内存大.java运行时对类型检测,如果类型不正确会抛出Cl ... 
- Java9 新特性
		Java9中的9个新特性 1. Java 平台级模块系统 2. Linking 3. JShell: 交互式 Java REPL 4. 改进的 Javadoc 5. 集合工厂方法 6. 改进的 Str ... 
- Java9 新特性 详解
		作者:木九天 < Java9 新特性 详解 > Java9 新特性 详解 摘要: 1.目录结构 2.repl工具 jShell命令 3.模块化 4.多版本兼容jar包 5.接口方 ... 
- 点击--》java9 新特性 详解
		引言: 点击-->java9 新特性 详解 点击-->java8 新特性 详解 正题: 1.局部变量var 将前端思想var关键字引入java后段,自动检测所属于类型,一种情况除外,不能为 ... 
- Java 新特性(7) - Java EE 7 新特性
		http://www.ibm.com/developerworks/cn/java/j-lo-javaee7/ 新特性主要集中在: 1. 提高开发人员的生产力 2. 加强对 HTML5 动态可伸缩应用 ... 
- Java 新特性(5) - Java EE 5 新特性
		Java EE 5 由 Java Community Process 通过 Java Specification Request 244 发布,这个 “总纲” JSR 指出了详细描述 Java EE ... 
- Java9新特性之——JShell
		java9已经在北京时间9月22日正式发布,开发者可以在oracle jdk官网上下载到最新的jdk9.jdk9和jdk8中的新特性不同:jdk8中的stream和lambda表达式能够让开发者非常快 ... 
随机推荐
- 史上最全: svn与git的对照(二):svn与git的相关概念
			如图1是svnserver端数据的文件夹结构 以下是gitserver端的文件夹结构 纵观svn和git服务端的文件夹结构我们非常easy发现 1.有些目录还是蛮像的.甚至是一样的比方说svn中的co ... 
- LeetCode211:Add and Search Word - Data structure design
			Design a data structure that supports the following two operations: void addWord(word) bool search(w ... 
- Scrapy研究探索(六)——自己主动爬取网页之II(CrawlSpider)
			原创,转载注明:http://blog.csdn.net/u012150179/article/details/34913315 一.目的. 在教程(二)(http://blog.csdn.net/u ... 
- sc.textFile("file:///home/spark/data.txt") Input path does not exist解决方法——submit 加参数  --master local 即可解决
			use this val data = sc.textFile("/home/spark/data.txt") this should work and set master as ... 
- zzulioj--1712--神秘的数列(水题)
			1712: 神密的数列 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 122 Solved: 92 SubmitStatusWeb Board De ... 
- div在父集高度未知的情况下垂直居中的方法
			父集高度未知,子集高度已知: 可以使用弹性盒来解决: justify-content属性定义了项目在主轴上的对齐方式. align-items属性定义项目在交叉轴上如何对齐. 
- Linux就该这么学 20181002(第二章基础命令)
			参考链接https://www.linuxprobe.com/ 忘记密码操作 启动页面 默认按e 在linux16行后空格 rd.break ctrl + x mount -o remount,rw ... 
- sicily 1002 Anti-prime Sequences
			debug了好久..各种犯错..按照某个学长的思路,终于AC了.. #include <iostream> #include <cstring> using namespace ... 
- html5+css3+javascript 自定义提示窗口
			效果图: 源码: 1.demo.jsp <%@ page contentType="text/html;charset=UTF-8" language="java& ... 
- EL与JSTL学习(二)——JSTL技术
			1.JSTL概述 JSTL(JSP Standard Tag Library),JSP标准标签库,可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能. jstl出现的目的同el一样也是要代替jsp ... 
