Thứ Hai, 28 tháng 3, 2016

6 điểm mới của Java 9 sẽ khiến bạn thay đổi cách phát triển phần mềm

Dịch bởi Hồ Trí Lộc

Những tính năng nào được háo hức nhất của Java 9?

Thật vô tâm nếu chúng ta bẵng quên đi Java 9  trong khi những chuyên gia tâm huyết vẫn  đang tận lực chuẩn bị cho sự ra mắt của nó vào năm 2016 này. Các tính năng mới đã được hoàn tất chỉ trong vòng vài tháng khi kết thúc năm 2015. Sau đó vòng kiểm tra phần mềm nghiêm ngặt và chữa lỗi sẽ được thực hiện để chuẩn bị cho sự ra mắt hoàn thiện vào tháng 9 năm 2016.

Hiện tại chúng ta đã có được những tính năng mong đợi của Java 9. Nếu Java 8 tâp trung vào Lambdas, Streams hoặc thay đổi về giao diện lập trình ứng dụng(API) thì Java 9 đánh dấu sự ra đời của Jigsaw mạng lại tiện ích hữu dụng cùng sự thay đổi sâu sắc ở các thành phần cốt lõi. Bài viết này tập trung giới thiệu vài tính năng đáng kỳ vọng của Java 9 cùng vài chi tiết liên quan đến "Jigsaw", khả năng chia JRE thành những thành phần nhỏ hơn để phục vụ tốt hơn việc “module" hoá các thành phần lõi trong Java.

Đề nghị không copy nội dung dưới mọi hình thức.

3 nhận xét:

  1. 1. Java + REPL = JShell

    Một dự án tên mã là Kulla đã được phát triển với kế hoạch tích hợp vào Java 9 trước đó và giờ đây đã chính thức. Bản kế tiếp của Java sẽ có một công cụ New Command Line được gọi JShell. JShell là sự kết hợp giữa Java và công cụ REPL (công cụ cho phép bạn thực thi mệnh lệnh lập trình trực tiếp trên máy và trả lại kết quả ngay tức khắc). Giờ đây bạn không phải mất thời gian nhét mã Java vào trong một project hay một hàm cũng không phải lo về dấu chấm phẩy nếu bạn lỡ quên.

    -> 2 + 2
    | Expression value is: 4
    | assigned to temporary variable $1 of type int

    Mặc dù có vài thứ tương tự như REPL được cắm vào các IDEs hay một giải pháp Java REPL web console nhưng New Command Line Tool chưa bao giờ chính thức tích hợp vào Java. Từ phiên bản 9, JShell đã sẵn sàng cho bạn trải nghiệm tại địa chỉ : http://www.javarepl.com/console.html hoặc tham khảo tài liệu liên quan tại địa chỉ: http://openjdk.java.net/jeps/222

    2. Microbenchmarks

    Chuyên đề đánh giá kết quả của phần mềm được viết bằng Java (Java Microbenchmarking Harness) được thực hiện bởi Alexey Shipilev sẽ cho bạn biết kết quả xử lý của các kỹ thuật cũng như công nghệ thuật lập trình được xử dụng giúp vạch ra các tiêu chuẩn để viết phần mềm nhanh hơn và mạnh hơn một điều chúng ta đang rất chờ đợi.

    JMH là một công nghệ Java được dùng để xây dựng lên những tiêu chí hay công cụ đánh giá, phân tích tốc độ xử lý phần mềm trên nhiều loại tốc độ khác nhau dù với nano giây(1 phần tỷ giây) hay micro giây(1 phần triệu giây). Để đo được tốc độ xử lý chính xác nhất đến tận nano giây của phần mềm chúng ta cần tính đến các yếu tố gây ảnh hưởng lớn như sự tối ưu, thời gian khởi động và JMH là công cụ tuyệt vời để giải quyết vấn đề đó.

    Trả lờiXóa
  2. 3. G1- Garbage Collector mới mặc định trong tương lai ?

    Một quan niệm sai lầm chúng tôi thường nghe là Java chỉ có duy nhất công cụ xử lý rác khi trên thực tế nó có những 4. Hiện tại một đề xuất đang được tranh luận nhằm mục đích thay thế công cụ thu gom rác mặc định của Java (The parallel / Throughput collector) bằng công cụ thu gom rác G1 đã được đề cập đến trong Java 7. Bạn có thể kiểm tra sự khác nhau bit-sized về kích giữa 2 công cụ thu gom rác tại link.


    Nhìn chung, G1 được thiết kế để hỗ trợ bộ nhớ động (heap) có kích cỡ lớn hơn 4gb và khiến cho việc tạm ngưng của công cụ xử lý bộ nhớ(Garabe Collector) xảy ra ít thường xuyên hơn, nếu có thì thời gian tạm ngưng của GC cũng lâu hơn. Chúng tôi đã thảo luận với Haim Yadid, chuyên gia hàng đầu về hiệu xuất xử lý của các sản phẩm tại OutBrain. Để hiểu rõ hơn về vấn đề này, bạn có thể tìm hiểu thêm thông tin về sự đánh đổi được mất của các tính năng giữa 2 công cụ thu go rác tại link .

    Nếu bạn muốn tìm hiểu sâu sắc hơn về cuộc thảo luận giữa 2 công cụ, hotspot-dev và jdk9-dev sẽ cho bạn thông tin đầy đủ về nội dung những cuộc trao đổi giữa các nhà phát triển xung quanh cuộc thảo luận này.


    4. Hỗ trợ HTTP 2.0

    HTTP 2.0 dựa trên thuật toán Google’s SPDY (thuật toán giao thức truyền thông mở của Google) vừa được phê duyệt cách đây vài tháng. SPDY đã chứng minh tốc độ cải thiện từ 11.81% đến 47.7% và việc cài đặt đã được thực hiện trong hầu hết các trình duyệt hiện nay. Java 9 sẽ hỗ trợ đầy đủ đối với HTTP 2.0, cung cấp một HTTP Client mới cho Java có nhiệm vụ thay thế HttpURLConnection và cài đặt đặc tả HTTP 2.0 cùng Web Sockets.

    5. Một cú “huých” đáng kể cho Process API


    Đến nay việc điều khiển và quản lý tiến trình xử lý trong hệ điều hành bằng ngôn ngữ Java còn gặp nhiều hạn chế. Ví dụ khi bạn cần tiếp cận được mã nguyên thủy (native code) hay triệu gọi các tiến trình xử lý ngầm để phục vụ cho một công việc đơn giản như lấy ID của một Process (PID) trong các phiên bản cũ của Java. Một khó khăn nữa là sự khác nhau về cài đặt trên mỗi nền tảng hệ điều hành sẽ không đảm bảo được kết quả chính xác từ một mã lệnh bằng Java.

    Sau đây là đoạn code Java thông thường để lấy về Process ID trong hệ điều hành Linux:

    public static void main(String[] args) throws Exception {
    Process proc =
    Runtime.getRuntime().exec(new String[]{ "/bin/sh", "-c", "echo $PPID" });
    if (proc.waitFor() == 0) {
    InputStream in = proc.getInputStream();
    int available = in.available();
    byte[] outputBytes = new byte[available];
    in.read(outputBytes);
    String pid = new String(outputBytes);
    System.out.println("Your pid is " + pid);
    }
    }

    Với Java 9, bạn có thể làm tốt hơn thế với tất cả các hệ điều hành:

    System.out.println("Your pid is " + Process.getCurrentPid());

    Cập nhật mới giúp mở rộng khả năng tương tác với hệ điều hành bằng những phương thức trực tiếp để làm việc thông qua Process ID, Process Name, trạng thái với từng JVMs hay các process.

    Trả lờiXóa
  3. 6. Quản lý bug đang được triển khai

    Không chỉ với Java, bài đăng này là cơ hội tốt cho chúng tôi chia sẻ một số tiến bộ mới mà chúng tôi đạt được tại Đài Bắc. Trong quá khứ, việc tìm và giải quyết các lỗi xảy ra khi phần mềm hoạt động phải thông qua các tập tin log. Việc tìm lỗi cực kỳ vất vả với một số lượng lớn các log file để xác định được trạng thái của ứng dụng gây ra lỗi (gồm cả Exception và Error).

    Còn gì tốt hơn khi không cần logs để bắt chính xác lý do và thời gian lỗi phần mềm xảy ra trong quá trình hoạt động. Bạn có thể tham khảo cách giải quyết như vậy tại https://www.takipi.com/

    Một số tính năng hối tiếc sẽ không có trong Java 9

    1. JSON API

    Trong một cuộc khảo sát với 350 nhà phát triển, JSON API và Jigsaw là 2 tính năng được náo nhiệt chờ đợi ra mắt song rất tiếc việc xây dựng API cho JSON lại thiếu kinh phí để hoàn thiện. Mark Reinhold, kiến trúc sư trưởng của nền tảng Java đề cập trong thư trao đổi về JDK9:

    “JEP(Java Express Parser) này(JSON) sẽ là mang lại nhiều hữu ích cho Platform song nhìn về đại cục nó không quan trọng bằng một số tính năng Oracle đang xem xét trong việc tài trợ chi phí trong JDK 9. Việc phát triển JSON API sẽ được xem xét trong JDK 10 hoặc các JDK kế tiếp.“

    2. API về các đơn vị tiền tệ

    Theo một thông tin khác, Oracle dường như sẽ không hỗ trợ. Dưới đây là câu trả lời của Anatole Tresch trưởng nhóm phát triển API của Oracle:

    @tkfxin Hiện tai chúng tôi chưa có sự hỗ trợ về API cho các đơn vị tiền tệ. Thay vào đó chúng tôi cùng với Spring sẽ tiếp tục cải thiện việc hỗ trợ nó cho ee
    — Anatole Tresch (@atsticks) June 16, 2015

    Bài gốc tại DZONE

    Dịch bởi Hồ Trí Lộc.

    Trả lờiXóa

nhudinhthuan@gmail.com