Mở đầu Mÿc tiêu: Học xong ch°¡ng này, ng°£i học có khÁ năng: - Tìm hiểu lịch sử ngôn ngữ java - Cài đặt môi tr°£ng java - Biên dịch và ch¿y ch°¡ng trình java Nßi dung: 1. Lßch sư뀉 ngôn ngư뀃 Java Java là một trong những ngôn ngữ lÁp trình h°ớng đái t°ợng. Nó đ°ợc sử dụng trong phát triển ph n mềm, trang web, game hay āng dụng trên các thiết bị di động. Java đ°ợc kh«i đ u b«i James Gosling và b¿n đãng nghiáp « Sun MicroSystem năm 1991.
Ban đ u Java đ°ợc t¿o ra nhằm mục đích viết ph n mềm cho các sÁn phऀm gia dụng, và có tên là Oak. Java đ°ợc phát hành năm 1994, đến năm 2010 đ°ợc Oracle mua l¿i từ Sun MicroSystem. Java đ°ợc t¿o ra với tiêu chí <Viết (code) một l n, thực thi khắp n¡i= (Write Once, Run Anywhere – WORA). Ch°¡ng trình ph n mềm viết bằng Java có thể ch¿y trên mọi nền tÁng (platform) khác nhau thông qua một môi tr°£ng thực thi với điều kián có môi tr°£ng thực thi thích hợp hỗ trợ nền tÁng đó 1.
Môi tr°ãng l⌀p trknh Java, mcy ko, và JDK. Để đÁm bÁo tính đa nền, Java sử dụng c¡ chế Máy Áo cÿa Java. ByteCode là ngôn ngữ máy cÿa Máy Áo Java t°¡ng tự nh° các lánh nhị phân cÿa các máy tính thực. Một ch°¡ng trình sau khi đ°ợc viết bằng ngôn ngữ Java (có ph n m« rộng là .java) phÁi đ°ợc biên dịch thành tÁp tin thực thi đ°ợc trên máy Áo Java (có ph n m« rộng là.
TÁp tin thực thi này chāa các chỉ thị d°ới d¿ng mã Bytecode mà máy Áo Java hiểu đ°ợc phÁi làm gì. 7 Giáo trình Lập trình h°ớng đối t°ợng Khi thực hián một ch°¡ng trình, máy Áo Java l n l°ợt thông dịch các chỉ thị d°ới d¿ng Bytecode thành các chỉ thị d¿ng nhị phân cÿa máy tính thực và thực thi thực sự chúng trên máy tính thực (con gọi là khÁ năng khÁ chuyển). Máy Áo thực tế đó là một ch°¡ng trình thông dịch. Vì thế các há điều hành khác nhau sẽ có các máy Áo khác nhau.
Để thực thi một āng dụng cÿa Java trên một há điều hành cụ thể, c n phÁi cài đặt máy Áo t°¡ng āng cho há điều hành đó. JVM cung cấp môi tr°£ng thực thi cho ch°¡ng trình Java (con gọi là khÁ năng độc lÁp với nền). Có nhiều JVM cho các nền tÁng khác nhau chẳng h¿n nh°: Windows, Liux, và Mac. Giái thißu vë ccc loci ch°¡ng trknh Java: application và applet.
Các ch°¡ng trình xây dựng bằng Java đ°ợc chia làm 2 lo¿i là Java Applet và Java Application Java Application là gì? Ngôn ngữ Java có cú pháp khá giáng với ngôn ngữ C/C++, nh°ng nó có thể đáp āng khÁ năng độc lÁp với há điều hành. Nền tÁng cÿa ngôn ngữ lÁp trình Java là các class, nó đóng vai tro nh° những đái t°ợng. Ng°£i lÁp trình khi xây dựng các āng dụng sẽ sử dụng 1 sá class chuऀn cÿa há tháng, hoặc cũng có thể tự mình xây dựng class khác nhằm đáp āng yêu c u công viác. Hián nay Java đ°ợc āng dụng rất rộng rãi cho các āng dụng đ°ợc viết trên Internet, lấy m¿ng làm trung tâm và có thể đ°ợc dwng nh° một nền tÁng.
Đây là 1 lo¿i ngôn ngữ lÁp trình nhanh, bÁo mÁt, đáng tin cÁy, đ°ợc dwng để viết mã cho các āng dụng di động, ph n mềm doanh nghiáp hay các āng dụng dữ liáu lớn và công nghá phía máy chÿ. Java Application (viết tắt Java App) là những āng dụng độc lÁp, t°¡ng tự nh° các ch°¡ng trình có đuôi .COM hay đuôi .EXE thông th°£ng. Viác thực hián Java Application đ¡n giÁn h¡n Java Applet b«i chúng không c n phÁi thông qua trình duyát Web. Applet là gì? Ngôn ngữ lÁp trình Java hián nay đ°ợc sử dụng khá phổ biến trên nhiều há điều hành khác nhau « khắp n¡i trên thế giới.
Chính vì vÁy, ngôn ngữ lÁp trình Java cũng đ°ợc sử dụng để t¿o ra nhiều lo¿i āng dụng đa d¿ng. Trong đó, Applet là những lo¿i āng dụng nhß đ°ợc xây dựng b«i ngôn ngữ lÁp trình Java hoặc ngôn ngữ lÁp trình khác đ°ợc biên dịch sang mã bytecode cÿa ngôn ngữ Java. Tuy nhiên, khi đ°a đến ng°£i dwng, Applet sẽ xuất hián hoàn toàn với d¿ng Java bytecode. 8 Giáo trình Lập trình h°ớng đối t°ợng Những phiên bÁn Applet đ u tiên đ°ợc ra mắt vào năm 1995.
Tuy nhiên, sau nhiều ho¿t động điều chỉnh, các applet cÿa Java đã đ°ợc lo¿i bß hoàn toàn vào 2017. S« hữu khÁ năng linh ho¿t trên đa nền tÁng, Applet có thể sử dụng trên nhiều há điều hành khác nhau nh° Microsoft Windows, Linux, MacOS, FreeBSD, Unix, v. Dßch và chcy ch°¡ng trknh Ch¿y ch°¡ng trình bằng các lánh trong Command Prompt với JDK đã cài đặt. Đ u tiên, thay đổi folder đang thực thi trong Command Prompt đến th° mục chāa file code Java.
C:\Users\LHVINH>E: E:\>cd Demo Sau đó, sử dụng ch°¡ng trình javac trong JDK để biên dịch code Java thành bytecode. Một file tên là Welcome.class chāa bytecode sẽ đ°ợc tự động t¿o ra. E:\Demo>javac Welcome.java Cuái cwng, thông dịch bytecode thành mã máy để CPU thực thi với ch°¡ng trình java trong JDK E:\Demo>java Welcome Welcome to Java! Ccc Java IDE th°ãng dùng: IDE (Integrated Development Environment) là một lo¿i ph n mềm máy tính có chāc năng giúp đỡ các lÁp trình viên trong viác phát triển ph n mềm. Một IDE gãm có các thành ph n chính: - Trình so¿n thÁo mã nguãn (source code editor): dwng để viết code - Trình biên dịch (compiler), trình thông dịch (interpreter) - Công cụ xây dựng tự động: khi sử dụng sẽ biên dịch (hoặc thông dịch) mã nguãn, thực hián liên kết các th° vián và có thể ch¿y ch°¡ng trình một cách tự động - Trình gỡ lỗi (debugger): hỗ trợ tìm lỗi code Các Java IDE th°£ng dwng là NetBeans, Eclipse, IntelliJ IDEA,& NetBeans IDE: Tạo một Java Project Tr°ớc khi t¿o một ch°¡ng trình Java trong NetBeans, c n phÁi t¿o một project.
Chọn File –> New Project, hộp tho¿i New Project xuất hián 9 Giáo trình Lập trình h°ớng đối t°ợng Chọn Java trong Categories và Java Application trong Projects và click Next để hiển thị hộp tho¿i New Java Application NhÁp tên (ví dụ: Hello World) trong mục Project Name và E:\ trong mục Project Location. Click Finish để t¿o project Tạo một Java Class Right click vào Hello World trong Project Pane để hiển thị context menu. Chọn New –> Java Class để hiển thị hộp tho¿i New Java Class 10 Giáo trình Lập trình h°ớng đối t°ợng NhÁp HelloWorld trong mục Class Name và chọn Source Packages trong mục Location. Để tráng mục Package, sẽ t¿o một lớp trong default package.
Click Finish để t¿o HelloWorld class. Bên d°ới, tÁp tin HelloWorld.java đ°ợc đặt trong <package Vidu1>. So¿n thÁo code trong HelloWorld class.java, right click Welcome.java để hiển thị context menu và chọn Run File hoặc nhấn Shift + F6. 11 Giáo trình Lập trình h°ớng đối t°ợng Bài 2: Ccc khci nißm vë l⌀p trknh h°áng đ÷i t°£ng Mÿc tiêu: Học xong ch°¡ng này, ng°£i học có khÁ năng: - Phân biát lÁp trình h°ớng thÿ tục và h°ớng đái t°ợng.
Lßch sư뀉 ngôn ngư뀃 l⌀p trknh. Ch°¡ng trình máy tính đ u tiên (1942-1949): Ada Lovelace đã dịch hãi ký cÿa nhà toán học Ý Luigi Menabrea về cỗ máy mới nhất đ°ợc đề xuất cÿa Charles Babbage: Máy phân tích; bà đã bổ sung vào cuán hãi ký những ghi chú chỉ ra chi tiết ph°¡ng pháp tính toán sá Bernoulli bằng cỗ máy đó, đ°ợc h u hết các nhà sử học công nhÁn là ch°¡ng trình máy tính đ u tiên trên thế giới. Máy tính đián tử đ u tiên (1940s): L n đ u tiên ghi nhÁn Máy tính đián tử hián đ¿i đ°ợc t¿o. Do giới h¿n về học tác độ và bộ nhớ nên các lÁp trình viên phÁi viết các mã tay các ch°¡ng trình hợp ngữ Đ u những năm 1950 - Ngôn ngữ lÁp trình bÁc cao đâu tiên: John Mauchly t¿o ra Short Code, ngôn ngữ lÁp trình bÁc cao đ u tiên, mỗi l n ch¿y c n đ°ợc dịch thành mã máy nên khá là chÁm Cuái những năm 1960 – OOP: Simula, đ°ợc phát minh b«i Nygaard và Dahl, là ngôn ngữ đ u tiên đ°ợc thiết kế để hỗ trợ lÁp trình h°ớng đái t°ợng 1970 – Pascal: Niklaus Wirth t¿o ra Pascal cwng với một sá ngôn ngữ khác, ông thích t¿o ra các ngôn ngữ.
Ông cũng phát minh ra luÁt cÿa Wirth cái làm cho luÁt cÿa Moore thành lỗi th£i b«i vì các lÁp trình viên ph n mềm sẽ viết các ph n mềm cãng kềnh đến nỗi ngay cÁ các máy tính lớn (mainframe) cũng không thể theo kịp. Điều này sau đó sẽ đ°ợc chāng minh là đúng với phát minh cÿa Electron. 1972 – C: Dennis Ritchie và Ken Thompson quyết định t¿o ra C ngôn ngữ có những dấu ngoặc nhọn {} và nó là một thành công lớn. Sau đó ông bổ sung thêm secmentation faults và các tính năng thân thián với các lÁp trình viên để tăng hiáu xuất.
Ông và b¿n bg cÿa mình t¿i Bell Labs cũng làm một ch°¡ng trình demo cho C, kết quÁ họ đã t¿o ra một há điều hành gọi là Unix. 1972 - Prolog, ngôn ngữ logic đ u tiên: Prolog, ngôn ngữ lÁp trình logic đ u tiên, đ°ợc thiết kế b«i Colmerauer, Roussel, và Kowalsk 12 Giáo trình Lập trình h°ớng đối t°ợng 1978 – SQL: SQL, ngôn ngữ truy v¿n có cấu trúc, đ°ợc t¿o b«i Donald D. Chamberlin và Raymond F. Boyce « IBM 1983 - C++: Bjarne Stroustrup bổ sung thêm nhiều tính năng nâng cao mà ông có thể nghĩ ra cho C và đặt cho ngôn ngữ lÁp trình này là C++.
1986 - Objective-C: Brac Box và Tol Move quyết định t¿o thêm một phiên bÁn C dựa trên Smalltalk, cái đ°ợc gọi là Objective-C. 1987 – Perl: Larry Wall với kinh nghiám tôn giáo, tr« thành một nhà thuyết giÁng và làm cho Perl tr« thành một học thuyết. 1991 – Python: Guido van Rossum phát minh ra Python, cú pháp đ°ợc chọn lấy cÁm hāng từ Monty Python và Flying Circus. 1991 – Visual Basic: аợc t¿o ra b«i Microsoft, bÁn release cuái cwng là version 6 vào năm 1998, window 10 v¿n duy trì khÁ năng t°¡ng thích với các āng dụng Visual Basic 6 1995 – JavaScipt: Brendan Eich sử dụng những ngày cuái tu n để thiết kế một ngôn ngữ sẽ đ°ợc sử dụng rộng rãi trên mọi trình duyát và cuái cwng là Skynet.
Ban đ u khi làm viác t¿i Netscape ông gọi nó là LiveScript nh°ng Java tr« thành một một ngôn ngữ lÁp trình phổ biến vì thế họ đã quyết định đổi tên nó thành JavaScipt. Java tr« thành một th°¡ng hiáu và điều này đem đến rắc rái cho họ, JavaScript sau đó đ°ợc đổi tên thành ECMAScript nh°ng mọi ng°£i v¿n gọi nó là JavaScript. 1996 – Java: James Gosling phát minh Java, ngôn ngữ đ u tiên thực sự h°ớng đái t°ợng n¡i các quy tắc design patterns đ°ợc chú ý h¡n chÿ nghĩa thực dụng. 2001 - C#: [Anders Hejlsberg] viết l¿i Java và gọi nó là C# b«i vì lÁp trình trong C tuyát h¡n Java.
Mọi ng°£i thích phiên bÁn Java mới này vì nó hoàn toàn không giáng Java.