35
Chapter 2 GIỚI THIỆU JAVA 1

Chapter 2. java introduction

Embed Size (px)

Citation preview

Page 1: Chapter 2. java introduction

Chapter 2GIỚI THIỆU JAVA

1

Page 2: Chapter 2. java introduction

Java Simplified / Session 22 / 2 of 45

Giới thiệu Java Đặc điểm Java Kiến trúc của Java JVM và cấu trúc của JVM Các ấn bản Công cụ phát triển Cài đặt, thiết lập Giới thiệu các ứng dụng: độc lập, applet Example program

Nội dung

2

Page 3: Chapter 2. java introduction

Java Simplified / Session 22 / 3 of 45

Lập trình hướng chức năng Lập trình hướng đối tượng

◦C++◦C#◦VB.Net◦Java

Giới thiệu

3

Page 4: Chapter 2. java introduction

Java Simplified / Session 22 / 4 of 45

Ra đời Phát triển >

Lịch sử phát triển của Java

4

Page 5: Chapter 2. java introduction

Java Simplified / Session 22 / 5 of 45

Java và C++ đều là ngôn ngữ lập trình HĐT Java hạn chế những phức tạp không cần thiết

của C++◦Multiple Inheritance◦Pointer

Java: đơn giản, thân thiện, hướng đối tượng. Java có nhiều đặc tính tiến bộ hơn C++

◦Platform independence◦Support for the internet◦Security

Java vs. C++

5

Page 6: Chapter 2. java introduction

Java Simplified / Session 22 / 6 of 45

1. Simple Object-oriented2. Dynamic and Distributed Platform

independence3. Portable4. Multi-threads5. Secure

Các đặc điểm của Java

6

Page 7: Chapter 2. java introduction

Java Simplified / Session 22 / 7 of 45

Đơn giản◦Không sử dụng con trỏ tường minh◦Không đa thừa kế◦Cấp phát và dọn dẹp bộ nhớ tự động

Hướng đối tượng◦Ngôn ngữ hướng đối tượng thuần khiết – không

đoạn code nào nằm bên ngoài phạm vi lớp◦Mọi thứ trong Java đều liên quan đến các đối

tượng được định nghĩa trước

Simple. Object - Oriented

7

Page 8: Chapter 2. java introduction

Java Simplified / Session 22 / 8 of 45

Java cũng có đặc tính: các lớp được nạp tự động khi cần và nhiều chương trình có thể dùng chung một lớp. (Windows OS .dll).

Nó còn hỗ trợ đặc tính phân tán, tức là các phần của chương trình có thể nằm trên máy chủ lẫn trên máy khách hàng.

Hỗ trợ công nghệ lập trình RMI, CORBA, JavaBean: cho phép sử dụng lại các lớp đã tạo ra, triệu gọi các phương thức hoặc đối tượng từ một máy ở xa.

Dynamic and Distribute

8

Page 9: Chapter 2. java introduction

Java Simplified / Session 22 / 9 of 45

Phương châm “Write-once Run-everywhere” Chương trình viết trên một platform và có thể

chạy trên mọi platform có cài máy ảo Java:◦JVM thông dịch các kết quả ở dạng bytecode - ◦Bytecode có thể chạy trên hầu như mọi loại phần

cứng và hệ điều hành.◦Thư viện các hàm có thể dùng chung cho các

platform khác nhau

Platform independence

9

Page 10: Chapter 2. java introduction

Java Simplified / Session 22 / 10 of 45

Java portablility

10

Page 11: Chapter 2. java introduction

Java Simplified / Session 22 / 11 of 45

Các ứng dụng viết bằng Java có thể có nhiều tiến trình được xử lý cùng một lúc.

Java có cung cấp các lớp có thể thực hiện như là các luồng được điều khiển riêng biệt

Java tự thực hiện sự kết hợp giữa các phần trong các luồng với nhau.

Multi-threads

11

Page 12: Chapter 2. java introduction

Java Simplified / Session 22 / 12 of 45

Java được thiết kế để đảm bảo an toàn cho người dùng Java trên mạng, Có 4 tầng bảo an:

◦Mức ngôn ngữ và trình biên dịch: No pointer, chuyển đổi kiểu tường minh, trình biên dịch

kiểm tra kiểu chặt chẽ◦Trình kiểm tra lớp -Class Verifier ngăn class tới từ mạng "giả dạng" một class trên máy

khách hàng, tách biệt hoạt động của classes từ server◦Trình nạp lớp - Class Loader kiểm tra mã byte vào lúc chạy chương trình bảo đảm

chương trình Java đã được biên dịch một cách đúng đắn. ◦Trình quản lý an ninh –SecurityManager kiểm soát các hoạt động một máy ảo Java

Secure

12

Page 13: Chapter 2. java introduction

Java Simplified / Session 22 / 13 of 45

Core API : Java cung cấp cho người lập trình một thư viện các hàm chuẩn (in package)

Core API

13

Page 14: Chapter 2. java introduction

Java Simplified / Session 22 / 14 of 45

Kiến trúc của Java

14

Page 15: Chapter 2. java introduction

Java Simplified / Session 22 / 15 of 45

Chương trình Java làm việc thế nào?

1. Chương trình nguồn viết bằng NNLT Java

2. Chương trình được biên dịch thành file .class

3. Các file .class được load và

4. Thực thi bằng máy ảo Java (JVM).

Hello.java

Java Compiler

Hello.class

Run-Time Environment

JavaVirtualMachin

e

Object.class String.class

Java API class files

Page 16: Chapter 2. java introduction

Java Simplified / Session 22 / 16 of 45

Phát triển Java

16

Page 17: Chapter 2. java introduction

Java Simplified / Session 22 / 17 of 45

Máy ảo Java - JVM Khác với C++, Chương trình Java không được biên

dịch thành ngôn ngữ máy nhưng thành “bytecode” Mỗi hệ điều hành có hiện thực riêng cho máy ảo

Java - JVM:◦ Bộ máy thực thi một cách an toàn và tương thích mã byte

code trong các file .class trên một bộ vi xử lý

Page 18: Chapter 2. java introduction

Java Simplified / Session 22 / 18 of 45

JVM working

18

Page 19: Chapter 2. java introduction

Java Simplified / Session 22 / 19 of 45

Trình nạp lớp (Class Loader): đọc bytecode từ đĩa hoặc từ kết nối mạng.

Trình kiểm tra lớp (Class Verifier): Kiểm tra các lớp sẽ không sinh ra các lỗi ảnh hưởng tới hệ thống khi thực thi. ->tăng time nạp lớp (1)

Trình thực thi (Execution Unit): sẽ thực hiện các lệnh được quy định trong từng bytecode:

Trình thông dịch: chuyển đổi từng bytecode sang các thủ tục cần làm trên từng hệ thống (tra nghĩa): chậm

=> Trình biên dịch: Just-in-time (JIT): Quá trình chuyển đổi từ bytecode sang mã lệnh riêng của từng hệ thống sẽ được làm luôn một lần ngay khi nạp chương trình: tăng tốc, chiếm memory

JVM working

19

Page 20: Chapter 2. java introduction

Java Simplified / Session 22 / 20 of 45

JVM Architecture

20

Page 21: Chapter 2. java introduction

Java Simplified / Session 22 / 21 of 45

Data area:◦ Method area:  

Nơi các mã bytecode được đưa vào và lưu trữ, tạo biến tĩnh.◦ Heap area: (main memory of JVM.)

Các đối tượng của class, tạo biên non-static◦ Threads area: Các methods được thực thi. JVM tạo 2 threads:

main: thực thi methods, xác nhận việc tạo objects heap area garbage collector: xác nhận việc bỏ các object ko dùng

trong heap area.◦ Program counter Register :

Lưu lại các địa chỉ câu lệnh của từng thread đang thực thi◦ Native internal: Nơi các native method được thực thi

Native method: java method has logic in c, c++ Java Native Interface: điều hành giữa Native internal và Native method

JVM Architecture

21

Page 22: Chapter 2. java introduction

Java Simplified / Session 22 / 22 of 45

 Execution engine: điều khiển việc thực thi của JVM Class loader subsystemDùng để load các class vào method area để thực thi3 types of ClassLoaders

◦1)    ApplicationClassLoaderLoad class từ Classpath đến nơi chứa file“.class ” .◦2)    ExtensionClassLoaderLoad class từ Extension Classpath, thư mục: “%JAVA_HOME%\jre\lib\ext”◦3)    BootstrapClassLoaderLoad class từ BootstrapClasspath, thư mục: “%JAVA_HOME%\jre\lib\rt.jar”

JVM Architecture

22

Page 23: Chapter 2. java introduction

Java Simplified / Session 22 / 23 of 45

ClassLoader working procedure

23

Page 24: Chapter 2. java introduction

Java Simplified / Session 22 / 24 of 45

Công cụ phát triển Java? Để chạy ứng dụng Java, OS phải cài đặt JRE -

Java Runtime Environment, Standard Edition (JRE):◦JRE là một tập con trong Java Development Kit

(JDK) là bộ công cụ để phát triển Java◦JRE bao gồm máy ảo Java, các lớp Java cơ bản

và các file hỗ trợ

Page 25: Chapter 2. java introduction

Java Simplified / Session 22 / 25 of 45

J2SE ( Java 2 Platform, Second Edition) • Một gói phát triển phần mềm từ Sun Microsystems• Cung cấp một tập công cụ cơ bản cần thiết để viết, kiểm tra và

debug các ứng dụng Java đa mục đích: Các ứng dụng độc lập chạy trên các nền khác nhau, ứng dụng cho client cho các ứng dụng doanh nghiệp applet,

J2EE (Java 2 Platform, Enterprise Edition (J2EE)◦ Hỗ trợ phát triển các ứng dụng thương mại◦ Nền tảng để xây dựng các ứng dụng phía server.

J2ME (Java 2 Platform, Micro Edition ) ◦ Cho phép xây dựng các ứng dụng Java cho các “vi thiết bị” di

động, không dây

Các ấn bản Java

25

Page 26: Chapter 2. java introduction

Java Simplified / Session 22 / 26 of 45

SUN cung cấp một số tiện ích cho phép biên dịch bắt lỗi và tạo tài liệu cho một ứng dụng Java.

Các trình tiện ích của JDK bao gồm: javac: Bộ biên dịch Java thành bytecode java: Bộ thông dịch Java, thực thi bytecode appletviewer: Thông dịch Java thực thi các Java applet. javadoc: Tạo tài liệu dạng HTML từ mã nguồn. jdb (Java debuger): Thực hiện từng dòng trong chương

trình, đặt các breakpoint, xem giá trị các biến. javah: Tạo ra tập tin header của C để gọi hàm Java hoặc

ngược lại. javap: Trình dịch ngược java (disassembler): Hiển thị các

nội dung đã dịch. (hiển thị nghĩa của bytecode)

Công cụ phát triển JDK

26

Page 27: Chapter 2. java introduction

Java Simplified / Session 22 / 27 of 45

Một số công cụ phát triển trực quan

Sun Java Studio Creator.

Borland JBuilder

NetBeans.

JDeveloper.

Eclipse

….

Page 28: Chapter 2. java introduction

Java Simplified / Session 22 / 28 of 45

Thiết lập môi trường phát triển Java Download và cài đặt JDK 1.5 Thiết lập biến môi trường: PATH

◦ C:\Program Files\Java\jdk1.7.0_05\bin◦ Hoặc:

Tạo biến JAVA_HOME C:\Program Files\Java\jdk1.7.0_05 Thêm vào PATH:

◦ %JAVA_HOME%\bin;

Page 29: Chapter 2. java introduction

Java Simplified / Session 22 / 29 of 45

Có hai kiểu ứng dụng ◦Ứng dụng độc lập (Standalone Applicaiton) Cho

phép lập trình như các ngôn ngữ lập trình khác như Pascal, C.

◦Ứng dụng ký sinh (Applet) Cho phép tạo ra chương trình liên kết với các văn bản Web và được khởi động bởi trình duyệt Web Browser hỗ trợ Java.

Kiểu kết hợp 2 loại trên

Các kiểu ứng dụng trong Java

29

Page 30: Chapter 2. java introduction

Java Simplified / Session 22 / 30 of 45

Tạo lập một lớp được định nghĩa bởi NSD có phương thức main() và đảm bảo được đ/n đúng

Tên chương trình trùng với tên lớp chính có đuôi .java

Dịch tệp chương trình (dùng javac) để tạo ra tệp mã bytecode, có đuôi là .class

Dùng chương trình thông dịch (java) để chạy chương trình đã dịch.

Ứng dụng độc lập

30

Page 31: Chapter 2. java introduction

Java Simplified / Session 22 / 31 of 45

A Sample Java program

31

// This is a simple program called First.javaclass First{ public static void main (String [] args) { System.out.println ("My first program in Java ");

}}

Page 32: Chapter 2. java introduction

Java Simplified / Session 22 / 32 of 45

class First // tên lớp = tên filepublic static void main (String [] args){// nội dung chương trình}Public: được phép truy nhập đối với mọi lớp từ bên ngoài và cho phép gọi để thực hiện bởi CTTD JavaStatic: hàm phụ thuộc vào cả lớp (ko phụ thuộc Object cụ thể)Void: hàm main() không cần kq trả về.String [] args: hàm main() có các đối số là mảng các xâu (object) args[] của String

Cấu trúc chương trình Java

32

Page 33: Chapter 2. java introduction

Java Simplified / Session 22 / 33 of 45

Passing Command Line Arguments

33

class CommLineArg{

public static void main (String [] pargs){

System.out.println("These are the arguments passed to the main method.");

System.out.println(pargs [0]);System.out.println(pargs [1]);System.out.println(pargs [2]);

}}

Page 34: Chapter 2. java introduction

Java Simplified / Session 22 / 34 of 45

- Soạn code, ex: vd.java- Biên dịch bằng javac vd.java -> vd.class- Soạn file html (vd.html), nạp file vd.class vào:

- Tên của tệp lớp applet- Kích thước của appletEx: <applet code="Simple.class" width=200 height=300></applet>

- Chạy file html bằng web Browser hoặc appletviewer (JDK hỗ trợ):

appletviewer vd.html

Applet

34

Page 35: Chapter 2. java introduction

Java Simplified / Session 22 / 35 of 45

A simple appletimport java.awt.*;import java.applet.*;public class Simple extends Applet{

String str;public void init(){

str = "Java is interesting!";}public void paint(Graphics g){

g.drawString(str, 70, 80);}

}

35

<HTML><HEAD><TITLE>The first my Web</TITLE></HEAD><BODY><H1>Hello everyone<APPLET code="Simple.class" width=200 height=200 ></APPLET></BODY></HTML>