Con đường phát triển của Java

I. Java ra đời

Năm 1990, Sun Microsystems bắt đầu thực hiện dự án có tên gọi Green nhằm phát triển phần mềm trong các thiết bị điện tử dân dụng. James Gosling và nhóm Green được giao trách nhiệm triển khai. Ban đầu, Gosling sử dụng C++ để viết phần mềm điều khiển, hiển thị số cho thiết bị như VCR (Video Cassette Recorder), PDA (Personal Digital Assistant). Nhưng ngay sau đó, Gosling phát hiện ra rằng C++ không phải là ngôn ngữ thích hợp cho công việc này. Lý do đơn giản là mã chương trình C++ sau khi biên dịch hoàn toàn lệ thuộc vào hệ vi xử lý cụ thể, không thể đem áp dụng với các hệ vi xử lý khác. Các hệ vi xử lý thì rất đa dạng và có vòng đời khá ngắn ngủi. Việc thay đổi đó dẫn đến việc phải điều chỉnh lại chương trình nguồn. Đây là một công đoạn rất tốn kém.

Gosling giải quyết vấn đề này bằng cách tạo ra một ngôn ngữ lập trình mới có tên là Oak. Ngôn ngữ này có cú pháp giống như C++ nhưng bỏ qua các tính năng “nguy hiểm” của C++ như truy cập trực tiếp tài nguyên hệ thống, các phép toán với con trỏ, nạp chồng toán tử… Oak được thiết lập với mục đích tạo tính tương thích cao (chạy trên nhiều hệ vi xử lý khác nhau), giúp các nhà sản xuất thiết bị có thể thay đổi kiểu phần cứng mà không phải viết lại phần mềm trước đó.

Năm 1994, họ đã đưa ra WebRunner, một trình duyệt Web viết bằng Oak (sau này trình duyệt này được đổi tên thành HotJava và hiện nay vẫn đang được tiếp tục phát triển).

Cuối cùng, vào năm 1995, Oak được đổi tên thành Java và đưa ra trình diễn tại SunWorld 95. Từ đó đến nay, Java nhanh chóng phát triển: Thậm chí trước khi trình dịch Java đầu tiên được đưa ra vào tháng 1 năm 1996, Java đã được coi là một chuẩn công nghiệp cho Internet.

II. Java và Microsoft:

Kể từ khi Microsoft nhận ra sức mạnh cạnh tranh hết sức mạnh mẽ từ Java của Sun Microsystems, nhà sáng lập Bill Gates đã lập tức phải phát biểu rằng: "Java là một ngôn ngữ khác". Khi ông ta tuyên bố như vậy, trong đầu nhà chiến lược tài ba này đã xuất hiện hàng trăm câu hỏi và vô số những nỗi lo âu khác. Ông ta hiểu rằng thời kì của Unix chưa bao giờ có dấu hiệu kết thúc và phía đằng chân trời, Linux đang bắt đầu thức dậy. Sở dĩ Windows có khả năng thống trị thị trường máy tính cá nhân là bởi lẽ hệ điều hành này có một giao diện đồ họa đẹp, dễ sử dụng và đặc biệt là có sẵn rất nhiều phần mềm, tiện ích chạy trên Windows. Bill Gates hiểu rằng giao diện đồ họa thì rất dễ cải tiến và Windows còn tồn tại chừng nào tính dễ sử dụng mà thế giới các tiện ích chủ yếu chạy trên Windows.

Vào thời điểm những năm 1996 – 1997, Linux còn quá mới mẻ, FreeBSD vẫn chủ yếu thu mình trong những chiếc máy chủ, Lindows chưa xuất hiện, Java ra mắt với những chiến dịch marketing dồn dập và hiệu quả của Sun. Khẩu hiệu "Viết một lần, chạy mọi nơi" khiến cho Java nhanh chóng thu hút được hàng triệu nhà phát triển, điều mà Visual Basic phải mất rất nhiều năm". Viết một lần chạy mọi nơi cũng đồng nghĩa với việc Windows sẽ dần mất đi vị trí là một nền tảng thống trị cho các phần mềm tiện ích, games… Một phần mềm viết bằng Java sẽ chạy với các tính năng đồng nhất trên tất cả các nền tảng có hỗ trợ máy ảo Java. một khi điều này xảy ra, những người sử dụng sẽ dần bỏ đi cái mối quan tâm rằng họ cần nền tảng nào để chạy được phần mềm đó. Một khi nền tảng không còn quan trọng, Windows cũng chẳng còn quan trọng.

Trong một bài phỏng vấn "hậu Unicode bug" (lỗi bảo mật đã làm khiếp đảm gã khổng lồ Redmond này), các chuyên gia bảo mật của Microsoft đã hết sức lúng túng trước câu hỏi rằng: Tại sao hãng lại không phản ứng kịp thời để cho Dmitri năm lần bảy lượt xâm nhập vào các máy chủ của hãng. Thậm chí hacker này còn tuyên bố, anh ta đã nắm được toàn bộ cấu trúc file và hệ thống máy chủ của Microsoft. Nếu muốn anh ta đã có thể up lên đó vài tệp tin nhỏ. Mặc dù không muốn, song trước tình thế này, người phát ngôn của hãng đã buộc phải tuyên bố rằng hệ điều hành Windows có quá nhiều lỗi không thể sửa được do nó động chạm đến toàn bộ cấu trúc thiết kế của hệ điều hành. Nếu một lỗi được patch lại thì sẽ có hàng nghìn lỗi khác lại xuất hiện.

Không chỉ bị coi là yếu kém trong các tác vụ đòi hỏi độ ổn định và độ bảo mật cao, hệ điều hành Windows còn khá đắt về mặt giá cả. Trong bối cảnh nền kinh tế không lấy gì làm sáng sủa và áp lực cạnh trạnh ngày càng gia tăng, các công ty buộc phải tính tới chuyện chi phí và giá thành sản phẩm. Windows và các công cụ do Microsoft tạo ra đã trở thành một gánh nặng cho con đường kinh doanh của họ.

Trong khi đó với những nỗ lực từ phía các vendor, hệ điều hành Linux ngày càng được cải tiến để trở nên mạnh mẽ và hoàn thiện hơn. Yếu kém nổi bật nhất của hệ điều hành mã nguồn mở Linux là ở chỗ số phần mềm chạy được trên nó là quá nhỏ so với các tiện ích của Windows. Nhưng mặc dù thế giới Unix là thế giới khai sinh ra các hacker và cộng đồng mã nguồn mở thì việc phát triển các tiện ích trên Unix, Linux cũng không hề đơn giản trong bối cảnh mà thị phần Windows chiếm đến 90% trên các desktop. Một lập trình viên khi muốn phát triển ứng dụng của mình, anh ta luôn phải đặt ra vấn đề dùng công cụ hay ngôn ngữ lập trình nào để viết và biên dịch chương trình. VB, VC++ là các công cụ/ngôn ngữ để tạo ra các phần mềm chạy trên Windows. Ngôn ngữ C/C++ là các ngôn ngữ biên dịch, mã nguồn sẽ được dịch thẳng sang mã máy. Vì thế khi bạn viết và dịch một chương trình C/C++ trên chip x86-Intel/Windows 9x, kết quả bạn nhận được sẽ là một chương trình chỉ có khả năng chạy trên những máy có cấu hình như vậy.

Khi mà các hãng phần mềm hết sức lúng túng trong việc viết các ứng dụng chạy được đa nền tảng thì Java đã ra mắt và nhanh chóng nhận được sự ủng hộ hết sức nhiệt tình từ phía các nhà phát triển. Cùng lúc đó, sự lên ngôi của Internet đã như hun đúc thêm bầu không khí cổ động xung quanh Java. Java là một ngôn ngữ nhỏ gọn, đẹp về cú pháp và cấu trúc, được thiết kế để chủ yếu xây dựng các ứng dụng cho mạng. Sự phát triển quá nhanh của Java đã khiến quản trị viên của Microsoft lo ngại. Một luật sư của hãng đã khuyên Bill: "Hãy đứng về phe chiến thắng". Ngay lập tức, Microsoft đã hành động. Bắt đầu là một bản hợp đồng kí kết với Sun nhằm dành được giấy phép phân phối JVM trên các ứng dụng của Microsoft bao gồm hệ điều hành, IE và một số ứng dụng khác. Bước tiến tiếp theo là các luật sư của hai hãng thỏa thuận để Microsoft có thể truy cập vào được mã nguồn JVM nhằm đạt được những điều kiện thuận lợi trong việc xây dựng Visual J++, bộ công cụ được thiết kế với mục đích ban đầu là để hỗ trợ việc lập trình bằng ngôn ngữ Java. JDK của Sun là một công cụ mang đậm chất Unix trong khi những người sử dụng Windows đã quá quen với các công cụ lập trình trực quan trong VB, VC++.

Khi VJ++ bước sang phiên bản 3.0, rất nhiều lập trình viên trên Windows đã coi bộ công cụ này là bộ công cụ phát triển Java năng suất và ấn tượng nhất. Nhiều lập trình viên trên thế giới đã hết sức vui mừng vì gã khồng lồ về phần mềm này đã có một cách ứng xử rất fairplay với Java nhưng nỗi vui mừng đó mau chóng trở thành nỗi thất vọng. Đến phiên bản 6.0, trong khi Sun đã tung ra JDK 1.3 với các tính năng mới rất ấn tượng thì VJ++ vẫn chỉ hỗ trợ các đặc tính ngôn ngữ của Java có trong JDK 1.1.4. VJ++ không hỗ trợ cũng như không hiểu các mã có chứa các tính năng do Sun cập nhật cho các phiên bản sau JDK 1.1.4. Thêm vào đó, Microsoft đã cố ý phát triển trình biên dịch VJ++ này theo một chiều hướng lệch lạc với Java. Khi một lập trình viên xây dựng ứng dụng Java với MS J++, họ đã không hề biết rằng phần mềm này đã biên dịch mã nguồn ra ra một thứ byte code được tối ưu hoá để chạy rất tốt trên Windows nhưng lại rất ít có khả năng tương thích với các máy ảo Java chạy trên Linux, Solaris, Mac, OS/2, AIX và các hệ điều hành khác. Lúc này thì mục đích của Microsoft đã dần lộ ra: bằng việc thu hút càng nhiều các nhà phát triển Java sử dụng công cụ VJ++, Microsoft dẫn lái họ đi theo một con đường đã định sẵn: tách họ khỏi Java, tư duy Java theo kiểu của Microsoft, viết nên các chương trình Java không tương thích với JVM của Sun và thực chất là tạo ra cho họ một thói quen viết các chương trình chỉ chạy được trên Windows. Trong phòng thí nghiệm, các chuyên gia phần mềm tài năng của Microsoft cũng đã âm thầm xây dựng JVM của riêng hãng, không tương thích với JVM của Sun, dựa trên mã nguồn JVM của Sun cung cấp theo hợp đồng trước đây với Sun. Đầu năm 2002, họ tung ra Microsoft Visual J#, phiên bản tiếp theo của J++ có sử dụng máy ảo Java mới của Microsoft nhằm giúp cho các lập trình viên J+ trước đây dễ dàng chuyển sang lập trình trên môi trường .NET. Bằng việc tích hợp JVM này vào các chương trình thuộc dự án .NET, các lập trình viên Java sẽ nhận được các kết quả hết sức thất vọng cho các chương trình Java được xây dựng để chạy trên JVM của Sun. Kết quả là các vụ kiện đã nổ ra.

Sưu tầm

2 thoughts on “Con đường phát triển của Java

Leave a Reply

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s