Monday, November 19, 2007

Cần biết về Java

Java hoà hợp tất cả lại với nhau
Ngôn ngữ lập trình Java là một trong những chủ đề được nói đến nhiều nhất trong thế giới hiện nay, và logo của Java - một tách cà phê bốc khói, cùng các applet Java, tràn ngập khắp nơi trên World Wide Web. Vậy, hiện tượng Java có gì đặc biệt, và tại sao nó lại có thể làm thay đổi bộ mặt của thế giới điện toán? Một thực tế được công nhận là Java, ngôn ngữ lập trình của Sun Microsystems, có một sức mạnh đầy ấn tượng. Chỉ mới xuất hiện hai năm trước, Java đã được ngành công nghiệp này chấp nhận với tốc độ chưa từng có, kể từ khi hệ điều hành Windows bùng nổ. Uy lực của Java đã biến Sun Microsystems (từ sau đây gọi tắt là Sun), người khai sinh ra nó, từ một nhà cung cấp các công nghệ máy server đắt tiền thành cái tên quen thuộc trong từng nhà và là đối thủ nặng ký trong dòng chảy của công nghệ tính toán. KENNY mô tả Java như là một ngôn ngữ lập trình đơn giản, hướng đối tượng, hiểu - mạng, có thể biên dịch, mạnh, an toàn, độc lập với cấu trúc, dễ di chuyển, hiệu suất cao, đa luồng, và có tính động. Những điều đó không dễ giải thích. Vậy thì, cụ thể Java làm được gì? Về cơ bản, nó giúp các nhà phát triển phần mềm thực hiện được hai việc:
• Thứ nhất, họ có thể xây dựng nên các applet Java, đó là những trình ứng dụng mini được phân phối qua Internet và chạy trong một trình duyệt Web hiểu Java. Các applet Java tăng cường cho trang Web khả năng tương tác phong phú hơn và tính đa phương tiện tốt hơn so với khi dùng HTML bình thường.
• Thứ hai, các nhà phát triển phần mềm có thể xây dựng các trình ứng dụng hoàn chỉnh bằng Java, như bộ xử lý văn bản, bảng tính, hoặc bộ chương trình văn phòng tổng hợp (như Corel đang làm chẳng hạn). Ưu điểm của cách làm này là các trình ứng dụng chỉ cần viết một lần mà chạy được trên hầu hết mọi loại máy tính.
Sự thành công của Java trong việc phát động khả năng sáng tạo của cả người dùng cộng tác lẫn cá thể là ở chỗ họ sẽ càng có ấn tượng hơn khi so sánh một thực tế rằng Java đơn thuần là một ngôn ngữ lập trình, trong khi các công nghệ và sản phẩm khác thì mỗi cái còn phải kết hợp với nhiều tính năng huyễn hoặc khác.Tuy nhiên, Java là một ngôn ngữ lập trình có những khác biệt. Để thực sự hiểu được sức mạnh của Java và các nguyên nhân làm cho nó nhanh chóng được ưa chuộng, bạn phải xem xét hoàn cảnh khai sinh ra nó và bầu không khí mà nó đã sống để nắm bắt lấy khả năng sáng tạo của nền công nghiệp máy tính.
Java ra đời như thế nào
Năm 1990, CEO của Sun là Scott McNealy được nhân viên Patrick Naughton báo tin rằng anh ta được phép nghỉ việc để làm cho Next Software (công ty hiện đã được Apple Computer mua lại). Thay vì trả lời như thường lệ, McNealy đã yêu cầu Naughton ghi ra tất cả những điều mà anh ta cho là sai lầm của Sun và đề nghị những biện pháp giải quyết "như cương vị của người có thẩm quyền cao nhất". Bảng liệt kê của Naughton đã đánh trúng những điểm yếu nhất của Sun, và bộc lộ các vấn đề mà nhiều người khác đã nhận thấy từ lâu - kiến trúc phần mềm mới quá tầm, chỉ bận tâm vào một mảnh nhỏ của thị trường, cùng hàng loạt "sai lầm" khác. Trước ngày Naughton chuyển sang Next, Sun đã thuận theo những ý kiến bất đồng của anh ta và lập nên nhóm "Green" gồm sáu nhà biên soạn phần mềm hàng đầu - nhiệm vụ của họ là "thâm nhập thực tế" và lên đường với công nghệ phần mềm có sẵn cho thị trường tiêu thụ. Chuyện kể rằng nhóm "Green" đã trữ Coca Cola và sôcôla (thực phẩm của những nhà biên soạn phần mềm) đầy tủ lạnh rồi bắt đầu thảo tung các loại thiết bị điện tử, từ hộp điều khiển từ xa và Game Boys của Nintendo đến TV và đầu chạy bằng video. Mục đích của nhóm là tìm cách cho các thiết bị điện tử "nói" với nhau ngay cả trong trường hợp chúng sử dụng các chip khác nhau. Phần mềm đầu tiên, tiền thân của Java , được đưa ra với tên gọi không mấy truyền cảm: Oak. Đây là một ngôn ngữ hướng đối tượng hạ cấp, có đôi chút gần với ngôn ngữ lập trình C++. Một thiết bị điều khiển từ xa có giao diện người dùng kiểu hiển thị và một nhân vật hoạt hình gọi là Duke (nay trở thành vật biểu tượng của Java trên WWW), cả hai đều lập trình theo Oak, được nhóm xây dựng lên và giới thiệu. Sun hài lòng với kết quả này, và đưa "Green" lên thành một công ty riêng lấy tên là First Person. Cuộc tấn công mở đầu của First Person vào lĩnh vực thương mại đã hoàn toàn thất bại. Sau những cuộc đàm phán kéo dài, hợp đồng để lắp ráp các hộp đặt trên TV cho hãng Time-Warner đã thất bại ở phút cuối cùng. Phi vụ liên quan đến việc chuyển đổi bàn điều khiển trò chơi video cao cấp của hãng 3DO thành hộp đặt trên máy cũng gặp cùng định mệnh như vậy. Cho mãi đến gần cuối 1993, khi Marc Andreessen, nhân viên của Netscape, viết ra Mosaic, trình duyệt Web đầu tiên, thì Oak mới thể hiện chính mình. First Person cho rằng Oak sẽ là một ngôn ngữ hoàn chỉnh để xây dựng các nội dung đa phương tiện trực tuyến. Naughton đã ráp nối lại bộ khung của trình duyệt Web đầu tiên hoàn toàn được viết theo Oak. Đó là sự ra đời của WebRunner - sau này trở thành HotJava. Phần cơ bản trong hướng chiến lược mới đối với Oak là ban phát tự do sản phẩm này trên Internet. Oak được đặt tên lại là Java vào năm 1995 và đã được đưa lên Internet. Java thực sự thu hút được sự quan tâm của cộng đồng trực tuyến khi Marc Andreessen mô tả nó như là phần "lạnh" (cool piece) của công nghệ, một bộ phận của Netscape Navigator 2.0, và làm cho nó gây được sự chú ý của hàng triệu người dùng.
Câu hỏi hóc búa về java
Đó là lịch sử mà cũng có thể chỉ là hoang đường, nhưng một cách chính xác Java là gì? Tại sao nó lại làm cho Web sống động, kích thích mạnh mẽ các nhà lập trình C++ bảo thủ tự nguyện rời bỏ loại ngôn ngữ khó nổi tiếng đó, châm một ngòi lửa vào các Intranet cộng tác, và làm thay đổi hoàn toàn bộ mặt thế giới Internet? Cách trả lời tốt nhất cho những câu hỏi này là mổ xẻ từng từ trong định nghĩa của Sun để hiểu thấu đáo toàn bộ hiện tượng Java. Theo KENNY, Java là:
• Đơn giản (simple). Java đơn giản vì, mặc dù dựa trên cơ sở C++ nhưng Sun đã cẩn thận lược bỏ các tính năng khó nhất của C++ để làm cho ngôn ngữ này dễ sử dụng hơn. Là một ngôn ngữ lập trình hoàn toàn mới, nó buộc phải có dáng vẻ và sự cảm nhận tương tự như các ngôn ngữ phổ biến hiện hành đồng thời đòi hỏi khoảng thời gian huấn luyện lại tối thiểu và thân thiện hơn với người dùng. Do đơn giản, ngôn ngữ này cũng rất nhỏ - nên nhớ rằng từ đầu nó đã được xây dựng để dùng cho điện tử dân dụng như đầu chạy bằng video và hộp điều khiển từ xa, những thiết bị có không gian lưu trữ rất hạn chế.
• Hướng đối tượng (Object - oriented). Các ngôn ngữ lập trình hướng đối tượng có hàng loạt mô đun (đối tượng) có thể thay đổi và được xác định trước mà lập thình viên có thể gọi ra để thực hiện những nhiệm vụ cụ thể. Trong Java, các mô đun này được gọi là các lớp (class) và chúng được giữ trong thư viện lớp, tạo nên cơ sở của Java Development Kit (Bộ công cụ phát triển Java). Một trong những ưu điểm của việc lập trình hướng đối tượng là biên soạn khá nhanh. Cũng tương tự như đồ chơi trẻ con, sản phẩm của lập trình không hướng đối tượng là một tòa lâu đài làm bằng nhựa liền. Về sau nếu con bạn muốn có một chiếc ô tô nhựa, thì hoặc bạn phải kiếm một chiếc xe nhựa (có nghĩa là phải mua một đồ chơi mới), hoặc nấu chảy toà lâu đài đó rồi lấy nhựa của nó mà đúc thành chiếc ô tô. Nhưng trong lĩnh vực hướng đối tượng, con bạn có những khối Lego (loại đồ chơi gồm nhiều khối để trẻ con xây dựng thành nhiều đồ vật khác nhau), và dùng những khối đó để xây thành một toà lâu đài, chế tạo một chiếc ô tô hoặc bất kỳ cái gì mà nó muốn. Nói cách khác, giống như các khối Lego, các lớp của Java đều có thể sử dụng lại nhiều lần.
• Hiểu mạng (network-savvy). Java được lập ra để hoạt động trên mạng và có các thủ tục để có thể quản lý các giao thức mạng như TCP/IP, FTP và HTTP. Nói cách khác, Java được xây dựng để thực hiện hoàn toàn thích hợp trên Internet. Chương trình Java thậm chí có thể xâm nhập vào các đối thượng khác thông qua Internet bằng cách sử dụng URL (địa chỉ Web) để định vị chúng.
• Mạnh (robust). Khả năng mạnh phải phù hợp với thiết kế của ngôn ngữ, và hướng nó vào việc khắc phục những hư hỏng bộ nhớ và đảm bảo tính toán vẹn dữ liệu. Ví dụ, Java có tính năng "automatic garbage collection" (tự động thu gom rác) - có nghĩa là bộ nhớ được giải phóng một cách tự động - nên lập trình viên không phải bận tâm về việc quản lý bộ nhớ và nhờ đó ít có xu hướng làm những việc gây hỏng bộ nhớ.
• An toàn (secure). Khả năng hướng mạng của Java tự động đưa ra yêu cầu về an toàn. Đặc tính an toàn của ngôn ngữ lập trình này bắt nguồn từ việc nó có những phần hạn chế được cài sẵn nhằm đề phòng các chương trình Java thực hiện những chức năng như ghi vào ổ cứng của người dùng hay cho phép virus từ mạng hoặc từ môi trường phân tán thâm nhập vào.
• Độc lập với cấu trúc (architecture neutral). Đây là thuộc tính đặc sắc nhất của Java. Có nghĩa là Java không phụ thuộc vào hệ máy (platform - loại máy, HĐH) - các trình ứng dụng được biên soạn bằng Java có thể dùng được trên hầu như mọi dòng máy tính, từ PC Windows hoặc OS/2, cho đến Macintosh của Apple hoặc các trạm làm việc Unix. Để đánh giá hết ý nghĩa của tính độc lập với hệ máy này, hãy tưởng tượng bạn là một nhà biên soạn phần mềm, bạn mới đưa ra một trình duyệt Web dùng cho Windows 3.1. Do yêu cầu, bạn phải phát triển một sản phẩm giống như vậy nhưng dành cho người sử dụng các hệ điều hành khác như Mac OS, Unix hay các version khác của Windows (ví dụ 95 và NT). Để tiếp cận những thị trường đó, bạn phải sửa lại chương trình trên cơ sở hệ mới nếu không muốn nói là bạn có thể soạn thảo lại toàn bộ. Nhưng với Java bản chỉ phải biên soạn một lần và nó sẽ hoạt động trên mọi hệ thống, mọi hệ điều hành, miễn là bạn có một trình biên dịch Java hoạt động tronglúc chạy.
• Di động (portable). Đối với một phạm vi rộng, Java là loại có thể di chuyển nhờ khả năng độc lập với hệ máy. Đồng thời, các loại dữ liệu, giao diện, cũng như dáng vẻ và cảm nhận của Java đều giống nhau trên mọi hệ máy. Hệ thống các thành phần của java cũng có tính di động cao - nó được viết bằng Java.
• Có thể thông dịch (interpreted). Tính chất có thể thông dịch của Java có liên quan trực tiếp với tính không phụ thuộc vào hệ máy. Chương trình viết bằng C++ được dịch thành mã máy, thực chất ngôn nhữ đặc trưng riêng cho dòng bộ xử lý. Cho nên nếu bạn dịch chương trình trên một máy Pentium, nó sẽ không chạy được trên dòng máy khác như PowerPC chẳng hạn. Đó là lý do tại sao các phần mềm được biên soạn riêng cho Windows và cho Macintosh. Khả năng độc lập với cấu trúc không cho phép Java giải quyết vấn đề này. Lý do là vì có hai phần cho hệ thống phát triển ứng dụng Java -trình biên dịch (compiler) và trình thông dịch (interpreter). Thay vì mã máy, trình biên dịch sẽ biến chương trình của bạn thành các mã byte (bytecode), và đó là loại không phụ thuộc hệ máy. Những gì mà hệ thống của bạn cần là một trình thông dịch mã bytecode Java để biến mã byte đó thành ra mã mà bộ xử lý hiểu được (tương tự như phương pháp hoạt động của các chương trình Basic). Thành công của các applet Java trên World Wide Web là nhờ chúng chạy được trên mọi máy tính đang dùng browser hiểu Java. Netscape Navigator với trình thông dịch mã bytecode cài sẵn bên trong là một ví dụ.
• Tốc độ cao (high perfprmance). Khi Sun Microsystems mô tả Java có tốc độ cao, có lẽ họ muốn nói về mã bytecode được thông dịch hiệu quả như thế nào. Về tốc độ các applet hay chương trình Java thì nói chung đều chậm hơn các chương trình Java thì nói chung đều chậm hơn các chương trình được biên dịch viết bằng C++, vì chương trình này đã được tối ưu hoá từ trước cho hệ máy nhất định. Java đã phải trả giá về hiệu suất cho tính không phụ thuộc hệ của nó.
• Đa luồng (multithreaded). Đa luồng có nghĩa là ngôn ngữ Java cho phép xây dựng trình ứng dụng, trong đo, nhiều quá trình có thể xảy ra đồng thời. Tính đa luồng cho phép các nhà lập trình có thể biên soạn phần mềm đáp ứng tốt hơn, tương tác tốt hơn, và thực hiện theo thời gian thực.
• Tính động (dynamic). Java động vì nó được thiết kế để đáp ứng với môi trường tác nghiệp luôn trong tình trạng thay đổi. Khi có yêu cầu mới xuất hiện trên thị trường, các loại đối tượng mới có thể được bổ sung vào ngay.
Java là ngôn ngữ nóng
Dù bỏ qua các tính chất ưu việt khác, Java cũng không phải là ngẫu nhiên được xem là một sản phẩm của WWW từ nguyên thuỷ. Điều đầu tiên mà mọi người trải qua đối với Java là một hộp màu trắng nằm ngay giữa trang Web khi tải xuống một applet Java. Bạn sẽ thấy applet Java trong vô số các băng quảng cáo trên WWW, nó giúp các hình ảnh, âm thanh, và video trở nên hấp dẫn hơn, không độc quyền, và có thể làm theo yêu cầu. Applet Java được dùng làm cơ sở cho những giải pháp thương mại điện tử, cũng như để tô điểm cho những trình ứng dụng hiện thực ảo bằng hình động và tương tác với người dùng. Tuy nhiên, Java cũng đang chuyển mình để có tầm vóc cao hơn cái vốn có hiện nay là một màn cửa sổ đa phương tiện cho Web. Java đang vươn lên để thành một hệ máy tính mà trên đó các nhà lập trình có thể xây dựng nên trình ứng dụng không phụ thuộc nền. Java đang thực hiện một công việc vĩ đại là bảo đảm thành công cho những bước chuyển mới liên quan đến các ngôn ngữ lập trình đã xác lập. Các nhà biên soạn phần mềm chủ chốt đã đưa ra, hoặc đang làm việc tích cực trên các phiên bản Java của những ứng dụng chính (Corel Office for Java) hoàn toàn bằng Java. Corel Office là một phần mềm dạng mô đun có thể phát triển, và được xâydựng nhằm cho phép hợp tác nhóm và phân phối tài liệu qua mạng. Corel Office for Java (phiên bản beta) có thể tải xuốn từ Web site của Corel (http://www.corel.com), và chạy dưới dạng trình ứng dụng đơn với JDK 1.02 của JavaSoft hoặc sử dụng một trình duyệt Web hiểu Java như Netscape Navigator 3.01, Netscape của Sun. Office for Java cũng có thể chạy dưới kênh Castanet (xem phần cuối). Lotus cũng đã gia nhập hàng ngũ Java nhờ có hậu thuẫn của IBM. Theo sát gót Corel, Lotus đang làm việc trên phiên bản Java của phần mềm SmartSuite, nhưng bằng cách tiếp cận khác. SmartSuite sẽ được tạo lại dưới dạng nhiều thành phần Java nhỏ (tên gọi chung là Kona) được gắn với nhau, và có thể tuỳ biến theo ý muốn người dùng. Ví dụ, nếu bạn chỉ cần dùng một ít tính năng trong các trình ứng dụng xử lý văn bản và bảng tính, Kona sẽ cho phép bạn tải xuống chỉ các phần nhỏ cần thiết, tránh được phần mềm dư (bloatware). Java cũng là vị cứu tinh cho IBM. Lần đầu tiên trong nhiều năm, công ty này tìm thấy con đường để cho các máy mainframe, workstation, server, và PC có thể dùng chung cùng một phần mềm; đó là đưa Java vào trong các hệ điều hành không tương hợp trước đây của mình. Java không những đã gây xáo trộn trong đấu trường phần mềm do làm cho Microsoft lo lắng về tính vô địch của nó, mà còn là chất xúc tác cho máy tính mạng của Oracle (Network Computer - NC) thanh hiện thực. NC là một PC hay một thiết bị thu gọn dùng để chạy mạng, hoặc nối với Internet qua modem. Java đang nhanh chóng thâm nhập vào cấu trúc điệntoán cho phép các thiết bị ghép mạng có thể nói chuyện với nhau. Máy tính mạng sẽ có khả năng sống ngoài mạng hoặc Web bằng cách tải xuống các thành phần Java nhỏ có thể dùng nhiều lần, tức là các applet, các trình ứng dụng theo yêu cầu. Những hãng lớn như IBM, Apple, Netscape và Oracle đang cùng làm việc với Sun để biến các sản phẩm này thành hiện thực. Nhiều máy NC sẽ chạy trên JavaOS, hệ điều hành chuyên để chạy các applet Java. Hệ điều hành này được chạy trên máy tính mạng JavaStation của Sun, loại máy thin client, được nối với server trung tâm lớn qua mạng nội bộ hoặc đường dẫn lớn (fat pipe). Một số chuyên gia công nghiệp đã bác bỏ luận điểm cho rằng NC là sự trở lại của terminal câm những năm 1960 và 1970. Số mệnh của NC sẽ phụ thuộc vào sự phát triển của Java cũng như những cải thiện trong ngành viễn thông.

No comments: