当前位置: 首页 > 科技观察

探秘Java8新特性(8):精简JRE详解

时间:2023-03-20 12:23:04 科技观察

Oracle如期发布Java8正式版!没有让广大javaer失望。对于一个人来说,18岁是人生的一个转折点,从不成熟走向成熟,法律意味着你是一个完全民事行为能力人,不再受未成年人保护法的保护。到今年,Java也走过了18个年头,java8是一个新的里程碑,带来了很多最新的特性,lambda表达式,StreamAPI,新的Datetimeapi,多核并发支持,主要的安全改进等等。相信java会变得更好更丰富的类库和庞大的开源生态环境是其他语言所没有的。说到丰富的类库,很多同学抱怨java要减肥,它也该减肥了。Java8有一个很好的特性,就是JEP161(http://openjdk.java.net/jeps/161),这个特性定义了JavaSE平台规范的一些子集,使得java应用程序可以部署和运行在小型设备上而无需整个JRE平台。开发者可以根据目标硬件的可用资源选择合适的JRE运行环境。好处1.更小的Java环境需要更少的计算资源。2.更小的运行环境可以更好地优化性能和启动时间。3.从安全的角度来看,消除未使用的代码总是好的。4.这些打包的应用程序可以更快地下载。存在三种类型的紧凑型JRE,即compact1、compact2和compact3。它们的关系是compact1编译应用,如果不符合compactAPI,会报错。$javac-profilecompact2Test.javaTest.java:7:error:ThreadMXBeanisnotavailableinprofile'c??ompact2'ThreadMXBeanbean=ManagementFactory.getThreadMXBean();^Test.java:7:error:ManagementFactoryisnotavailableinprofile'c??ompact2'ThreadMXBeanbean=ManagementFactory.getThreadsMXBean();使用^2er工具开发的效果JPEDS工具使用java8添加了一个新的工具来分析应用程序所依赖的配置文件。常用的参数有-p、-v、-rimportjava.util.Set三个;导入java.util.HashSet;publicclassDeps{publicstaticvoidmain(String[]args){System.out.println(Math.random());设置设置=newHashSet<>();}}***************简介********************jdeps-PDeps.classDeps.class->/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/rt.jar<未命名>(Deps.class)->java.iocompact1->java.langcompact1->java.utilcompact1***************冗长*******************jdeps-vDeps.classDeps.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*************递归********************jdeps-RDeps.classDeps.class->/Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home/jre/lib/rt.jar<未命名>(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.jcaJDKinternalAPI(rt.jar)->sun.security.utilJDKinternalAPI(rt.jar)->sun.security.validatorJDKinternalAPI(rt.jar)javax.crypto.interfaces(jce.jar)->java.lang->java.math->java.securityjavax.crypto.spec(jce.jar)->java.lang->java.math->java.security.spec->java.util/库/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.cryptoJDKinternalAPI(jce.jar)sun.security.util(rt.jar)->javax.cryptoJDKinternalAPI(jce.jar)->javax.crypto.interfacesJDKinternalAPI(jce.jar)->javax.crypto.specJDKinternalAPI(jce.jar)在linux上构建profile$hgclonehttp://hg.openjdk.java.net/jdk8/jdk8/$cdjdk8$makeimagesprofiles:##Finishedprofiles(buildtime00:00:27)-----构建时间-------Start2013-03-1714:47:35End2013-03-1714:58:2600:00:25corba00:00:15demos00:01:50hotspot00:00:24images00:00:21jaxp00:00:31jaxws00:05:37jdk00:00:43langtools00:00:18nashorn00:00:27profiles00:10:51TOTAL-------------------------FinishedbuildingJava(TM)fortarget'imagesprofiles'$cdimages$ls-d*imagej2re-compact1-imagej2re-compact2-imagej2re-compact3-imagej2re-imagej2sdk-imagecompactcompact空间总结今天物联网风靡一时我们看到很多不同的设备在出现在市场上,每次更新速度都越来越快。Java需要一个占用资源少的JRE运行环境。紧凑型JRE特性的出现,有望带动未来物联网的发展,甚至物联网上会出现大量的Java应用。目前oracle也发布了树莓派的JRE。另外,这个特性也是为java9的模块化工程做准备,模块化特性是javaer期望的特性。他是解决业务系统复杂性的利器,当然OSGI也相当不错。但是osgi对于新学者来说太复杂了。原文链接:http://my.oschina.net/benhaile/blog/211804