Search…

Lược Sử ECMAScript

11/07/20207 min read
Quá trình hình thành, lịch sử ra đời của JavaScript qua các giai đoạn thăng trầm.

Khai sinh JavaScript

... vào tháng 5 năm 1995, bởi Brendan Eich khi ông còn ở Netscape.

Tên đầu tiên của JavaScript là Mocha, được đặt bởi người sáng lập Netscape là Marc Andreessen, sau đó 4 tháng Mocha được đổi tên thành LiveScript.

Vào thời điểm đó, Sun Microsystems sở hữu thương hiệu (trademark) cho cái tên JavaScript. Netscape đã mua giấy phép của họ và đổi tên LiveScript thành JavaScript vào tháng 12 năm 1995. Việc sử dụng cái tên JavaScript mang nhiều ý nghĩa về marketing, không có ý nghĩa về mặt kỹ thuật vì cái tên Java trong thời điểm đó rất nổi tiếng.

ECMAScript

Từ năm 1996 đến 1997, Netscape đưa JavaScript vào tổ chức Ecma International để trau chuốt và bảo trì đặc tả ngôn ngữ cho phép các nhà cung cấp trình duyệt khác phát triển dựa nền tảng họ đã thực hiện.

Uỷ ban kỹ thuật Ecma 39 (TC39) được thành lập để tiếp tục phát triển ngôn ngữ và cuối cùng cho release ECMA-262 Ed.1 vào tháng 6 năm 1997. ECMAScript là tên của tiêu chuẩn chính thức và JavaScript là phiên bản ngôn ngữ nổi tiếng nhất của chuẩn này. ActionScript (Macromedia) và JScript (Microsoft) là hai ví dụ về các phiên bản ngôn ngữ khác.

Các phiên bản JavaScript được xác định bởi thông số kỹ thuật mang tên chính thức của ngôn ngữ. Ví dụ, phiên bản tiêu chuẩn đầu tiên của JavaScript là ECMAScript 1 và hiện tại thường được viết tắt thành ESX và X đã được thay đổi vào năm 2016 khi TC39 chuyển sang release hàng năm.

Cách thức các tính năng ra đời

Tất cả các tính năng trong ECMAScript (ES) đều trải qua một quy trình đề xuất chính thức.

Một đề xuất cho một tính năng mới thường bắt nguồn từ cộng đồng giữa các nhà phát triển, bắt đầu bằng một bản phác thảo hoặc một đề xuất, cung cấp một mô tả ban đầu về tính năng được đề xuất. Nếu TC39 đánh giá tính năng này hữu ích, nó sẽ được chuyển sang giai đoạn Proposal - đề xuất.

Giai đoạn tiếp theo là In Implementation theo đó tính năng sẽ được hiện thực bằng 2 engine JavaScript. Các hiện thực này cùng với phản hồi từ cộng đồng developer giúp định hình đề xuất trong quá trình phát triển nó. Cuối cùng, nếu đề xuất tiếp tục chứng minh là có giá trị, TC39 sẽ chấp nhận và tính năng này sẽ được thêm vào phiên bản tiếp theo của ECMAScript và được xem là một Standard - tiêu chuẩn.

Thăng trầm của ECMAScript

ECMAScript 1, ECMAScript 2, ECMAScript 3

Tháng 6, năm 1997, ECMAScript 1 phiên bản tiêu chuẩn đầu tiên cho ngôn ngữ JavaScript được phát hành.

1998, ECMAScript 2 được phát hành với các thay đổi nhỏ để giữ đồng bộ song song với chuẩn ISO cho JavaScript.

18 tháng sau vào tháng 12, năm 1999, ECMAScript 3 được phát hành, giới thiệu nhiều tính năng phổ biến của JavaScript mà chúng ta đang sử dụng như regex, try/catch và format cho numeric output.

ECMAScript 4 - Bị ruồng bỏ

Đầu năm 2000, ECMAScript 4 bắt đầu được xây dựng, và đây là 1 "big update" - một bản nâng cấp khổng lồ cho ES3 và thậm chí còn có tên mã JavaScript 2.

Năm 2003, TC39 phát hành một bản sơ bộ chỉ chứa một số chức năng dành cho ES4. JScript của Microsoft và ActionScript của Adobe đã triển khai một số tính năng này nhưng đã dừng hoàn toàn sau khi bản sơ bộ đó được phát hành.

Trong khoảng thời gian này, một kỹ thuật mới cho việc tạo các ứng dụng web động client-side sử dụng JavaScript đã xuất hiện, mang lại một chút phục hưng cho JavaScript. Các thư viện công cụ JavaScript như jQuery, Prototype, Dojo và Mootools đều được phát hành trong giai đoạn tái sinh JavaScript này. Jesse James Garrett đưa ra cách tiếp cận mới là “AJAX” vào tháng 2 năm 2005.

Đây rất có thể là lý do tại sao TC39 được chọn để tái lập và tiếp tục công việc trên ES4 vào mùa thu năm 2005. ES4 được phát triển tiếp tục dựa trên ES3, bản báo cáo ES4 sơ bộ và vài phần từ ActionScript và JScript.

Tuy nhiên, khi TC39 kết hợp lại thì lại chia thành 2 phe riêng biệt. Ở một bên là ECMAScript 4 Camp, gồm Adobe, Mozilla, Opera & Google, những người hướng về bản nâng cấp lớn. Ở bên còn lại là Microsoft & Yahoo, ECMAScript 3.1 Camp, tìm kiếm một tập con của ES4, và là một bản nâng cấp của ES3 chứa một số tính năng nhỏ và sửa lỗi.

Xung đột diễn ra khá sâu, may mắn là vào tháng 7 năm 2008 tại một cuộc họp ở Oslo, Na Uy, một thỏa hiệp đã được đề ra:

  • Về cơ bản, ECMAScript 3.1 sẽ trở thành ECMAScript 5 - bản nâng cấp của ES3.
  • TC39 phát triển một bản release chính mới sẽ là phiên bản thu nhỏ của ES4, nhưng phạm vi lớn hơn so với ES5. Bản release chính này có tên mã là Harmony và là phần lớn của những gì chúng ta biết bây giờ là ECMAScript 6.
  • Một số tính năng khác của kế hoạch ES4 ban đầu bị loại bỏ để được chọn trong các phiên bản tiếp theo.
  • Sự thỏa hiệp đã khiến ECMAScript 4 bị hủy bỏ, nhưng một quyết định mới được thông qua rằng mọi ý tưởng mới sẽ được phát triển với sự đồng thuận của TC39 để ngăn chặn các rủi ro trong tương lai.

ECMAScript 5 - Phiên bản ổn định

ECMAScript 5 - bản nâng cấp ES3 được phát hàh vào tháng 12 năm 2009, hơn một thập kỷ sau ES3. Đây là phiên bản JavaScript được hỗ trợ đầy đủ trong tất cả các trình duyệt đang sử dụng ngoại trừ Internet Explorer 8.

Được thêm một số cải tiến vào thư viện tiêu chuẩn:

  • Hỗ trợ parse/serialize JSON
  • Các phương thức array prototype (như map và forEach)
  • Các phương thức liệt kê thuộc tính (như Object.keys).

Cập nhật cú pháp:

  • Cho phép dấu phẩy ở cuối danh sách hoặc định nghĩa đối tượng
  • Cho phép các từ khoá (như new hoặc for) làm thuộc tính đối tượng
  • strict mode, giúp JavaScript trở thành ngôn ngữ sạch hơn bằng cách chặn một số tính năng, thực hiện kiểm tra runtime và xử lý được nhiều exception.

ECMAScript 6 - Làn gió mới

ECMAScript 6, là phiên bản cập nhật với nhiều điều mới mẻ, dự định phát hành vào năm 2013, nhưng không được phát hành chính thức cho đến tháng 6 năm 2015.

ECMAScript Harmony là tên mã cho nhóm các tính năng sau ES5 nhưng các mục tiêu của nhóm tính năng này vẫn còn quá xa vời, vì vậy TC39 đã quyết định chia thành hai giai đoạn:

  • Các tính năng ưu tiên cao nhất sẽ có trong bản release tiếp theo của ECMAScript, có tên mã là ECMAScript.next để không lặp lại thất bại như ECMAScript 4.
  • Các tính năng còn lại sẽ được xem xét vào các phiên bản sau.

Khi ECMAScript.next đủ lông đủ cánh, tên mã bị loại bỏ và bắt đầu được biết đến như ECMAScript 6, hoặc đơn giản là ES6. Tuy nhiên, vào cuối năm 2014, TC39 đổi tên ECMAScript 6 thành ECMAScript 2015 theo kế hoạch mới để phát hành ECMAScript hàng năm. Vào thời điểm này, tiêu chuẩn đã được biết đến rộng rãi là ECMAScript 6, vì vậy hầu hết mọi người vẫn gọi và đề cập nó là ES6.

Các tính năng của ES6 dần được đưa vào trình thông dịch của các trình duyệt và máy chủ:

  • Trình duyệt Edge mới của Microsoft hỗ trợ 67% tính năng ES6 được hỗ trợ.
  • Firefox 11 (phát hành vào tháng 3 năm 2012) là trình duyệt đầu tiên hỗ trợ ES6.
  • Các transpiler như Babel và Tracer cho phép bạn chuyển đổi code ES6 xuống code ES5 để tương thích với các trình duyệt.

Bài viết được tham khảo từ Wikipedia.

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024