Mục tiêu của việc tạo ra ngôn ngữ lập trình Java là làm cho nó trở thành ngôn ngữ lập trình di động, đơn giản và an toàn. Ngoài ra, Java còn có một số tính năng tuyệt vời đóng vai trò quan trọng trong sự phổ biến của ngôn ngữ này. Các tính năng của Java còn được gọi là buzzwords java .


Có thể liệt kê 12 tính năng được được đánh giá cao về Java : Simple (đơn giản), Object-Oriented (hướng đối tượng), Portable(di động), (Platform independent) nền tảng độc lập, Secured (bảo đảm), Robust(mạnh mẽ),Architecture neutral( kiến trúc trung tính),Interpreted ( giải thích), High Performance( Hiệu suất cao) ,Multithreaded ( đa luồng),Distributed (phân phối) và Dynamic(năng động).


1. Simple 


- Java dễ học và cú pháp của nó rất đơn giản, rõ ràng và dễ hiểu. Theo Sun, ngôn ngữ Java là một ngôn ngữ lập trình đơn giản bởi vì : 
+ Cú pháp Java dựa trên C++ ( dễ dàng hơn cho các lập trình viên để tìm hiểu nó sau C++).
- Java đã loại bỏ nhiều tính năng khó hiểu và hiếm khi được sử dụng, ví dụ như explicit pointers, operator overloading, etc.
- Không cần phải loại bỏ các đối tượng unreferenced bởi những Automatic Garbage Collection trong Java.


2. Object-Oriented 


- Java là ngôn ngữ lập trình hướng đối tượng. Mọi thứ trong Java là một đối tượng. Hướng đối tượng có nghĩa là chúng ta tổ chức phần mềm của chúng ta dưới dạng kết hợp các đối tượng khác nhau kết hợp cả dữ liệu và hành vi.
- Lập trình hướng đối tượng (OOP) là một phương pháp đơn giản hóa việc phát triển và bảo trì phần mềm bằng cách cung cấp một só quy tắc.
- Một số khái niệm về OOP: 
+) Object
+) Class
+) Inheritance
+) Polymorphism
+) Abstraction
+) Encapsulation


3.Platform independent


- Java là nền tảng độc lập bởi vì nó khác với các ngôn ngữ khác như C,C++,vv được biên dịch thành các nền tảng specific machines trong khi đó Java viết một lần, chạy mọi nơi. Nền tảng là môi trường phần cứng hoặc phần mềm trong đó có 1 chương trình chạy.
Có 2 loại nền tảng dựa trên phần mềm và dựa trên phần cứng thì Java cung cáp dựa trên nền tảng phần mềm.


- Nền tảng Java khác với hầu hết các nền tảng khác. Theo định nghĩa Java là một nền tảng phần mềm chạy trên nền tảng phần cứng khác. Java bao gồm 2 thành phần :

 
1. Runtime Enviroment (Môi trường thực thi). 
2. API ( Giao diện lập trình ứng dụng ). 


Java code có thể chạy trên nhiều nền tảng như Windows, Linux, Sun Solaris, Mac/Os, vv. Java code được biên dịch bởi trình biên dịch và được chuyển thành bytecode. Bytecode là một mã độc lập nền tảng bửi vì nó có thể chạy trên nhiều nền tảng, tức là viết một lần và thực thi mọi nơi ( Run Once Write Anywhere).


3. Secured


- Java được biết đến nhiều nhất vì tính bảo mật của nó. Với Java, chúng ta có thể phát triển các hệ thống không có virus. Java được bảo mật vì: 
+) No explicit pointer.
+) Java Programs run inside virtual machine sandbox
+) Classloadder: Classloadder ( Trình nạp lớp ) la một phần của môi trường chạy thử Java ( JRE) được sử dụng để tự động nạp các lớp Java vào machine sandbox Java ( máy ảo Java). Nó bổ sung tính bảo mật bằng cách tách gói cho các lớp của hệ thóng tệp cục bộ từ các gói được nhập từ các nguồn mạng. 


+) Bytecode Verifier: Nó kiểm tra các đoạn code cho các illegal code ( Mã code mất hợp pháp) cso thể vi phạm quyền truy cập vào các đối tượng.
+) Security Manager: Nó xác định những tài nguyên mà một lớp có thể truy cập được như đọc và ghi đĩa cục bộ.

Những bảo mật này được cung cấp bởi ngôn ngữ Java. Một số bảo mật cũng có thể được được cung cấp bởi các nhà phát triển ứng dụng thông qua SSL, JAAS, mật mã,...vv


4. Robust


- Robust (Tiềm năng ) -> Java mạnh mẽ vì : 


+) Nó sử dụng quản lý bộ nhớ Robust.
+) Thiếu các Pointers để tránh các vấn đề về bảo mật. 
+) Có các bộ sưu tập rác tự động trong Java chạy trên máy ảo để loại bỏ các đối tượng không còn được sử dụng bởi một ứng dụng Java nữa. 
+) Có thể xử lý ngoại lệ và cơ chế kiểm tra mechanism ( kiểu) trong Java. Chính những đặc điểm này làm cho Java Robust. 


5. Architecture neutral


- Java là kiến trúc trung lập bởi vì không có các tính năng phụ thuộc thực hiện ví dụ như kích thước của các kiểu nguyễn thủy được cố định.
- Trong lập trình C, kiểu dự liệu int chiếm 2 byte bộ nhớ cho kiến trúc 32 bit và 4 byte bộ nhớ cho kiến trúc 64 bit. Nhưng trong Java, Nó chiếm 4 byte bộ nhớ cho cả kiến trúc 32 và 64 bit.

6. Portable


- Java có tính năng di động vì nó tạo điều kiện cho bạn để mang Java bytecode đến bất cứ nền tảng nào. Nó không yêu cầu bất kỳ kiểu triển khai nào. 


7. High Performance


- Java nhanh hơn các ngôn ngữ lập trình thông dịch truyền thống khác vì mã Java Bytecode là " gần" với mã gốc. Nó vẫn còn chậm hơn một chút so với ngôn ngữ được biên dịch ( C++). Java là một ngôn ngữ thông dịch, đó là lý do tại sao nso chậm hơn các ngôn ngữ được biên dịch. 


8.Distributed


- Java được phân phối bởi vì nó tạo điều kiện cho người dùng tạo các ứng dụng phân tách trong Java. RMI và EJB được sử dụng để tạo các ứng dụng phân tán. Tính năng này của Java làm cho chúng ta có thể truy cập các tập tin bằng cách gọi các phương thức từ bất kỳ máy nào trên Internet.


9. Multithreaded 


- Một  Multithreaded ( luồng ) giống như một chương trình riêng biệt, thực thi đồng thời. Chúng ta có thể viết các chương trình Java xử lý nhiều nhiệm vụ cùng một lúc bằng các định nghĩa Multithreaded . Ưu điểm chính của Multithreaded  là nó không chiếm bộ nhớ cho mỗi luồng. Nó chia sẻ một khu vực bộ nhớ chung. Chủ đề quan trọng đối với đa phương tiện, ứng dụng web,...vv.


10. Dynamic


- Java là một ngôn ngữ động. Nó hỗ trợ tải động các lớp. Nó có nghĩa là các lớp được tạo theo yêu cầu. Nó cũng hỗ trợ các hàm từ các ngôn ngữ bản địa của nó. Ví dụ như C/ C++.
- Java hỗ trợ biên dịch động và quản lý bộ nhớ tự động.  

Khóa học lập trình Java core online Lập trình Java căn bản đến nâng cao , Lập trình Java Web spring - Khai giảng tháng 8 tại Techmaster Việt Nam.

course: https://www.javatpoint.com/features-of-java