- Những tính năng nào mới có trong JAVA8
Vào năm 2014 Oracle đã phát hành một phiên bản có tên Java 8. Đây là một phiên bản mang tính cách mạng của java, nó bao gồm các nâng cấp khác nhau cho lập trình Java, JVM, Tools và các thư viện. Có rất nhiều tính năng và cải tiến mới nhưng quan trọng nhất là các tính năng sau:
- Lambda Expressions − Biểu thức lambda là một khối mã ngắn lấy tham số và trả về giá trị. Các biểu thức Lambda tương tự như các phương thức, nhưng chúng không cần tên và chúng có thể được triển khai ngay trong phần thân của một phương thức.
- Method References − hay còn được gọi là phương thức tham chiếu liên quan đến việc sử dụng biểu thức lambda.
- Optional − Đây là một lớp nằm trong gói java.util, nó giúp hạn chế lỗi NullPointerException trong ứng dụng.
- Functional Interface – là một interface chứa tối đa một abstract method. @FunctionalInterface đảm bảo cho interface chỉ có duy nhất một abstract method.
- Default methods – Cung cấp phương thức mặc định cho Interface và abstract methods.
- Nashorn, JavaScript Engine − cho phép chạy JavaScript trên máy ảo JVM.
- Stream API – bao gồm class và interface của Stream API cho phép thao tác kiểu function trên các phần tử của Collection, Array.
- Date and Time API − Cung cấp một số lớp mớ trong gói java.time cùng với định dạng thời gian Joda.
2. Dự án Lambda là gì?
Đoạn tóm tắt ngắn gọn về lịch sử của dự án Lambda sẽ giúp bạn có cái nhìn lịch sử và sự hình thành của dự án này. Chắc bạn sẽ không quá xa lạ với: James Gosling cha đẻ của ngôn ngữ lập trình Java và Mark Reinhold kiến trúc sư trưởng bộ phân JSE tại Oracle.
- 2006 – James Gosling: “Chúng tôi sẽ không bao giờ có lambdas trong Java”
- 2007 – 3 đề xuất khác nhau cho lambdas trong Java
- 2008 – Mark Reinhold: “Chúng tôi sẽ không bao giờ có lambdas trong Java”
- 2009 – Bắt đầu dự án Lambda (JSR 335)
- 2014 – Java 8 được phát hành và bao gồm Lambda expression bên trong nó
Trước khi ra bản Java 8 chủ yếu các lời gọi đến method/function sẽ được thực hiện bằng cách sử dụng các Class hoặc Object bởi các method/function không tồn tại độc lập. Nhưng khi bản Java 8 có một khái niệm mới đó là “functional-style programming” được giới thiệu. Bởi vậy, chúng ta có thể dễ dàng sử dụng các “anonymous functions” tạo điều kiện cho lập trình viên lập trình Functional. Lambda Expressions (Biểu thức Lambda) có thể hiểu là một hàm ẩn danh, cho phép lập trình viên chuyển các phương thức làm đối số nhằm rút ngắn câu lệnh đi rất nhiều.
Lưu ý: Lambda Expressions là một biểu thức không có tên và không thuộc bất kỳ Class nào, không có Access Modifier(phạm vi truy cập), không có kiểu trả về.
3. Tại sao sử dụng Lambda Expressions
-
- Giảm lượng code phải code.
- Cung cấp đầy đủ cho Functional Interface
4. Cú pháp của Lambda Expressions
Cú pháp của Lambda Expressions {body}” v:shapes=”Text_x0020_Box_x0020_2″>
- Argument-list: Nó có thể rỗng hoặc có thể có một hoặc nhiềm tham số
- Arrow-token: Mũi tên được sử dụng để liên kết arguments-list và thân của biểu thức.
- Body: Nó chứa các biểu thức và câu lệnh cho biểu thức Lambda.
Chúng ta có thể viết biểu thức lambda bằng nhiều cách tùy thuộc và việc sử dụng nó trong một số trường hợp sau:
Kiểu dữ liệu | Không cần phải khai báo kiểu dữ liệu cho các tham số truyền vào vì trình biên dịch sẽ tự luận ra kiểu dữ liệu. |
Dấu () | Trường hợp chỉ truyền vào một tham số duy nhất thì có thể bỏ qua dấu () và nhiều hơn 1 tham số thì ngược lại. |
Dâu {} | Nếu trong body code chỉ thực hiện 1 statement thì loại bỏ luôn dấu{} và nhiều hơn thì ngược lại. |
Lệnh return | Nếu chỉ có 1 câu lệnh trong biểu thức có thể sử dụng hoặc không sử dụng từ khóa return. Phải sử dụng return khi biểu thức chứa nhiều câu lệnh. |
So sánh Method và Lambda | ||
Thành phần | Method | Lambda |
Tên phương thức | Có tên cho phương thức | Không có tên cho phương thức |
Các tham số | Không hoặc nhiều tham số | Không hoặc nhiều tham số |
Body Code | Có biểu thức và câu lệnh xử lý | Có biểu thức và câu lệnh xử lý |
Return Type | Có kiểu dữ liệu trả về | Không có kiểu trả về tương minh do trình biên dịch có thể tự suy luận ra kiểu dữ liệu trả về dựa vào code thực thi. |
5. Các ví dụ tiêu biểu của biểu thức Lambda.
-
- Biểu thức lambda cơ bản:
6. Biểu thức Lambda không có tham số:
7. Biểu thức Lambda có một tham số duy nhất:
8. Biểu thức lambda có nhiều tham số sử dụng hoặc không sử dụng từ khóa return
9. Biểu thức lambda với vòng lặp Foreach
10. Biểu thức lambda tạo Thread
11. Biểu thức lambda với Filter Collection
12. Phạm vi truy cập trong biểu thức lambda
Bạn có thể truy cập bất kỳ biến Final, Static hoặc biến chỉ được gán một lần nếu cố tình gán lần 2 thì trong biểu thức lambda sẽ Throw một lỗi biên dịch.
Kết luận
Trong bài viết phần 1 về Java 8 giúp các bạn có cái nhìn tổng quan về một phiên bản mang tính cách mạng của Java, có rất nhiều nâng cấp khác nhau nhưng mục tiêu cuối cùng là giúp các lập trình viên tiết kiệm được thời gian gõ code và không gian trình bầy code hơn. Rõ ràng trong phiên bản này Lambda Expression là một tính năng rất thú vị và nó đã góp phần thay đổi xu hướng lập trình trong Java. Hãy cùng khám phá các tính năng thú vị khác trong những bài viết sau nhé!