亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Java8新特性之精簡的JRE詳解_動力節點Java學院整理

發布時間:2020-08-19 14:33:32 來源:腳本之家 閱讀:159 作者:mrr 欄目:編程語言

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

好處

1.更小的Java環境需要更少的計算資源。

2.一個較小的運行時環境可以更好的優化性能和啟動時間。

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

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

概念

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

Java8新特性之精簡的JRE詳解_動力節點Java學院整理

使用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

使用工具開發的效果

Java8新特性之精簡的JRE詳解_動力節點Java學院整理

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.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上構建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大致的占用空間 

Java8新特性之精簡的JRE詳解_動力節點Java學院整理

總結

如今,物聯網正風行一時。我們看到大量不同的設備在市場上出現,每一種的更新速度都越來越快。java需要一個占用資源少的JRE運行環境,緊湊的JRE特性的出現,希望能帶來以后的物聯網的發展,甚至還是會有大量的java應用程序出現在物聯網上面。目前oracle也發布了針對raspberry pi的JRE了。

另外該特性也是為java9的模塊化項目做準備,模塊化特性是javaer所期待的特性。他是解決業務系統復雜度的一個利器,當然OSGI也是相當的出色。但osgi對于新學者來說未免太復雜了。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平谷区| 晴隆县| 桦南县| 沐川县| 浮梁县| 肇东市| 平阳县| 武城县| 盐源县| 郴州市| 安阳县| 磐安县| 鄯善县| 蒙自县| 湘阴县| 手机| 德保县| 沅江市| 阜阳市| 庆阳市| 婺源县| 宕昌县| 甘孜| 北川| 莎车县| 开远市| 神农架林区| 南郑县| 晋宁县| 浦县| 赣榆县| 洪洞县| 陵水| 眉山市| 周宁县| 西吉县| 建始县| 克拉玛依市| 台江县| 石家庄市| 余庆县|