WebAssembly – một định dạng nhị phân mới cho web

Ngoc Huynh

Google, Microsoft, Mozilla và các kỹ sư thuộc dự án WebKit hôm nay đã công bố về WebAssembly, một định dạng nhị phân mới để biên dịch các ứng dụng web.

Web phát triển mạnh dựa trên các tiêu chuẩn, và dù tốt hay xấu thì JavaScript vẫn là ngôn ngữ lập trình của web. Tuy nhiên, trong những năm qua, chúng ta đã chứng kiến ngày càng có nhiều nỗ lực để giúp các nhà phát triển có thể làm việc với một số giới hạn của JavaScript bằng cách xây dựng các compiler mà có thể chuyển dịch code của các ngôn ngữ khác sang JavaScript. Một số các dự án này tập trung vào việc thêm các tính năng mới cho ngôn ngữ (giống như ngôn ngữ TypeScript của Microsoft) hoặc tăng tốc độ JavaScript (giống như dự án asm.js của Mozilla). Hiện tại, nhiều trong số các dự án này đang bắt đầu phối hợp với nhau trong WebAssmbly.

Định dạng mới giúp cho các nhà lập trình biên dịch code cho trình duyệt (hiện tại chủ yếu là đi theo C/C++, với các ngôn ngữ khác), tại đó nó được thi hành bên trong JavaScript. Thay cho việc phải phân tích toàn bộ code, mặc dù có thể tốn một chút thời gian (đặc biệt là trên các thiết bị di động), nhưng WebAssembly có thể đọc code nhanh hơn đáng kể.

Ý tưởng ban đầu là WebAssembly sẽ chỉ cung cấp cho các nhà phát triển mục tiêu biên dịch cho web mà cuối cùng sẽ trở thành một tiêu chuẩn web được triển khai trong tất cả các trình duyệt.

Theo đó, các tệp tin của JavaScript đơn giản là các tệp tin dạng text được download từ server và sau đó được phân tách và được biên soạn bởi JavaScript trong trình duyệt. Nhóm WebAssembly đã quyết định đi theo định dạng nhị phân do code đó có thể được nén ép chặt hơn cả tiêu chuẩn của các tệp tin JavaScript dạng text và do sẽ nhanh hơn để JavaScript có thể đọc code định dạng nhị phân (nhanh hơn tới hơn 23 lần ở Prototype hiện tại) hơn là phân tách code asm.js.

asm.js của Mozilla có mục tiêu lâu dài là mang đến tốc độ near-native cho web. Dự án Native Client của Google cho việc chạy các native code trong trình duyệt cũng có mục tiêu tương tự. Trông có vẻ WebAssemly có thể mang đến những gì tốt nhất của các dự án này tới trình duyệt bây giờ.

Ở giai đoạn đầu tiên, nhóm WebAssembly có ý định mang đến một số chức năng tương tự như asm.js (và các nhà phát triển sẽ có thể sử dụng cùng công cụ Emscripten cho WebAssembly khi họ sử dụng cho việc biên dịch code asm.js).

Trong giai đoạn đầu, nhóm cũng có kế hoạch ra mắt polyfill library, công cụ này sẽ dịch code của WebAssembly sang JavaScript để mà nó có thể chạy ở bất kỳ trình duyệt nào – ngay cả khi các trình duyệt đó không có hỗ trợ WebAssembly gốc. Sau đó, các nhóm sẽ xây dựng nhiều công cụ (compiler, debugger….) và thêm hỗ trợ cho nhiều ngôn ngữ (Rust, Go and C#….).

Ngay khi các trình duyệt chính hỗ trợ định dạng mới, thì JavaScript và WebAssembly sẽ có thể lại khác nhau nữa.

Nhóm cho biết ý tưởng này không phải là để thay thế JavaScript, nhưng có thể cho phép nhiều ngôn ngữ hơn nữa được biên dịch cho web. Thực vậy, các cơ hội mà cả JavaScript và WebAssembly sẽ được sử dụng bên cạnh nhau và một số phần của ứng dụng có thể sử dụng các modun của WebAssembly (hoạt ảnh, compression, v.v…), trong khi giao diện người dùng vẫn sẽ được viết chủ yếu bằng JavaScript.

Hiếm khi chúng ta thấy tất cả các nhà cung cấp trình duyệt lớn phối hợp cùng với nhau trong một dự án giống như thế này, do đó đây là một điều đáng để chúng ta theo dõi trong thời gian tới.

Chia sẻ bài viết ngay

Nguồn bài viết : http://techcrunch.com/