Archive for July, 2015

5 tính năng trong Java 9 làm thay đổi cách bạn phát triển phần mềm

Bài gốc: http://blog.takipi.com/5-features-in-java-9-that-will-change-how-you-develop-software-and-2-that-wont/

Các tính năng của Java 8 mình mới chỉ lấy các ví dụ mẫu để thực hành, đọc trên sách là chủ yếu, chưa áp dụng tính năng mới nào của Java 8 vào thực thế vì các dự án thật hiện tại chủ yếu trên Java 7, có cái tận Java 6, vậy mà Java 9 đang trong giai đoạn hoàn thiện, tháng 12 sẽ hoàn thành các tính năng để vào giai đoạn kiểm thử. Đây là lộ trình của Java 9: 

2015-12-10: Feature Complete
2016-02-04: All Tests Run
2016-02-25: Rampdown Start
2016-04-21Zero Bug Bounce
2016-06-16: Rampdown Phase 2
2016-07-21: Final Release Candidate
2016-09-22: General Availability

Công nghệ nó chạy thì mình phải đua theo, không thể khác được :)). Tất cả tính năng mới của Java 9: http://blog.takipi.com/java-9-the-ultimate-feature-list/. Mình dịch bài này vì cái tiêu đề có vẻ … nói hơi quá :v

Rất nhiều thông tin hay trong các đường dẫn có trong bài viết, các bạn nên xem qua.

Continue reading →

Fail-safe và fail-fast

Bài gốc: http://javapapers.com/core-java/fail-fast-vs-fail-safe/

Hệ thống sẽ phản ứng thế nào khi có một thất bại (failure) đặc trưng xảy ra như một hệ thống fail-fast (thất bại nhanh) hay fail-fast (thất bại an toàn). Bài viết này để thảo luận liệu fail-fast hay fail-safe tốt hơn. Nó sẽ phải làm gì với Java.

Fail fast và fail safe – cái nào tốt hơn?

Tuy từ “fail safe” có vẻ tốt hơn, nhưng tôi có cảm giác fail-fast là tốt nhất. Fail-safe không an toàn. Fail safe không có nghĩa là vững mạnh. Chúng ta đang giữ, che giấu những khuyết điểm(defect) trong hệ thống. Sự bền vững của hệ thống fail-safe có thể không được lâu dài. Hệ thống fail-safe cần cho các trường hợp có tính sẵn sàng sử dụng cao. Khi một thất bại (failure) được phát hiện, cách thức làm việc khác sẽ được thay thế và tính sẵn sàng sử dụng của hệ thống vẫn được đảm bảo.

Fail-fast đưa ra các khuyết điểm của hệ thông khi nó bị phát hiện. Lỗi được công khai rộng rãi và hệ thống sẽ tắt. Công việc sẽ bị tắt nghẽn, nhưng chúng ta được cơ hội khắc phục lỗi. Chúng ta sửa lỗi và mang hệ thống trở lại và chạy ngon lành :D. Điều đó làm cho hệ thống thật sự mạnh mẽ, không che giấu tình trạng lỗi của hệ thống. Mặc dù kết quả làm cho tính sẵn sàng của hệ thống bị gián đoạn, qua được khoảng thời gian đó, kết quả là ta sẽ được một hệ thống mạnh mẽ. Fail-fast đảm bảo rằng chúng ta không lái một chiếc xe tào lao và tạo ra những vấn đề không thể phục hồi được. Đừng chờ đợi những thất bại (failures) trong hệ thống một cách tự nhiên, nhưng nó (failure) nên được thiết kế bằng cách mà khi trong trường hợp thật bại không mong muốn thì chương trình nên fail-fast.

Thử tưởng tượng một câu hỏi điên rồ (provoking – kích động), có phải fail-fast tốt hơn cho lò phản ứng hạt nhân? 

Continue reading →