JavaScript xưa và nay

15/06/2009 22:45

Thường bị nhầm lẫn với ngôn ngữ lập trình Java, JavaScript (JS) thực ra là ngôn ngữ lập trình khác với Java về bản chất. Thuở ban đầu (năm 1995), JS được thiết kế nhằm phục vụ những nhu cầu đơn giản, dành cho người lập trình không chuyên.

JS ngày nay là một trong những ngôn ngữ lập trình phổ biến nhất thế giới, là phương tiện "sống còn" của mọi dịch vụ Google.

Một trong những nội dung thu hút sự quan tâm của khách tham dự hội thảo Google IO 2009 (27-28/5/2009) là việc trình diễn những ứng dụng Web được lập trình bằng JS, gọi tắt là ứng dụng JS. Các ứng dụng JS đặc sắc được Google trưng bày tại địa chỉ mạng Chrome Experiments nhằm phô diễn sức mạnh của trình duyệt Chrome (ứng dụng JS chạy nhanh nhất với trình duyệt Chrome).

Tại Chrome Experiments, người xem có thể thưởng thức thành quả của JS trong việc tái tạo những phần mềm "truyền thống" (phần mềm vẽ tranh, trò chơi xếp gạch,...). Các ứng dụng JS được cho là thú vị nhất thường là ứng dụng tạo hiệu ứng thị giác lạ thường hoặc thể hiện sự gắn bó chặt chẽ với trình duyệt Web. Chẳng hạn, ứng dụng Google Gravity làm cho ô tìm kiếm Google cùng những chi tiết khác của trang Web bỗng dưng... rơi rụng như có trọng lượng, nằm chồng chất lên nhau ở cạnh đáy của cửa sổ trình duyệt. Ứng dụng Browser Ball tạo ra nhiều cửa sổ trình duyệt và một quả bóng tưng nẩy từ cửa sổ này qua cửa sổ khác. Ứng dụng Ball Pool lại làm cho cửa sổ trình duyệt giống như một hộp đựng bong bóng: mỗi lần người dùng xê dịch cửa sổ trình duyệt, những quả bong bóng lại lắc lư, nẩy lên và rơi xuống nhẹ nhàng.


Ứng dụng Ball Pool được lập trình bằng JavaScript.

Với bất cứ ai từng dùng JS (dù chỉ thực hiện vài "tiểu xảo" cho trang Web hoặc xây dựng ứng dụng JS hoàn chỉnh), những ứng dụng JS tại Chrome Experiments đều đáng kinh ngạc! JS ngày nay dường như có thể tạo ra ứng dụng phức tạp bất kỳ. "Not Your Mother's JavaScript" (không phải là JavaScript của thời... mẹ bạn còn trẻ) - dòng chữ ấn tượng tại Chrome Experiments thể hiện bước phát triển vượt bậc của JS so với thuở ban đầu, khi JS được khai sinh bởi Brendan Eich trong cuộc chiến trình duyệt lần thứ nhất (giữa hai trình duyệt Netscape Navigator và Microsoft Internet Explorer).

Ra đời trong "bão táp"

Khi gia nhập công ty Netscape vào năm 1994, Brendan Eich vừa tròn 30 tuổi, là chuyên gia dày dạn kinh nghiệm với mười năm làm việc trong ngành công nghiệp máy tính. Chính vì vậy, anh được giao nhiệm vụ quan trọng: xây dựng ngôn ngữ lập trình dành cho những người thiết kế trang Web (người lập trình không chuyên), cho phép họ ghi những câu lệnh vào trang Web để thay đổi linh hoạt nội dung và hình thức của trang Web đang hiển thị. Việc kiểm tra dữ liệu do người dùng trình duyệt nhập vào biểu mẫu trên trang Web cũng đòi hỏi phải có một ngôn ngữ lập trình giúp thực hiện những tính toán đơn giản.

Vào thời đó, nội dung và hình thức của trang Web trong cửa sổ trình duyệt chỉ có thể thay đổi khi trình duyệt... tải trang Web khác. Ứng dụng Java trong trang Web có khả năng tạo ra tương tác với người dùng nhưng vẫn là một bộ phân biệt lập chạy bởi máy ảo Java, không có khả năng thay đổi phần còn lại của trang Web. Người sáng lập Netscape - Marc Andreessen - và người sáng lập Sun Microsystems - Bill Joy - đều nhất trí về sự cần thiết của một ngôn ngữ lập trình đơn giản hơn Java, cho phép tạo ra ứng dụng trong trang Web và chạy bởi trình duyệt (trình duyệt thông dịch các câu lệnh của ứng dụng trong trang Web và thi hành).

Andreessen đặt tên cho ngôn ngữ lập trình mới là Mocha nhưng Eich thích tên gọi LiveScript. Cuối cùng, tên gọi JavaScript được chọn nhằm đạt được hiệu quả quảng bá tốt hơn, đồng thời thể hiện sự hợp tác giữa Netscape và Sun (lúc bấy giờ Java đã là thương hiệu nổi tiếng của Sun).

JS đóng vai trò cầu nối, giúp ứng dụng Java tác động vào trang Web. Theo mô tả của Eich, vai trò của JS đối với Java gần giống như vai trò của VB (Visual Basic) đối với C/C++. Eich chủ ý xây dựng JS sao cho dễ học hơn Java, sao cho những người thiết kế trang Web có thể nhanh chóng đạt được điều họ muốn bằng JS (chẳng hạn, tạo dòng chữ thể hiện ngày giờ hiện tại, tạo dòng chữ nhấp nháy,...) mà không cần tìm hiểu mọi chi tiết về JS.


Brendan Eich – cha đẻ ngôn ngữ lập trình JavaScript.

Eich phải gấp rút hoàn thành bộ phận thông dịch ứng dụng JS trong trình duyệt. Netscape không có nhiều thời gian. Mỗi khi Microsoft phát hành phiên bản mới của trình duyệt Internet Explorer (IE), Netscape cũng phải phát hành phiên bản mới cho trình duyệt của mình với nhiều chức năng hơn. Để tạo sự vượt trội, Netscape phải có công nghệ đột phá, phải chứng tỏ rằng trình duyệt không chỉ là phần mềm hiển thị trang Web mà còn là phương tiện không thể thiếu để chạy phần mềm truyền qua mạng.

Với Eich và nhóm lập trình do anh phụ trách tại Netscape, cuộc cạnh tranh với công ty Microsoft hùng mạnh gần như một cơn ác mộng. Theo lời kể của Eich, đó là những ngày tháng mà mọi người trong nhóm hầu như cư ngụ tại trụ sở công ty, chỉ có những giấc ngủ ngắn trong đêm trên tấm nệm trải trên sàn hoặc trên võng gần bàn làm việc. Vách ngăn lưng chừng giữa các bàn làm việc không đủ kín đáo cho sinh hoạt thường ngày, các lập trình viên nữ phải tự "thiết kế" màn che chắn bao quanh chỗ ngồi nhằm tạo nên những góc riêng tư.

Eich thừa nhận rằng anh đã cật lực làm việc tại Netscape để có mức lương cao, nhằm tích lũy vốn liếng cho việc thành lập công ty riêng hoặc ít ra là một trường dạy... khiêu vũ (vì anh rất thích khiêu vũ và nhào lộn nhưng chưa có thời gian dành cho niềm đam mê đó).

Microsoft nhanh chóng thực hiện các ý tưởng tương tự Netscape với mức độ cao hơn: trình duyệt IE cho phép trang Web có thể chứa ứng dụng được lập trình bằng hai ngôn ngữ: JScript (giống JS) và VBScript (thuận tiện cho người đã quen thuộc với VB). Công nghệ ActiveX cho phép IE chạy chương trình truyền qua mạng hoặc khởi động chương trình có sẵn trên Windows (công nghệ này về sau trở nên... nguy hiểm cho người dùng IE).

Microsoft cung cấp miễn phí trình duyệt IE kèm theo Windows và gây áp lực, buộc các nhà sản xuất máy tính không được thỏa thuận với Netscape về việc cài đặt sẵn trình duyệt và các phần mềm công cụ của Netscape. Nguồn sống của Netscape bị cắt đứt.

Trong phút giây nguy nan, những người lãnh đạo Netscape đã có một quyết định quan trọng: công bố mã nguồn của trình duyệt và thành lập tổ chức phi lợi nhuận mang tên Mozilla để quản lý và phát triển mã nguồn đó, giữ cho nó đừng mất đi cùng với Netscape.

Không tin vào triển vọng của Mozilla, phần lớn nhân viên Netscape đều bỏ đi, chỉ vài người chuyển qua làm việc cho Mozilla, trong đó có... Eich. Từ bỏ ước mơ lập công ty riêng, Eich gắn bó với Mozilla từ thuở "èo uột" ban đầu cho đến nay. Ông hiện là giám đốc kỹ thuật của Mozilla - người có vai trò quyết định đối với hướng phát triển của trình duyệt Firefox.

Trỗi dậy với làn sóng Web 2.0

Sau khi chiến thắng Netscape, Microsoft thu gọn "đội quân" phát triển trình duyệt IE, việc cải tiến IE gần như chững lại. Tuy nhiên, trong thời gian cạnh tranh với Netscape, IE đã có một tiến bộ quan trọng: cho phép ứng dụng JS liên lạc ngầm với máy chủ, không đòi hỏi trình duyệt chuyển qua trang Web khác. Nhờ vậy, một trang Web duy nhất có thể cập nhật thông tin liên tục từ máy chủ khi tương tác với người xem. Cơ chế liên lạc mới ngày càng hoàn thiện trong IE và trong cả Firefox, trở thành công nghệ AJAX (Asynchronous JavaScript And XML).

Nhờ AJAX, các ứng dụng JS nở rộ sau một thời gian trầm lắng. Xuất hiện ngày càng nhiều những trang Web tương tác với người dùng ở mức cao, làm cho sự giao lưu cộng đồng phát triển mạnh mẽ và Web trở nên sinh động đến mức nẩy sinh thuật ngữ Web 2.0.

Do yêu cầu đặt ra cho ứng dụng JS ngày càng phức tạp, Google xây dựng và công bố bộ công cụ Google Web Toolkit (GWT), cho phép lập trình ứng dụng bằng Java và biên dịch thành... mã nguồn JS. Nhờ GWT, Google có thể xây dựng nhanh chóng ứng dụng JS với quy mô lớn. Mặt khác, Google quyết định xây dựng trình duyệt mới mang tên Chrome được trang bị máy ảo JS hoàn chỉnh, cho phép tăng tốc ứng dụng JS.

Với GWT và Chrome, Google đang thử nghiệm xây dựng những ứng dụng JS phức tạp hơn nữa (công nghệ Google Wave vừa được công bố ngày 28/5/2009 là một điển hình).

Nhờ sự phát triển của chuẩn HTML5 và SVG cho trang Web, ứng dụng JS ngày nay hoàn toàn có thể trở nên tinh tế, mạnh mẽ ngang ngửa với các ứng dụng Flash và Silverlight. Nhưng khác với Flash và Silverlight, ứng dụng JS chạy được ngay với mọi trình duyệt, không đòi hỏi cài đặt phần mềm bổ sung.

Eich vui mừng với sự trỗi dậy của JS nhưng không mong muốn việc tạo ra ứng dụng JS được tự động hóa bởi trình biên dịch của ngôn ngữ lập trình khác. Ông thiết kế JS để tạo nên ngôn ngữ lập trình thân thiện với con người và hạnh phúc khi JS được con người ưa chuộng.

Có lẽ Eich đã hài lòng khi biết rằng mọi ứng dụng JS ở Chrome Experiments đều được lập trình... bằng tay!

NGỌC GIAO

Bài liên quan:
Ý kiến bạn đọc (0)
Tên   Email

Lên đầu trang