Trng i Hc Sài Gòn Khoa Công Ngh Thông Tin Tr ng i H c Sài Gòn

Khoa Công Ngh Thông Tin -- - - - - --

án môn h c:

Seminar Công Ngh Ph n M m 
tài: Ngôn Ng Lp Trình Java

GVHD: ThS. Cao Thái Ph ng Thanh Th c Hi n: L ng An Vinh 3107410206 Hoàng V oàn 3107410152 Hu nh ng Th o Ti n 3107410198

Seminar Công Ngh Phn Mm Tìm Hiu Java

Trang 1

c "ki n trúc trung l p và di ng". 5. FreeBSD & Windows.1. do bên ngoài c quan c a ông Gosling có tr ng nhi u lo i cây này). Không nên l n l n Java v i JavaScript. 1999 J2SE 1. h ng i t ng và quen thu c".. Safari (Apple).1. phân lu ng và n ng ng".1 (không có) 30 tháng 3. m t ph n c a D án Xanh (Green Project). t ch c c ng nh cá nhân khác c ng phát tri n môi tr ng th c thi Java cho nh ng h i u hành khác nh BEA. B.4 (Sparkler) 12 tháng 9. 2001 Trang 2 Seminar Công Ngh Phn Mm Tìm Hiu Java . 1998 JDK 1. Linux. HP. Java c phát hành vào n m 1994.. Linux. bao g m ông James Gosling. IBM. AIX & z/OS.8 (Chelsea) 8 tháng 4. Firefox (Mozilla). Java c t o ra v i tiêu chí "Vi t (code) m t l n. Ngoài ra. .subby Sau khi Oracle mua l i công ty Sun Microsystems n m 2009-2010. Run Anywhere" (WORA)). th c thi kh p n i" ("Write Once. 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. 1998 J2SE 1.3 (Kestrel) 8 tháng 5.1.7 (Brutus) 28 tháng 9.6 (Abigail) 24 tháng 4.2 (Playground) 4 tháng 12. 2000 J2SE 1.1.5 (Pumpkin) 3 tháng 12.1 (Ladybird) 17 tháng 5. c "th hi n. internet. Trong ó áng nói n nh t là IBM Java Platform h tr Windows.2. V sau Java c c h tr trên h u h t các trình duy t nh Internet Explorer (Microsoft).. 1999 J2SE 1. máy o và API c a Java c gi b i C ng ng Java (do Oracle qu n lý). 1999 J2SE 1. Môi tr ng th c thi c a Sun Microsystems hi n h tr Sun Solaris. m t s công ty. A. Java c s d ng ch y u trên môi tr ng m ng. Java c t o ra vào n m 1991 do m t s k s Sun. Công ty Sun Microsystems ang gi b n quy n và phát tri n Java th ng xuyên. r i nó tr nên n i ti ng khi Netscape tuyên b t i h i th o SunWorld n m 1995 là trình duy t Navigator c a h s h tr Java. Oracle ã mô t h là "ng i qu n lý công ngh Java v i cam k t không ng ng b i d ng m t c ng ng tham gia và minh b ch". 3. nh ng các tính n ng gi ng Objective C. Ban u ngôn ng này c g i là Oak (có ngh a là cây s i. 1998 JDK 1. 4.3. c "m nh m và an toàn". Mac OS.2. h d nh ngôn ng ó thay cho C++.2 (Cricket) 8 tháng 7. 1997 JDK 1. hai ngôn ng ó ch gi ng tên và lo i cú pháp nh C.. Gi i thi u v Java Java c kh i u b i James Gosling và b n ng nghi p Sun Microsystems n m 1991. 1997 JDK 1. 2.Trng i Hc Sài Gòn Khoa Công Ngh Thông Tin I. Nó s Nó s Nó s Nó s Nó s Ph ng châm c a Java Có 5 m c tiêu chính trong vi c xây d ng ngôn ng Java: c " n gi n. y y y y y y y y y y Các phiên b n Java ã phát hành: JDK 1. Nh ng chi ti t v ngôn ng . c th c thi v i "hi u su t cao". 1.

4.18.1 (Hopper) 16 tháng 9.4. b n c p nh t 4 a ra tháng 1 n m 2008. 2004 Java SE 6 (còn g i là Mustang). c công b 11 tháng 12 n m 2006. 2002 J2SE 1.0) (Tiger) 29 tháng 9.Trng i Hc Sài Gòn Khoa Công Ngh Thông Tin y y y y y J2SE 1. 2003 J2SE 5 (1.5.2 (Mantis) 26 tháng 6. n m 2010 y Seminar Công Ngh Phn Mm Tìm Hiu Java Trang 3 . Các b n c p nh t 2 và 3 c a ra vào n m 2007. 2002 J2SE 1.4. thông tin chính t i http://java.com/javase/6/ .0 (Merlin) 13 tháng 2. JDK 6.sun.

B n có th hình dung.5. t tên c a Sun Seminar Công Ngh Phn Mm Tìm Hiu Java Trang 4 . b n s nh n c k t qu là mã byte (bytecodes). T phiên b n Java 1.2 n 1. m ng. giao di n h a. Java SE th ng c bi t Edition). b sung thêm các công c nh là trình biên d ch (compiler) và các trình g l i (debugger) c n phát tri n applet và các ng d ng. Standard Edition (SDK) Java 2 SDK là m t t p m c a JRE. và ch a m i th n m trong JRE. ây là n n t ng Java c s d ng tri n khai các ng d ng portable s d ng chung. "2" ban u v n c dùng ch n nh ng thay i l n trong phiên b n 1.  J2SE g m 2 b ph n chính là: 1. Khi b n biên d ch t p này. sau ó b n biên d ch nó.6 thì "2" b lo i b .Trng i Hc Sài Gòn Khoa Công Ngh Thông Tin II.6 theo cách Microsystems) v i tên mã Mustang. Standard Edition ho c Java SE là m t n n t ng c dùng r ng rãi l p trình b ng ngôn ng Java. Java SE bao g m m t máy o. ch y m i n i´ s tr thành ³vi t m t l n. Phiên b n c bi t n t i th i i m hi n t i là Java SE 6 (hay Java SE 1. 2.2 cho n 1. Sau ó. ch y trên các n n h th ng khác nhau.java.5. Standard Edition (JRE) Môi tr ng th c thi Java hay JRE cung c p các Java API. n phiên b n 1. b n vi t mã ngu n. và c chính ch ng trình ó. Java SE Java Platform. T "SE" c s d ng phân bi t v i các n n t ng khác là Java EE và Java ME. Môi tr ng th c thi Java không có các công c và ti n ích nh là các trình biên d ch hay các trình g l i phát tri n các applet và các ng d ng. máy o Java (Java Virtual Machine hay JVM) và các thành ph n c n thi t khác ch y các applet và ng d ng vi t b ng ngôn ng l p trình Java. Java 2 Runtime Environment. trình biên d ch c a Java sinh ra m t t p . Nguyên t c ho t ng c a ngôn ng Java Khi b n vi t mã l nh b ng ngôn ng Java. cùng v i m t t p h p các th vi n (ho c "các gói") c n thi t cho phép s d ng các t p tin h th ng. JVM c và thông d ch t p . B i vì gi a các n n t ng h th ng khác nhau có nhi u i m khác nhau nên có th khi n cho mã l nh c a b n thi hành khác nhau trên nh ng n n t ng khác nhau. b n sinh ra m t t p . b n ph i biên d ch mã ngu n c a mình theo các th vi n dành riêng cho n n t ng h th ng ó. Java 2 Software Development Kit.2 so v i các phiên b n tr c.class. Tuy nhiên. c s d ng ch y các ch ng trình Java. Trên th c t . gi ng nh nhi u ngôn ng khác. Tên J2SE (Java 2 Platform. Khi b n biên d ch mã Java. Khi b n vi t mã. nh ng n phiên b n 1. Nh ng n n t ng Java b sung thêm m t b c khác n a ngoài các b c trên.class này lúc ch y và nó ho t ng nh th nào là tùy thu c vào n n t ng h th ng mà b n ang ch y. Standard Edition) c s d ng t phiên b n 1. máy o Java (JVM) s thông d ch các mã byte này lúc ch y ch ng trình.6 thì s 2 ã cb n v i cái tên J2SE(Java 2 Platform: Standard i. trình biên d ch ki m tra mã l nh c a b n và i chi u v i các quy t c cú pháp c a ngôn ng . A. ki m th m i n i´. l i h a h n ³vi t m t l n. ch a các mã byte.

trình duy t web. C++. Eclipse không gói g n trong vi c cung c p môi tr ng phát tri n tích h p cho Java mà còn cho các ngôn ng khác nh JavaScript. h qu n tr c s d li u« Seminar Công Ngh Phn Mm Tìm Hiu Java Trang 5 . giao th c m ng c xây d ng s n. JDK tr thành ph n m m t do. Micro Edition (Java ME) là 1 môi tr ng m nh. c phát tri n ban u b i IBM và hi n nay b i t ch c Eclipse (http://www. C#.CLDC). JDK là b phát tri n ph n m m thông d ng nh t cho Java.  MIDP Mobile Information Device Profile (MIDP) là m t c t k thu t c công b cho vi c s d ng Java trên các thi t b nhúng nh i n tho i di ng và PDA.b công c này c phát hành mi n phí g m có trình biên d ch. m t t p h p các giao di n l p trình c p th p. n th i i m hi n nay. Công ngh Java ME c s tham gia và c i ti n liên t c t o ra các chu n t JCP. ng d ng m ng nh Telnet. các plug-in còn cho phép Eclipse làm vi c c v i ngôn ng s p ch (typesetting language) nh LaTEX. Eclipse 1. Java ME Platform là 1 d án m cho vi c xây d ng ng d ng trên i n tho i di ng. dùng vi t nh ng applet Java hay nh ng ng d ng Java . ng d ng d a trên Java ME mang tính kh chuy n trên nhi u thi t b .org). Java ME Java Platform. XML n u ng i dùng cài t thêm các plug-in. Ngày 17 tháng 11 n m 2006. HTML. Công c và môi tr A.B công c cho ng i phát tri n ng d ng b ng ngôn ng l p trình Java) là m t t p h p nh ng công c ph n m m c phát tri n b i Sun Microsystems dành cho các nhà phát tri n ph n m m. Python. Java ME c thi t k cung c p tính linh ng gi a các n n t ng. PHP. hãng Sun tuyên b JDK s c phát hành d i gi y phép GNU General Public License (GPL). PDAs. III. t ng thích nhi u n n t ng. Vi c này ã c th c hi n ph n l n ngày 8 tháng 5 n m 2007[1] và mã ngu n c óng góp cho OpenJDK.eclipse. trình thông d ch. Nó bao g m các thành ph n chu n c nh ngh a b i Java Community Process (JCP). linh ng trong vi c phát tri n ng d ng ch y trên i n tho i di ng (mobile) và các thi t b nhúng (embedded devices) ± mobile phones. Ngoài vi c h tr các ngôn ng l p trình. b o m t m nh. Java ME g m giao di n ng i dùng linh ng. trình ch y applet và tài li u nghiên c u). Cobol. JDK ng phát tri n Java Java Development Kit (JDK . B. TV set-top boxes. và máy in. K t khi ngôn ng Java ra i. trình giúp s a l i (debugger. MIDP là m t ph n c a n n t ng Java. MIDP ã c phát tri n theo Java Community Process. Micro Edition (Java ME) framework và n m ph n u c a C u hình thi t b b h n ch K t n i (Connected Limited Device Configuration .Trng i Hc Sài Gòn Khoa Công Ngh Thông Tin B. C. và h tr c ng d ng có k t n i m ng l n ng d ng offline. Các thi t b MIDP u tiên c tung ra vào tháng T n m 2001. T ng quan v Eclipse Eclipse là m t môi tr ng phát tri n tích h p (Integrated Development Environment ± IDE) cho Java.

M i Project là m t th m c con trong th m c Workspace. C u trúc c a Eclipse: a) The Platform runtime : Công vi c chính c a Platform runtime là phát hi n xem plug-in nào ang có trong th m c plug-in c a Eclipse. Eclipse không hoàn toàn b t bu c ph i s d ng SWT hay Jface l p trình giao di n. b n v n có th s d ng AWT hay SWING c a Java thông qua vi c cài t các Plug-ins. Workspace ng th i ch u trách nhi m thông báo nh ng công c c n thi t cho vi c thay i tài nguyên. Workspace l u tr l ch s nh ng s thay i tài nguyên. y y y c) The Workbench : Workbench là giao di n h a ng i dùng c a Eclipse. g m có Standard Widget Toolkit (SWT) và JFace.M i Plug-in u có 1 t p tin Manifest li t kê nh ng k t n i mà plug-in c n. b) The workspace : Workspace ch u trách nhi m qu n lý tài nguyên ng i dùng c t ch c d i d ng Project. Seminar Công Ngh Phn Mm Tìm Hiu Java Trang 6 .Plug-in ch ct i vào Eclipse m i khi th c s c n thi t gi m l ng tài nguyên yêu c u và th i gian kh i t o.Trng i Hc Sài Gòn Khoa Công Ngh Thông Tin 2. tránh th t thoát tài nguyên ng i dùng.

Các gói cùng gói cha.edu.edu. Cácpackage quy chi u theo ng d n n t p tin trong h th ng t p c a b n.mypackage thì ph i t o c u trúc th m c là \vn\edu\hau1\mypackage Java tìm c n i t cây th m c gói thì bi n môi tr ng classpath ph i xác nh th m c ch a cây th m c gói. các l p cùng gói không c trùng tên nhau.c:\javapro Trang 7 y Seminar Công Ngh Phn Mm Tìm Hiu Java . Cú pháp ngôn ng l p trình Java A. IV. interface.lang.edu. N u b n không nói rõ ràng nó thu c gói nào. ng i ta th ng l y o ng c c a tên mi n Internet làm ti n t c a tên gói.vn thì t tên gói là vn. Ví d : n u cây th m c gói t trong th m c c:\javapro thì classpath = .hau1. Package Là m t nhóm các class. Phân tán ph n m m thu n ti n. M i i t ng Java u n m trong m t package. t t c (th ng là th ) liên quan v i nhau theo m t cách nào ó. Th m c ch a các gói: y Java yêu c u c u trúc th m c ch a gói ph i t ng ng v i tên gói. Cób n lý do c n óng gói các l p: y y y y Quy y D tìm các l p: Các l p có ch c n ng t Tránh sung t tên. T ch c các gói theo ki u này s m b o các tên gói không b trùng nhau. Ví d : v i tên gói là vn. M t package ch n gi n là m t t p các i t ng.Trng i Hc Sài Gòn Khoa Công Ngh Thông Tin d) Trang b h th ng qu n tr Team support : qu n lý d án c a ng i dùng : Concurrent Versions System (CVS) e) Help : Cung c p h th ng tài li u m r ng. gói lang n m trong gói java. có th là nh d ng HTML hay XML.tengoi Theo quy c t tên gói dùng ki u lowercase (vi t th ng). Tên c a các gói dùng ký pháp d u ch m (. y y y Trong các gói có th l i ch a các gói khác. Java s t nó vào trong gói m c nh. B o v các thành viên c a l p. . N u mu n óng gói các l p a lên Internet cho m i ng i s d ng thì ph i ch n m t tên duy nh t.) d ch ng d n t p tin này thành m t th mà n n t ng Java hi u c.sgu. Víd : java.Math cho bi t l p Math n m trong gói lang. các gói khác ã c biên d ch thành Java bytecode. Víd : Tên mi n c a H Sài Gòn là sgu. c t tên gói: ng t nhau c t trong cùng m t gói d tìm.

ct ng t o ra B. xác nh th m c hi n t i luôn trong classpath.. import PackageName.. } Khi biên d ch thành công: o N u ch a có th m c PackageName thì th m c này s o File. import PackageCha. Khai báo package ph i là dòng u tiên c a code java. 1.*. L p th k g i là l p con (subclass. T o package Khai báo package trong code c a class. u c d n xu t t Object.Trng i Hc Sài Gòn Khoa Công Ngh Thông Tin D u ..class c a code này s c t vào th m c này.*.PackageCon. S d ng Package Dùng ch th import v i m t trong các cú pháp sau: import PackageName. import PackagCha. y y K th a c d n xu t (derived) t l p khác.] class ClassName { . M t l p có th th c c a l p ó. Quan h k th a t o thành cây hay c u trúc phân Trong Java. [import OtherPackageName . 2.PackageCon. child class) ho c l p d n xu t (derived class) ho c l p m r ng (extended class).ClassName.ClassName.PackageCon].. và do v y k th a (inherit) m i tr ng và ph ng L p c k th a g i là l p cha (superclass.. parent class) ho c l p c s (base class).. /* Comment */ package PackageCha[. Seminar Công Ngh Phn Mm Tìm Hiu Java Trang 8 . Dùng t khóa package Cú pháp: package PackageCha[.PackageCon]. t t c các l p c p.

Interface không th c thi b t c m t ph ng th c nào nh ng l i c u trúc thi t k trên b t c l p nào s d ng nó.Trng i Hc Sài Gòn Khoa Công Ngh Thông Tin Cú pháp th a k trong Java: public class Tên_L p_Cha { «««««««««««. Không c khai báo private hay protected i v i các bi n và các hàm trong Interface vì các hàm này s c vi t l i (overriden) trong l p th c thi nó. M t l p có th implements nhi u interface. y y y y y y Seminar Công Ngh Phn Mm Tìm Hiu Java Trang 9 . Interface Interface là 1 l p bao g m bi n h ng và các hàm c khai báo tr c nh ng không c nh ngh a. ngh a là các hàm này không h có thân (body).M t l p th c thi interface ph i ho c cài t t t c các ph ng th c(có trong interface) ho c khai báo là l p tr u t ng. Interface c dùng nh m t "ki u" ch ch a nh ngh a h ng và ph ng th c tr u t ng. static hay final. Interface ch a các hành vi chu n (standard behavior) c th c hi n b i b t kì l p nào trong h th ng phân c p l p. Các bi n trong Interface thì ph i là public. nh ng m i hàm trong 1 interface u c coi là abstract (tr u t ng). } public class Tên_L p_Con extends Tên_L p_Cha { ««««««««««« } C. 1. Hàm trong interface không th là final. Ngh a là các hàm trong interface có th c th c hi n b i các l p không có liên h gì n nó. Chú ý khi dùng Interface: M t l p thi hành các hàm trong interface thông qua t khoá implements.. Dù không khai báo t khoá abstract.

là t p h p các ph n t không trùng nhau (bao g m c ph n t null). M t l p có code c th hóa các hành vi c a m t interface thì g i là implementation.. 3. Set Th a k t interface Collection. M t l p có th th c thi nhi u interface (vì trong java ch cho cho a th a k ). Th c thi giao di n (implement interface) c th c thi thông qua các l p. } Ch n modifier là public m in i u dùng c. Khai báo interface Khai báo interface b ng 1 file. Java collections framework A. Cú pháp: [modifier]interface InterfaceName { [ modifier] <final data> [ modifier] DataTypeMethod (args).java. N u không có modifier th ch các class/interface cùng gói/ cùng th m c m i truy c p Modifier trong interface nên là public Giao di n d dùng. interface2. Cú pháp xây d ng m t l p có th c thi interface: [modifier] class TênextendsL pChaimplements Interface1.. Seminar Công Ngh Phn Mm Tìm Hiu Java Trang 10 ..Trng i Hc Sài Gòn Khoa Công Ngh Thông Tin 2. c. biên d ch thành file.class. { <Data riêng> <th c thi c a các method riêng> <th c thi các method c a interface1> <th c thi các method c a interface2> <th c thi các method c a các interface khác> } n th a k nên cách này dung ph c v V.

3. Cloneable. List Là t p h p các ph n t theo th t (do ng i dùng s p x p).arraycopy khi nó ph i di chuy n nhi u ph n t cùng m t lúc. Cloneable. B. 1. Cloneable. 2. Ng i dùng có th truy xu t các ph n t thông qua v trí c a nó và có th tìm ki m các ph n t trong ó. HashSet<E> extends AbstractSet<E> implements Set<E>. LinkedList<E> extends AbstractSequentialList<E> implements List<E>. Serializable Cung c p các truy xu t theo v trí không i theo th i gian. Deque<E>. gi ng nh là m t b ng b m v i m t danh sách liên k t ch y bên trong nó. 2. Nó không ph i c p phát m t i t ng Node cho m i ph n t trong List. extends HashSet<E> LinkedHashSet<E> a vào TreeSet s t ng c a úng implements Set<E>. Serializable Seminar Công Ngh Phn Mm Tìm Hiu Java Trang 11 . Cloneable. Cloneable. LinkedHashSet có t c truy xu t nhanh g n b ng HasSet. ArrayList<E> extends AbstractList<E> implements List<E>.Trng i Hc Sài Gòn Khoa Công Ngh Thông Tin 1. Serializable Là implement trung gian gi a HasSet và TreeSet. Không nh Set. và nó có th t n d ng l i th c a System. Serializable T c truy xu t c c nhanh. t c nhanh. Serializable T p h p các ph n t c s p x p theo th t (các ph n t khi v trí theo th t s p x p). trong List cho phép các ph n t trùng l p. Ng i s d ng interface này có th ki m soát chính xác các ph n t thông qua v trí c a mà ph n t ó c thêm vào. RandomAccess. TreeSet<E> extends AbstractSet<E> implements NavigableSet<E>.

c s p x p theo th t và t c truy xu t Seminar Công Ngh Phn Mm Tìm Hiu Java Trang 12 .V>. Map Là m t i t ng dùng ánh x các Key thành giá tr t ng ng. C.Trng i Hc Sài Gòn Khoa Công Ngh Thông Tin N u b n mu n thêm m t ph n t vào u List hay duy t qua các ph n t c a List xóa m t ph n t d a theo n t dung c a ph n t ó thì nên s d ng LinkedList. Cloneable. 3. Serializable Dùng ánh x mà t c truy xu t các key và value c c kì nhanh.V> extends AbstractMap<K. LinkedList là m t th c thi c a T p h p các ph n t interface Queue.V>. TreeMap<K.V> extends AbstractMap<K. 2. các key c ng khá nhanh. LinkedHashMap<K.V> implements Map<K.V> implements Map<K. Trong Map không ch a các key trùng l p và m i key ch ánh x cho duy nh t m t giá tr t ng ng. HashMap<K. Queue c truy xu t theo nguyên t c ³vào tr c.V> Là s k t h p gi a TreeMap và LinkedHashMap.V> extends HashMap<K. ra tr c´.V> implements NavigableMap<K. Tuy nhiên thì LinkedList l i t n khá nhi u th i gian truy xu t so v i ArrayList. Serializable TreeMap dùng ánh x mà trong ó các key c s p x p theo th t . D. 1. Cloneable.