Features of Java

Features of Java Programming:

Java is a general-purpose object-oriented programming language. It is originally developed by James Gosling (Sun Microsystems) of the USA in 1991. Java designs for the development of software for consumer electronic devices like TVs, VCRs and other electronic machines. The following features of Java are:

Java Features:

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 statements 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 a two-stage system. First, the Java compiler translates source code into bytecode instructions. Bytecode instructions are not machine instructions. In the second stage, the 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, the 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 easily move 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 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. It makes 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, mainly due to the use of intermediate bytecode. According to Sun, Java’s 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 fewer 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 the 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 Java desktop client users. It provides an improved Swing look and feels like called Ocean. This feature mainly used for developing graphics applications that require OpenGL hardware acceleration.