Object Oriented - In Java, everything is an Object. Java can be easily extended since it is based on the Object model
Platform Independent - Unlike many other programming languages including C and C++, when JAVA is compiled, it is not compiled into a platform specific machine, rather into platform independent byte code. This byte code is distributed over the web and interpreted by the Virtual Machine (JVM) on which platform it is being run on
Simple - Java is designed to be easy to learn
Secure - With Java's secure feature it enables to develop virus-free, tamper-free systems. Authentication techniques are based on public-key encryption
Architecture-neutral - Java compiler generates an architecture-neutral object file format, which makes the compiled code executable on many processors, with the presence of Java runtime system
Multithreaded - With Java's multithreaded feature it is possible to wire programs that can perform many tasks simultaneously. This design feature allows the developers to construct interactive applications that can run smoothly
Interpreted - Java byte code is translated on the fly to native machine instructions and is not stored anywhere. The development process is more rapid and analytical since the linking is an incremental and light-weight process
High Performance - with the use of just-in Time compilers, Java enables high performance
Distributed - Java is designed for the distributed environment of the internet
Dynamic - Java is considered to be more dynamic than C or C++ since it is designed to adapt to an evolving environment. Java programs can carry an extensive amount of run time information that can be used to verify and resolve accesses to objects on run time