PDA

View Full Version : Bài 1 : Hiện tượng Java



quangvu
12-09-2002, 09:14
<BLOCKQUOTE>


<BLOCKQUOTE style="MARGIN-RIGHT: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HIỆN TƯỢNG JAVA

Gần&nbsp;đây bổng dưng các hiệu sách chứa đầy các sách về Java, số lượng có phần lấn áp cả các sách về Visual Basic và SQLServer. Thêm nữa, trên báo chí ta thấy các quảng cáo kiếm người lập trình Java có vẻ thành khẩn lắm vì lương hướng và điều kiện họ cung ứng xem rất hấp dẩn. Thậm chí có chỗ còn dụ các ứng viên tương lai chỉ đến nói chuyện, tức là phỏng vấn (interview), thì không cần biết có ai mướn ai, hay ai chịu làm cho ai, trước hết ứng viên sẽ được tặng cho một tá bia.
Thế mấy hảo thủ Java họ tu hành cách nào, hay có những chiêu thức bí truyền nào mà được các mạnh thường quân chiếu cố đặc biệt như vậy?
Java đã đi từ chỗ một ngôn ngữ lập trình đến trở thành một kỹ nghệ. Nó được võ lâm tin học tiếp nhận nhanh hơn bất cứ kỹ thuật tân tiến nào khác. Khi Java được SUN Microsystems đem ra trình làng hồi tháng 5, 1995, thế giới lập trình rất hứng khởi vì WEB đang đối diện trước nhiều vấn đề nhức đầu mà ngôn ngữ lập trình hiện hành không thích hợp để đáp ứng.
Làm sao ta có thể phát hành những trang Web chứa nhiều dữ kiện cần được display (bày ra) lại thường xuyên để cập nhất hóa theo giá trị biến đổi của chúng, mà không cần nhiều version (bản) lập trình ứng dụng giúp đở (custom helper application) giông giống nhau, mỗi version tương ứng cho nền cứng (hardware platform) và hệ điều hành (Operating System) của người dùng? Dã sử có được nhiều version đi nữa thì làm sao giúp người thăm viếng Web site download đúng version của helper application để install (cài đặt) trước khi nhìn thấy đuợc thứ gì của Website?
Nhờ cho phép người phát hành các trang Web có thể tự động gởi helper application đến người thăm Web site không cần biết Webbrowser đang chạy trên máy nào, Java đã được võ lâm tin học đặt cho biệt danh là "Ngôn ngữ của Internet". Ấy là vì Java được thiết kế cho mạng (Network) để "Viết một lần, chạy bất cứ nơi đâu" (Write Once, Run Anywhere). Có lẽ đó là ưu điểm sáng chói nhất của Java.
[/font]


<H3>Lịch sử Java </H3>Ngược dòng lịch sữ, Java là một sản phẩm của Sun Microsystems, một công ty chuyên sản xuất và thiết kế các mạng Workstation (trạm làm việc) UNIX . Để yểm trợ hoạt đông phần cứng chính của mình, Sun cũng phát triển phần mềm, đặc biệt nổi tiếng là hệ điều hành Solaris (một loại Unix) cho nền Intel và hệ thống tập tin mạng (Network File System - NFS). 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, chuyên gia lập trình phần mềm mạng được giao trách nhiệm thực hiện dự án.
Ban đầu, Gosling sử dụng C++ để triển khai phần mềm cho các 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. Tuy C++ uyển chuyển đủ để điều khiển hệ thống, nhưng nó lại dễ làm cho hệ thống treo (hang).
C++ cho phép ta xâm nhập trực tiếp đến tài nguyên hệ thống (system resources) và người lập trình có thể tự mình quản lý các tài nguyên này. Đặc tính nầy là một con dao hai lưỡi: cho lập trình viên nhiều tự do, nhưng sự tự do ấy khiến C++ trở thành một công cụ nguy hiểm để dùng cho việc viết các phần mềm có độ tin cậy cao (high reliability), khó té (robustness), tính tương thích cao (platform independent), tức là chạy trên nhiều loại chip khác nhau, đặc biệt trong việc điều khiển các thiết bị điện tử dân dụng.
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. Khi ngôn ngữ Oak trưởng thành, World Wide Web cũng đang bước vào thời kỳ phát triển mạnh mẽ, và đội ngũ phát triển phần mềm của Sun thấy rằng đây cũng là ngôn ngữ đặc biệt thích hợp cho Internet. Vào năm 1994, họ đã đưa ra WebRunner, một Webbrowser viết bằng Oak, sau này đổi tên thành HotJava .
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.
Trong 6 tháng đầu năm 1996, nhiều nhà sản xuất phần mềm cũng như phần cứng đứng đầu thế giới đã mua bản quyền công nghệ Java từ Sun, bao gồm Adobe, Asymetrix, Borland, IBM, Macromedia, Microsoft, Novel, Oracle, Spyglass và Symantec... Các hãng này sẽ kết hợp Java vào các sản phẩm của họ như: các phần mềm, hệ điều hành, công cụ phát triển (development tool)..



<H3>Kết tụ các tinh hoa kỹ thuật nhu liệu </H3>Java rất giống C++, nhưng đơn giản hơn, đặc biệt là không có dùng pointer, structure và union. Pointer là thủ phạm của những Memory leak bugs.
Ta biết rằng một ngôn ngữ lập trình tuy hay nhưng rắc rối và có nhiều thứ phải nhớ thì khó trở nên thịnh hành được. Điển hình là ADA, một ngôn ngữ được Bộ Quốc Phòng Mỹ đặt cho Honeywell-Bull chế ra để thay thế gần 400 ngôn ngữ lập trình khác nhau trong các cơ quan của bộ. Các viên chức Bộ Quốc Phòng nghĩ rằng ADA sẽ là ngôn ngữ lập trình phổ thông cho mọi nền (platform), và như thế sẽ tiết kiệm rất nhiều về huấn luyện và bảo trì.
Thực tế thì không được như vậy. Rất nhiều lập trình viên ADA viết Pascal thay vì ADA, tức là không dùng các ưu điểm của ADA.
Ngay cả C++, tuy rất hay và gần gũi với C, nhưng cũng vì rắc rối mà không thịnh hành bằng VB.
Đúng ra ngoài C++, Java còn thừa kế nhiều tinh hoa từ những ngôn ngữ đi trước như Objective C, Smalltalk của Xerox và Modula-3 của giáo sư N. Wirth (cha của Pascal). Mẫu hình lập trình cách đối tượng và cú pháp C đã quen thuộc với các cao thủ võ lâm tin học trong hai thế hệ nên việc chyển sang Java gần như hoàn toàn không có trở ngại.
Có nhiều ý niệm quan trọng qui tụ trong Java thật ra không mới mẽ gì. Trường phái lập trình theo hướng đối tượng đã có gần 30 mươi năm nay. Việc compile từ ngôn ngữ lập trình ra một ngôn ngữ lưng chừng độc lập với môi trường sẽ chạy sau nầy đã từng được dùng cho ngôn ngũ Pascal, gọi là p-code, hồi đầu thập niên 1980 ở đại học Berkeley. Và ý niệm dùng các chương trình nhỏ, gọi là Applet, có thể phân phối trên mạng, đã từng được thực hiện bằng ngôn ngữ Postscript trong hệ thống NeWS (Network extensible Window System) của James Gosling từ giữa thập niên 1980.



<H3>Nhỏ mà làm nên chuyện lớn </H3>Như ta biết, nguồn gốc của Java là nó chạy trên các máy nhỏ. Ngay từ đầu, Java được thiết kế sao cho <B>S</B>mall (nhỏ), <B>S</B>imple (đơn giản), <B>S</B>afe (an toàn) và <B>S</B>ecure (an ninh), bốn chữ <B>S</B>.
<B>Nhỏ:</B> Vì các dụng cụ điện tử dùng trong nhà không có nhiều Megabyte RAM hay đĩa cứng.
<B>Đơn giản:</B> Vì các dụng cụ điện tử tí hon nầy cũng không thể chứa một hệ điều hành rắc rối, không ai hiểu thấu đáo, với những đặc điểm ít khi dùng.
<B>An toàn:</B> Vì người sử dụng sẽ không hiểu hay thông cảm khi chương trình té hay hệ điều hành treo. Cái máy phải có độ tin cậy cao và khó té. Đối với một máy vi tính chạy Windows98, nếu mỗi tuần máy bị treo một, hai lần thì có thể tha thứ được. Chớ cái máy nướng bánh mì sandwich bị trục trặt một năm một lần vì phần mềm thì sẽ có nhiều lá thư giận dữ phan phiền gởi đến công ty sản xuất.
<B>An ninh:</B> Vì viển tượng củs Sun là "The Network is the Computer" (Mạng là máy điện toán), họ cho phép các dụng cụ điện tử dùng trong nhà chia nhau dùng các chương trình nhỏ (Applet), và các Applet nầy có thể được phân phối trên mạng cách an ninh.

Ai ngờ các mục tiêu khiêm nhường của một ngôn ngữ lập trình nhắm vào các dụng cụ điện tử nho nhỏ trong nhà lại rất thích hợp với môi trường Web. Môi trường hoạt động của Java có thể chuyển từ Mạng trong nhà ra Mạng thế giới.
<B>Nhỏ:</B> Vì các Applet phải di chuyển qua đường dây điện thoại 33KB, và người sử dụng không kiên nhẩn chờ đợi quá lâu.
<B>Đơn giản:</B> Vì chu kỳ triển khai cho Web ngắn hơn cho trong công sở nhiều. Các lập trình viên không thể mất quá nhiều thì giờ để đối phó với một ngôn ngữ lập trình rắc rối.
<B>An toàn:</B> Vì nếu lập trình bằng Java sẽ ít có bug hơn các ngôn ngữ cho phép ta động đến các tài nguyên của Operating System. Kinh nghiệm 30 mươi năm nay cho thấy ta không thể tin cậy vào các lập trình viên để họ thận trọng từng ly, từng tí trong việc dùng pointer và các loại dữ kiện.
<B>An ninh:</B> Vì người viếng Website không muốn tiếp nhận những Applet mà họ không biết có thể làm hại máy tính họ không. Họ muốn được đảm bảo sự an ninh để an tâm, nếu không họ sẽ bỏ đi nơi khác.



<H3>Java được dùng ở khắp nơi </H3>Mặc dầu trong thời gian đầu người ta chỉ chú ý đến việc dùng Java cho Web, nhưng hai năm qua cho thấy không có lý do gì cản trở việc xem Mạng địa phương (Local Area network - LAN) như Mạng thế giới.
Chỉ cần dùng các chuẩn của Internet như TCP/IP, Webbrowser, và IMAP4, các công ty có thể tân thời hóa hệ thống vi tính trong sở mình. Các chương trình dùng cho Internet có thể được dùng cho LAN trong sở và gọi là Intranet.
Bây giờ họ có thể dùng toàn những sản phẩm mua có sẵn (off-the-shelf products), mềm hay cứng. Họ không còn phải lệ thuộc vào IBM, Unisys hay Compaq, tốn kém quá nhiều tiền để bảo trì hệ thống điện toán vì trót lỡ kẹt dùng hệ thống của các công ty điện toán nầy.
Họ cũng không còn cần chuyên viên nuôi trong sở để yểm trợ các phần mềm triển khai đặc biệt để dùng riêng cho sở họ.
Một khi đã cài đặt TCP/IP và để một Webbrowser trên mỗi bàn viết, tất cả mọi nhân viên đều có thể chia sẻ các tài liệu, dữ kiện, cẩm nang .v.v..Bước kế đó là eCommerce và thực hiện mọi công tác trao đổi thương mại, những áp dụng Database (Cơ sỡ dữ liệu) qua Internet và Intranet. Hơn nữa, bây giờ công ty có thể dùng multimedia như audio, video.
Những nhu cầu áp dụng nào mới cho công sỡ đều có thể thực hiện bằng Java cho Intranet giống như cho Internet. Nó không lệ thuộc vào MSWindows hay Unix.
Như thế Java có thể thay thế tất cả các ngôn ngữ lập trình và Operating System ở khắp nơi để cung ứng một dụng cụ lập trường đồng nhất, đúng với chủ trương "Viết một lần, chạy bất cứ nơi đâu".


<H3>Các cao thủ VB cần lưu ý </H3>Mặc dù qui tụ nhiều kỹ thuật tin học già dặn hay mới, chính ngôn ngữ Java tương đối không cầu kỳ, nhưng ngắn gọn, dễ hiểu và dễ nhớ. Có một số ý niệm căn bản cần nắm vững thôi. Chớ chính ngữ vựng và văn phạm của Java không khác gì các ngôn ngữ giống C.
Đối với lập trình viên VB, chuyện bực mình nhất là ngôn ngữ Java phân biệt chữ thường với chữ hoa (case sensitive). Đây là điều khiến ta dễ lầm lộn khi tên một variable rất dài vì nó là tập hợp của nhiều chữ rời ghép lại với nhau. Do đó bạn phải tập theo một qui ước nhất định khi đặt tên một variable để sau nầy không cần nhìn cũng đoán ra chữ nào hoa, chữ nào thường.
Khi kết hợp nhiều chữ rời thành một chữ, Sun thường dùng Uppercase cho character đầu tiên của mỗi chữ, trừ chữ đầu tiên. Nếu chữ đầu tiên là danh từ hay tỉnh từ thì dùng Uppercase, còn nếu nó là động từ thì dùng Lowercase, tuy nhiên qui luật nầy không nhất thiết luôn luôn được áp dụng.
Thí dụ: PieSessionBean, RemoteException, addActionListener, getBinaryStream.
Kế đó là tất cả variables đều phải được khai báo (declare) trước khi dùng. Mỗi dòng lập trình phải chấm dứt bằng dấu chấm phẩy <B>;</B>&nbsp;.
Trong khi một khối lập trình (Statement Block) trong VB nhiều khi được hàm ý, trong Java phải được gói lại giữa một cặp dấu ngoặc uốn &nbsp;<B>{&nbsp;}</B>. Trong Java, hiếm khi có variable nào đứng khơi khơi một mình. Vì Java là Object Oriented nên mọi variable (biến số), object hay constant (hằng số) đều phải được xuất thân từ một gia đình nào, con cái ai. Thí dụ: java.lang.Integer.MAX_VALUE là hằng số biểu diển con số lớn nhất của class Integer, của gói (package) java.lang. (lang cho language, ngôn ngữ)
Do đó, ở đầu mỗi chương trình Java phải có mấy câu khai báo (declare) là nó sẽ nhập cảng những thứ gì, từ đâu. Thí dụ:



<BLOCKQUOTE><CODE>import java.applet.Applet; // nhập cảng class Applet
import java.awt.*; // nhập cảng đủ thứ từ awt (Abstract Window Toolkit)
</CODE>Trong VB ta handle Error, trong Java ta catch Exception. Có nhiều loại Exception đã được định nghĩa trước (predefined), ta có thể nhận diện chúng để tùy nghi giải quyết.
Trong VB các Event đã được cung cấp sẵn, ta chỉ cần điền code vào một Sub để handle một Event. Trong Java ta phải nhắn với một Object là ta muốn được thông báo khi một Event xãy ra cho Object đó.
Xin đón xem những bài bàn vô chi tiết các vấn đề nầy trong tương lai.

CrazyBabe
12-09-2002, 09:46
Theo mình thì mí chú ngôn ngữ dịch ra interpret đều hay hết, mỗi tội tốc độ thực thi không best và có thể bị dịch ngược.

quairungxanh
12-09-2002, 16:11
Mong được các anh chị chỉ bảo cho quái này!Anh quangvu ,rất háo hức đọc những bài tiếp theo của anh.

quangvu
12-09-2002, 19:10
Bạn CrazyBabe nói chỉ đúng một phần ,phải nói là tất cả ngôn ngữ đếu có thể bị dịch ngược như Java ,Delphi ,VC++ ,VB ,V.Foxpro . . .
Tuy nhiên dịch là một chuyện ,hiểu được bản dịch là một chuyện khác .Không tin ư ,nếu bạn có chương trình dài khoản 1000 dòng lệnh ,bạn thử bỏ hết các chú thích xem .Vài tháng sao kể cả bạn cũng không hiểu nổi.

tnh
15-07-2003, 12:45
1000 dòng trong chương trình không có gì là ghê cả bạn ơi.
Quan trọng là thuật toán để bạn viết ra chương trình đó.
Vì nếu tư duy thuật toán trong chương trình của bạn cao,
thì chắc chắn người hiểu được code của bạn không phải là người tầm thường...

giadzich
22-07-2003, 18:07
Xin bổ sung thêm là hiện giờ tất cả các đại học hiện chuyển sang dạy Java hết tại SJ. C++ không có ứng dụng gì mấy trong trường. (Nhưng coi như là fải biết nằm lòng) Nhưng khi ra trường...tìm việc làm thì rất ích hỏi tới Java -- ??? Trớ trêu?

prince
11-11-2003, 14:58
Ban giadzich nói không đúng rùi, C++ nói chung là trường nào cũng học, nhưng nó chỉ là ngôn ngữ căn bản sau pascal, trên thực tế thì java rất hay và cũng rất quan trọng nữa. Nên các trường làm sao không học được... Java đang phát triển trong giới tin học vn...

duong_anh_duong
10-12-2003, 13:38
Mình đang học java đây, khó nuốt lắm. hàng ngàn hàm, thư viện... làm mình muốn điên cái đầu luôn. thầy mình yêu cầu viết chương trình giống như calculator, note pad, game dò mìn,paint, Wordpad... mình không biết viết làm sao cả vì mình chỉ học như "thưởng nguyệt xem hoa". Có bác nào có mã nguồn của các chương trình này không? cho mình với (viết không được nhưng đọc mã nguồn thì mình hay bị "được").

bonglanda
07-01-2004, 06:12
Cam on Bac Quang Vu lam, bai viet cua Bac rat hay, rat huu dung cho Em. Mong cho nhieu bai viet moi cua Bac cung nhu cac bac tien boi khac.
Nhung ma Cac Bac oi, lam on chi dum Em nhung dac diem cua SDK va NetBean... voi. Vo cung cam on...