全球有900萬名開發人員在使用Java,超過70億台的設備在使用Java技術,基於Java的媒體設備已達1.25億台,Java Card的出貨量亦逾100億張。根據 TIOBE.com官網公布的最新資料,2015年熱門開發語言排名,Java更是勇奪第一,學習Java對程式設計師的重要性不言可喻!

從大數據、雲端、物聯網、社群媒體、行動裝置、穿戴裝置到車聯網,Java技術的運用已經和我們的日常生活息息相關,企業端的程式開發,Java更是不可或缺。因此,學習Java技術不但是投資報酬率極高的一項選擇,考取甲骨文原廠認證,更是程式設計師通往職場的最佳通行證。

推薦課程

無論是想學習Java EE程式的開發、Android App開發、大數據分析,或是想打好物件導向程式開發的基礎,Java SE 8絕對是程式設計師非常重要的入門基礎和首選。透過OCPJP SE 8課程導引,可以學到全新的Lambda Expression,更可以對Java核心語法、對物件導向的觀念心領神會。在完全認識物件導向後,想要學習其它物件導向的程式語言(如C#、Python等),便能夠快速上手!課程同時涵蓋甲骨文原廠認證OCAJP SE8與OCPJP SE8的考試範圍,提供完整的應考資訊,輔導您考取國際證照。

123

Java SE8最大的改變:導入函數式程式設計典範(Functional Programming簡稱FP)

函數式程式設計典範,能方便地藉由平行化運算,增加程式的執行速度,以for迴圈為例子,函數式語言的邏輯判斷與副作用的程式能夠分開平行執行,縮短運算時間。FP的導入,勢必會對Java的開發模式和習慣,產生重大的改變和影響。

Java SE8 Lambda的魔力,讓Java程式語法更精簡、更容易上手

在某些情況下,物件的思維會使得程式開發有點繁瑣和累贅,例如提供給視窗程式用的事件處理器(Event Handler)、提供給排序邏輯用的比較子(Comparator)、建構執行緒用的Runnable物件等,若按照正統做法來開發,最精簡的方式大概是透過巢狀類別(Nested Class)的寫法。

123

舉例來說,有一個Product類別,其成員包括id(int)、name(String)、stock(int)、unitPrice(double),Product本身並沒有實作Comparable,現在有一群存放在ArrayList裡的Product物件,我們想利用Product的name欄位來排序,但又不想額外撰寫比較子(Compatator)類別,其做法可能如下:

ArrayList <Product> products = new ArrayList < > ( );
products.add (new Product(5, "Tiger", 500, 380000.6));
products.add (new Product(1, "Elephant", 200, 290000.5));
products.add (new Product(6, "Cat", 700, 80000.2));
products.add (new Product(4, "Impala", 600, 120000.3));
products.add (new Product(2, "Lion", 100, 450000.9));
products.add (new Product(3, "Dog", 300, 90000.7));

Collections.sort (products, new Comparator <Product> ( ) {
@Override
public int compare(Product o1, Product o2) {
return o1.getName( ).compareTo(o2.getName( ));
}
}
);

for (Product p:products){
System.out.println(p);
}

巢狀類別的寫法,的確讓程式碼變得稍微複雜,可讀性也降低了不少。
Java SE 8引進了Lambda Expression的語法,可讓程式碼進一步簡化如下:

ArrayList <Product> products = new ArrayList < > ( );
products.add (new Product( 5, "Tiger", 500, 380000.6));
products.add (new Product( 1, "Elephant", 200, 290000.5));
products.add (new Product( 6, "Cat", 700, 80000.2));
products.add (new Product( 4, "Impala", 600, 120000.3));
products.add (new Product( 2, "Lion", 100, 450000.9));
products.add (new Product( 3, "Dog", 300, 90000.7));


Collections.sort(products, (Product o1, Product o2) - > o1.getName( ).compareTo(o2.getName( )));
products.stream( ).forEach((p) - > {System.out.println(p);});

是不是優雅多了呢?不只比較子,連for-each迴圈都變得更精簡、更直覺了!透過Lambda Expression的寫法,Java程式的語法得以更精簡、更容易上手,可讀性跟維護性當然也跟著大幅提升!