CoreJAVA - Chương 2 pptx

7 123 0
CoreJAVA - Chương 2 pptx

Đang tải... (xem toàn văn)

Thông tin tài liệu

Bài 2: Mô t v Java Ni dung chính • Nm đc các đc trng ca Java • Các kiu chng trình Java • Ðnh ngha v máy o Java • Các ni dung ca JDK(Java Development Kit) • S lc các đc trng mi ca Java2 2.1 Mô t v Java Java là mt ngôn ng lp trình đc Sun Microsystems gii thiu vào tháng 6 nm 1995. T đó, nó đã tr thành mt công c lp trình ca các lp trình viên chuyên nghip. Java đc xây dng trên nn tng ca C và C++. Do vy nó s dng các cú pháp ca C và các đc trng hng đi tng ca C++. Vào nm 1991, mt nhóm các k s ca Sun Microsystems có ý đnh thit k mt ngôn ng lp trình đ điu khin các thit b đin t nh Tivi, máy git, lò nng, … Mc dù C và C++ có kh nng làm vic này nhng trình biên dch li ph thuc vào tng loi CPU. Trình biên dch thng phi tn nhiu thi gian đ xây dng nên rt đt. Vì vy đ mi loi CPU có mt trình biên dch riêng là rt tn kém. Do đó nhu cu thc t đòi hi mt ngôn ng chy nhanh, gn, hiu qu và đc lp thit b tc là có th chy trên nhiu loi CPU khác nhau, di các môi trng khác nhau. “Oak” đã ra đi và vào nm 1995 đc đi tên thành Java. Mc dù mc tiêu ban đu không phi cho Internet nhng do đc trng không ph thuc thit b nên Java đã tr thành ngôn ng lp trình cho Internet. 2.1.1 Java là gì Java là ngôn ng lp trình hng đi tng, do vy không th dùng Java đ vit mt chng trình hng chc nng. Java có th gii quyt hu ht các công vic mà các ngôn ng khác có th làm đc. Java là ngôn ng va biên dch va thông dch. u tiên mã ngun đc biên dch bng công c JAVAC đ chuyn thành dng ByteCode. Sau đó đc thc thi trên tng loi máy c th nh chng trình thông dch. Mc tiêu ca các nhà thit k Java là cho phép ngi lp trình vit chng trình mt ln nhng có th chy trên bt c phn cng c th. Ngày nay, Java đc s dng rng rãi đ vit chng trình chy trên Internet. Nó là ngôn ng lp trình hng đi tng đc lp thit b, không ph thuc vào h điu hành. Nó không ch dùng đ vit các ng dng chy đn l hay trong mng mà còn đ xây dng các trình điu khin thit b cho đin thoi di đng, PDA, … 2.2 Các đc trng ca Java • n gin • Hng đi tng • c lp phn cng và h điu hành • Mnh • Bo mt • Phân tán • a lung • ng 2.2.1 n gin Nhng ngi thit k mong mun phát trin mt ngôn ng d hc và quen thuc vi đa s ngi lp trình. Do vy Java đc loi b các đc trng phc tp ca C và C++ nh thao tác con tr, thao tác np đè (overload),… Java không s dng lnh “goto” cng nh file header (.h). Cu trúc “struct” và “union” cng đc loi b khi Java. 2.2.2 Hng đi tng Java đc thit k xoay quanh mô hình hng đi tng. Vì vy trong Java, tiêu đim là d liu và các phng pháp thao tác lên d liu đó. D liu và các phng pháp mô t trng thái và cách ng x ca mt đi tng trong Java. 2.2.3 c lp phn cng và h điu hành ây là kh nng mt chng trình đc vit ti mt máy nhng có th chy đc bt k đâu. Chúng đc th hin  mc mã ngun và mc nh phân.  mc mã ngun, ngi lp trình cn mô t kiu cho mi bin. Kiu d liu trong Java nht quán cho tt c các h điu hành và phn cng khác nhau. Java có riêng mt th vin các lp c s. Vì vy chng trình Java đc vit trên mt máy có th dch và chy trn tru trên các loi máy khác mà không cn vit li.  mc nh phân, mt chng trình đã biên dch có th chy trên nn khác mà không cn dch li mã ngun. Tuy vy cn có phn mm máy o Java (s đ cp đn  phn sau) hot đng nh mt trình thông dch ti máy thc thi. H ình 2.1 Trình biên dch s chuyn các chng trình vit bng C, C++ hay ngôn ng khác thành mã máy nhng ph thuc vào CPU. Nên khi mun chy trên loi CPU khác, chúng ta phi biên dch li chng trình. Hình 2.2 Môi trng phát trin ca Java đc chia làm hai phn: Trình biên dch và trình thông dch. Không nh C hay C++, trình biên dch ca Java chuyn mã ngun thành dng bytecode đc lp vi phn cng mà có th chy trên bt k CPU nào. Nhng đ thc thi chng trình di dng bytecode, ti mi máy cn phi có trình thông dch ca Java hay còn gi là máy o Java. Máy o Java chuyn bytecode thành mã lnh mà CPU thc thi đc. 2.2.4 Mnh m Java yêu cu cht ch v kiu d liu và phi mô t rõ ràng khi vit chng trình. Chúng s kim tra lúc biên dch và c trong thi gian thông dch vì vy Java loi b các kiu d liu d gây ra li. 2.2.5 Bo mt Java cung cp mt s lp đ kim tra bo mt.  lp đu tiên, d liu và các phng pháp đc đóng gói bên trong lp. Chúng ch đc truy xut thông qua các giao din mà lp cung cp. Java không h tr con tr vì vy không cho phép truy xut b nh trc tip. Nó cng ngn chn không cho truy xut thông tin bên ngoài ca mng bng k thut tràn và cng cung cp k thut dn rác trong b nh. Các đc trng này to cho Java an toàn và có kh nng c đng cao. Trong lp th hai, trình biên dch kim soát đ đm bo mã an toàn. Lp th ba đc đm bo bi trình thông dch. Chúng kim tra xem bytecode có đm bo các qui tc an toàn trc khi thc thi. Lp th t kim soát vic np các lp lên b nh đ giám sát vic vi phm gii hn truy xut trc khi np vào h thng. 2.2.6 Phân tán Java có th dùng đ xây dng các ng dng có th làm vic trên nhiu phn cng, h điu hành và giao din đ ha. Java đc thit k cho các ng dng chy trên mng. Vì vy chúng đc s dng rng rãi trên Internet, ni s dng nhiu nn tng khác nhau. 2.2.7 a lung Chng trình Java s dng k thut đa tin trình (Multithread) đ thc thi các công vic đng thi. Chúng cng cung cp gii pháp đng b gia các tin trình. c tính h tr đa tin trình này cho phép xây dng các ng dng trên mng chy uyn chuyn. 2.2.8 ng Java đc thit k nh mt ngôn ng đng đ đáp ng cho nhng môi trng m. Các chng trình Java b xung các thông tin cho các đi tng ti thi gian thc thi. iu này cho phép kh nng liên kt đng các mã. 2.3 Các kiu chng trình Java Chúng ta có th xây dng các loi chng trình Java nh sau: 2.3.1 Applets ây là chng trình chy trên Internet thông qua các trình duyt h tr Java nh IE hay Netscape. Bn có th dùng các công c ca Java đ xây dng Applet. Applet đc nhúng bên trong trang Web hoc file HTML. Khi trang Web hin th trong trình duyt, Applet s đc np và thc thi. 2.3.2 ng dng thc thi qua dòng lnh Các chng trình này chy t du nhc lnh và không s dng giao din đ ha. Các thông tin nhp xut đc th hin ti du nhc lnh. 2.3.3 ng dng đ ha ây là các chng trình Java chy đc lp cho phép ngi dùng tng tác qua giao din đ ha. 2.3.4 Servlet Java thích hp đ phát trin ng dng nhiu lp. Applet là chng trình đ ha chy trên trình duyt ti máy trm.  các ng dng Web, máy trm gi yêu cu ti máy ch. Máy ch x lý và gi ngc kt qu tr li máy trm. Các chng trình Java API chy trên máy ch giám sát các quá trình ti máy ch và tr li các yêu cu ca máy trm. Các chng trình Java API chy trên máy ch này m rng kh nng ca các ng dng Java API chun. Các ng dng trên máy ch này đc gi là các Servlet. hoc Applet ti máy ch. Các x lý trên Form ca HTML là cách s dng đn gin nht ca Servlet. Chúng còn còn có th đc dùng đ x lý d liu, thc thi các transaction và thng đc thc thi qua má y ch Web. 2.3.5 ng dng c s d liu Các ng dng này s dng JDBC API đ kt ni ti c s d liu. Chúng có th là Applet hay ng dng, nhng Applet b gii hn bi tính bo mt. 2.4 Máy o Java (JVM-Java Virtual Machine) Máy o Java là trái tim ca ngôn ng Java. Môi trng Java bao gm nm phn t sau: - Ngôn ng - Ðnh ngha Bytecode - Các th vin lp Java/Sun - Máy o Java (JVM) - Cu trúc ca file .class Các phn t to cho Java thành công là - Ðnh ngha Bytecode - Cu trúc ca file .class - Máy o Java (JVM) Kh nng c đng ca file .class cho phép các chng trình Java vit mt ln nhng chy  bt k đâu. Kh nng này có đc nh s giúp đ ca máy o Java. 2.4.1 Máy o Java là gì ? Máy o là mt phn mm da trên c s máy tính o. Nó có tp hp các lnh logic đ xác đnh các hot đng ca máy tính. Ngi ta có th xem nó nh mt h điu hành thu nh. Nó thit lp các lp tru tng cho: Phn cng bên di, h điu hành, mã đã biên dch. Trình biên dch chuyn mã ngun thành tp các lnh ca máy o mà không ph thuc vào phn cng c th. Trình thông dch trên mi máy s chuyn tp lnh này thành chng trình thc thi. Máy o to ra mt môi trng bên trong đ thc thi các lnh bng cách: - Np các file .class - Qun lý b nh - Dn “rác” Vic không nht quán ca phn cng làm cho máy o phi s dng ngn xp đ lu tr các thông tin sau: - Các “Frame” cha các trng thái ca các phng pháp. - Các toán hng ca mã bytecode. - Các tham s truyn cho phng pháp. - Các bin cc b. Khi JVM thc thi mã, mt thanh ghi cc b có tên “Program Counter” đc s dng. Thanh ghi này tr ti lnh đang thc hin. Khi cn thit, có th thay đi ni dung thanh ghi đ đi hng thc thi ca chng trình. Trong trng hp thông thng thì tng lnh mt ni tip nhau s đc thc thi. Mt khái nim thông dng khác trong Java là trình biên dch “Just In Time-JIT”. Các trình duyt thông dng nh Netscape hay IE đu có JIT bên trong đ tng tc đ thc thi chng trình Java. Mc đích chính ca JIT là chuyn tp lnh bytecode thành mã máy c th cho tng loi CPU. Các lnh này s đc lu tr và s dng mi khi gi đn. 2.4.2 Qun lý b nh và dn rác Trong C, C++ hay Pascal ngi lp trình s dng phng pháp nguyên thy đ cp phát và thu hi b nh  vùng “Heap”. Heap là vùng b nh ln đc phân chia cho tt c các thread.  qun lý Heap, b nh đc theo dõi qua các danh sách sau: - Danh sách các vùng nh rnh cha cp phát. - Danh sách các vùng đã cp. Khi có mt yêu cu v cp phát b nh, h thng xem xét trong danh sách cha cp phát đ ly ra khi b nh đu tiên có kích c sát nht. Chin thut cp phát này gim ti thiu vic phân mnh ca heap. “Coalescing” là k thut khác cng gim thiu vic phân mnh ca heap b ng cách gom li các vùng nh cha dùng lin nhau. Còn k thu t sp xp li các phn đã dùng đ to vùng nh rnh ln hn gi là “Compaction”. Java s dng hai heap riêng bit cho cp phát vùng nh tnh và vùng nh đng. Mt heap (heap tnh) cha các đnh ngha v lp, các hng và danh sách các phng pháp. Heap còn li (heap đng) đc chia làm hai phn đc cp phát theo hai chiu ngc nhau. Mt bên cha đi tng còn mt bên cha con tr tr đn đi tng đó. “Handle” là cu trúc bao gm hai con tr. Mt tr đn bng phng pháp ca đi tng, con tr th hai tr đn chính đi tng đó. Chú ý rng khi “compaction” cn cp nht li giá tr con tr ca cu trúc “handle”. Thut toán dn rác có th áp dng cho các đi tng đt trong heap đng. Khi có yêu cu v b nh, trình qun lý heap trc tiên kim tra danh sách b nh cha cp phát. Nu không tìm thy khi b nh nào phù hp (v kích c) thì trình dn rác s đc kích hot khi h thng rnh. Nhng khi đòi hi b nh cp bách thì trình dn rác s đc kích hot ngay. Trình dn rác gi hàm Finalize trc khi dn dp đi tng. Hàm này s dn dp các tài nguyên bên ngoài nh các file đang m. Công vic này không đc trình dn rác thc thi. 2.4.3 Quá trình kim tra file .class Vic kim tra đc áp dng cho tt c các file .class sp đc np lên b nh đ đm bo tính an toàn. Trình “Class Loader” s kim tra tt c các file .class không thuc h điu hành vi mc đích giám sát s tuân th các nghi thc đ phát hin các file .class có nguy c gây h hng đn b nh, h thng file cc b, mng hoc h điu hành. Quá trình kim tra s xem xét đn tính toàn vn toàn cc ca lp. File .class bao gm ba phn logic là: - Bytecode - Thông tin v Class nh phng pháp, giao din và các giá tr đc tp hp trong quá trình biên dch. - Các thuc tính v lp. Các thông tin ca file .class đc xem xét riêng r trong các bng sau: - Bng Field cha các thuc tính - Bng Method cha các hàm ca class - Bng Interface cha các giao din và các hng s Quá trình kim tra file .class đc thc hin  bn mc: • Mc đu tiên thc hin vic kim tra cú pháp đ đm bo tính cu trúc và tính toàn vn cú pháp ca file .class đc np. • Mc th hai s xem xét file .class đ đm bo các file này không vi phm các nguyên tc v s nht quán ng ngha. • Mc th ba s kim tra bytecode. Trong bc này các thông tin so sánh s là s thông s truyn ca hàm, kh nng truy xut sai ch s ca mng, chui, biu thc. • Mc th t s kim tra trong thi gian thc thi đ  gi ám s át c ác vi c còn li m à ba b  c tr ên ch a l àm. Ví d nh liên kt ti các lp khác trong khi thc thi, hay kim tra quyn truy xut. Nu mi điu tha mãn, lp s đc khi to. 2.5 B công c phát trin JDK (Java Development Kit) Sun Microsystem đa ra ngôn ng lp trình Java qua sn phm có tên là Java Development Kit (JDK). Ba phiên bn chính là: - Java 1.0 - S dng ln đu vào nm 1995 - Java 1.1 – Ða ra nm 1997 vI nhiu u đim hn phiên bn trc. - Java 2 – Phiên bn mi nht JDK bao gm Java Plug-In, chúng cho phép chy trc tip Java Applet hay JavaBean bng cách dùng JRE thay cho s dng môi trng thc thi m c đnh ca trình duyt. JDK cha các công c sau: 2.5.1 Trình biên dch, 'javac' Cú pháp: javac [options] sourcecodename.java 2.5.2 Trình thông dch, 'java' Cú pháp: java [options] classname 2.5.3 Trình dch ngc, 'javap' Cú pháp: javap [options] classname 2.5.4 Công c sinh tài liu, 'javadoc' Cú pháp: javadoc [options] sourcecodename.java 2.5.5 Chng trình tìm li - Debug, 'jdb‘ Cú pháp: jdb [options] sourcecodename.java OR jdb -host -password [options] sourcecodename.java 2.5.6 Chng trình xem Applet , 'appletviewer‘ Cú pháp: appletviewer [options] sourcecodename.java / url 2.6 Java Core API Nhân Java API đc đa ra qua phiên bn JFC 1.1. Mt s package thng dùng đc lit kê nh sau: 2.6.1 java.lang Cha các lp quan trng nht ca ngôn ng Java. Chúng bao gm các kiu d liu c bn nh Character, Integer,… Chúng cng cha các lp làm nhim v x lý li và các lp nhp xut chun. Mt vài lp quan trng khác nh String hay StringBuffer. 2.6.2 java.applet ây là package nh nht cha mt mình lp Applet. Các lp Applet nhúng trong trang Web đu dn xut t lp này. 2.6.3 java.awt Package này đc gi là Abstract Window Toolkit (AWT). Chúng cha các tài nguyên dùng đ to giao din đ ha. Mt s lp bên trong là: Button, GridBagLayout, Graphics. 2.6.4 java.io Cung cp th vin nhp xut chun ca ngôn ng. Chúng cho phép to và qun lý dòng d liu theo mt vài cách. 2.6.5 java.util Package này cung cp mt s công c hu ích. Mt vài lp ca package này là: Date, Hashtable, Stack, Vector và StringTokenizer. 2.6.6 java.net Cung cp kh nng giao tip vi máy t xa. Cho phép to và kt ni vi Socket hoc URL. 2.6.7 java.awt.event Cha các l p dùng đ x lý các s kin trong chng trình nh chut, bàn phím. 2.6.8 java.rmi Công c đ gi hàm t xa. Chúng cho phép to đi tng trên máy khác và s dng các đi tng đó trên máy cc b. 2.6.9 java.security Cung cp các công c cn thit đ mã hóa và đm bo tính an toàn ca d liu truyn gia máy trm và máy ch. 2.6.10 java.sql Package này cha Java DataBase Connectivity (JDBC), dùng đ truy xut c s d liu quan h nh Oracle, SQL Server. 2.7 Các đc trng mi ca Java 2 Các phiên bn trc ca Java ch thích hp đ vit các ng dng nh trên Web hn là xây dng các ng dng chy trên mng đ đm nhim toàn b các công vic ca ca mt công ty hoc h thng phân tán. Java 2 đáp ng yêu cu này. Mt vài đc trng ca chúng là: - Swing ây là mt tp các lp và giao din mi dùng đ to giai din ng dng đ ha bng thit k “Nhìn và cn giác” (Look and Feel) - Kéo và th ây là kh nng di chuyn thông tin gia các ng dng hay các phn khác nhau ca chng trình. - Java 2D API Cha các tp hp các lp h tr cho nh và đ ha hai chiu. - Âm thanh Tp hp các đc trng âm thanh hoàn toàn mi cho Java. - RMI RMI (Remote Method Invocation) cho phép các ng dng gi các phng pháp ca đi tng ti máy t xa và cho phép giao tip vi chúng. Tóm tt - Java là ngôn ng biên dch và thông dch - Các đc trng ca Java : n gin, Hng đi tng, c lp phn cng, Mnh, Bo mt, Phân tán, a lung, ng - Máy o Java - Java Development Kit - Các đc trng mi ca Java 2 Bài tp - Cài đt Java 2 - Gõ các lnh sau ti du nhc và lit kê các tham s khác nhau ca chúng: javac java . Java (JVM-Java Virtual Machine) Máy o Java là trái tim ca ngôn ng Java. Môi trng Java bao gm nm phn t sau: - Ngôn ng - Ðnh ngha Bytecode - Các th vin lp Java/Sun - Máy o. - Các đc trng ca Java : n gin, Hng đi tng, c lp phn cng, Mnh, Bo mt, Phân tán, a lung, ng - Máy o Java - Java Development Kit - Các đc trng mi ca Java 2. vin lp Java/Sun - Máy o Java (JVM) - Cu trúc ca file .class Các phn t to cho Java thành công là - Ðnh ngha Bytecode - Cu trúc ca file .class - Máy o Java (JVM) Kh nng c đng

Ngày đăng: 02/08/2014, 07:21

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan