1. Simple: Java is very Simple and easy to learn. we can write java programs easily. To learn java no prior knowledge is requried. Most of the complex and confusing features of other language (C/C++) like pointers, multiple inheritance are removed from java.
2. Object-Oriented: Java support all object-oriented feacutres like object, class, Data encapsulation, Data abstraction, inheritance, polymorphism, etc.
3. Platform-Independent: If we write java program once, we can run on any platform. i.e. Java follows WORA (Write Once and Run Anywhere) principle.
4. Architectural-Neutral: Java is considered as architecture-neutral language because Java programs are platform-independent — they can run on any hardware or operating system without modification.
5. Portable: Java programs can be easily moved from one system to another without modification.
6. Secure: Java program never communicates directly with the machine. First converted into bytecode and then converted into machine code by JVM. Bycode contains any probem or if it not preperly formatted, then JVM won’t allow that code to run and will raise VerifyError. Internally inside JVM, Bytecode verifier is responsible to verity bytecode. Hence java is secure.
7. Multithreaded: In the case of multithreading, multiple threads can run simultaneously and can perform specified tasks simutaneously, so that perforemce of the applications will be improved. Java provides inbuilt support for multi threading by providing a rich API.
8. Robust: Java is storngly typed language as it is excellent in memory management(automatic Garbage Collector), exception handling.
9. Distributed: If functionaly of application distributed acrossed multiple JVMs such application is called distributed application. Load balacing is main advantage of distributed applications. Java supports inbuilt distributed support. (RMI, EJB, CORBA)
10. Complied and Interpreted: Java is both complied and interpreted programming language. First java complier complies java code and generate machine independent Byte code. At runtime JVM interprets this byte code into machine code and executes that machine code line by line.
11. High Performance: Java is high performance language because of all these reasons.
12. Dynamic: Java compiler produces byte code(class file) which will be loaded into memory at runtime, not just at compile time.