1. Simple and Small :
Java is a small and simple language, Many features of C and C++ that are either redundant or sources of unreliable code are not part of Java. Such as Java does not use pointers, preprocessor header files, goto
statement and many others. It also eliminates operator overloading and multiple inheritances.
2. Compiled and Interpreted : Generally a computer language is either compiled or interpreted. Java combines both these approaches thus making java is a two-stage system. First, Java compiler translates source code into bytecode instruction. Bytecode instructions are not machine instructions. In the second stage, Java interpreter generates machine code that can be directly executed by the machine that is running the java program. So, We can say that Java is both Compiled and Interpreted Language.
3. Platform-Independent and Portable : Java ensures portability in two ways, first, Java compiler generates bytecode instructions that can be implemented on any machine. Second, the size of the primitive data types is Machine-Independent. The most significant contribution of java over other languages is its portability. Java programs can be easily moved from one computer system to another.
4. Object-Oriented : Java is a true object-oriented language. Almost everything in Java is an object. All program code and data reside within objects and classes. Java comes with an extensive set of classes, arranged in packages.
5. Distributed : Java is designed as a distributed language for creating applications on networks. It can share both data and programs. Java applications can open and access remote objects on the Internet as easily as they can do in a local system. This enables multiple programs at multiple remote locations to collaborate and work together on a single project.
6. Multithreaded : Multithreaded means that handling multiple tasks simultaneously. Java supports multithreaded programs. This means that we need not wait for the application to finish one task before beginning another.
7. Dynamic and Extensible : Java is a dynamic language, Java is also capable of dynamically linking in new class libraries, methods, and objects. Java can also determine the type of class through a query, making it possible to either dynamically link or abort the program depending on the response.
8. High performance : Java performance is impressive for an interpreted language, it mainly due to the use of intermediate bytecode. According to Sun, Java speed is comparable to the native C/C++. Java architecture is also designed to reduce overheads during run-time.
9. Ease of Development : Java 2 Standard Edition (J2SE) 5.0 supports features – Generics, Enhanced for Loop, Autoboxing or Unboxing, Typesafe Enums, Static import and Annotation. These features reduce the work of a programmer by shifting the responsibility of creating the reusable code to the compiler. The resulting source code is free from bugs because the errors made by the compiler are less when compared to those made by programmers.
10. Scalability : J2SE 5.0 assures a significant increase in scalability by improving the startup time and reducing the amount of memory used in Java 2 runtime environment.
11. Monitoring and Manageability : Java supports several APIs, such as JVM Monitoring and Management API, Sun Management Platform Extension, Logging, Monitoring, and Management Interface, and Java Management Extension (JMX) to monitor and manage Java applications.
12. Desktop Client : J2SE 5.0 provides enhanced features to meet the requirements and challenges of the Java desktop client users. It provides an improved Swing look and feels called Ocean. This feature is mainly used for developing graphics applications that require OpenGL hardware acceleration.