《java8新特性探究-精简的jre详解》由会员分享,可在线阅读,更多相关《java8新特性探究-精简的jre详解(2页珍藏版)》请在金锄头文库上搜索。
1、Java 8新特性探究(8):精简的JRE详解详细解释compact profile相关知识,字面上翻译是紧凑的配置文件,但我认为紧凑的JRE更容易理解,或者精简的JREAD:Oracle公司如期发布了Java 8正式版!没有让广大javaer失望。对于一个人来说,18岁是人生的转折点,从稚嫩走向成熟,法律意味着你是完全民事行为能力人,不再收益于未成年人保护法,到今年为止,java也走过了18年,java8是一个新的里程碑,带来了前所未有的诸多特性,lambda表达式,Stream API,新的Date time api,多核并发支持,重大安全问题改进等,相信java会越来越好,丰富的类库以及
2、庞大的开源生态环境是其他语言所不具备的,说起丰富的类库,很多同学就吐槽了,java该减肥了,确实是该减肥,java8有个很好的特性,即JEP161(jeps161),该特性定义了Java SE平台规范的一些子集,使java应用程序不需要整个JRE平台即可部署和运行在小型设备上。开发人员可以基于目标硬件的可用资源选择一个合适的JRE运行环境。1.更小的Java环境需要更少的计算资源。2.一个较小的运行时环境可以更好的优化性能和启动时间。3.消除未使用的代码从安全的角度总是好的。4.这些打包的应用程序可以下载速度更快。紧凑的JRE分3种,分别是compact1、compact2、compact3,
3、他们的关系是compact1 compact2 compact3,他们包含的API如下图所示使用javac根据profile编译应用程序javac bootclasspath, orjavac profile profile 如果不符合compact的api,则报错。$javac-profilecompact2Test.java Test.java:7:error:ThreadMXBeanisnotavailableinprofilecompact2ThreadMXBeanbean=ManagementFactory.getThreadMXBean(); Test.java:7:error:M
4、anagementFactoryisnotavailableinprofilecompact2ThreadMXBeanbean=ManagementFactory.getThreadMXBean(); 2errors使用工具开发的效果JPEDS工具使用java8新增一个工具,用来分析高山美人茶 应用程序所依赖的profile,有三个参数比较常用 -p,-v,-rimportjava.util.Set; importjava.util.HashSet; publicclassDeps publicstaticvoidmain(Stringargs) System.out.println(Math
5、.random(); Set String set=newHashSet (); *PROFILE* jdeps-PDeps.class Deps.class- LibraryJavaJavaVirtualMachinesjdk1.8.0.jdkContentsHomejrelibrt.jar unnamed (Deps.class) - java.iocompact1 - java.langcompact1 - java.utilcompact1 *VERBOSE* jdeps-vDeps.class Deps.class- LibraryJavaJavaVirtualMachinesjdk
6、1.8.0.jdkContentsHomejrelibrt.jar Deps(Deps.class) - java.io.PrintStream - java.lang.Math - java.lang.Object - java.lang.String - java.lang.System - java.util.HashSet *RECURSIVE* jdeps-RDeps.class Deps.class- LibraryJavaJavaVirtualMachinesjdk1.8.0.jdkContentsHomejrelibrt.jar unnamed (Deps.class) - j
7、ava.io - java.lang - java.util LibraryJavaJavaVirtualMachinesjdk1.8.0.jdkContentsHomejrelibjce.jar- LibraryJavaJavaVirtualMachinesjdk1.8.0.jdkContentsHomejrelibrt.jar javax.crypto(jce.jar) - java.io - java.lang - java.lang.reflect - - java.nio - java.security - java.security.cert - java.security.sp
8、ec - java.util - java.util.concurrent - java.util.jar - java.util.regex - java.util.zip - javax.security.auth - sun.security.jcaJDKinternalAPI(rt.jar) - sun.security.utilJDKinternalAPI(rt.jar) - sun.security.validatorJDKinternalAPI(rt.jar) javax.crypto.interfaces(jce.jar) - java.lang - java.math - j
9、ava.security javax.crypto.spec(jce.jar) - java.lang - java.math - java.security.spec - java.util LibraryJavaJavaVirtualMachinesjdk1.8.0.jdkContentsHomejrelibrt.jar- LibraryJavaJavaVirtualMachinesjdk1.8.0.jdkContentsHomejrelibjce.jar java.security(rt.jar) - javax.cryptoJDKinternalAPI(jce.jar) sun.sec
10、urity.util(rt.jar) - javax.cryptoJDKinternalAPI(jce.jar) - javax.crypto.interfacesJDKinternalAPI(jce.jar) - javax.crypto.specJDKinternalAPI(jce.jar) 在linux上构建profile$hgclonejdk8jdk8 $cdjdk8 $makeimagesprofiles: #Finishedprofiles(buildtime00:00:27) -Buildtimes- Start2013-03-1714:47:35End2013-03-1714:
11、58:2600:00:25corba 00:00:15demos 00:01:50hotspot 00:00:24images 00:00:21jaxp 00:00:31jaxws 00:05:37jdk 00:00:43langtools 00:00:18nashorn 00:00:27profiles 00:10:51TOTAL - FinishedbuildingJava(TM)fortargetimagesprofiles$cdimages $ls-d*image j2re-compact1-imagej2re-compact2-imagej2re-compact3-imagej2re
12、-imagej2sdk-image 编译后compact大致的占用空间如今,物联网正风行一时。我们看到大量不同的设备在市场上出现,每一种的更新速度都越来越快。java需要一个占用资源少的JR玛瑙 E运行环境,紧凑的JRE特性的出现,希望能带来以后的物联网的发展,甚至还是会有大量的java应用程序出现在物联网上面。目前oracle也发布了针对raspberry pi的JRE了。另外该特性也是为java9的模块化项目做准备,模块化特性是javaer所期待的特性。他是解决业务系统复杂度的一个利器,当然OSGI也是相当的出色。但osgi对于新学者来说未免太复杂了。原文链接:benhaileblog211804【编辑推荐】XML案例解析教程本书对开发XML应用程序给予了详细指导,其中一些应用程序甚至对于您来说是完全陌生的。这些应用程序包括XML 1.0,以及与XSLT、XQ