Java là ngôn ngữ lập trình hướng đối tượng, được phát triển bởi hãng Sun MicroSystem
Java được thiết kế cho mục đích đa nền( không phụ thuộc vào bất kì hệ điều hành nào) nên mã của chương trình Java sau khi biên dịch thường ra một dạng file nhị phân khác với các file thực thi nhị phân của Windows mà bạn thường thấy như .exe hay .com. Java biên dịch ra mã nhị phân gọi là byte-code và được triệu gọi thực thi trong máy ảo Java( Virtual Machine hay VM). File nhị phân của Java thường mang tên mở rộng là .class.
Máy ảo Java thực sự là một chương trình thông dịch bình thường có khả năng thực thi các mã byte- code tương tự như bộ xử lí của máy tính thực thi các mã nhị phân là các chỉ thị mã máy. Nói đúng hơn, máy ảo Java là một kiến trúc của bộ xử lí nhưng thực thi bằng cơ chế phần mềm thay vì phần cứng. Chính vì lí do này bạn chỉ cần viết máy ảo Java cho từng hệ điều hành là chương trình Java( .class) có thể chạy như nhau ở mọi nơi trên cùng một kiến trúc máy ảo. Bạn không cần lo về máy ảo Java. Cha đẻ của ngôn ngữ Java là hãng Sun MicroSystem chịu trách nhiệm xây dựng các máy ảo Java cho những hệ điều hành khác nhau.Nhiệm vụ của lập trình viên Java chỉ là viết chương trình bằng mã nguồn Java sau đó biên dịch ra chương trình ra dạng file thực thi byte- code( .class) để chạy trên máy ảo.
Ta có thể tìm thấy máy ảo Java và trình biên dịch java trong bộ JDK( Java Deverlopment Kit) hỗ trợ bởi Sun và rất nhiều hãng khác như IBM, Oracle... Hiện JDK của Sun được xem là chuẩn và sử dụng nhiều nhất. Bạn có thể tìm thấy phiên bản mới nhất của JDK1.4 tại địa chỉ của Sun: http://java.sun.com, bộ công cụ phần mềm này được cho tải về miễn phí.
Java có thể dùng để viết chương trình ứng dụng tương tự như mọi ngôn ngữ lập trình khác. Java thiên về lập trình cho các ứng dụng mạng và internet. Ngoài ra bạn có thể dùng java để viết Applet hoặc Servlet hay mã trang JSP là những thành phần ứng dụng đặc biệt dùng cho trình duyệt( browser) và trình chủ( Web server).
Java là một ngôn ngữ đơn giản, hướng đối tượng, phân tán, thông dịch, mạnh mẽ, bảo mật , cấu trúc độc lập, khả chuyển, hiệu quả cao và linh động. Sau đây là một số đặc điểm của Java.
Đơn giản( Simple): đặc điểm đầu tiên và cũng là mục đích cơ bản của Java là tình đơn giản. Kích thước của bộ biên dịch cơ bản và lớp hỗ trợ là vô cùng nhỏ. Theo các nhà sáng lập, kích thước đó là 40KB cho trình thông dịch và cho lớp hỗ trợ, thêm vào bộ thư viện chuẩn và lớp hỗ trợ phân tuyến thì kích thước chỉ khoảng 175KB. Kích thước này là của bản gốc còn các phiên bản mới con số đó còn tăng lên. Tuy vậy so với Visual Basic và VC thì rất nhỏ.
Hướng đối tượng( Object Oriented): mọi ứng dụng viết trên Java đều phải được xây dựng trên các đối tượng và thông qua các đối tượng. Các hỗ trợ của java không cho phép các đối tượng có tính đa thừa kế mà thay vào đó có các giao tiếp( interface).
Phân tán( Distributed): java được thiết kế để hỗ trợ các ứng dụng phân tán bằng các lớp mạng (java.net). Một ứng dụng java có thể dễ dàng được truy xuất từ các máy chủ ở xa, nó có thể mở hoặc truy cập đến các đối tượng thông qua mạng.
Thông dịch( Interpreter): Java là một ngôn ngữ thông dịch( thật sự java là một ngôn ngữ vừa thông dịch vừa biên dịch) nên nó trở nên khả chuyển, Các ứng dụng Java có thể dễ dàng chạy trên các máy tính với các nền phần cứng khác nhau, chỉ cần đi kem với nó là bộ thông dịch, bộ gỡ rối và nhất là bộ thư viện (runtime library).
Mạnh mẽ( Robust): java không cho phép lập trình viên khai báo các biến một cách tùy tiện, biến luôn phải tường minh. Nhờ đó mà những lỗi thường gặp trong khi viết bằng ngôn ngữ C như cấp phát bộ nhớ, bộ nhớ tràn, trùng lặp bộ nhớ… đã được giải quyết.
Bảo mật( Security): Java được viết cho các ứng dụng chạy trên môi trương mạng phân tán. Do đó Java được thiết kế sao cho có khả năng tạo được một hệ thống không virus, không bị phá. Kỹ thuật xác minh của Java dựa vào cách mã hóa theo khóa công cộng. Java không hỗ trợ biến con trỏ. Một thông dịch bytecode sẽ kiểm tra chặt chẽ các mã byte, không cho bất kỳ những hành vi không được phép nào được thực hiện.
Khả chuyển: máy ảo Java tương thích với môi trường được cài đặt tạo nên kiến trúc trung tính, các ứng dụng Java chỉ cần ciết sao cho chay được trên máy ảo đó là có thể cài đặt và chạy tốt trên mọi hệ thống. Mặt khác, các kiểu dữ liệu của java được định nghĩa không phụ thuộc vào bộ xử lí hay vào hệ điều hành mà các ứng dụng được cài đặt.
Hiệu quả cao( High performance ): so với các chương trình được biên dịch hoàn tòan bằng C hay C++, các chương trình Java không có hiệu quả cao hơn. Nhưng với tính năng giao diện đồ họa, sự đơn giản, nhỏ gọn, tính khả chuyển, ta cũng có thể nói là hiệu quả chung của các chương trình Java là đáng khích lệ so với tính phức tạp của C/C++.
Đa tuyến( Multithread): tính năng này cho phép chúng ta có thể thực hiện nhiều tiến trình song song và tương hỗ với nhau tránh được tính tuần tự nhàm chán và những thời gian chết trong chờ đợi.
Linh động( Flexible): vì dùng trình thông dịch nên Java là ngôn ngữ rất năng động. Trong khi chạy, môi trường Java có thể tự mở rộng để liên kết các lớp mới có thể ở một máy chủ ở xa trên mạng. Đó chính là thuận lợi to lớn của Java so với C/C++.