Tải bản đầy đủ (.docx) (29 trang)

BÁO CÁO PHƯƠNG PHÁP NGHIÊN CỨU KHOA HỌC TRONG TIN HỌC Các nguyên tắc sáng tạo được áp dụng trong 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 (366.01 KB, 29 trang )

Đại Học Quốc Gia TP HCM
Trường ĐH Công Nghệ Thông Tin
2012
PHƯƠNG PHÁP
NGHIÊN CỨU KHOA HỌC
TRONG TIN HỌC
Các nguyên tắc sáng tạo được áp
dụng trong Java
Giảng viên: GS.TSKH. Hoàng Văn Kiếm
HVTH: Nguyễn Hoàng Vũ
MSHV: CH1101157
NỘI DUNG
I. Tổng quan về phương pháp nghiên cứu khoa học
1. Giới thiệu phương pháp luận sáng tạo khoa học
2. Phương Pháp Luận Sáng Tạo Trong Tin Học
3. Giới thiệu 40 Nguyên tắc sáng tạo trong khoa học kỹ thuật
II. Tổng quan về Java
1. Giới thiệu
2. Sơ lược về Java
a. Nền tảng được thiết lập cho Java
b. Ngôn ngữ lập trình Java
c. Triết lý của Java
d. Một số đặc điểm của Java
e. Ứng dụng
f. Một số khái niệm trên Java
III. Các nguyên tắc sáng tạo được áp dụng trong Java
1. Nguyên tắc phân nhỏ
2. Nguyên tắc tách khỏi
3. Nguyên tắc phẩm chất cục bộ
4. Nguyên tắc kết hợp
5. Nguyên tắc vạn năng


6. Nguyên tắc chứa trong
7. Nguyên tắc thực hiện sơ bộ
8. Nguyên tắc tác động theo chu kỳ
9. Nguyên tắc tự phục vụ
10. Nguyên tắc trung gian
I. Tổng quan về phương pháp nghiên cứu khoa học
1. Giới Thiệu Phương Pháp Luận Sáng Tạo Khoa Học
Nói một cách ngắn gọn, "PHƯƠNG PHÁP LUẬN SÁNG TẠO" (Creativity
Methodologies) là bộ môn khoa học có mục đích xây dựng và trang bị cho mọi người
hệ thống các phương pháp, các kỹ năng thực hành tiên tiến về suy nghĩ để giải quyết
vấn đề và ra quyết định một cách sáng tạo, về lâu dài, tiến tới điều khiển được tư duy.
"PHƯƠNG PHÁP LUẬN SÁNG TẠO" là phần ứng dụng của khoa học rộng lớn
hơn, mới hình thành và phát triển trong thời gian gần đây : KHOA HỌC SÁNG TẠO
(Creatology).
Theo các nhà nghiên cứu sau nông nghiệp, công nghiệp và tin học. Làn sóng ứng
với Creatology (hay còn gọi là thời đại hậu tin học) chính là sự nhấn mạnh vai trò chủ
thể tư duy sáng tạo của loài người trong thế kỷ XXI.
Mỗi người làm việc, không thể không suy nghĩ và đòi hỏi cải tiến công việc phải là
cơ sở cho mọi suy nghĩ của chúng ta. Nói cách khác, mỗi người chúng ta đều cần suy
nghĩ để sáng tạo. Tư duy sáng tạo là tài nguyên cơ bản nhất của mỗi con người. Chúng
ta cần sáng tạo vì chúng ta cảm thấy rằng, mọi việc cần được thực hiện theo cách đơn
giản hơn và tốt hơn. Dù chúng ta tài giỏi như thế nào, chúng ta vẫn luôn mong muốn tốt
hơn nữa.
Sáng tạo gắn liền với sự thay đổi, đưa ra cái mới (đổi mới), sáng chế, các ý tưởng
mới, các phương án lựa chọn mới. Sự sáng tạo thuộc về năng lực ra quyết định, thuộc
về sự kết hợp độc đáo hoặc liên tưởng, phát ra các ý tưởng đạt được kết quả mới và ích
lợi. Mọi người có thể dùng tính sáng tạo của mình để đặt vấn đề một cách bao quát,
phát triển các phương án lựa chọn, làm phong phú các khả năng và tưởng tượng các hậu
quả có thể nảy sinh. Tóm lại, bạn làm được gì mới, khác và có ích lợi, đấy là sáng tạo.
Sự sáng tạo nảy sinh ở mọi tầng lớp và mọi giai đoạn trong cuộc sống của chúng ta.

Ðối với một công ty hay tổ chức, tài nguyên quan trọng nhất chính là nguồn nhân
lực, tức là những người làm việc cho công ty, tổ chức. Họ gồm các thợ bảo trì, những
người bán hàng, các công nhân trong dây chuyền sản xuất, những người đánh máy và
các cán bộ quản lý mọi cấp bậc. Nguồn nhân lực của công ty làm cho các tài nguyên
khác hoạt động, mang lại hiệu quả cao. Thiếu nhân sự tốt, một công ty, tổ chức, dù được
trang bị máy móc hoàn hảo nhất, được tài trợ tốt nhất, sẽ hoạt động kém hiệu quả.
Vì vậy, mỗi người trong mỗi cơ cấu tổ chức cần học phương pháp luận (các thủ
thuật cơ bản, các phương pháp, lý thuyết) về tư duy sáng tạo. Ðiều này làm cho cơ cấu
tổ chức của bạn mạnh lên rất nhiều. Trong mỗi cơ cấu tổ chức, càng nhiều người học
phương pháp luận về tư duy sáng tạo, tổ chức hoạt động càng có hiệu quả.
2. Phương Pháp Luận Sáng Tạo Trong Tin Học
Tin học là một ngành hiện đại, từ khi có tin học cuộc sống của con nguời ngày càng
được nâng cao, thế giới biến đổi nhanh “chóng mặt”. Ngành học đòi hỏi sự đầu tư tư
duy, chất xám, một sản phẩm tin học được đánh giá cao là sản phẩm có “hàm lượng” tư
duy và chất xám cao. Một công ty thuộc lĩnh vực tin học không cần phải có diện tích to
lớn, cơ sở hạ tầng hoành tráng, nguồn nhân lực đông đảo, mà cần chủ yếu là tư duy và
chất xám, cần sự sáng tạo ra cái mới, cái khác hữu dụng, tốt hơn sản phẩm cũ. Các sản
phẩm tin học không cần đầu tư nhiều thiết bị cho sản phẩm, thay vào đó đầu tư về chất
xám càng nhiều thì sản phẩm càng được người dùng đón tiếp, sử dụng trên thị trường.
3. Giới thiệu 40 Nguyên tắc sáng tạo trong khoa học kỹ thuật
(1) Nguyên tắc phân nhỏ
- Chia đối tượng thành các phần độc lập.
- Làm đối tượng trở nên tháo lắp được.
- Tăng mức độ phân nhỏ đối tượng.
(2) Nguyên tắc “tách khỏi”
- Tách phần gây “phiền phức” ( tính chất “phiền phức” ) hay ngược lại
tách phần duy nhất “cần thiết” ( tính chất “cần thiết” ) ra khỏi đối
tượng.
(3) Nguyên tắc phẩm chất cục bộ
- Chuyển đối tượng ( hay môi trường bên ngoài, tác động bên ngoài)

có cấu trúc đồng nhất thành không đồng nhất.
- Các phần khác nhau của đối tượng phải có các chức năng khác nhau.
- Mỗi phần của đối tượng phải ở trong những điều kiện thích hợp nhất
đối với công việc.
(4) Nguyên tắc phản đối xứng
- Chuyển đối tượng có hình dạng đối xứng thành không đối xứng ( nói
chung giãm bật đối xứng).
(5) Nguyên tắc kết hợp
- Kết hợp các đối tượng đồng nhất hoặc các đối tượng dùng cho các
hoạt động kế cận.
- Kết hợp về mặt thời gian các hoạt động đồng nhất hoặc kế cận.
(6) Nguyên tắc vạn năng
- Đối tượng thực hiện một số chức năng khác nhau, do đó không cần
sự tham gia của các đối tượng khác.
(7) Nguyên tắc “chứa trong”
- Một đối tượng được đặt bên trong đối tượng khác và bản thân nó lại
chứa đối tượng thứ ba …
- Một đối tượng chuyển động xuyên suốt bên trong đối tượng khác.
(8) Nguyên tắc phản trọng lượng
- Bù trừ trọng lượng của đối tượng bằng cách gắn nó với các đối tượng
khác có lực nâng.
- Bù trừ trọng lượng của đối tượng bằng tương tác với môi trường như
sử dụng các lực thủy động, khí động…
(9) Nguyên tắc gây ứng suất sơ bộ
- Gây ứng suất trước với đối tượng để chống lại ứng suất không cho
phép hoặc không mong muốn khi đối tượng làm việc ( hoặc gây ứng
suất trước để khi làm việc sẽ dùng ứng suất ngược lại ).
(10) Nguyên tắc thực hiện sơ bộ
- Thực hiện trước sự thay đổi cần có, hoàn toàn hoặc từng phần, đối
với đối tượng.

- Cần sắp xếp đối tượng trước, sao cho chúng có thể hoạt động từ vị trí
thuận lợi nhất, không mất thời gian dịch chuyển.
(11)Nguyên tắc dự phòng
- Bù đắp độ tin cậy không lớn của đối tượng bằng cách chuẩn bị trước
các phương tiện báo động, ứng cứu, an toàn.
(12) Nguyên tắc đẳng thế
- Thay đổi điều kiện làm việc để không phải nâng lên hay hạ xuống các
đối tượng.
(13) Nguyên tắc đảo ngược
- Thay vì hành động như yêu cầu bài toán, hành động ngược lại ( ví dụ,
không làm nóng mà làm lạnh đối tượng)
- Làm phần chuyển động của đối tượng ( hay môi trường bên ngoài )
thành đứng yên và ngược lại, phần đứng yên thành chuyển động.
(14) Nguyên tắc cầu ( tròn ) hoá
- Chuyển những phần thẳng của đối tượng thành cong, mặt phẳng
thành mặt cầu, kết cấu hình hộp thành kết cấu hình cầu.
- Sử dụng các con lăn, viên bi, vòng xoắn.
- Chuyển sang chuyển động quay, sử dụng lực ly tâm.
(15) Nguyên tắc linh động
- Cần thay đổi các đặt trưng của đối tượng hay môi trường bên ngoài
sao cho chúng tối ưu trong từng giai đoạn làm việc.
- Phân chia đối tượng thành từng phần, có khả năng dịch chuyển với
nhau.
(16) Nguyên tắc giải “thiếu” hoặc “thừa”
- Nếu như khó nhận được 100% hiệu quả cần thiết, nên nhận ít hơn
hoặc nhiều hơn “một chút”. Lúc đó bài toán có thể trở nên đơn giản
hơn và dễ giải hơn.
(17) Nguyên tắc chuyển sang chiều khác
- Những khó khăn do chuyển động ( hay sắp xếp) đối tượng theo
đường (một chiều) sẽ được khắc phục nếu cho đối tượng khả năng di

chuyển trên mặt phẳng ( hai chiều). Tương tự, những bài toán liên quan
đến chuyển động ( hay sắp xếp) các đối tượng trên mặt phẳng sẽ được
đơn giản hoá khi chuyển sang không gian (ba chiều).
- Chuyển các đối tượng có kết cấu một tầng thành nhiều tầng.
- Đặt đối tượng nằm nghiêng.
- Sử dụng mặt sau của diện tích cho trước.
- Sử dụng các luồng ánh sáng tới diện tích bên cạnh hoặc tới mặt sau
của diện tích cho trước.
(18) Nguyên tắc sử dụng các dao động cơ học
- Làm đối tượng dao động. Nếu đã có dao động, tăng tầng số dao động
( đến tầng số siêu âm).
- Sử dụng tầng số cộng hưởng.
- Thay vì dùng các bộ rung cơ học, dùng các bộ rung áp điện.
- Sử dụng siêu âm kết hợp với trường điện từ.
(19) Nguyên tắc tác động theo chu kỳ
- Chuyển tác động liên tục thành tác động theo chu kỳ (xung).
- Nếu đã có tác động theo chu kỳ, hãy thay đổi chu kỳ.
- Sử dụng các khoảng thời gian giữa các xung để thực hiện tác động
khác.
(20) Nguyên tắc liên tục tác động có ích
- Thực hiện công việc một cách liên tục ( tất cả các phần của đối tượng
cần luôn luôn làm việc ở chế độ đủ tải ).
- Khắc phục vận hành không tải và trung gian.
- Chuyển chuyển động tịnh tiến qua lại thành chuyển động quay.
(21) Nguyên tắc “vượt nhanh”
- Vượt qua các giai đoạn có hại hoặc nguy hiểm với vận tốc lớn.
- Vượt nhanh để có được hiệu ứng cần thiết.
(22) Nguyên tắc biến hại thành lợi
- Sử dụng những tác nhân có hại ( thí dụ tác động có hại của môi
trường) để thu được hiệu ứng có lợi.

- Khắc phục tác nhân có hại bằng cách kết hợp nó với tác nhân có hại
khác.
- Tăng cường tác nhân có hại đến mức nó không còn có hại nữa.
(23) Nguyên tắc quan hệ phản hồi
- Thiết lập quan hệ phản hồi
- Nếu đã có quan hệ phản hồi, hãy thay đổi nó.
(24) Nguyên tắc sử dụng trung gian
- Sử dụng đối tượng trung gian, chuyển tiếp.
(25) Nguyên tắc tự phục vụ
- đối tượng phải tự phục vụ bằng cách thực hiện các thao tác phụ trợ,
sửa chữa.
- Sử dụng phế liệu, chát thải, năng lượng dư.
(26) Nguyên tắc sao chép (copy)
- Thay vì sử dụng những cái không được phép, phức tạp, đắt tiền,
không tiện lợi hoặc dễ vỡ, sử dụng bản sao.
- Thay thế đối tượng hoặc hệ các đối tượng bằng bản sao quang học
(ảnh, hình vẽ) với các tỷ lệ cần thiết.
- Nếu không thể sử dụng bản sao quang học ở vùng biẻu kiến ( vùng
ánh sáng nhìn thấy được bằng mắt thường ), chuyển sang sử dụng các
bản sao hồng ngoại hoặc tử ngoại.
(27) Nguyên tắc “rẻ” thay cho “đắt”
- Thay thế đối tượng đắt tiền bằng bộ các đối tượng rẻ có chất lượng
kém hơn ( thí dụ như về tuổi thọ).
(28) Thay thế sơ đồ cơ học
- Thay thế sơ đồ cơ học bằng điện, quang, nhiệt, âm hoặc mùi vị.
- Sử dụng điện trường, từ trường và điện từ trường trong tương tác với
đối tượng .
- Chuyển các trường đứng yên sang chuyển động, các trường cố định
sang thay đổi theo thời gian, các trường đồng nhất sang có cấu trúc
nhất định .

- Sử dụng các trường kết hợp với các hạt sắt từ.
(29) Sử dụng các kết cấu khí và lỏng
- Thay cho các phần của đối tượng ở thể rắn, sử dụng các chất khí và
lỏng : nạp khí, nạp chất lỏng, đệm không khí, thủy tĩnh, thủy phản lực.
(30) Sử dụng vỏ dẻo và màng mỏng
- Sử dụng các vỏ dẻo và màng mỏng thay cho các kết cấu khối.
- Cách ly đối tượng với môi trường bên ngoài bằng các vỏ dẻo và
màng mỏng.
(31) Sử dụng các vật liệu nhiều lỗ
- Làm đối tượng có nhiều lỗ hoặc sử dụng thêm những chi tiết có nhiều
lỗ ( miếng đệm, tấm phủ )
- Nếu đối tượng đã có nhiều lỗ, sơ bộ tẩm nó bằng chất nào đó.
(32) Nguyên tắc thay đổi màu sắc
- Thay đổi màu sắc của đối tượng hay môi trường bên ngoài
- Thay đổi độ trong suốt của của đối tượng hay môi trường bên ngoài.
- Để có thể quan sát được những đối tượng hoặc những quá trình, sử
dụng các chất phụ gia màu, hùynh quang.
- Nếu các chất phụ gia đó đã được sử dụng, dùng các nguyên tử đánh
dấu.
- Sử dụng các hình vẽ, ký hiệu thích hợp.
(33) Nguyên tắc đồng nhất
- Những đối tượng, tương tác với đối tượng cho trước, phải được làm
từ cùng một vật liệu ( hoặc từ vật liệu gần về các tính chất) với vật liệu
chế tạo đối tượng cho trước.
(34) Nguyên tắc phân hủy hoặc tái sinh các phần
- Phần đối tượng đã hoàn thành nhiệm vụ hoặc trở nên không càn thiết
phải tự phân hủy ( hoà tan, bay hơi ) hoặc phải biến dạng.
- Các phần mất mát của đối tượng phải được phục hồi trực tiếp trong
quá trình làm việc.
(35) Thay đổi các thông số hoá lý của đối tượng

- Thay đổi trạng thái đối tượng.
- Thay đổi nồng độ hay độ đậm đặc.
- Thay đổi độ dẻo
- Thay đổi nhiệt độ, thể tích.
(36) Sử dụng chuyển pha
- Sử dụng các hiện tượng nảy sinh trong quá trình chuyển pha như :
thay đổi thể tích, toả hay hấp thu nhiệt lượng…
(37) Sử dụng sự nở nhiệt
- Sử dụng sự nở ( hay co) nhiệt của các vật liệu.
- Nếu đã dùng sự nở nhiệt, sử dụng với vật liệu có các hệ số nở nhiệt
khác nhau.
(38) Sử dụng các chất oxy hoá mạnh
- Thay không khí thường bằng không khí giàu oxy.
- Thay không khí giàu oxy bằng chính oxy.
- Dùng các bức xạ ion hoá tác động lên không khí hoặc oxy.
- Thay oxy giàu ozon ( hoặc oxy bị ion hoá) bằng chính ozon.
(39) Thay đổi độ trơ
- Thay môi trường thông thường bằng môi trường trung hoà.
- Đưa thêm vào đối tượng các phần , các chất , phụ gia trung hoà.
- Thực hiện quá trình trong chân không.
(40) Sử dụng các vật liệu hợp thành ( composite )
- Chuyển từ các vật liệu đồng nhất sang sử dụng những vật liệu hợp
thành ( composite). Hay nói chung, sử dụng các vật liệu mới.
II. Tổng quan về Java
1. Giới thiệu
Java là một ngôn ngữ lập trình do công ty Sun Microsystems phát triển vào đầu thập
kỷ 1990. Khi thực hiện một dự án nghiên cứu của Sun các nhà khoa học phát hiện rằng
ngôn ngữ C++ không phù hợp và không đủ khả năng để đáp ứng nhu cầu của mình. Vì
vậy nhóm nghiên cứu này đã bắt tay vào việc xây dựng một ngôn ngữ lập trình mới
bằng cách tận dụng các ý tưởng tiên tiến của các ngôn ngữ lập trình hiện có. Người thiết

kế ngôn ngữ này là ông James Gosling và nhà lập trình triển khai phiên bản chương
trình dịch Java công cộng đầu tiên là ông Arthur van Hoff. Ban đầu nhóm nghiên cứu
đặt tên ngôn ngữ này là "Oak" (cây sồi) nhưng sau kỳ nghỉ trên đảo Java (Indonesia –
hòn đảo nổi tiếng về coffee) nhà tiếp thị Kim Polese đã đặt tên cho ngôn ngữ Oak theo
tên hòn đảo này. Cái tên này hàm ý những đặc điểm phong phú và thú vị của nó.
Vì Java xuất phát từ một dự án nghiên cứu chứ không phải là một sản phẩm nhằm
mục đích sinh lời, công ty Sun đã đồng ý đưa Java Development Kit (bộ công cụ phát
triển Java, bao gồm chương trình dịch và hệ thống đáp ứng chạy chương trình) lên
Internet miễn phí vào khoảng giữa năm 1995. Trong vòng 6 tháng kể từ khi công bố
miễn phí, Java đã được hơn một trăm ngàn người lập trình sử dụng. Hai năm sau, đã có
tới hơn bốn trăm ngàn nhà phát triển phần mềm Java. Vì Java chạy khắp mọi nơi, tổng
thị phần tiềm tàng cho toàn bộ các nhà lập trình này là trên 250 triệu hệ thống máy tính
trên thế giới. Có thể nói rằng không có một ngôn ngữ nào trong quá khứ gặt hái được
nhiều thành tích trong một thời gian ngắn như vậy.
2. Sơ lược về Java
a. Nền tảng được thiết lập cho Java
Vào cuối thập niên 80 và đầu thập niên 90, ngôn ngữ lập trình hướng đối tượng C++
được sử dụng phổ biến. Dường như các lập trình viên đã tìm được một ngôn ngữ lập
trình hoàn hảo. Bởi vì C++ pha trộn tính hiệu quả cao và các yếu tố phong cách C với
mô hình hướng đối tượng. Tuy nhiên, cũng như trong quá khứ, một lần nữa đã thay đổi
sự phát triển của ngôn ngữ máy tính. Chỉ trong vòng vài năm, World Wide Web và
Internet đã đến với số đông. Điều này chuẩn bị cho một cuộc cách mạng trong ngôn ngữ
lập trình, về cơ bản dẫn đến sự ra đời của Java.
Java là một công nghệ xây dựng các ứng dụng phần mềm có vị trí rất lớn trong những
năm cuối thế kỉ 20, đầu thế kỉ 21. Nó được coi là công nghệ mang tính cách mạng và
khả thi nhất trong việc tạo ra các ứng dụng có khả năng chạy thống nhất trên nhiều nền
tảng mà chỉ cần biên dịch một lần. Ngày nay, Java là một nền tảng tất yếu của các ứng
dụng quy mô lớn của các doanh nghiệp nhờ vào khả năng mở rộng cũng như những nền
tảng vô cùng phong phú mà nó cung cấp.
Sun Microsystem (SUN viết tắt của Stanford University Network), công ty đã phát

minh ra ngôn ngữ Java, chính thức ban hành bản Java Development Kit 1.0 vào năm
1996 hoàn toàn miễn phí. Java đã trải qua 3 bước phát triển quan trọng: Java 1.0 gắn
liền với bản JDK đầu tiên, Java 2 gắn với JDK 1.2 và Java 5 gắn với J2SDK 1.5
b. Ngôn ngữ lập trình Java
Ngôn ngữ lập trình Java là ngôn ngữ hướng đối tượng (tựa C++) do SUN đưa ra vào
giữa thập niên 90. Khác với phần lớn ngôn ngữ lập trình thông thường, thay vì biên dịch
mã nguồn thành mã máy hoặc thông dịch mã nguồn khi chạy, Java được thiết kế để biên
dịch mã nguồn thành bytecode, bytecode sau đó sẽ được môi trường thực thi (runtime
environment) chạy. Bằng cách này, Java thường chạy nhanh hơn những ngôn ngữ lập
trình thông dịch khác như Python, Perl, PHP, và khả chuyển hơn các ngôn ngữ lập
trình biên dịch như C++. Không nên lẫn lộn Java với JavaScript, mặc dù 2 ngôn ngữ đó
giống tên và cùng loại cú pháp như C.
Ngày nay, đối với Java người ta không còn nhắc đến như là 1 ngôn ngữ lập trình mà
nhắc đến một công nghệ hay một nền tảng phát triển, nó bao gồm các bộ phận:
* Máy ảo Java: JVM
* Bộ công cụ phát triển: J2SDK
* Các đặc tả chi tiết kĩ thuật (specifications)
* Ngôn ngữ lập trình (programming language)
* Các công nghệ đi kèm như JSP, Servlet, EJB, JDBC, JNDI, JMX, RMI … và
framework như Struts, Spring, JSF, Hibernate, JavaFX
c. Triết lý của Java
Write Once, Run Anywhere
Tất cả các chương trình muốn thực thi được thì phải được biên dịch ra mã máy. Mã máy
của từng kiến trúc CPU của mỗi máy tính là khác nhau (tập lệnh mã máy của CPU Intel,
CPU Solarix, CPU Macintosh … là khác nhau), vì vậy trước đây một chương trình sau
khi được biên dịch xong chỉ có thể chạy được trên một kiến trúc CPU cụ thể nào đó.
Đối với CPU Intel chúng ta có thể chạy các hệ điều hành như Microsoft Windows,
Unix,Linux, OS/2, …
Chương trình thực thi được trên Windows được biên dịch dưới dạng file có đuôi .EXE
còn trên Linux thì được biên dịch dưới dạng file có đuôi .ELF, vì vậy trước đây một

chương trình chạy được trên Windows muốn chạy được trên hệ điều hành khác như
Linux chẳng hạn thì phải chỉnh sửa và biên dịch lại.
Ngôn ngữ lập trình Java ra đời, nhờ vào máy ảo Java mà khó khăn nêu trên đã được
khắc phục. Một chương trình viết bằng ngôn ngữ lập trình Java sẽ được biên dịch ra mã
của máy ảo java (mã java bytecode). Sau đó máy ảo Java chịu trách nhiệm chuyển mã
java bytecode thành mã máy tương ứng. Sun Microsystem chịu trách nhiệm phát triển
các máy ảo Java chạy trên các hệ điều hành trên các kiến trúc CPU khác nhau.
Để đánh giá hết ý nghĩa của tính độc lập với hệ máy này, hãy tưởng tượng bạn là một
nhà biên soạn phần mềm, bạn mới đưa ra một trình duyệt Web dùng cho Windows 3.1.
Do yêu cầu, bạn phải phát triển một sản phẩm giống như vậy nhưng dành cho người sử
dụng các hệ điều hành khác như Mac OS, Unix hay các version khác của Windows (ví
dụ 95 và NT). Để tiếp cận những thị trường đó, bạn phải sửa lại chương trình trên cơ sở
hệ mới nếu không muốn nói là bạn có thể soạn thảo lại toàn bộ. Nhưng với Java bản chỉ
phải biên soạn một lần và nó sẽ hoạt động trên mọi hệ thống, mọi hệ điều hành, miễn là
bạn có một trình thông dịch Java hoạt động trong lúc chạy.
d. Một số đặc điểm của Java
Đơn giản (simple):
Java đơn giản vì, mặc dù dựa trên cơ sở C++ nhưng Sun đã cẩn thận lược bỏ các
tính năng khó nhất của C++ để làm cho ngôn ngữ này dễ sử dụng hơn. Là một ngôn
ngữ lập trình hoàn toàn mới, nó buộc phải có dáng vẻ và sự cảm nhận tương tự như
các ngôn ngữ phổ biến hiện hành đồng thời đòi hỏi khoảng thời gian huấn luyện lại
tối thiểu và thân thiện hơn với người dùng.
Do đơn giản, ngôn ngữ này cũng rất nhỏ - nên nhớ rằng từ đầu nó đã được xây dựng
để dùng cho điện tử dân dụng như đầu chạy bằng video và hộp điều khiển từ xa,
những thiết bị có không gian lưu trữ rất hạn chế.
Hướng đối tượng (Object Oriented):
Hướng đối tượng trong Java tương tự như C++ nhưng Java là một ngôn ngữ lập
trình hướng đối tượng hoàn toàn. Tất cả mọi thứ đề cập đến trong Java đều liên
quan đến các đối tượng được định nghĩa trước, thậm chí hàm chính của một chương
trình viết bằng Java (đó là hàm main) cũng phải đặt bên trong một lớp. Hướng đối

tượng trong Java không có tính đa kế thừa (multi inheritance) như trong C++ mà
thay vào đó Java đưa ra khái niệm interface để hỗ trợ tính đa kế thừa. Vấn đề này sẽ
được bàn chi tiết trong phần sau
Hiểu mạng (network-savvy):
Java được lập ra để hoạt động trên mạng và có các thủ tục để có thể quản lý các giao
thức mạng như TCP/IP, FTP và HTTP. Nói cách khác, Java được xây dựng để thực
hiện hoàn toàn thích hợp trên Internet. Chương trình Java thậm chí có thể xâm nhập
vào các đối thượng khác thông qua Internet bằng cách sử dụng URL (địa chỉ Web)
để định vị chúng.
Mạnh mẽ (robust):
Khả năng mạnh phải phù hợp với thiết kế của ngôn ngữ, và hướng nó vào việc khắc
phục những hư hỏng bộ nhớ và đảm bảo tính toán vẹn dữ liệu. Ví dụ, Java có tính
năng "automatic garbage collection" (tự động thu gom rác) - có nghĩa là bộ nhớ
được giải phóng một cách tự động - nên lập trình viên không phải bận tâm về việc
quản lý bộ nhớ và nhờ đó ít có xu hướng làm những việc gây hỏng bộ nhớ.
An toàn (secure):
Khả năng hướng mạng của Java tự động đưa ra yêu cầu về an toàn. Đặc tính an toàn
của ngôn ngữ lập trình này bắt nguồn từ việc nó có những phần hạn chế được cài
sẵn nhằm đề phòng các chương trình Java thực hiện những chức năng như ghi vào ổ
cứng của người dùng hay cho phép virus từ mạng hoặc từ môi trường phân tán thâm
nhập vào.
Độc lập với cấu trúc (architecture neutral):
Đây là thuộc tính đặc sắc nhất của Java. Java được tạo ra với tiêu chí "Viết (code)
một lần, thực thi khắp nơi" ("Write Once, Run Anywhere" (WORA)). Tính năng
biên dịch một lần và chạy nhiều nền có thể đạt được nhờ just-in-time compiler
(JIT), chuyển mã bytecode của Java sang mã máy khi chương trình đang chạy.
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áy ảo java thích
hợp hỗ trợ nền tảng đó. Môi trường thực thi của Sun Microsystems hiện hỗ trợ Sun
Solaris, Linux, Mac OS, FreeBSD, Windows và nhiều hệ thống cài đặt trên các thiết

bị di động.
Di động (portable):
Đối với một phạm vi rộng, Java là loại có thể di chuyển nhờ khả năng độc lập với
hệ máy. Đồng thời, các loại dữ liệu, giao diện, cũng như dáng vẻ và cảm nhận của
Java đều giống nhau trên mọi hệ máy. Hệ thống các thành phần của java cũng có
tính di động cao - nó được viết bằng Java.
Thông dịch (Interpreter):
Java là một ngôn ngữ lập trình vừa biên dịch vừa thông dịch. Chương trình nguồn
viết bằng ngôn ngữ lập trình Java có đuôi *.java đầu tiên được biên dịch thành tập
tin có đuôi *.class và sau đó sẽ được trình thông dịch thông dịch thành mã máy.
Để chạy Java bytecode, cần cài đặt JRE (Java Runtime Environment). JRE cung cấp
các thư viện cơ bản, Java Virtual Machine, plugin cho trình duyệt, và những thứ
khác.
Tốc độ cao (high perfprmance):
Khi Sun Microsystems mô tả Java có tốc độ cao, có lẽ họ muốn nói về mã bytecode
được thông dịch hiệu quả như thế nào ( Java thường chạy nhanh hơn những ngôn
ngữ lập trình thông dịch khác như Python, Perl, PHP ). Về tốc độ các applet hay
chương trình Java thì nói chung đều chậm hơn các chương trình Java thì nói chung
đều chậm hơn các chương trình được biên dịch viết bằng C++, vì chương trình này
đã được tối ưu hoá từ trước cho hệ máy nhất định. Java đã phải trả giá về hiệu suất
cho tính không phụ thuộc hệ của nó.
Đa luồng (multithreaded):
Đa luồng có nghĩa là ngôn ngữ Java cho phép xây dựng trình ứng dụng, trong đo,
nhiều quá trình có thể xảy ra đồng thời. Tính đa luồng cho phép các nhà lập trình có
thể biên soạn phần mềm đáp ứng tốt hơn, tương tác tốt hơn, và thực hiện theo thời
gian thực.
Tính động (dynamic):
Java động vì nó được thiết kế để đáp ứng với môi trường tác nghiệp luôn trong tình
trạng thay đổi. Khi có yêu cầu mới xuất hiện trên thị trường, các loại đối tượng mới
có thể được bổ sung vào ngay.

e. Ứng dụng
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. Hiện nay, công nghệ Java được chia làm ba bộ phận hỗ trợ
cho việc phát triển nhiều loại hình ứng dụng khác nhau cụ thể như:
J2SE (Java Standard Edition)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: platform
cho phát triển và thực thi các ứng dụng Java trên desktop và server, cũng như các thiết
bị nhúng, và môi trường thời gian thực.
J2EE (Java Enterprise Edition) 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ô doanh nghiệp, chủ yếu để chạy trên máy chủ (server). Bộ
phận hay được nhắc đến nhất của công nghệ này là công nghệ Servlet/JSP: sử dụng
Java để làm các ứng dụng web.
J2ME (Java Micro Edition) 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,
robo và những ứng dụng điện tử khác.
f. Một số khái niệm trên 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. Hiện nay, công nghệ Java được chia làm ba bộ phận hỗ trợ
cho việc phát triển nhiều loại hình ứng dụng khác nhau cụ thể như:
J2SE (Java Standard Edition)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: platform
cho phát triển và thực thi các ứng dụng Java trên desktop và server, cũng như các thiết
bị nhúng, và môi trường thời gian thực.
J2EE (Java Enterprise Edition) 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ô doanh nghiệp, chủ yếu để chạy trên máy chủ (server). Bộ
phận hay được nhắc đến nhất của công nghệ này là công nghệ Servlet/JSP: sử dụng
Java để làm các ứng dụng web.
J2ME (Java Micro Edition) 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,
robo và những ứng dụng điện tử khác.
III. Các nguyên tắc sáng tạo được áp dụng trong Java
1. Nguyên tắc phân nhỏ
Nội dung:
− Chia đối tượng thành các phần độc lập.
− Làm đối tượng trở nên tháo lắp được.
− Tăng mức độ phân nhỏ của đối tượng.
Ứng dụng:
Java là một hệ thống đồ sộ thực hiện rất nhiều chức năng. Do đó nó được chia ra hành
nhiều phần riêng biệt:
− Máy ảo Java JRE.
− Ngôn ngữ lập trình Java.
− Định dạng file class.
− Giao diện lập trình ứng dụng API.
Khi viết chương trình và build, 4 thành phần này đều được sử dụng: Viết chương trình
bằng ngôn ngữ, biển dịch thành file class và chạy những file class trên máy ảo. Khi viết
chương trình, ta phải sử dụng những tài nguyên hệ thống bằng cách gọi những API của
Java.
Máy ảo Java là trái tim của hệ thống Java. Nó là một máy tính ảo, có những thông số
được định nghĩa với những tính năng nhất định.
Quá trình chạy của chương trình Java
Lược đố khối của máy ảo Java
Công việc chính của máy ảo Java là load những file class và thực thi những bytecode
của chúng. Nó bao gồm một class loader dùng để load những file class và Java API. Chỉ
những class và API cần thiết được load lên bộ nhớ. Bytecode được thực thi trong

module execution engine.
File class của Java giúp Java thích hợp cho sự độc lập nền tảng và tính di động trên
mạng. Vai trò của nó trong sự độc lập nền tảng là phục vụ như là một kiểu file nhị phân
cho những chương trình Java. Trong bộ thông dịch Java, sau khi viết mã nguồn, nó
được dịch thành những bytecode, “ngôn ngữ máy” của máy ảo Java.
Java API là tập các thư viện runtime cung cấp một cách thức tiêu chuẩn để truy cập
những tài nguyên hệ thống của một máy tính.
Do Java là một hệ thống gồm nhiều thành phần như thế nên khả năng tháo lắp, di động
của nó rất tốt: Người sử dụng chỉ cần cài đặt phần cần thiết trong máy. Ví dụ: Một
người dùng cuối chỉ cần cài JRE để chạy các ứng dụng Java. Lập trình viên desktop cần
cài J2SE, lập trình viên Mobile cần cài J2ME, còn lập trình trên các hệ thống lớn thì cần
đến J2EE.
2. Nguyên tắc tách khỏi
Nội dung:
Tách phần gây phiền phức (tính chất phiền phức) hay ngược lại, tách phần duy nhất cần
thiết (tính chất cần thiết) ra khỏi đối tượng.
Thông thường các chương trình trên một hệ điều hành này thì không thể chạy trên hệ
điều hành khác vì một số lý do:
− Các API của các hệ điều hành khác nhau.
− Cơ chế hỗ trợ phần cứng cũng như sử dụng tài nguyên của các hệ điều
hành cũng khác nhau.
Do đó để một chương trình có thể chạy được trên nhiều hệ điều hành khác nhau, lập
trình viên phải viết code của chương trình cho từng hệ điều hành. Điều này gây ra một
số khó khăn như sau:
− Lập trình viên phải biết rõ API của từng hệ điều hành. Việc học API
của nhiều hệ điều hành cùng lúc là rất khó khăn và nhàm chán.
− Các bản phân phối của chương trình trên từng hệ điều hành là không
đồng bộ.
− Việc chỉnh sửa sau này cho chương trình phải được thực hiện trên tất
cả các phiên bản trên các hệ điều hành.

Tuy nhiên đối với Java những khó khăn này đã được khắc phục. Lập trình viên chỉ phải
viết mã bằng ngôn ngữ Java, sử dụng những API, thư viện do Java cung cấp. Mã nguồn
sẽ được build thành những file class. Các file class này có thể sử dụng trên bất kỳ hệ
thống nào có sử dụng máy ảo Java. Việc thông dịch ra mã máy tương ứng với từng hệ
điều hành sẽ do Java đảm nhiệm.
Các tiếp cận này có các thuận lợi:
− Chương trình có thể chạy được trên các hệ điều hành miễn sao hệ điều
hành đó có cài máy ảo Java.
− Chương trình chỉ cần build một lần thành các file class.
− Việc chỉnh sửa chỉ phải thực hiện một lần.
− Java đảm bảo việc đồng bộ giữa các bản phân phối trên các hệ điều
hành khác nhau.
− Lập trình viên không cần phải biết API của từng hệ điều hành, thay vào
đó họ chỉ cần biết ngôn ngữ Java và các API cũng như các thư viện của
nó.
3. Nguyên tắc phẩm chất cục bộ
Nội dung:
− Chuyển đối tượng (hay môi trường bên ngoài, tác động bên ngoài) có
cấu trúc đồng nhất thành không đồng nhất.
− Các phần khác nhau của đối tượng phải có các chức năng khác nhau.
− Mỗi phần của đối tượng phải ở trong những điều kiện thích hợp nhất
đối với công việc.
Java là một nền tảng rất phức tạp và đa dụng. Nó có thể dùng để:
− Tạo những ứng dụng Desktop.
− Tạo applet chạy trên các trang web.
− Sử dụng như một Server script để tạo ra những trang web động.
− Lập trình mạng.
− Lập trình phân bố.
− Lập trình trên Mobile.
− …

Do đó Java được chia thành nhiều công nghệ khác nhau: J2SE, J2EE, J2ME.
J2SE hay Java 2 Standard Edition vừa là một đặc tả, cũng vừa là một nền tảng thực
thi (bao gồm cả phát triển và triển khai) cho các ứng dụng Java. Nó cung cấp các API,
các kiến trúc chuẩn, các thư viện lớp và các công cụ cốt lõi nhất để xây các ứng dụng
Java. Mặc dù J2SE là nền tảng thiên về phát triển các sản phẩm chạy trên máy tính để
bàn nhưng những tính năng của nó, bao gồm phần triển khai ngôn ngữ Java lớp gốc, các
công nghệ nền như JDBC để truy vấn dữ liệu chính là chỗ dựa để Java tiếp tục mở
rộng và hỗ trợ các thành phần mạnh mẽ hơn dùng cho các ứng dụng hệ thống quy mô xí
nghiệp và các thiết bị nhỏ.
J2SE gồm 2 thành phần:
− Java Runtime Evironment, Standard Edition (JRE): Môi trường thực
thi cung cấp các Java API, máy ảo Java, và các thành phần khác để
chạy applet viết bằng ngôn ngữ Java.
− Java Software Development Kit, Standard Edition (JDK): JDK là tập
mẹ của JRE, chứa mọi thứ nằm trong JRE, bổ sung thêm các công cụ:
compiler, debugger cần để phát triển applet và các ứng dụng.
Java 2 Platform, Enterprise Edition (Nền tảng Java, phiên bản 2 - bản dành
cho kinh doanh là công nghệ của Sun Microsystems) hay Java EE (gọi tắt là
J2EE) là một nền lập trình dành cho việc phát triển ứng dụng phân tán kiến trúc đa
tầng, chủ yếu dựa vào các thành phần môđun chạy trên các máy chủ ứng dụng.
Java EE bao gồm một số đặc tả kĩ thuật API, như JDBC (Cơ cấu liên nối với cơ sở dữ
liệu), RMI (thi hành phương pháp từ xa), thư điện tử (e-mail), JMS (Java Message
Service - Dịch vụ thông điệp của Java), Dịch vụ mạng (Web services), XML , và đồng
thời nó còn định nghĩa cấu trúc liên nối giữa những kĩ thuật này vói nhau. J2EE còn bao
gồm một số đặc tả chỉ tồn tại trong các thành phần của nó. Những thành phần này bao
gồm Enterprise JavaBean (chủ thể Bean dùng trong kinh doanh), servlet, portlet, JSP và
một số các kĩ thuật vềdịch vụ mạng (web service). Điều này cho phép nhà phát triển tạo
ra một chương trình ứng dụng kinh doanh (enterprise application) không những chỉ có
thể sử dụng trên các nền tảng khác nhau, mà còn có thể khuếch trương thành những qui
mô lớn hơn và tích hợp với những công nghệ kế thừa từ trước đây. Trình chủ của Java

EE có thể quán xuyến các giao dịch (transactions), nhiệm vụ bảo an (security), chức
năng đa biến số bất định lượng (arity), tính qui mô hóa (scalability), sự tương tranh
(concurrency) và quản lý các thành phần đã được triển khai trong môi trường của nó.
Điều này có nghĩa là các nhà phát triển có thể tập trung vào các lôgic thương mại của
các thành phần thay vì phải quan tâm đến cơ sở hạ tầng

các nhiệm vụ tích hợp khác.
J2ME (Java 2 Micro Edition) là một nền tảng Java được thiết kế cho những hệ thống
nhúng (bao gồm các thiết bị mobile). J2ME được phát triển từ kiến trúc Java Card,
Embedded Java vf Personal Java của phiên bản Java 1.1. J2ME là nền tảng có tính chất
nhỏ gọn nên có thể chạy được trên các hệ thống nhúng.
4. Nguyên tắc kết hợp
Nội dung:
− Kết hợp các đối tượng đồng nhất hoặc các đối tượng dùng cho các hoạt
động kết cận.
− Kết hợp về mặt thời gian các hoạt động đồng nhất hoặc kế cận.
Ứng dụng:
Bộ JDK của Java có các công cụ hỗ trợ viết chương trình:
− Compiler: Là trình biên dịch dùng để dịch mã nguồn viết bằng ngôn
ngữ Java thành các file class.
− Debugger: Là trình gỡ lỗi dùng để dò lỗi khi lập trình viên viết chương
trình.
5. Nguyên tắc vạn năng
Nội dung: Đối tượng thực hiện một số chức năng khác nhau, do đó không cần sự tham
gia của đối tượng khác.
Ứng dụng:
Với Java ta có thể thực hiện được hầu hết các loại ứng dụng phổ biến hiện nay:
− Ứng dụng Desktop: Lập trình ứng dụng Desktop với thư viện JFC. JFC
là một thư viện rất phong phú và đa dạng đủ để xây dựng bất kỳ một
ứng dụng giao diện đồ họa phức tạp nào.

− Ứng dụng Web: Với các công nghệ như JSP, EJB ta có thể tạo ra những
ứng dụng web hiệu quả tương đương với ASP.NET hay PHP.
− Máy chủ web: Với Java Web Server ta có thể tạo môi trường của một
máy chủ chạy web viết bằng Java.

×