亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專(zhuān)欄INFORMATION COLUMN

Java 9 新特性

SegmentFault / 2161人閱讀

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

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

一、模塊間引用

Java9添加了模塊化的概念,使得之前的控制訪(fǎng)問(wèn)權(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

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

如何定義模塊

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

// 該模塊的名稱(chēng)為 module.one
module module.one {
    // 該包下的所有public類(lèi)型對(duì)其他模塊可見(jiàn)
    export package.name;
    // 該public類(lèi)型對(duì)其他模塊可見(jiàn)
    export class.name;
}
// 該模塊的名稱(chēng)為 module.two
module module.two {
    // 該模塊將引用模塊1
    // 該模塊將能夠使用模塊1所開(kāi)放的public類(lèi)型
    // 其他的pubic類(lèi)型將不可見(jiàn)
    require module.one;
}

以上是最簡(jiǎn)單的模塊使用方式。

二、多版本jar包支持

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

實(shí)現(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
|  要大致了解該版本, 請(qǐng)鍵入: /help intro

jshell> /help intr
|  
|                                   intro
|                                   =====
|  
|  使用 jshell 工具可以執(zhí)行 Java 代碼,從而立即獲取結(jié)果。
|  您可以輸入 Java 定義(變量、方法、類(lèi)等等),例如:int x = 8
|  或 Java 表達(dá)式,例如:x + x
|  或 Java 語(yǔ)句或?qū)搿?|  這些小塊的 Java 代碼稱(chēng)為“片段”。
|  
|  這些 jshell 工具命令還可以讓您了解和
|  控制您正在執(zhí)行的操作,例如:/list
|  
|  有關(guān)命令的列表,請(qǐng)執(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以及之前的版本中,在使用一些資源時(shí),通常會(huì)使用try/catch語(yǔ)句,并且在finally語(yǔ)句中來(lái)關(guān)閉資源,Java7做了改進(jìn),Java9也做了一點(diǎn)改進(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)有多個(gè)資源被使用時(shí),括號(hào)中使用 ; 分割,不再需要finally語(yǔ)句塊
        try (InputStreamReader inputStream8 = new InputStreamReader(System.in)) {
            int i = inputStream8.read();
        } catch (IOException ie) {
            ie.printStackTrace();
        }

        // Java 9
        // 能夠直接在try的括號(hào)中使用變量,多個(gè)變量時(shí)用 ; 分割
        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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/72829.html

相關(guān)文章

  • Java 9 的主要特性

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

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

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

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

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

    Anchorer 評(píng)論0 收藏0
  • Java9特性

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

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

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

    garfileo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<