Tải bản đầy đủ (.pdf) (23 trang)

Một số vấn đề chung về Java

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.6 MB, 23 trang )

Java overview
Trang 5/66
1. Giới thiệu
Java is an island of Indonesia and the site of its capital city, Jakarta.
Do not lose time here. Please go ahead and read my report right now. ☺
2. Một số vấn đề chung về Java
2.1. Ngôn ngữ Java
2.1.1. Lịch sử phát triển
Java được Sun MicroSystems giới thiệu lần đầu vào tháng 6 năm 1995 và nhanh chóng trở thành
một ngôn ngữ lập trình chuyên nghiệp.
Sơ khởi của Java là dự án "Oak", thiết kế một ngôn ngữ lập trình để điều khiển các thiết bị điện tử
do James Gosling và các đồng nghiệp tại Sun phụ trách. Được xây dựng trên nền tảng của C/C++
sau khi bỏ đi các đặc tính phức tạp, Java là ngôn ngữ hướng đối tượng thuần túy và độc lập với hệ
nền, đặc biệt phù hợp với việc xây dựng các hệ thống hoạt động trên môi trường internet.
Java đi từ chỗ một ngôn ngữ lập trình đã trở thành một nền tảng công nghệ. Cùng với .NET của
MicroSoft, Java trở thành một trong hai công nghệ chủ yếu cho việc phát triển phần mềm hiện nay.
Các phiên bản chính thức được phát hành của Java (từ Wiki):
• JDK 1.1.4 (Sparkler) September 12, 1997
JDK 1.1.5 (Pumpkin) December 3, 1997
JDK 1.1.6 (Abigail) April 24, 1998
JDK 1.1.7 (Brutus) September 28, 1998
JDK 1.1.8 (Chelsea) April 8, 1999
• J2SE 1.2 (Playground) December 4, 1998
J2SE 1.2.1 (none) March 30, 1999
J2SE 1.2.2 (Cricket) July 8, 1999
• J2SE 1.3 (Kestrel) May 8, 2000
J2SE 1.3.1 (Ladybird) May 17, 2001
• J2SE 1.4.0 (Merlin) February 13, 2002
J2SE 1.4.1 (Hopper) September 16, 2002
J2SE 1.4.2 (Mantis) June 26, 2003
• J2SE 5.0 (1.5.0) (Tiger) September 29, 2004


• Java SE 6 (1.6.0) (Mustang) December 11, 2006
• Java SE 7 (1.7.0) (Dolphin) anticipated for 2008
2.1.2. Đặc điểm chính
• Kế thừa từ C/C++ sau khi loại bỏ các đăc tính phức tạp: đa kế thừa, con trỏ, quản lý bộ
nhớ,…
Java overview
Trang 6/66
• Hướng đối tượng thuần túy
• Độc lập với hệ nền, thông dịch ra bytecode chạy trên JVM, "Write One, Run Any Where"
(Debug any where, :d)
• Hỗ trợ cho các ứng dụng chạy trên mạng, ứng dụng phân tán.
• An toàn - Bảo mật
• …

2.1.3. Các ứng dụng Java
Ban đầu, Java chủ yếu dùng để phát triển các applet, các ứng dụng nhúng vào trình duyệt, góp
phần làm sinh động các trang web tĩnh vốn hết sức tẻ nhạt hồi dó. Tuy nhiên, cùng với sự phát
triển của công nghệ thông tin và nhu cầu của xã hội, Java applet đã dần mất đi vị trí của nó và thay
vào đó, các công ty, cộng đồng ủng hộ Java đã phát triển nó theo một hướng khác, còn vai trò của
applet hiện nay đã mờ nhạt dần với sự phát triển của JavaScript. Hiện nay, công nghệ Java được
chia làm ba bộ phận:
a. J2SE
Gồm các đặc tả, công cụ, API của nhân Java giúp phát triển các ứng dụng trên desktop và định
nghĩa các phần thuộc nhân của Java.
b. J2EE
Gồm các đặc tả, công cụ, API mở rộng J2SE để phát triển các ứng dụng qui mô xí nghiệp, chủ yếu
để chạy trên máy chủ (server).
c. J2ME
Gồm các đặc tả, công cụ, API mở rộng để phát triển các ứng dụng Java chạy trên điện thoại di
động, thẻ thông minh, thiết bị điện tử cầm tay, robot và những ứng dụng điện tử khác

.

Java overview
Trang 7/66
2.1.4. Sự phát triển của Java

Java vẫn đang chiếm thị phần lớn nhất, nhưng có sự đi lên rất mạnh mẽ của các ngôn ngữ khác.
Chuẩn bị phát triển ứng dụng với Java
2.1.5.
• J2SDK
• Thiết lập biến môi trường
• IDEs, Editor (
Phần 2.2)
• Các tiện ích, công cụ (
Phần 2.3)
2.1.6. Tổ chức chương trình
(v)
Tổ chức cấu trúc của ứng dụng (BluePrints, Jakarta)
Tổ chức code trong một lớp
2.2. IDEs thông dụng
2.2.1. Vai trò của IDEs
Các môi trường phát triển tích hợp thường bao gồm:
Một trình soạn thảo mã (source code editor): dùng để viết mã, hỗ trợ tính năng tự động sinh
mã (code generator).

Trình biên dịch (compiler) và/hoặc trình thông dịch (interpreter). •
Java overview
Trang 8/66
• 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 (linking), và có thể chạy chương trình một cách tự động.


Trình gỡ lỗi (debugger): hỗ trợ dò tìm lỗi.

Ngoài ra, còn có thể bao gồm hệ thống quản lí phiên bản.

Các công cụ nhằm đơn giản hóa công việc xây dựng giao diện người dùng đồ họa (GUI).

Nhiều môi trường phát triển hợp nhất hiện đại còn tích hợp trình duyệt lớp (class browser),
trình quản lí đối tượng (object inspector), lược đồ phân cấp lớp (class hierarchy diagram),...
để sử dụng trong việc phát triển phần mềm theo hướng đối tượng.
Việc sử dụng các môi trường phát triển tích hợp giúp người phát triển tăng tính hiệu quả và giảm
thời gian thực hiện công việc của mình. Ngoài ra, người mới học cũng có thể tận dụng những tiện
ích của các môi trường phát triển tích hợp để giảm bớt thời gian học của mình, vì những cấu hình,
những dòng lệnh phức tạp (mà nếu không có môi trường phát triển tích hợp phải thực hiện bằng
tay) đều đã được che dấu và tự động hóa.
2.2.2. Các loại IDEs thông dụng cho Java
IDE Developer
Lastest
Realese
OS Cost Features
BEA
Workshop
BEA
3.2.1 /
October,
2006
Windows,
GNU/Linux
$899
WebSphere

Development
Studio
IBM
6.0.1 /
January 31,
2006
Windows
$1500 (Standard),
$4500 (Advanced
Edition)

JBuilder Borland
6 (2006) /
September,
2005
[6]
Cross-platform
Free (Foundation),
$499 (Developer),
$3,500 (Enterprise)
- Phiên bản free
( Foundation) chỉ hỗ
trợ các tính năng
căn bản nhất
JDeveloper Oracle
10 g
(10.1.3) /
January,
2006
Cross-platform Free

- Hỗ trợ mạnh J2EE
(EJB, Struts), đặc
biệt phù hợp cho
ứng dụng sử dụng
công nghệ Oracle.
NetBeans Sun
5.5 /
October 27,
2006
Cross-platform Free
- Hỗ trợ nhiều ứng
dụng: Desktop,
Web, Enterprise,
Mobile.
Java overview
Trang 9/66
KDevelop
KDevelop
Team
3.3.5 (Oct
11
, 2006)
GNU/Linux,
Cygwin, other
platforms
offering X11
Free
- Là IDE trên Linux
không chỉ cho Java
(C, Pascal, PHP,

Ruby, SQL,…)
Eclipse
Eclipse
Foundation
3.2.1 /
September
21, 2006
Cross-platform Free
- Tính năng ban đầu
còn hạn chế
- Nhưng có rất
nhiều plugin hỗ trợ:
MyEclipse, M7,…
JCreator
Xinox
Software
4.00.026 /
16 October
2006
Windows
Free (JCreator LE),
$69 (JCreator Pro)
- Phù hợp cho phát
triển ứng dụng nhỏ
Ngoài các IDEs mạnh, hỗ trợ nhiều tính năng, cũng có thể sử dụng các trình soạn thảo (Editors)
đơn giản hỗ trợ sinh mã, đánh dấu mã, cú pháp mẫu, biên dịch, chạy ứng dụng,… Các Editor thông
dụng: TextPad, JEdit, EditPlus.
2.2.3. Lựa chọn IDEs
Xu hướng phổ biến hiện nay là lựa chọn các IDEs mã nguồn mở: Eclipse, NetBeans, JDeveloper
2.3. Các tiện ích, công cụ hỗ trợ

2.3.1. Apache Ant
Một dự án rất thành công và nổi tiếng của Apache (ant.apache.org).
Ant là một tiện ích dùng để compile, build các dự án phần mềm Java phức tạp. Khi các application
chỉ có một số lưọng ít các file thì có thể compile các source code bằng Java compiler như bình
thường. Nhưng trong các dự án lập trình phức tạp như web applicaiton hay J2EE application, cần
nhiều các sources khác nhau thì việc quản lý, cập nhật mối liên hệ giữa các sources này trở nên
phức tạp. Lúc đó Ant giúp bạn quản lý và xử lý nhiệm vụ đó.
Ant sử dụng cú pháp XML để build file (file build.xml), định nghĩa các resources, targets,
dependences, tasks,... do vậy nó có tính độc lập và mềm dẻo trên nhiều platform khác nhau.
Khả năng customization của Ant khá lớn cho phép người sử dụng khai thác nhiều chức năng mở
rộng khác của Ant, xây dựng JAR, WAR file, tích hợp CVS, Unit Test.
Để sử dụng Ant:
• Download Ant (hiện đã có phiên bản 1.7.0 - Dec 19 2006).
• Thiết lập ANT_HOME trong biến môi trường, %ANT_HOME%\bin trong path.
• Thực thi build file để compile, build ứng dụng (build.xml).
Ví dụ về Ant build file build.xml:
Java overview
Trang 10/66

Trong một số IDEs (ví dụ: Eclipse, JBuilder, JDeveloper) có support Ant trực tiếp như một plugin,
có thể view, edit, execute Ant build file ngay trong workspace.
2.3.2. Apache Maven
Cũng là một dự án thành công và nổi tiếng của Apache (maven.apache.org).
Tương tự như Ant, Maven cũng là công cụ compile, deploy đồng thời được cải tiến từ Ant với tính
năng quản lý dự án (!).
Maven có những ưu điểm sau so với Ant:
• Có tính kế thừa các file build qua từng dự án. Trong khi với Ant, người phát triển phải viết
lại các build file (cho dù là thao tác copy - past).
• Có tính kế thừa các file build giứa nhiều người phát triển khác nhau.
• Hay đơn giản Maven là công cụ bổ sung cho người làm việc với Java trong khi không muốn

dùng Ant (thêm sự lựa chọn).
/*

/>Java overview
Trang 11/66
*/
2.3.3. Test tools
Chi tiết hơn tại
Phần 2.8
• JUnit:Test framework nổi tiếng của Java. Các test framework khác đều dựa vào JUnit. JUnit
được tích hợp cho hầu hết các IDE thông dụng như Eclipse, JBuilder, JDeveloper,
NetBeans, ...
• HttpUnit: Dưa trên JUnit dùng để test web-tier như html, jsp,...
2.4. Đóng gói, tạo lập bộ cài đặt ứng dụng Java
Tùy theo từng loại hình ứng dụng: Desktop, Web, Enterprise, Mobile (Phần 3) mà có các cách đóng
gói ứng dụng khác nhau:
Loại ứng dụng File đóng gói Công cụ đóng gói Triển khai ứng dụng
Desktop JAR file
- Tạo file JAR bằng các
chương trình nén phổ biến:
WinRar, WinZip,... Chú ý cấu
trúc file JAR (META-INF)
- IDE hỗ trợ
- Chương trình installer
thương mại chuyển nghiệp:
InstallAnywhere, iInstallShield,
nstall4j,...
- Chương trình installer miễn
phí: IzPack
- Chạy như file .EXE thông

thường (javaw.exe)
- Chạy từ dòng lệnh
- Chạy ứng dụng Desktop qua
Web sử dụng Java Web Start
Web WAR file
- Đóng gói bằng tay để tạo file
WAR sử dụng các thẻ
<target> trong các file
build.xml (ví dụ dùng Ant)
- Sử dụng IDE để tạo lập file
WAR
- Deploy lên Web Server (bằng
tay, hoặc IDE hỗ trợ)
J2EE EAR file
- Đóng gói bằng tay để tạo file
EAR sử dụng các thẻ <target>
trong các file build.xml (ví dụ
dùng Ant)
- Sử dụng IDE để tạo lập file
EAR
- Deploy lên J2EE Server
(bằng tay, hoặc IDE hỗ trợ)
J2ME (cancel)

Java overview
Trang 12/66
2.5. Vấn đề an toàn bảo mật trong Java
2.5.1. Kiến trúc
Kiến trúc bảo mật của Java được thiết kế theo nhiều cấp độ khác nhau để kiểm soát tính an toàn
khi thực thi chương trình, từ thành phần của các lớp đến quy mô tổng thể cho toàn ứng dụng.

• Ở mức đầu tiên, dữ liệu và các phương thức đượ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 kích thước 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 tối đa 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ã là an toàn, và tuân theo các
nguyên tắc của Java.
• 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 vào 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.
Java platform cung cấp một tập các hàm API đảm bảo tính bảo mật của các ứng dụng Java bao
gồm: Mã hóa (cryptography), Hạ tầng mã khóa công khai (public key infrastructure), Chứng thực
(authentication), Bảo mật trên đường truyển (secure communication) và Điều khiển truy nhập
(access control).
2.5.2. Mã hóa
Java Platform cung cấp một nền tảng với nhiều hàm chức năng dịch vụ cho việc truy cập và sử
dụng mã hóa:
• Các giải thuật mã hóa: RSA, MD5
• Mã hóa hệ thống message
• Chữ ký số
• Mã hóa password
• Mã hóa đối xứng
• Sinh mã ngẫu nhiên
• ...
Package: java.security, javax.crypto
2.5.3. Hạ tầng mã khóa công khai
Hạ tầng mã hóa công khai (Public Key Infrastructure - PKI) là một giải pháp bảo mật có nhiều tối ưu
so với phương pháp bảo mật đối xứng, PKI có liên quan mật thiết tới chữ ký số.
Java Platform cung cấp hai công cụ built-in cho các thao tác với khóa, chứng thực và lưu trữ khóa:

1. keytool sử dụng cho việc tạo lập và quản lý khóa:
• Tạo cặp khóa công khai / khóa cá nhân
Java overview
Trang 13/66
• Hỗ trợ chuẩn X.509 (hiển thị, xuất, nhập)
• Giao tiếp với các CAs
2. jarsigner sử dụng cho việc ký hoặc kiểm tra chữ ký trong các file JAR
Package: java.security.KeyStore, java.security.cert.CertStore, java.security.Key
2.5.4. Chứng thực
Kiểm tra định danh của user trong các ứng dụng Java (Khác với Authorization - Kiểm tra quyền)
thông qua module đăng nhập.
Java Platform cung cấp các modules built-in sau cho thao tác chứng thực:
1. Krb5LoginModule sử dụng giao thức Kerberos
2. JndiLoginModule

sử dụng account trong LDAP hoặc NIS


3.
KeyStoreLoginModule sử dụng key store

Package: javax.security.auth.login, javax.security.auth.spi.LoginModule
2.5.5. Bảo mật trên đường truyển
Dữ liệu cần bảo mật được bảo vệ trên đường truyền trong các ứng dụng Java bới các chuẩn
truyền dữ liệu trên mạng:
1. SSL/TLS/HTTPS
2. SASL
3. GSS-API và Kerberos
Package: javax.net.ssl.SSLSocket, javax.net.ssl.SSLEngine, javax.net.ssl.KeyManager,
javax.security.sasl.Sasl, javax.security.auth.kerberos

2.5.6. Điều khiển truy nhập
Điều khiển truy cập trong các ứng dụng Java được chia thành bốn nội dung:
1. ClassAccess
Quy tắc truy cập vào các thành phần trong các lớp: public, protected, private, no-defined
Modifier Class Package Subclass World
public Y Y Y Y
protected Y Y Y N
no modifier
Y Y N N
private Y N N N
2. Permission
3. Policy
4. Domain
2.6. Database
(Tập trung vào Driver)
Có sẵn các connector driver cho hầu hết các loại Database.

×