Java SE 8 新特性之旅 : Java開發世界的大變動

我很自豪的成爲了adopt-OpenJDK的一員,像其他專業團隊成員一樣,但是我只剛加入了8個月,我們一同經歷了Java SE 8 的開發、編譯、編碼、討論……等等,直到JDK上線。Java SE 8發佈於2014年3月18日,現在可供下載使用。
我很高興發佈這一系列“Java SE 8 新特性之旅”,我會寫一些例子來簡化Java SE 8知識的獲取、開發經驗、新特性和API,然後
利用你的知識,提高你的編碼能力,同時提高你的生產力。我希望你能像我寫文章一樣享受它。
我們將遊覽Java SE 8(項目和APIs)中的重要特性,平臺設計支持更快、更簡單的Java開發。我們會學到Lambda項目,一種在Java
代碼支持Lambda表達式的新語法。瞭解用來處理集合和管理並行處理的新的Stream API。用代表、管理和計算日期和時間值的DateTime API來計算時間間隔。
還有Nashorn,一個新引擎,有了它,Java虛擬機可以更好的支持JavaScript代碼的使用。
最後,我還會涉及到一些很少有人知道的特性,比如把strings加入到lists中的新方法和其他更多的能夠幫你處理日常任務的特性。
想要獲取更多的Java SE 8特性和指南,我建議你參考http://docs.oracle.com/javase/tutorial/官方網站和Java SE 8 Java API 文檔。

在這個系列中我們涉及的主題包含:
1.安裝Java SE 8,注意事項和建議。
2.介紹Java SE 8 主要特性,大的改動。
3.使用lambda表達式和方法參考。
4.用streams遍歷集合。
5.用新的DateTime API計算時間間隔。
6.在Java裏面用Nashorn運行JavaScript。
7.其他的新特性和API變動。

1.安裝Java SE 8,注意事項和建議

1)在Windows上安裝Java SE 8
爲了在微軟Windows系統上運行Java SE 8,首先要檢查你的Windows系統版本。Java SE 8 支持windows8,7,Vista和XP。

如果你想要運行Java Applets,你需要一個64位的瀏覽器,包含IE 7以上、Firefox3.6以上版本和支持Windows的谷歌瀏覽器,而不是
在Mac上的。你能下載Java SE 8的JDK從:
1.地址java.oracle.com,顯示Java主頁。
2. 點擊Java SE。
3. 在TOP Downloads下,點擊Java 8的下載鏈接。

2)在Mac上安裝Java SE 8

爲了在Mac OS X上運行Java SE 8,你必須有一個基於Intel的Mac並且運行Mac OS X 10.7.3,版本Lion或更高。如果你是Mac的老版本,你不能在其上編程來運行Java 8應用程序。爲了安裝Java SE 8 你需要Mac電腦的管理員權限。並且爲了在瀏覽上運行Java Applets,你需要一個64位的瀏覽器,比如Safari或者Firefox。谷歌瀏覽器是32位的,不能運行Java Applets。和先前在Windows上安裝Java SE的描述一樣,一樣的網站下載MAC OS版的 .dmg文件來安裝。實際上這個頁面包含了所有支持的操作系統的版本。然而
我們的焦點還是Widnows和Mac。

現在在Windows和MAC OS X平臺上,你已經準備好開始用Java SE 8編程了吧。
在我們安裝完Java SE 8之後,讓我們投入第一點,簡單的看一下Java SE 8的主要特性,在我們最愛的IDE上開始編程之旅。

2.介紹Java SE 8 主要特性,大改動

JSR 337概述:Java SE 8 發佈內容

Java SE 8是Java編程語言和Java虛擬機的重要發佈。涉及了很多改動。其中一些比其他更全面,比如Lambda表達式,但我要講的是大的改動和一些小的變動。

JSR 335:Lambda 表達式

可能最引人注意的就是Lambda項目了,一套新的語法,讓Java開發者可以像函數式程序員一樣工作。這個項目包括了lambda表達式,方法參考和一些其他的能力。

JSR 310:Date和Time API
新的管理dates和times的API。替代了老版本的類。那些較老版本的類仍然在Java Runtime裏面,但是當你創建新的應用程序時,你可能會遷移到這套新的API,它會簡化你的代碼和讓你的編程更直觀。有管理本地日期、時間和時區,以及計算不同時間之差的新類。

Stream API

添加了管理集合的新工具,包括lists,maps,sets,等等。stream允許你處理集合中的每一項而不用去寫循環代碼。它還允許你把你的處理分解到多個CPU。所有,對於複雜的大數據集,你能看到顯著的性能提高。

Nashorn項目

Nashorn JavaScript引擎也是Java SE 8新加入的。這是一個全新的JavaScript引擎,允許你用JavaScript編碼並和Java類整合到一起。Nashorn的目標是在原生JVM的Java中實現一個輕量級的高性能的JavaScript運行時。這個項目旨在通過JSR-223讓Java開發者

在Java應用程序中嵌入JavaScript,用jrunscript命令行工具開發獨立的JavaScript應用程序。在Nashorn的文章中,
我會描述怎樣在命令行中運行Nashorn代碼。但也怎樣在不同的文件中寫JavaScript,然後在你的Java代碼中執行這些文件。

並行API加強
並行框架也得到了加強,允許你在多線程裏管理和累積值。

String,numbers有了新工具
創建存儲string限制lists的新工具和其他的新類。有計算數字的工具,包括intergers,longs,doubles等。

其他的新特性
也有新的工具能更好的檢測null情況,並且我會在這個系列中描述所有這些。我還會描述怎麼用新的便捷方法來處理文件。

那麼,Java SE 8 什麼時候能用?

答案是,現在。Java SE 8 正式發佈於2014年3月18日。Java開發者可以構建客戶的網站應用程序,JavaFX富網絡應用框架現在也支持Java 8了。並且大多數的Java企業版的廠商也支持Java 8。你是否立即遷移到Java 8這取決於你現在正在做的項目。
對許多服務和客戶網站應用程序,Java SE 8 現在就是有效的。

Android還不行

Android開發者注意:Java SE 8 語法和API現在不支持運行在Android上。
最近Android剛剛支持了Java 7 語法。所以,可能需要一些時間Android纔會支持最新的語法或APIs。但對於所有的Java開發者來說,是值得了解一下這些特性的。

開發工具怎麼樣?

Java 8 已經在主要的Java開發環境中獲得了支持,包括Oracle的Netbeans,Intellij Idea和Eclipse。我所寫文章系列中的所有的例子都是在NetBeans下完成。用的NetBeans V8 ,下載地址https://netbeans.org/downloads/

不管怎樣在我們開始深入這個系列之前,我們首先檢查是否已經安裝好了Java SE 8,用Netbeans開始一個新項目,包含我們會寫

到的所有代碼。然後開發一段lambda代碼來測試我們的項目在Java SE 8是否工作正常。

你可以選擇下載這個系列中的所有代碼在我的Githut上,https://github.com/mohamed-taman/JavaSE8-Features

基於Java SE 8,用Lambda表達式寫的Hello world應用程序

步驟

1.打開 NetBeans 8 –> from file –> New project –> 從左側選擇 Maven –> 從右側選擇 Java Application –> 點擊下一步。

2.按照下圖所示填寫內容,或者改成你喜歡的名字和值->點擊完成按鈕。
這裏寫圖片描述

3.如果事情進展順利你應該能看到下面的結構,用project navigator視圖。
這裏寫圖片描述

4.點擊項目“Java8Features”->點擊File,從上級菜單->然後,“Project properties”。

5.在Category下->從左側選擇Source,然後檢查 “Scource/Binary format” 是1.8。->從左側打開Build,然後選擇 Complier,然後檢查 “Java Platform” 指向了你已經安裝的JDK 8,點擊OK。

6.如果JDK 8 沒有出現,找到tools->選擇,Java Platforms->Add Platform->然後選擇Java Standard Edition->然後指向你已經安裝好的JDK 8。

7.現在我們的項目已經配置好了JDK 8,所以讓我們添加一些Lambda代碼吧。

8.在包“eg.com.tm.java8.features”,右擊,從菜單中選擇New->Java Interface->命名爲Printable,點擊finish按鈕。

9.如下實現Printable接口

package eg.com.tm.java8.features.overview;

@FunctionalInterface
public interface Printable {

    public void print();
}

10.在相同的包下添加如下類,命名爲“Print”,主要方法如下:

package eg.com.tm.java8.features.overview;

import static java.lang.System.out;

public class Print {

    public static void main(String[] args) {

        Printable job = ()-> out.println("Java SE 8 is working "
                                        + "and Lambda Expression too.");

        job.print();
    }

}

11.右擊Print類,選擇Run。如果一切正常你會看到如下輸出。

Building Java8Features 1.0-SNAPSHOT
------------------------------------------------------------------------
--- exec-maven-plugin:1.2.1:exec (default-cli) @ Java8Features ---
Java SE 8 is working and Lambda Expression too.
------------------------------------------------------------------------
BUILD SUCCESS

12.祝賀你的Java SE 8 項目工作良好,讓我們解釋一下剛纔所寫的代碼。
這段代碼的大部分都可以在Java 7上運行,但是有一個註解是在Java SE 8 中新添加的,FunctionalInterface。如果你的

Netbeans工作環境沒有配置好Java 8,這個註解會報錯,因爲它會被當作是無效代碼。我沒看見錯誤,所以這是一個好跡象。

下面我們打開Print.java的定義。這個類有一個main方法,所以我可以用控制檯程序來運行它,裏面有一行關鍵代碼是Java 8語法。 它lambda表達式創建了我剛剛展示給你們的功能接口的一個實例,一種Java 8之前不存在的語法。我會在下篇文章裏解釋這種語法的作用。 但是你現在需要知道的是如果這段代碼沒有報錯,那麼再一次,Netbeans認爲它是有效代碼。我創建了那個接口的實例並且調用了接口的print方法。因此,我運行了這段代碼。
我點擊了工具欄上的Run按鈕,在控制檯上我看到了成功的結果。我已經創建了一個對象,是用lambda表達創建的接口的實例。

我還調用了它的方法,它輸出了一個字符串在控制檯上。所以,如果所有都工作正常,你狀態很好。你已經在Netbeans裏用Java SE 8開始編程了。如果這過程中你有任何問題,回到上一步,檢查你的步驟。一次一步。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章