Java 8新特性探究(八)精简的JRE详解
2014-03-25 18:30
393 查看
摘要详细解释compact
profile相关知识,字面上翻译是紧凑的配置文件,但我认为紧凑的JRE更容易理解,或者精简的JRE
目录[-]
好处
概念
使用javac根据profile编译应用程序
使用工具开发的效果
JPEDS工具使用
在linux上构建profile
编译后compact大致的占用空间
总结
Oracle公司如期发布了Java8正式版!没有让广大javaer失望。对于一个人来说,18岁是人生的转折点,从稚嫩走向成熟,法律意味着你是完全民事行为能力人,不再收益于未成年人保护法,到今年为止,java也走过了18年,java8是一个新的里程碑,带来了前所未有的诸多特性,lambda表达式,Stream
API,新的Datetimeapi,多核并发支持,重大安全问题改进等,相信java会越来越好,丰富的类库以及庞大的开源生态环境是其他语言所不具备的,说起丰富的类库,很多同学就吐槽了,java该减肥了,确实是该减肥,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–bootclasspath,orjavac–profile<profile>
如果不符合compact的api,则报错。
java8新增一个工具,用来分析应用程序所依赖的profile,有三个参数比较常用-p,-v,-r
如今,物联网正风行一时。我们看到大量不同的设备在市场上出现,每一种的更新速度都越来越快。java需要一个占用资源少的JRE运行环境,紧凑的JRE特性的出现,希望能带来以后的物联网的发展,甚至还是会有大量的java应用程序出现在物联网上面。目前oracle也发布了针对raspberrypi的JRE了。
另外该特性也是为java9的模块化项目做准备,模块化特性是javaer所期待的特性。他是解决业务系统复杂度的一个利器,当然OSGI也是相当的出色。但osgi对于新学者来说未免太复杂了。
profile相关知识,字面上翻译是紧凑的配置文件,但我认为紧凑的JRE更容易理解,或者精简的JRE
目录[-]
Oracle公司如期发布了Java8正式版!没有让广大javaer失望。对于一个人来说,18岁是人生的转折点,从稚嫩走向成熟,法律意味着你是完全民事行为能力人,不再收益于未成年人保护法,到今年为止,java也走过了18年,java8是一个新的里程碑,带来了前所未有的诸多特性,lambda表达式,Stream
API,新的Datetimeapi,多核并发支持,重大安全问题改进等,相信java会越来越好,丰富的类库以及庞大的开源生态环境是其他语言所不具备的,说起丰富的类库,很多同学就吐槽了,java该减肥了,确实是该减肥,java8有个很好的特性,即JEP161(
SE平台规范的一些子集,使java应用程序不需要整个JRE平台即可部署和运行在小型设备上。开发人员可以基于目标硬件的可用资源选择一个合适的JRE运行环境。
好处
1.更小的Java环境需要更少的计算资源。2.一个较小的运行时环境可以更好的优化性能和启动时间。
3.消除未使用的代码从安全的角度总是好的。
4.这些打包的应用程序可以下载速度更快。
概念
紧凑的JRE分3种,分别是compact1、compact2、compact3,他们的关系是compact1<compact2<compact3,他们包含的API如下图所示
使用javac根据profile编译应用程序
javac–bootclasspath,orjavac–profile<profile>如果不符合compact的api,则报错。
1 | $javac-profilecompact2Test.java |
2 | Test.java: 7 :error:ThreadMXBeanisnotavailableinprofile 'compact2' |
3 | ThreadMXBeanbean=ManagementFactory.getThreadMXBean(); |
4 | ^ |
5 | Test.java: 7 :error:ManagementFactoryisnotavailableinprofile 'compact2' |
6 | ThreadMXBeanbean=ManagementFactory.getThreadMXBean(); |
7 | ^ |
8 | 2 errors |
使用工具开发的效果
JPEDS工具使用
java8新增一个工具,用来分析应用程序所依赖的profile,有三个参数比较常用-p,-v,-r1 | import java.util.Set; |
2 | import java.util.HashSet; |
3 |
4 | public class Deps{ |
5 | public static void main(String[]args){ |
6 | System.out.println(Math.random()); |
7 | Set<String>set= new HashSet<>(); |
8 | } |
9 | } |
01 | **************PROFILE******************** |
02 | jdeps-PDeps. class |
03 | Deps. class ->/Library/Java/JavaVirtualMachines/jdk1. 8.0 .jdk/Contents/Home/jre/lib/rt.jar |
04 | <unnamed>(Deps. class ) |
05 | ->java.iocompact1 |
06 | ->java.langcompact1 |
07 | ->java.utilcompact1 |
08 |
09 | **************VERBOSE******************** |
10 | jdeps-vDeps. class |
11 | Deps. class ->/Library/Java/JavaVirtualMachines/jdk1. 8.0 .jdk/Contents/Home/jre/lib/rt.jar |
12 | Deps(Deps. class ) |
13 | ->java.io.PrintStream |
14 | ->java.lang.Math |
15 | ->java.lang.Object |
16 | ->java.lang.String |
17 | ->java.lang.System |
18 | ->java.util.HashSet |
19 |
20 | **************RECURSIVE******************** |
21 | jdeps-RDeps. class |
22 | Deps. class ->/Library/Java/JavaVirtualMachines/jdk1. 8.0 .jdk/Contents/Home/jre/lib/rt.jar |
23 | <unnamed>(Deps. class ) |
24 | ->java.io |
25 | ->java.lang |
26 | ->java.util |
27 | /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.jar |
28 | javax.crypto(jce.jar) |
29 | ->java.io |
30 | ->java.lang |
31 | ->java.lang.reflect |
32 | ->java.net |
33 | ->java.nio |
34 | ->java.security |
35 | ->java.security.cert |
36 | ->java.security.spec |
37 | ->java.util |
38 | ->java.util.concurrent |
39 | ->java.util.jar |
40 | ->java.util.regex |
41 | ->java.util.zip |
42 | ->javax.security.auth |
43 | ->sun.security.jcaJDKinternalAPI(rt.jar) |
44 | ->sun.security.utilJDKinternalAPI(rt.jar) |
45 | ->sun.security.validatorJDKinternalAPI(rt.jar) |
46 | javax.crypto.interfaces(jce.jar) |
47 | ->java.lang |
48 | ->java.math |
49 | ->java.security |
50 | javax.crypto.spec(jce.jar) |
51 | ->java.lang |
52 | ->java.math |
53 | ->java.security.spec |
54 | ->java.util |
55 | /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.jar |
56 | java.security(rt.jar) |
57 | ->javax.cryptoJDKinternalAPI(jce.jar) |
58 | sun.security.util(rt.jar) |
59 | ->javax.cryptoJDKinternalAPI(jce.jar) |
60 | ->javax.crypto.interfacesJDKinternalAPI(jce.jar) |
61 | ->javax.crypto.specJDKinternalAPI(jce.jar) |
在linux上构建profile
01 | $hgclonehttp: //hg.openjdk.java.net/jdk8/jdk8/ |
02 | $cdjdk8 |
03 | $makeimagesprofiles: |
04 | ##Finishedprofiles(buildtime 00 : 00 : 27 ) |
05 | -----Buildtimes------- |
06 | Start 2013 - 03 - 17 14 : 47 : 35 |
07 | End 2013 - 03 - 17 14 : 58 : 26 |
08 | 00 : 00 : 25 corba |
09 | 00 : 00 : 15 demos |
10 | 00 : 01 : 50 hotspot |
11 | 00 : 00 : 24 images |
12 | 00 : 00 : 21 jaxp |
13 | 00 : 00 : 31 jaxws |
14 | 00 : 05 : 37 jdk |
15 | 00 : 00 : 43 langtools |
16 | 00 : 00 : 18 nashorn |
17 | 00 : 00 : 27 profiles |
18 | 00 : 10 : 51 TOTAL |
19 | ------------------------- |
20 | FinishedbuildingJava(TM) for target 'imagesprofiles' |
21 | $cdimages |
22 | $ls-d*image |
23 | j2re-compact1-imagej2re-compact2-imagej2re-compact3-imagej2re-imagej2sdk-image |
编译后compact大致的占用空间
总结
如今,物联网正风行一时。我们看到大量不同的设备在市场上出现,每一种的更新速度都越来越快。java需要一个占用资源少的JRE运行环境,紧凑的JRE特性的出现,希望能带来以后的物联网的发展,甚至还是会有大量的java应用程序出现在物联网上面。目前oracle也发布了针对raspberrypi的JRE了。另外该特性也是为java9的模块化项目做准备,模块化特性是javaer所期待的特性。他是解决业务系统复杂度的一个利器,当然OSGI也是相当的出色。但osgi对于新学者来说未免太复杂了。
相关文章推荐
- Java 8新特性探究(八)精简的JRE详解
- Java 8新特性探究(八)精简的JRE详解
- Java 8新特性探究(八)精简的JRE详解
- Java 8新特性探究(8):精简的JRE详解
- Java 8新特性探究(八)精简的JRE详解
- Java8新特性之精简的JRE详解_动力节点Java学院整理
- Java 8新特性探究(五)Base64详解
- Java 8新特性探究(十一)Base64详解
- Java 8新特性探究(八): 精简的JRE详解
- Java 8新特性探究(五)Base64详解
- Java 8新特性探究(五)Base64详解
- [转]Java 8新特性探究(lambda)
- JAVA8 十大新特性详解
- Java8特性详解 lambda表达式和StreamAPI
- Java 8新特性探究(二)类型注解和重复注解
- JAVA8 十大新特性详解
- JDK&JRE&JVM_跨平台特性_开发环境配置_dos命令_字符集JAVA001-006
- Java 8特性探究(2):深入解析默认方法
- Java8新特性之Optional详解