- Đơn giản(simple) :Cú pháp của java thực ra giống cú pháp của C++ trong các phiên bản mới đây. Mặc dù java không phải là ngôn ngữ được ưa chuộng nhất hiện nay nhưng trong thời điểm này java là ngôn ngữ hay hơn cả. Một điểm khác nữa là java rất nhỏ, nó có thể tạo ra những phần mềm chạy độc lập trên các máy tính nhỏ kích thước bộ biên dịch và các lớp thư viện của nó chỉ có 40K.
- Hướng đối tượng(Ọbect oriented): mọi ứng dụng của java điều phải được xây dựng trên các đối tượng. mỗi lớp có nhiều phương thức(method) và vùng(field). Phương thức là những chức năng mà đối tượng dùng để trả lời các tác động lên đối tượng.
- 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). Ví dụ như lớp URL của java có thể truy xuất dễ dàng đến máy chủ ở xa, nó có thể mở hoặc truy cập đến các đối tượng thông qua mạng dễ dàng như một lập trình viên đang sử dụng ngay trên máy của mình.
- kiểu tỉnh(statically typed): tất cả các đối tượng được sử dụng trong chương trình phải được khai báo trước khi sử dụng. Điều này giúp cho trình biên dịch java có thể xác định và báo cáo các xung đột.
- Biên dịch(Compiled): trước khi chúng ta chạy một chương trình bằng java thì chương trình này phải được dịch lại bằng một trình dịch java(máy ảo java) kết quả sẽ đưa ra một file “bye-code” tương đương với một file mã máy, có thể thực hiện được trong bất kỳ hệ điều hành nào mà có trình thông dịch java(JVM). Trình thông dịch này đọc file “bye-code” và dịch các lệnh “bye-code” sang ngôn ngữ máy.
- Thông dịch(Interpreter): java là một ngôn ngữ thông dịch( thật ra nó là ngôn ngữ vừa thông dịch vừa biên dịch) nên nó trở nên khá khả chuyển.
- Mở rộng(Extensible): các chương trình java hỗ trợ các hệ thống riêng mà các hàm được viết bằng một ngôn ngữ khác thường là C++,Visual Basic. Hỗ trợ cho các hệ thống riêng giúp cho người lập trình viết các hàm mà có thể thực hiện nhanh hơn các hàm tương đương viết bằng java. Các hệ thống riêng này được liên kết động với chương trình java. Khi java được cải thiện về tốc độ thì các hệ thống riêng này sẽ không cần thiết nữa.
- Mạnh mẽ(robust): giúp cho lập trình viên tạo nên những chương trình chắc chắn, không phạm nhiều vào những lỗi khi chạy(runtime error). Java không cho phép các lập trình viên khai báo các biến một cách tuỳ tiện mà các biến này phải tường
minh. Ngay cả kiểu dãy cũng không phải là một con trỏ trong C mà là một kiểu thực. Nhờ đó mà những lỗi thường gặp như cấp phát bộ nhớ, bộ nhớ tràng, trùng lắp bộ nhớ,.. đã được java giải quyết triệt để.
- An Toàn(Secure): hệ thống java không gì kiểm tra mọi sự truy cập bộ nhớ mà còn đảm bảo không có virus nào làm ngưng một applet đang chạy.
- Bảo mật(Sercurity): Java được viết cho các ứng dụng chạy trên môi trường phân tán do đó java phải được thiết kết trên một hệ thống không virus, không bị phá rối, không biến con trỏ. Bộ thông dịch luôn kiểm tra chặt chẽ các mã byte.
- Khả chuyển: Do tạo được các máy ảo java tương thích với môi trường được cài đặt sẽ tạo nên kiến trúc trung tính trong java, các ứng dụng java viết sao cho chạy được trong máy ảo java. 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 hệ điều hành mà các ứng dụng cài đặt.
- Hiệu quả cao: rõ ràng so với chương trình được biên dịch hoàn toàn 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 đồ hoạ, sự đơn giản, nhỏ gọn từ đó ta có thể nói là hiệu quả chung của các ứng dụng java là đáng khích lệ so với tính phức tạp của C/C++.
- Đa tuyến: 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 và tương hỗ lẫn nhau tránh được tính tuần tự nhàm chán và những thời gian chết trong chờ đợi.