溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java 8中的JRE怎么用

發(fā)布時(shí)間:2021-09-18 17:12:40 來源:億速云 閱讀:152 作者:柒染 欄目:編程語言

這篇文章給大家介紹Java 8中的JRE怎么用,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

Oracle公司如期發(fā)布了Java 8正式版!沒有讓廣大javaer失望。對于一個(gè)人來說,18歲是人生的轉(zhuǎn)折點(diǎn),從稚嫩走向成熟,法律意味著你是完全民事行為能力人,不再收益于未成年人保護(hù)法,到今年為止,java也走過了18年,java8是一個(gè)新的里程碑,帶來了***的諸多特性,lambda表達(dá)式,Stream API,新的Date time api,多核并發(fā)支持,重大安全問題改進(jìn)等,相信java會(huì)越來越好,豐富的類庫以及龐大的開源生態(tài)環(huán)境是其他語言所不具備的,說起豐富的類庫,很多同學(xué)就吐槽了,java該減肥了,確實(shí)是該減肥,java8有個(gè)很好的特性,即JEP161(http://openjdk.java.net/jeps/161 ),該特性定義了Java SE平臺規(guī)范的一些子集,使java應(yīng)用程序不需要整個(gè)JRE平臺即可部署和運(yùn)行在小型設(shè)備上。開發(fā)人員可以基于目標(biāo)硬件的可用資源選擇一個(gè)合適的JRE運(yùn)行環(huán)境。

好處

1.更小的Java環(huán)境需要更少的計(jì)算資源。

2.一個(gè)較小的運(yùn)行時(shí)環(huán)境可以更好的優(yōu)化性能和啟動(dòng)時(shí)間。

3.消除未使用的代碼從安全的角度總是好的。

4.這些打包的應(yīng)用程序可以下載速度更快。

概念

緊湊的JRE分3種,分別是compact1、compact2、compact3,他們的關(guān)系是compact1<compact2<compact3,他們包含的API如下圖所示

Java 8中的JRE怎么用

使用javac根據(jù)profile編譯應(yīng)用程序

javac &ndash;bootclasspath, or javac &ndash;profile <profile> 

如果不符合compact的api,則報(bào)錯(cuò)。

$ 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

使用工具開發(fā)的效果

Java 8中的JRE怎么用

JPEDS工具使用

java8新增一個(gè)工具,用來分析應(yīng)用程序所依賴的profile,有三個(gè)參數(shù)比較常用 -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.jar     Deps (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.jar     javax.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.jar     java.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上構(gòu)建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 8中的JRE怎么用

總結(jié)

如今,物聯(lián)網(wǎng)正風(fēng)行一時(shí)。我們看到大量不同的設(shè)備在市場上出現(xiàn),每一種的更新速度都越來越快。java需要一個(gè)占用資源少的JRE運(yùn)行環(huán)境,緊湊的JRE特性的出現(xiàn),希望能帶來以后的物聯(lián)網(wǎng)的發(fā)展,甚至還是會(huì)有大量的java應(yīng)用程序出現(xiàn)在物聯(lián)網(wǎng)上面。目前oracle也發(fā)布了針對raspberry pi的JRE了。

另外該特性也是為java9的模塊化項(xiàng)目做準(zhǔn)備,模塊化特性是javaer所期待的特性。他是解決業(yè)務(wù)系統(tǒng)復(fù)雜度的一個(gè)利器,當(dāng)然OSGI也是相當(dāng)?shù)某錾?。但osgi對于新學(xué)者來說未免太復(fù)雜了。

關(guān)于Java 8中的JRE怎么用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI