Features of Java

Features of Java are :

  • Simple 
  • Object-Oriented 
  • Portable
  • Platform independent
  • Secured 
  • Robust
  • Architecture neutral
  • Interpreted
  • High Performance 
  • Multi Threaded 
  • Distributed 
  • Dynamic

1)Simple :

  • Java syntax is based on C++ so easier for programmers to learn it after C++ .
  • Java has removed many complicated and rarely-used features like explicit pointers, operator overloading, etc.
  • There is no need to remove unreferenced objects because there is an Automatic Garbage Collection in Java.

2)Object-oriented :

  • Java is an object-oriented programming language. 
  • Everything in Java is an object. 
  • Object-oriented means we organize our software as a combination of different types of objects that incorporates both data and behavior.

3)Platform Independent :

  • Java is platform independent because it is different from other languages like C, C++, etc. which are compiled into platform specific machines.
  • Java is a write once and run anywhere language.

  • Platform : A platform is the hardware or software environment in which a program runs.

  • There are two types of platforms :

1)Hardware-based

2)Software-based

  • Java provides a software-based platform.
  • The Java platform differs from most other platforms in the sense that it is a software-based platform that runs on the top of other hardware-based platforms.
  • It has two components:

1. Runtime Environment 

2. API(Application Programming Interface)

  • Java code can be run on multiple platforms, for example, Windows, Linux, Mac/OS, etc.
  • Java code is compiled by the compiler and converted into bytecode.
  • This bytecode is a platform-independent code because it can be run on multiple platforms i.e Write Once and Run Anywhere(WORA).

4) Secured:
features of Java

  • No explicit pointer
  • Java Programs run inside a virtual machine sandbox.
  • Classloader: Classloader in Java is a part of the Java Runtime Environment(JRE) which is used to load Java classes into the Java Virtual Machine dynamically. 
  • It adds security by separating the package for the classes of the local file system from those that are imported from network sources.

  • Bytecode Verifier: It checks the code fragments for illegal code that can violate access right to objects.
  • Security Manager: It determines what resources a class can access such as reading and writing to the local disk.

5)Robust (Strong) :

  • It uses strong memory management.
  • There is a lack of pointers that avoids security problems.
  • There is automatic garbage collection in java which runs on the Java Virtual Machine to get rid of objects which are not being used by a Java application anymore.

  • There are exception handling and the type checking mechanism in Java.
  • All these points make Java robust.

6)Architecture-neutral :

  • Java is architecture neutral because there are no implementation dependent features, for example, the size of primitive types is fixed.
  • In C programming, int data type occupies 2 bytes of memory for 32-bit architecture and 4 bytes of memory for 64-bit architecture.
  • It occupies 4 bytes of memory for both 32 and 64-bit architectures in Java.

7)Portable :

  • Java is portable because it facilitates you to carry the Java bytecode to any platform. 
  • It doesn't require any implementation.

8)High-performance :

  • Java is faster than other traditional interpreted programming languages because Java bytecode is "close" to native code.
  • It is still a little bit slower than a compiled language (e.g., C++).
  • Java is an interpreted language that is why it is slower than compiled languages, e.g. C, C++, etc.

9)Distributed :

  • Java is distributed because it facilitates users to create distributed applications in Java.
  • RMI and EJB are used for creating distributed applications.
  • This feature of Java makes us able to access files by calling the methods from any machine on the internet.

10)Multi-threaded :

  • A thread is like a separate program, executing concurrently.
  • We can write Java programs that deal with many tasks at once by defining multiple threads.
  • The main advantage of multi-threading is that it doesn't occupy memory for each thread.
  • It shares a common memory area.
  • Threads are important for multi-media, Web applications, etc.

11)Dynamic  :

  • Java is a dynamic language. It supports dynamic loading of classes.
  • It means classes are loaded on demand.
  • It also supports functions from its native languages, i.e. C and C++.
  • Java supports dynamic compilation and automatic memory management (garbage collection).