Java 8 và những yếu tố mới bạn nên biết

2 năm rưỡi sau khi phiên bản Java 7 ra đời, ngày 18/3/2014, Oracle chính thức giới thiệu thế hệ tiếp theo- Java 8.

Phiên bản mới này được xem là Java-7-hoàn-thiện-hơn bởi vì nhiều tính năng quan trọng trong Java 8 theo kế hoạch ban đầu thì thuộc về Java 7, nhưng các chậm trễ trong quá trình phát triển đã khiến Oracle quyết định ra đời Java 7 gọn nhẹ hơn, với lời hứa sẽ giới thiệu những tính năng còn thiếu trong phiên bản kế tiếp. Tuy nhiên, Java 8 hiện tại không còn hỗ trợ Windows XP, một tin không vui cho Lập trình viên nào quen thuộc với phiên bản này.

Bài viết dưới đây xin giới thiệu những điểm nổi bật nhất trong phiên bản Java 8. Tuy nhiên, trước khi đến với phần chính, có một vài gợi ý sau có thể hữu ích cho bạn:

  • Tải về JDK™ 8 tại website của Oracle. Một khuyến cáo hiện tại từ kinh nghiệm cá nhân,  bạn chỉ nên sử dụng bản x86 (32 bit) bất kể máy bạn chạy hệ điều hành 32 hay 64 bit.
  • Trường hợp muốn dùng IDE đầy đủ, có thể tải về NetBeans
  • Các đặc điểm mới nhất của Java 8 được mô tả tại ĐÂY (nhiều nội dung trong bài viết cũng tham khảo từ đây)
  • Trường hợp chỉ muốn chạy phiên bản mới nhất, có thể tải về JRE 8

Lambda Expressions (biểu thức lambda)

Đây là tính năng được trông đợi nhất trong Java 8, cung cấp khả năng viết các anonymous function types, giúp mã java trở nên ngắn gọn hơn:

Java 8 và những yếu tố mới bạn nên biết-1

Cú pháp chung của biểu thức lambda:

Java 8 và những yếu tố mới bạn nên biết-2

Một vài ví dụ về biểu thức lambda:

Java 8 và những yếu tố mới bạn nên biết-3

Với cách sử dụng biểu thức lambda, việc viết mã xử lý sự kiện trở nên đơn giản hơn bao giờ hết:

Java 8 và những yếu tố mới bạn nên biết-4

Engine Nashorn

Nashorn là một động cơ thực thi javascript mới, tương tự như các động cơ V8 của trình duyệt Chrome hay động cơ SquirrelFish của WebKit. Từ năm 1997, Java đã có thể làm việc (hạn chế) với javascript thông qua engine Rhino; trong Java 7, việc thực thi javascript trên JVM thông qua cơ chế invokeDynamic.

Với Java 8, bằng việc tích hợp hoàn toàn Nashorn vào JVM, lập trình viên có thể sử dụng javascript khai thác các thư viện có sẵn của java và ngược lại. Theo thử nghiệm thì Nashorn chạy nhanh gấp 5 lần Rhino và đòi hỏi ít bộ nhớ hơn.

Java 8 và những yếu tố mới bạn nên biết-5

Các phương thức mặc định trong Interface

Mặc định ở đây nghĩa là phần mã thực thi đã được viết sẵn, nên khi kế thừa interface, nếu ta không viết mã cho phương thức thì phần mã mặc định sẽ được thực hiện.

Xem ví dụ dưới đây để hiểu rõ hơn:

Java 8 và những yếu tố mới bạn nên biết-6

Sắp xếp song song trên Array

Lớp java.util.Arrays bổ sung phương thức parallelSort() cho phép thực hiện việc sắp xếp các phần tử trên array một cách song song.

Java 8 và những yếu tố mới bạn nên biết-7

Mã hóa & giải mã Base64

Java 8 và những yếu tố mới bạn nên biết-8

Một số thay đổi nhỏ khác

Java 8 và những yếu tố mới bạn nên biết-9

Java 9 và kế hoạch cho tương lai

Oracle đã bắt đầu quá trình phát triển phiên bản tiếp theo là Java 9 với dự kiến phát hành trong năm 2016. Chưa có danh sách các tính năng sẽ đưa vào Java 9 ngoài những mục tiêu chung chung như hỗ trợ ứng dụng cần heap lớn, tích hợp tốt hơn với CPU theo hướng thực hiện song song nhưng tác vụ xử lý nặng, JVM sẽ tự điều chỉnh để chạy ngày càng tốt hơn,… Java 9 là bước đệm để java chuyển hoàn toàn sang thế hệ 64-bit, từ Java 10 thì JDK sẽ chỉ có phiên bản x64.

Java 8 ưu và nhược điểm

Đối với nhiều lập trình viên java lâu năm, java 8 là phiên bản đáng mong đợi, với biểu thức lambda và động cơ Nashorn, hiệu năng của lập trình viên có thể tăng đáng kể.

Đối với người mới học java, những cải tiến này làm java mất tính trong sáng và có thể gây bối rối (đặc biệt là phương thức default cho interface).

Đối với sự phát triển ngôn ngữ, từ một ngôn ngữ tiên phong khi mới ra đời (1995), java đã dần dần mất đi vị trí dẫn đầu và định hướng cho sự phát triển các ngôn ngữ lập trình. Những cải tiến như biểu thức lambda, phương thức mặc định cho interface hay các phương thức sắp xếp song song trên Array,… là sự học tập một cách vụng về các tiếp cận vấn đề của C#.

Blog txnam.net