Java JDK新特性探究-精简的JRE
java8有个很好的特性,即JEP161(http://openjdk.java.net/jeps/161 ),该特性定义了Java SE平台规范的一些子集,使java应用程序不需要整个JRE平台即可部署和运行在小型设备上。开发人员可以基于目标硬件的可用资源选择一个合适的JRE运行环境。
好处
1.更小的Java环境需要更少的计算资源。
2.一个较小的运行时环境可以更好的优化性能和启动时间。
3.消除未使用的代码从安全的角度总是好的。
4.这些打包的应用程序可以下载速度更快。
概念
紧凑的JRE分3种,分别是compact1、compact2、compact3,他们的关系是compact1<compact2<compact3,他们包含的API如下图所示
使用javac根据profile编译应用程序
javac –bootclasspath, or javac –profile <profile>
如果不符合compact的api,则报错。
$ javac -profile compact2 Test.java
Test.java:7: error: ThreadMXBean is not available in profile 'compact2'ThreadMXBean bean = ManagementFactory.getThreadMXBean();^
Test.java:7: error: ManagementFactory is not available in profile 'compact2'ThreadMXBean bean = ManagementFactory.getThreadMXBean();^
2 errors
使用工具开发的效果
JPEDS工具使用
java8新增一个工具,用来分析应用程序所依赖的profile,有三个参数比较常用 -p,-v,-r
import java.util.Set;
import java.util.HashSet;public class Deps {public static void main(String[] args) {System.out.println(Math.random());Set<String> set = new HashSet<>();}
}
************** PROFILE ********************
jdeps -P Deps.class
Deps.class -> /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/rt.jar<unnamed> (Deps.class)-> java.io compact1-> java.lang compact1-> java.util compact1************** VERBOSE ********************
jdeps -v Deps.class
Deps.class -> /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/rt.jarDeps (Deps.class)-> java.io.PrintStream -> java.lang.Math -> java.lang.Object -> java.lang.String -> java.lang.System -> java.util.HashSet ************** RECURSIVE ********************
jdeps -R Deps.class
Deps.class -> /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/rt.jar<unnamed> (Deps.class)-> java.io -> java.lang -> java.util
/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/jce.jar -> /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/rt.jarjavax.crypto (jce.jar)-> java.io -> java.lang -> java.lang.reflect -> java.net -> java.nio -> java.security -> java.security.cert -> java.security.spec -> java.util -> java.util.concurrent -> java.util.jar -> java.util.regex -> java.util.zip -> javax.security.auth -> sun.security.jca JDK internal API (rt.jar)-> sun.security.util JDK internal API (rt.jar)-> sun.security.validator JDK internal API (rt.jar)javax.crypto.interfaces (jce.jar)-> java.lang -> java.math -> java.security javax.crypto.spec (jce.jar)-> java.lang -> java.math -> java.security.spec -> java.util
/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/rt.jar -> /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/jce.jarjava.security (rt.jar)-> javax.crypto JDK internal API (jce.jar)sun.security.util (rt.jar)-> javax.crypto JDK internal API (jce.jar)-> javax.crypto.interfaces JDK internal API (jce.jar)-> javax.crypto.spec JDK internal API (jce.jar)
在linux上构建profile
$ hg clone http://hg.openjdk.java.net/jdk8/jdk8/
$ cd jdk8
$ make images profiles :
## Finished profiles (build time 00:00:27)
----- Build times -------
Start 2013-03-17 14:47:35
End 2013-03-17 14:58:26
00:00:25 corba
00:00:15 demos
00:01:50 hotspot
00:00:24 images
00:00:21 jaxp
00:00:31 jaxws
00:05:37 jdk
00:00:43 langtools
00:00:18 nashorn
00:00:27 profiles
00:10:51 TOTAL
-------------------------
Finished building Java(TM) for target 'images profiles'
$ cd images
$ ls -d *image
j2re-compact1-image j2re-compact2-image j2re-compact3-image j2re-image j2sdk-image
编译后compact大致的占用空间
Java JDK新特性探究-精简的JRE相关推荐
- Java 8新特性探究(二)深入解析默认方法
转载自 Java 8新特性探究(二)深入解析默认方法 什么是默认方法,为什么要有默认方法 简单说,就是接口可以有实现方法,而且不需要实现类去实现其方法.只需在方法名前面加个default关键字即可. ...
- Java 8新特性探究(五)重复注解(repeating annotations)
2019独角兽企业重金招聘Python工程师标准>>> 知识回顾 前面介绍了: lambda表达式和默认方法 (JEP 126) 批量数据操作(JEP 107) 类型注解(JEP 1 ...
- Java 8新特性探究(6):泛型的目标类型推断
简单理解泛型 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.通俗点将就是"类型的变量".这种类型变量可以用在类.接口和方法 ...
- Java 8新特性探究(四)深入解析日期和时间-JSR310
众所周知,日期是商业逻辑计算一个关键的部分,任何企业应用程序都需要处理时间问题.应用程序需要知道当前的时间点和下一个时间点,有时它们还必须计算这两个时间点之间的路径.但java之前的日期做法太令人恶心 ...
- Java笔记整理五(Iterator接口,泛型,常见数据结构(栈,队列,数组,链表,红黑树,集合),jdk新特性,异常,多线程,Lambda表达式)
Java笔记整理五 1.1Iterator接口 Collection接口与Map接口主要用于存储元素,而Iterator主要用于迭代访问(即遍历)Collection中的元素,因此Iterator对象 ...
- IntelliJ IDEA 使用 Java 11新特性以及Java 8 以来的Java 11新特性介绍
文章目录 Java 11 安装 IDEA 设置 特性1:lambda表达式中允许使用var 特性2: String新增REPEAT 方法,方便拷贝字符串 特性3: 文件读写更方便:readString ...
- info java module_JAVA新特性视频教学:第三天_21_认识module-info.java文件.mp4
本套Java 8和9 JDK新特性学习课程目录如下: 第一天Java视频课程学习内容:01_课程介绍 02_Java版本特性更新历史 03_面向对象的Runnable接口写法 04_编程思想转换 05 ...
- 跟我学 Java 8 新特性之 Stream 流(六)收集
转载自 跟我学 Java 8 新特性之 Stream 流(六)收集 我们前面的五篇文章基本都是在说将一个集合转成一个流,然后对流进行操作,其实这种操作是最多的,但有时候我们也是需要从流中收集起一些 ...
- 跟我学 Java 8 新特性之 Stream 流(二)关键知识点
转载自 跟我学 Java 8 新特性之 Stream 流(二)关键知识点 我们的第一篇文章,主要是通过一个Demo,让大家体验了一下使用流API的那种酣畅淋漓的感觉.如果你没有实践,我还是再次呼吁 ...
最新文章
- 一文概述2017年深度学习NLP重大进展与趋势
- 电路过孔温度没有我们想象的那么高
- (iOS-框架封装)iOS设计模式——MVC模式
- scala 主构造函数_Scala-构造函数
- python 约束与异常处理
- 中兴上网卡 linux,电信3G无线上网卡中兴AC2726在Ubuntu 10.10安装使用成功
- 梦如果实现以后。。。。。。
- Web API-基本认知
- python抓取图片数字_Python OCR提取普通数字图形验证中的数字
- 预训练模型MT-BERT的探索和应用
- 1.thrift概述
- 你们要的炒股软件来啦,同花顺等 6 款工具类软件上架优麒麟软件商店
- Xshell连接路由器或交换机Console口
- 【EasyExcel导入、导出(百万数据量测试)粘贴即用】
- ubuntn下串口工具minicom ,kermit的使用
- 如何把数据导入数据库
- 绩效考核成绩管理平台
- python代码混淆工具,Python版代码混淆工具
- 我被炒了! 一位36岁程序员的的焦虑与困惑...
- 8051f CH375 优盘---ch375.c
热门文章
- Linux驱动总结3- unlocked_ioctl和堵塞(waitqueue)读写函数的实现 【转】
- 全程2分钟!教你如何免费下载Windows 10
- Q95:纹理映射(Texture Mapping)(3)——Triangle Meshes
- java listt add_Java8 使用流抽取ListT集合中T的某个属性操作
- python3怎么使用qstring_PyQt的QString和python的string的区别
- freebsd 安装mysql_Freebsd中mysql安装及使用笔记
- mysql 分表后如何扩展_MySQL横向扩展-分库分表解决方案总结
- java 获取键盘点击_Java中获取键盘输入值的三种方法介绍
- 鳗鱼刺多怎么处理图像_图像二值化处理
- 服务器本地打开asp文件路径,服务器本地打开asp文件