Saturday, April 19, 2014

Một câu chuyện từ lambda đến Java 8 (build native and faster Big Data Application)

1) Từ một nhận định đến một suy nghĩ hơn 7 năm
Lúc còn là sinh viên, khi thầy Peter Gammie chỉ ra những hạn chế của cách lập trình truyền thống (imperative programming) khi mà số CPU/GPU ngày càng tích hợp nhiều vào máy tính, và mình đã thắc mắc 1 câu nói từ 2007 đến nay 2014:
"In a concurrent world, imperative is the wrong default"
(tạm hiểu: trong một thế giới tính tóan và nhiều việc xảy ra song song 1 cách đồng thời này, mô hình imperative là một sự mặc định sai lầm ).
Thấy tặng tôi một cuốn sách và đến nay nó vẫn kỉ niệm , cũng như 1 cuốn sách tham khảo.

Tìm hiểu thêm:


2) Lambda như là một tất yếu và sự phục hưng của việc mô tả các thế giới song song bằng đối tượng hàm (functor)
Định luật Moore về khả năng xử lý của máy tính, số luợng dữ liệu ngày càng nhiều (zeta-bytes) trong một thế giới mọi thứ đuợc số hóa (digital world).
Khái niệm lambdafunctional programming ,  xuất hiện từ 1930s . Dù có lịch sử đã khá lâu, nhưng khỏang 30 năm trở lại đây, nó mới nghiên cứu, hiện thực và áp dụng ra thực tế.

Trong thời kỳ mà Big Data và Cloud Computing, lambda và functional programming đã đuợc phát triển lên một mức cao hơn: mô hình kiến trúc lambda cho các hệ thống xử lý dữ liệu lớn
Tìm hiểu thêm về :


3) Java 8, lời hứa đã đuợc thực hiện (bởi Oracle)
Khi 2009, trong một đi dự hội nghị Java Developer thuờng niên (thời mà Java còn của Sun Microsystem ), mình đã nghe về 1 project mà các khái niệm lambda sẽ đưa vào để Java phát triển và phù hợp hơn với các nhu cầu của việc tính tóan song song đồng thời (concurrent computation)
http://openjdk.java.net/projects/lambda

ban đầu, trong Java 7 sẽ có, nhưng đến mãi gần 5 năm. Đến tân 2014 này, trong JDK mới nhất của Java 8, lambda mới đuợc đưa vào chính thức.

Ok, bắt đầu test và code:

  1. JDK cho Java 8: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
  2. Eclipse cho Java 8: https://www.eclipse.org/downloads/index-java8.php
  3. Download sample Java 8 code: https://dl.dropboxusercontent.com/u/4074962/code/try-java8.zip
  4. Tham khảo thêm: http://pragprog.com/book/vsjava8/functional-programming-in-java

Kết quả benchmarking 
Code test dùng JDK 8