成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java 9 新特性

SegmentFault / 2112人閱讀

摘要:在語言上并沒有添加太多的新特性,但在使用性能上做了很改進(jìn)。二多版本包支持即在不同版本下,執(zhí)行相應(yīng)版本的代碼。在發(fā)布新版本的后,用戶可能不會升級到新環(huán)境,但是項目可能會開始逐步升級到新版本,來提前適應(yīng)即將到來的環(huán)境。

Java9在語言上并沒有添加太多的新特性,但在使用、性能上做了很改進(jìn)。

一、模塊間引用

Java9添加了模塊化的概念,使得之前的控制訪問權(quán)限有了改變。
之前:

public

protect

(default,package)

private

Java9

public to everyone

public but only for specific user

public within a module

protect

(default,package)

private

可以看到,對public類又做了進(jìn)一步的限制,主要是對模塊間的依賴做出限制,使得模塊能夠控制那些public類型能夠被其他模塊讀取,以及該模塊需要使用其他模塊的類型。

如何定義模塊

在src根目錄下,創(chuàng)建module-info.java:

// 該模塊的名稱為 module.one
module module.one {
    // 該包下的所有public類型對其他模塊可見
    export package.name;
    // 該public類型對其他模塊可見
    export class.name;
}
// 該模塊的名稱為 module.two
module module.two {
    // 該模塊將引用模塊1
    // 該模塊將能夠使用模塊1所開放的public類型
    // 其他的pubic類型將不可見
    require module.one;
}

以上是最簡單的模塊使用方式。

二、多版本jar包支持

即在不同java版本下,執(zhí)行相應(yīng)版本的代碼。比如DateUtil.java,若在java7環(huán)境下,將執(zhí)行java7的代碼,在java8的環(huán)境下,將執(zhí)行java8的代碼。
在發(fā)布新版本的java后,用戶可能不會升級到新環(huán)境, 但是項目可能會開始逐步升級到新版本,來提前適應(yīng)即將到來的環(huán)境。此時就要對多個版本的支持。

實現(xiàn)
$ javac --release 11 java11/com/xiao/test/Tester.java
$ javac --release 8 java8/com/xiao/test/Tester.java
$ tree
.
├── java11
│?? └── com
│??     └── xiao
│??         └── test
│??             ├── Tester.class
│??             └── Tester.java
└── java8
    └── com
        └── xiao
            └── test
                ├── Tester.class
                └── Tester.java

8 directories, 4 files
$ jar -v -c -f multiversion.jar -C java8 com/xiao/test/Tester.class --release 11 -C java11 com/xiao/test/Tester.class
已添加清單
正在添加: com/xiao/test/Tester.class(輸入 = 428) (輸出 = 296)(壓縮了 30%)
正在添加: META-INF/versions/11/com/xiao/test/Tester.class(輸入 = 429) (輸出 = 296)(壓縮了 31%)
$  ls
java11            java8            multiversion.jar
$ /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home/bin/java -cp multiversion.jar com.xiao.test.Tester
In Java8
$ /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/bin/java -cp multiversion.jar com.xiao.test.Tester
In Java11
三、Interface增強(qiáng)(可添加私有方法)
public interface PrivateMethod {
    // java7以前
    // 默認(rèn)為 public static final
    String NAME = "xiao";
    // 默認(rèn)為 public
    String get();

    // java8
    default void giveMyMoney() {
        System.out.println("No way!!!");
    }

    static void makeFriend() {
        System.out.println("Hello, my friend.");
    }
    
    // java9
    private void show() {
       System.out.println("Nobody can find me.");
    }
}
四、JShell

提供互交式的工具。

$ jshell
|  歡迎使用 JShell -- 版本 11.0.1
|  要大致了解該版本, 請鍵入: /help intro

jshell> /help intr
|  
|                                   intro
|                                   =====
|  
|  使用 jshell 工具可以執(zhí)行 Java 代碼,從而立即獲取結(jié)果。
|  您可以輸入 Java 定義(變量、方法、類等等),例如:int x = 8
|  或 Java 表達(dá)式,例如:x + x
|  或 Java 語句或?qū)搿?|  這些小塊的 Java 代碼稱為“片段”。
|  
|  這些 jshell 工具命令還可以讓您了解和
|  控制您正在執(zhí)行的操作,例如:/list
|  
|  有關(guān)命令的列表,請執(zhí)行:/help

jshell> System.out.println("The first time use jshell");
The first time use jshell

jshell> String a = "xiao"
a ==> "xiao"

jshell> System.out.println("name" + a)
namexiao

jshell> System.out.println("name:" + a)
name:xiao

jshell>
五、try/catch增強(qiáng)

Java6以及之前的版本中,在使用一些資源時,通常會使用try/catch語句,并且在finally語句中來關(guān)閉資源,Java7做了改進(jìn),Java9也做了一點改進(jìn)。

public class TryCatchImprove {
    public static void main(String[] args) {
        // Java 6 or early
        // 使用的資源,建議都在finally塊中關(guān)閉
        InputStreamReader inputStream7 = new InputStreamReader(System.in);
        try {
            int i = inputStream7.read();
        } catch (IOException ie) {
            ie.printStackTrace();
        } finally {
            try {
                inputStream7.close();
            } catch (IOException ie) {
                ie.printStackTrace();
            }
        }

        // Java 7,8
        // 當(dāng)有多個資源被使用時,括號中使用 ; 分割,不再需要finally語句塊
        try (InputStreamReader inputStream8 = new InputStreamReader(System.in)) {
            int i = inputStream8.read();
        } catch (IOException ie) {
            ie.printStackTrace();
        }

        // Java 9
        // 能夠直接在try的括號中使用變量,多個變量時用 ; 分割
        InputStreamReader inputStream9 = new InputStreamReader(System.in);
        try (inputStream9) {
           int i = inputStream9.read(); 
        } catch (IOException ie) {
            ie.printStackTrace();
        }
    }
}
參考

更多更詳細(xì)的特性,可以參照以下:

Oracle

What’s New in Oracle JDK 9:https://docs.oracle.com/javas...

Java Language Updates :https://docs.oracle.com/javas...

Blog

NewImport:http://www.importnew.com/2452...

http://www.runoob.com/java/ja...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/72829.html

相關(guān)文章

  • Java 9 的主要特性

    摘要:今晚將正式發(fā)布。競爭鎖的性能優(yōu)化能夠改善程序運行時的多線程同步效率。模塊化這就是令跳票數(shù)次的罪魁禍?zhǔn)?。?yōu)化字符串占用空間在很多應(yīng)用當(dāng)中,字符串已經(jīng)成為一個消耗內(nèi)存的主要部分。 今晚 Java 9 將正式發(fā)布。Java 9 的新特性都列在官方頁面當(dāng)中,本文介紹值得你關(guān)注的其中幾個點: ? 進(jìn)程操作改進(jìn)(JEP 102: Process API Updates) 新增的 java.lang...

    junbaor 評論0 收藏0
  • 5分鐘學(xué)會Java9-Java11的七大特性

    摘要:來來來,花分鐘看看的七大新特性,還有代碼樣例。本地是指方法內(nèi)的變量聲明。從開始,這個正式進(jìn)入標(biāo)準(zhǔn)庫包。同步請求會阻止當(dāng)前線程。可喜的是,如果嘗試改變不可變集合,會通過發(fā)出警告是在中引入的,增加了三個新方法。 現(xiàn)在Java有多元化的發(fā)展趨勢,既有JS又有C++還有C#的影子,不學(xué)習(xí)那是不行滴。來來來,花5分鐘看看Java9-Java11的七大新特性,還有代碼樣例。Java11 發(fā)布了,然...

    xuhong 評論0 收藏0
  • Java核心技術(shù)教程整理,長期更

    以下是Java技術(shù)棧微信公眾號發(fā)布的關(guān)于 Java 的技術(shù)干貨,從以下幾個方面匯總。 Java 基礎(chǔ)篇 Java 集合篇 Java 多線程篇 Java JVM篇 Java 進(jìn)階篇 Java 新特性篇 Java 工具篇 Java 書籍篇 Java基礎(chǔ)篇 8張圖帶你輕松溫習(xí) Java 知識 Java父類強(qiáng)制轉(zhuǎn)換子類原則 一張圖搞清楚 Java 異常機(jī)制 通用唯一標(biāo)識碼UUID的介紹及使用 字符串...

    Anchorer 評論0 收藏0
  • Java9特性

    摘要:新特性概述系列一安裝及使用系列二運行系列三模塊系統(tǒng)精要系列四更新系列五系列六系列七系列八系列九與的區(qū)別遷移注意事項參數(shù)遷移相關(guān)選項解析使用構(gòu)建實例使用示例帶你提前了解中的新特性 Java語言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的新特性 Java10的新特性 Java11的新特性 Java12的新特性 Java13的新特性...

    ddongjian0000 評論0 收藏0
  • Java 11正式發(fā)布,這幾個逆天特性教你寫出更牛逼的代碼

    摘要:就在前段時間,官方宣布正式發(fā)布,可在生產(chǎn)環(huán)境中使用這無疑對我們來說是一大好的消息。途中列舉了的正式發(fā)布時間以及支持計劃。長期支持,表示會對其做長期的補(bǔ)丁安全等擴(kuò)展支持等。 showImg(https://segmentfault.com/img/remote/1460000016796660); 就在前段時間,Oracle 官方宣布 Java 11 (18.9 LTS) 正式發(fā)布,可在...

    garfileo 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<