溫馨提示×

溫馨提示×

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

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

Java8精簡的JRE舉例分析

發布時間:2021-12-01 11:35:34 來源:億速云 閱讀:356 作者:iii 欄目:移動開發

這篇文章主要介紹“Java8精簡的JRE舉例分析”,在日常操作中,相信很多人在Java8精簡的JRE舉例分析問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java8精簡的JRE舉例分析”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!

好處

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

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

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

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

概念

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

Java8精簡的JRE舉例分析

使用javac根據profile編譯應用程序

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

如果不符合compact的api,則報錯。

?

1

2

3

4

5

6

7

8

$ 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舉例分析

JPEDS工具使用

java8新增一個工具,用來分析應用程序所依賴的profile,有三個參數比較常用 -p,-v,-r

?

1

2

3

4

5

6

7

8

9

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<>();

  }

}

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

************** 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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

$ 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舉例分析

到此,關于“Java8精簡的JRE舉例分析”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!

向AI問一下細節

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

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女