Lịch sử Java
 Các dạng ứng dụng của Java
 Quá trình dịch chương trình Java
 Máy ảo Java – Java Virtual Machine (JVM)
 Java Development Kit (JDK)
 Một sốmôi trường phát triển tích hợp (IDE)-
                
              
                                            
                                
            
                       
            
                 178 trang
178 trang | 
Chia sẻ: haohao89 | Lượt xem: 2203 | Lượt tải: 1 
              
            Bạn đang xem trước 20 trang tài liệu Bài giảng Ngôn ngữ Java: Giới thiệu Java, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
1NGÔN NGỮ JAVA
2Nội dung
 Giới thiệu Java
 Chương trình Java đầu tiên
 Cơ bản về biến và đối tượng
 Các cấu trúc điều khiển
 Mảng
 Một số lớp trong java
33
Giới thiệu Java
 Lịch sử Java
 Các dạng ứng dụng của Java
 Quá trình dịch chương trình Java
 Máy ảo Java – Java Virtual Machine (JVM)
 Java Development Kit (JDK)
 Một số môi trường phát triển tích hợp (IDE)-
4Lịch sử Java
 1991: được Sun Microsystems phát triển nhằm mục đích viết
phần mềm điều khiển (phần mềm nhúng) cho các sản phẩm
gia dụng
 lúc đầu được đặt tên là Oak
 1995: được phổ cập với sự phát triển mạnh mẽ của Internet
 thị trường phần mềm nhúng không phát triển mạnh
WWW bùng nổ (1993~)
 Hiện nay, được chấp nhận rộng rãi với tư cách là một ngôn
ngữ (công nghệ) đa dụng
 khả chuyển, an toàn
 hướng đối tượng, hướng thành phần
5Java là gì?
 Một ngôn ngữ lập trình hướng đối tượng.
 Một ngôn ngữ lập trình vừa biên dịch vừa thông dịch.
 Đầu tiên, mã nguồn (.java) được biên dịch để chuyển thành
dạng bytecode (.class) nhờ trình biên dịch javac.
 Sau đó được thực thi trên từng máy cụ thể nhờ trình thông dịch
java.
 Một ngôn ngữ độc lập nền (phần cứng và hệ điều hành)
 Chương trình java nếu chạy đúng trên phần cứng của một họ
máy nào đó thì nó cũng chạy đúng trên tất cả các họ máy khác.
 Chương trình java có thể chạy trên tất cả các hệ điều hành,
miễn là có cài máy ảo java (Java Virtual Machine).
Write once, run anywhere
6Các chương trình dịch truyền thống
7Chương trình dịch Java
88
Giới thiệu Java
 Lịch sử Java
 Các dạng ứng dụng của Java
 Quá trình dịch chương trình Java
 Máy ảo Java – Java Virtual Machine (JVM)
 Java Development Kit (JDK)
 Một số môi trường phát triển tích hợp (IDE)
9Các dạng ứng dụng của Java
 Applets
 Chương trình chạy trên Internet
10
Các dạng ứng dụng của Java
 Console applications
 Chạy dạng dòng lệnh
11
Các dạng ứng dụng của Java
 GUI Applications
 Chương trình chạy độc lập với giao diện đồ họa
12
Các dạng ứng dụng của Java
 Ứng dụng Web (JSP/Servlet)
1313
Giới thiệu Java
 Lịch sử Java
 Các dạng ứng dụng của Java
 Quá trình dịch chương trình Java
 Máy ảo Java – Java Virtual Machine (JVM)
 Java Development Kit (JDK)
 Một số môi trường phát triển tích hợp (IDE)
14
Dịch và thực thi chương trình Java
 Viết mã nguồn: dùng một chương trình soạn thảo (NotePad,…) để viết
mã nguồn và lưu lại với tên có đuôi “.java”.
 Biên dịch ra mã máy ảo: dùng trình biên dịch javac để biên dịch mã
nguồn “.java” thành mã của máy ảo (bytecode) có đuôi “.class” và lưu lên
đĩa.
 Thông dịch và thực thi: ứng dụng được load vào bộ nhớ, thông dịch
và thực thi, dùng trình thông dịch java.
 Đưa mã bytecode vào bộ nhớ: đây là bước “loading”. Chương trình
phải được đặt vào trong bộ nhớ trước khi thực thi. “Loader” sẽ lấy các
files chứa mã bytecode có đuôi “.class” và nạp chúng vào bộ nhớ.
 Kiểm tra mã bytecode: trước khi trình thông dịch chuyển mã bytecode
thành mã máy tương ứng để thực thi thì các mã bytecode phải được
kiểm tra tính hợp lệ.
 Thông dịch & thực thi: cuối cùng dưới sự điều khiển của CPU và
trình thông dịch tại mỗi thời điểm sẽ có một mã bytecode được chuyển
sang mã máy và thực thi.
15
Primary
Memory
.
.
.
.
.
.
Disk
Disk
Disk
Editor
Compiler
Class Loader
Program is created in an editor
and stored on disk in a file
ending with .java.
Compiler creates bytecodes
and stores them on disk in a file
ending with .class.
Class loader reads
.class files containing
bytecodes from disk and
puts those bytecodes in
memory.
Phase 1
Phase 2
Phase 3
Primary
Memory
.
.
.
.
.
.
Bytecode Verifier Bytecode verifier confirms
that all bytecodes are valid
and do not violate Java’s
security restrictions.
Phase 4
Primary
Memory
.
.
.
.
.
.
Interpreter
Interpreter reads bytecodes
and translates them into a
language that the computer
can understand, possibly
storing data values as the
program executes.
Phase 5
16
Lỗi Chương Trình
errors
errors
Edit and
save program
Compile program
Execute program and
evaluate results
17
Lỗi Chương Trình
 1 chương trình có 3 kiểu lỗi:
 Lỗi biên dịch (compile-time errors): liên quan đến cú
pháp.
 Lỗi xuất hiện trong quá trình thực thi chương trình (run-
time errors), chương trình kết thúc. Ví dụ: chia 1 số cho 0.
 logical errors: Kết quả sai.
18
Giới thiệu Java
 Lịch sử Java
 Các dạng ứng dụng của Java
 Quá trình dịch chương trình Java
 Máy ảo Java – Java Virtual Machine (JVM)
 Java Development Kit (JDK)
 Một số môi trường phát triển tích hợp (IDE)
19
Java Virtual Machine - JVM
 JVM (máy ảo Java) là một phần mềm mô phỏng một máy
tính thật, được xem như một máy tính thu nhỏ.
 Có tập các lệnh logic để xác định hoạt động của máy
tính.
 Nó thiết lập 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
 JVM cung cấp môi trường bên trong để thực thi chương trình
Java (dạng bytecode).
 JVM thông thường được cung cấp dưới dạng phần mềm.
 JRE - Java Runtime Environment
2020
Giới thiệu Java
 Lịch sử Java
 Các dạng ứng dụng của Java
 Quá trình dịch chương trình Java
 Máy ảo Java – Java Virtual Machine (JVM)
 Java Development Kit (JDK)
 Một số môi trường phát triển tích hợp (IDE)
21
Java Development Kit (JDK)
 Môi trường phát triển và thực thi do Sun Microsystems cung
cấp (
 Bao gồm phần mềm và công cụ giúp compile, debug và
execute ứng dụng.
 JDK 1.0 - 1996
 JDK 1.1 - 1997
 JDK 1.2 (Java 2) - 1998
 JDK 1.3 - 2000
 Java 1.4 - 2002
 Java 5 (1.5) – Tiger - 2004
 Java 6 - 2006
 Cài đặt…
22
Java Development Kit (JDK)
 Compiler (trình biên dịch)
 Syntax: javac [option] source
 Source : files ends with an extension of .java
 options :
 -classpath…..
23
Java Development Kit (JDK)
 Interpreter (trình thông dịch)
 Syntax: java [option] classname [arguments]
 classname : files ends with an extension of .class
 options can include
 -classpath ……
2424
Giới thiệu Java
 Lịch sử Java
 Các dạng ứng dụng của Java
 Quá trình dịch chương trình Java
 Máy ảo Java – Java Virtual Machine (JVM)
 Java Development Kit (JDK)
 Một số môi trường phát triển tích hợp (IDE)
25
Một số IDE (Integrated Development Environment )
 Giúp phát triển ứng dụng một cách đơn giản, nhanh chóng
và hiệu quả.
 Java Studio của Sun
 Borland JBuilder của Borland
 Eclipse của IBM
 JCreator của Xinor
…..
26
Nội dung
 Giới thiệu Java
 Chương trình Java đầu tiên
 Cơ bản về biến và đối tượng
 Các cấu trúc điều khiển
 Mảng
 Một số lớp trong java
27
Cấu trúc một chương trình Java
 Trong ngôn ngữ lập trình Java:
 Một chương trình được tạo bởi một hay nhiều lớp
 Một lớp chứa một hay nhiều phương thức
 Một phương thức chứa các câu lệnh chương trình
 Một chương trình ứng dụng Java luôn luôn chứa một phương thức
gọi là main. class header
method body
// Những ghi chú về lớp
method header
// Những ghi chú về lớp
28
/*
* Created on Jul 14, 2005
*
* First Java Program
*/
package com.jds.sample;
import java.util.*;
/**
* @author JDS
*/
public class JavaMain {
public static void main(String[] args) {
// print a message
System.out.println("Welcome to Java!");
}
}
class Extra {
/*
* class body
*/
}
1. Package declaration
Used to organize a collection of
related classes.
2. Import statement
Used to reference classes.
3. Class declaration
A Java source file can have
several classes but only one
public class is allowed.
declaration order
Cấu trúc một chương trình Java
29
1. Single Line Comment
// insert comments
here
2. Block Comment
/*
* insert comments
here
*/
3. Documentation Comment
/**
* insert
documentation
*/
/*
* Created on Jul 14, 2005
*
* First Java Program
*/
package com.jds.sample;
import java.util.*;
/**
* @author JDS
*/
public class JavaMain {
public static void main(String[] args) {
// print a message
System.out.println("Welcome to Java!");
}
}
class Extra {
/*
* class body
*/
}
Cấu trúc một chương trình Java
Comments
30
Chú thích (Comments)
 Comments trong một chương trình gọi là inline documentation
 Chúng được sử dụng để giải thích mục đích của chương trình và miêu
tả những bước xử lý trong chương trình.
 Những comment không ảnh hưởng đến một chương trình làm việc
như thế nào
 Java có 3 dạng comment:
// Chú thích một dòng
/* Chú thích trên nhiều dòng: chú thích dòng 1
chú thích dòng 2 ... */
/** Chú thích dạng tài liệu */
31
/*
* Created on Jul 14, 2005
*
* First Java Program
*/
package com.jds.sample;
import java.util.*;
/**
* @author JDS
*/
public class JavaMain {
public static void main(String[] args) {
// print a message
System.out.println("Welcome to
Java!");
}
}
class Extra {
/*
* class body
*/
}
•Every java program includes at
least one class definition.
The class is the fundamental
component of all Java programs.
•A class definition contains all the
variables and methods that
make the program work. This is
contained in the class body
indicated by the opening and
closing braces.
Cấu trúc một chương trình Java
Class
32
/*
* Created on Jul 14, 2005
*
* First Java Program
*/
package com.jds.sample;
import java.util.*;
/**
* @author JDS
*/
public class JavaMain {
public static void main(String[] args) {
// print a message
System.out.println("Welcome to Java!");
}
}
class Extra {
/*
* class body
*/
}
Cấu trúc một chương trình Java
• Braces are used for grouping
statements or block of codes.
• The left brace ( { ) indicates
the beginning of a class body,
which contains any variables
and methods the class needs.
• The left brace also indicates
the beginning of a method
body.
• For every left brace that
opens a class or method you
need a corresponding right
brace ( } ) to close the class or
method.
• A right brace always closes
its nearest left brace.
Braces
33
/*
* Created on Jul 14, 2005
*
* First Java Program
*/
package com.jds.sample;
import java.util.*;
/**
* @author JDS
*/
public class JavaMain {
public static void main(String args[]) {
// print a message
System.out.println("Welcome to Java!");
}
}
class Extra {
/*
* class body
*/
}
Cấu trúc một chương trình Java
This line begins the main()
method. This is the line at which the
program will begin executing.
main() method
Declares a parameter named
args, which is an array of String.
It represents command-line
arguments.
String args[]
34
/*
* Created on Jul 14, 2005
*
* First Java Program
*/
package com.jds.sample;
import java.util.*;
/**
* @author JDS
*/
public class JavaMain {
public static void main(String[] args) {
// print a message
System.out.println("Welcome to Java!");
}
}
class Extra {
/*
* class body
*/
}
Java Source File Structure
• A complete unit of work in a
Java program.
• A statement is always
terminated with a semicolon and
may span multiple lines in your
source code.
Java statement
This line outputs the string
“Welcome to Java!” followed by
a new line on the screen.
System.out.println()
35
Chương trình java đầu tiên
 Yêu cầu: Viết chương trình xuất chuỗi “Welcome to Java
Programming!” ra màn hình.
 Phân tích:
- Cần tác vụ xuất Sử dụng gói của java import java….*
- Cần tạo 1 lớp có chức năng xuất chuỗi này (lớp Welcome) . Vì
chức năng của chương trình đơn giản -> lớp này chỉ có 1 hành vi
main(…), nội dung hành vi là xuất chuỗi được yêu cầu.
 Cách làm 1: Viết code bằng 1 editor, về dấu nhắc Command
Prompt biên dịch, chạy chương trình.
 Cách làm 2: Nhờ 1 IDE như Jcreator, JPadPro, Jbuilder, … cho
phép vừa viết code vừa thực thi.
36
1 // Welcome1.java
2 // Text-printing program.
3
4 public class Welcome1 {
5
6
7 public static void main( String args[] )
8 {
9 System.out.println("Welcome to Java Programming!");
10
11 }
12
13 }
Welcome to Java Programming!
37
Chương trình Java đầu tiên
 javac Welcome1.java
 Nếu không có lỗi sẽ tạo ra file Welcome1.class
 java Welcome1
Output
38
Welcome to Java Programming!
1 // Fig. 2.3: Welcome2.java
2 // Printing a line of text with multiple statements.
3
4 public class Welcome2 {
5
6
7 public static void main( String args[] )
8 {
9 System.out.print( "Welcome to " );
10 System.out.println( "Java Programming!");
11
12 }
13
14 }
System.out.print keeps the
cursor on the same line, so
System.out.println continues
on the same line.
Bài tập
 Viết chương trình in ra thông tin của bạn, thông tin bao gồm:
MaSV, Họ tên, Ngày sinh, Lớp, Điểm trung bình…
vd: MaSV: 12345
Họ tên: Nguyen Thanh Thuong
Ngày sinh: 12-10-1989
Lớp: 08CTH123
Điểm TB: 7.9
 Viết chương trình xuất ra các hình dưới đây:
39
40
Nội dung
 Giới thiệu Java
 Chương trình Java đầu tiên
 Cơ bản về biến và đối tượng
 Các cấu trúc điều khiển
 Mảng
 Một số lớp trong java
41
Định danh-Tên
 Bắt đầu bằng ký tự, ký tự gạch dưới (underscore ‘_’ ) hay ký tự ‘$’
 Sau đó là các ký tự ký số hay ‘_’, ‘$’ , không dùng các ký tự khác
như: khoảng trống, ký hiệu phép toán
 Java phân biệt chữ hoa, chữ thường - Total, total, và TOTAL là
những định danh khác nhau
 Theo qui ước, người lập trình sử dụng kiểu chữ khác nhau cho những
kiểu định danh khác nhau, chẳng hạn như:
 Kiểu chữ hoa đầu cho tên lớp- HelloWorld
 Kiểu chữ hoa cho hằng – MAXIMUM
 Những từ khóa không được sử dụng và một định danh có thể có độ
dài bất kỳ.
42
Từ khóa
 Những từ khóa trong Java:
abstract
assert
boolean
break
byte
case
catch
char
class
const
continue
default
do
double
else
enum
extends
false
final
finally
float
for
goto
if
implements
import
instanceof
int
interface
long
native
new
null
package
private
protected
public
return
short
static
strictfp
super
switch
synchronized
this
throw
throws
transient
true
try
void
volatile
while
43
Từ khóa
 Từ khóa cho các kiểu dữ liệu cơ bản : byte, short, int, long, float,
double, char, boolean
 Từ khóa cho phát biểu lặp: do, while, for, break, continue
 Từ khóa cho phát biểu rẽ nhánh: if, else, switch, case, default,
break
 Từ khóa đặc tả đặc tính một method: private, public, protected,
final, static, abstract, synchronized, volatile, strictfp
 Hằng (literal): true, false, null
 Từ khóa liên quan đến method: return, void
 Từ khoá liên quan đến package: package, import
 Từ khóa cho việc quản lý lỗi: try, catch. finally, throw, throws
 Từ khóa liên quan đến đối tượng: new, extends, implements, class,
instanceof, this, super
44
Khoảng trắng
 Khoảng trống, dòng trống, và tab được gọi là khoảng trắng
 Khoảng trắng được sử dụng để tách rời những từ và ký hiệu trong
một chương trình
 Nhiều hơn một khoảng trắng sẽ được bỏ qua
 Một chương trình java hợp lệ có thể được định dạng trong nhiều
cách
 Xem ví dụ: Lincoln2.java
 Xem ví dụ Lincoln3.java
45
Lỗi
 Một chương trình có thể có 3 kiểu lỗi
 Compile-time errors: Trình biên dịch sẽ tìm thấy những lỗi cú
pháp và những lỗi cơ bản khác khi biên dịch chương trình
 Nếu compile-time errors tồn tại, một bản dịch có thể thực hiện
được của chương trình không được tạo.
 Run-time errors: một lỗi có thể xuất hiện trong suốt quá trình
thực thi chương trình, chẳng hạn như chia 1 số cho 0, làm cho
chương trình kết thúc bất thường.
 Logical errors: Chương trình có thể chạy nhưng đưa ra những kết
quả không đúng, có thể do việc sử dụng công thức.
46
Ví dụ về Compilation Errors
public class ShowSyntaxErrors {
public static void main(String[] args)
{
i = 30;
System.out.println(i+4);
}
}
47
Ví dụ về Runtime Errors
public class ShowRuntimeErrors {
public static void main(String[] args) {
int i = 1 / 0;
}
}
48
Ví dụ về Logic Errors
public class ShowLogicErrors {
public static void main(String[] args)
{
// Cong so1 voi so2
int so1 = 3;
int so2 = 5;
so2 += so1 + so2;
System.out.println("so2 bang " + so2);
}
}
49
Phương thức println
 Trong chương trình welcome2, chúng ta đã gọi phương thức
println để xuất ra một chuỗi ký tự.
 Đối tượng System.out tương ứng với một thiết bị cuối (màn hình)
để nhận kết quả được đưa ra.
System.out.println ("Whatever you are, be a good one.");
object method
name information provided to the method(parameters)
50
Phương thức print
 Phương thức print tương tự như phương thức println, ngoại trừ
nó không di chuyển đến dòng kế tiếp.
 Do đó, bất kỳ cái gì được xuất ra sau khi câu lệnh print thực thi sẽ
xuất hiện trên cùng một dòng
 Xem ví dụ: Countdown.java
51
Toán tử Nối chuỗi
 Toán tử nối chuỗi (+): được sử dụng để nối một chuỗi vào cuối một
chuỗi khác
“Hello " + “You"
 Nó cũng có thể được sử dụng để nối một số vào một chuỗi
 Một hằng chuỗi không thể được ngắt thành 2 dòng trong chương
trình.
 Xem ví dụ: Facts.java
52
Toán tử Nối chuỗi
 Toán tử (+) cũng được sử dụng cho phép tính cộng
 Chức năng của toán tử + phụ thuộc vào kiểu thông tin nó thực hiện
 Nếu 2 toán hạng là chuỗi hoặc nếu một là chuỗi và một là số, thì
chức năng của toán tử + là nối chuỗi.
 Nếu 2 toán hạng là số, nó thực hiện chức năng cộng 2 số.
 Xem Addition.java
53
Ví dụ nối chuỗi
 String message = "Welcome " + "to " + "Java";
// ⇒ message = "Welcome to Java"
 String s = "Chuong" + 2;
// ⇒ s trở thành Chuong2
 String s1 = "Hello" + 'B';
// s1 trở thành HelloB
54
Chuỗi thoát (Escape Sequence)
 Vài chuỗi thoát sử dụng trong java:
 Xem Roses.java
55
Kiểu dữ liệu
 byte
 char
 boolean
 short
 int
 long
 float
 double
 Array
 Class
 Interface
Java là ngôn ngữ có kiểu rõ ràng, nghĩa là một biến phải có khai báo
kiểu. Java cung cấp 2 loại kiểu dữ liệu:
56
Kiểu dữ liệu cơ bản (Primitive)
 Kích thước và miền giá trị của các kiểu dữ liệu kiểu số:
Type Default Size
(bytes)
Range Description
byte 0 1 -128..127 số nguyên
short 0 2 -32768..32767 số nguyên
int 0 4 -2 tỉ mốt.. 2 tỉ mốt số nguyên
long 0 8 - 9 tỉ tỉ .. 9 tỉ tỉ số nguyên
float 0.0 4 +/- 1.45 E-45 .. +/-3.4 E+38,
+/- infinity, +/-0, NAN
số thực
(Not A Number
double 0.0 8 +/- 1.79E-324 .. +/-3.4 E+308,
+/- infinity, +/-0, NAN
số thực
char \u0000 2 \u0000 .. \uFFFF ký tự Unicode
57
Kiểu dữ liệu tham chiếu (reference)
 Trong Java có 3 loại kiểu dữ liệu tham chiếu:
58
Kiểu Ký tự (char)
 Biến kiểu char lưu giữ một ký tự
 Hằng ký tự được giới hạn bởi cặp dấu nháy đơn ‘ ‘:
'a' 'X' '7' '$' ',' '\n'
 Ví dụ:
char topGrade = 'A';
char terminator = ';', separator = ' ';
 Sự khác nhau giữa biến kiểu ký tự nguyên thủy và đối tượng
String
59
Chuỗi ký tự
 Chuỗi ký tự có thể được miêu tả như một hằng chuỗi (string literal)
bằng cách đặt chuỗi ký tự trong cặp dấu nháy đôi “ “
 Examples:
"This is a string literal."
"123 Main Street"
"X"
 Mỗi một chuỗi ký tự là một đối tượng trong Java, được định nghĩa
bởi lớp String
 Mỗi một chuỗi tương ứng với một đối tượng String
60
Chuyển kiểu dữ liệu
 Trong chuyển kiểu dữ liệu, dữ liệu từ một kiểu này được
chuyển sang một kiểu dữ liệu khác.
 Ví dụ chuyển số thực sang số nguyên
float c = 34.89675f;
int b = (int)c + 10;
 Chuyển dữ liệu chuỗi sang số
Integer.parseInt(chuỗi dạng số nguyên)
Float.parseFloat(chuỗi dạng số thực)
Double.parseDouble(chuỗi dạng số thực)…
61
Chuyển kiểu tự động và ép kiểu
 Có 2 loại chuyển kiểu dữ liệu: chuyển tự động và ép kiểu.
 Chuyển kiểu tự động chỉ xảy ra khi:
 2 kiểu dữ liệu tương thích với nhau
 Kích thức kiểu đích lớn hơn kiểu nguồn.
 Ép kiểu được sử dụng cho chuyển kiểu tường minh. Thông tin có
thể bị mất trong quá trình chuyển kiểu.
62
Những luật chuyển đổi kiểu dữ liệu
 Tất cả giá trị kiểu byte và short được chuyển đổi thành kiểu int.
 Nếu một toán hạng kiểu long, thì toàn bộ biểu thức được chuyển
đổi thành kiểu long.
 Nếu một toán hạng kiểu float thì toàn bộ biểu thức được chuyển
đổi thành kiểu float.
 Nếu một toán hạng kiểu double