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.