Features/Characteristics of Java

Java has many important features that makes java one of the most useful programming language today. As the time passes, java has emerged as one of the most preferable programming language for different types of need. This tutorial will cover some of it's features which makes it one of the most useful language.

java features

1. Java is Platform Independent

Java is a platform independent language. In java you can write and compile your program on one machine(eg. windows) and then you can run the compiled code(.class file) on any other machine(eg. linux or macos). That is what the platform independent means in java, program written and compiled on one machine can be run on any other machine.

In order to run your program on new machine, all you need is, a JVM(Included in JRE software) installed on new machine as per it's operating system and the generated .class file from previous machine. This is why we also say java is a "Write Once - Run Anywhere"(WORA also known as Platform Independent) language.

java is platform independent

Here the MyFirstProgram.class generated on any machine(OS) can be run on any other machine having same or different OS. This is why we call java is a platform independent language.

What makes java platform independent

It's java bytecode along with JVM(specific to OS) makes java platform independent language.

2. Java is Object Oriented

Java is an object oriented programming language because java supports the principles of Object Oriented Programming(OOPs) like Encapsulation, Inheritance, Abstraction Polymorphism etc. Everything in java plays around objects, we create variables, methods etc for objects in a program. Programming languages like C, FORTRAN, PASCAL etc focuses on logics while java focuses on objects. An object contains data in the form of fields(instance variable) and code/logic in the form of methods.

java objects

Why java is not pure object oriented language ?

Java is not pure object oriented language because it supports primitive data types(byte, int, float etc) which are not objects.

3. Java is Simple

Java is a simple language because it's syntaxes are very similar to C++ syntaxes, it also provides automatic memory management through garbage collection, programmers don't have to focus on complex memory management. Apart from this java contains a lot of predefined class libraries to support different needs in a program. Java doesn't support some of the complex features like operator overloading, multiple inheritance etc. Also there is no concept of pointers in java that confuses programmers a lot. All these things makes java a simple language.

4. Java is Secure

java is secure

Java is secure because it has features like automatic memory management, no explicit pointer, bytecode verifier etc that enhances the security of java programs. As java does not have concept of pointer and provides the automatic memory management, it reduces the chances of memory leak. Bytecode verifier ensures that .class files are not edited explicitly, any external edit fails the program to run. Also java program runs in a separate java virtual machine which enhances it's security. These features together makes java one of the most secured language.

5. Java is Portable

Java is portable because the bytecode(.class file) of a program can be run on different machines without any change in it. If the machine changes or the configuration(hardware, operating system or both) of existing machine changes, same bytecode can be executed on new machine/configuration as well. Java's Write once - Run anywhere feature makes java a portable language. Java was designed with a goal that if new architectures are developed, the java environment could be ported easily. While porting all you need to have is the .class files of application on existing machine. Just copy these .class file on new machine and run your application by installing(if not already installed) the java virtual machine on new machine.

Why java is called portable language ?

Because the bytecode of a program can be ported/transfered to other machine/configuration and it can be run there as well.

6. Java is Distributed

Java is also called a distributed language. This means java programs running on one machine can easily access the resources(files, java objects etc) of other machine on internet/network. Java provides class libraries for high-level support of networking. The java's remote method invocation(RMI) API's allow java programs to call methods of remote java objects, as if they were local objects. We can also say, same or different applications running on different JVM on different machines can interact with each other for sharing data over the internet. RMI and EJB are mostly used for distributed programming.

java is distributed

Here the applications running on different machines which are connected via internet/network can interact/access the resources with each other using java's pre-built libraries like RMI, EJB etc.

What is distributed application

An application or it's independent parts that runs on multiple systems is known as distributed application.

7. Java is Multithreaded

Java is a multithreaded programming language. In multithreaded programming two or more than two parts of a program can execute simultaneously inside a machine. That means a single program can do two or more than two tasks simultaneously. Each part of such program is called a thread and each thread starts a separate path of execution. Multithreading is a special form of multitasking. For example in a multithreaded program you can read a file in one thread and can write into a different file in other thread simultaneously.

What is multi threaded application

An application capable of processing more than one tasks simultaneously/parallelly is known as multithreaded application.

8. High Performance

Though java is not as fast as compiled languages like C, C++ but java still has some of the good features like just-in-time compiler, multithreading, garbage collection etc that increases the performance of java near to compiled languages.

9. Java is Robust

A language is called robust if it is reliable. The reliability comes because java strongly checks for error in program at compile and runtime both, to eliminate error-prone situations. The reliability also comes because java also has the strong memory allocation and automatic garbage collection mechanism which reduces the probability of crashing a program at runtime.

What is robust application

A robust application is an application that doesn't break easily with incorrect data/input. Such applications strongly checks for error to avoid application crash at runtime.

10. Dynamic

A language is dynamic if it is adaptable to changing environments or the code is executed/loaded as and when required at runtime. Classes in java are linked/loaded only when needed. The code can be downloaded dynamically from anywhere on the network. The runtime features like memory management, dynamic binding etc makes java a dynamic language.

11. Interpreted

Java is a highly interpreted language. At runtime java bytecode is interpreted(converted) into machine code using java interpreter(part of JVM) in order to run the program. Java has the feature of just-in-time compilation(happens at runtime) which reduces the interpretation time.

Is java interpreted or compiled

Java is both compiled and interpreted language since java programs are compiled first using java compiler then at runtime the compiled code(bytecode) is interpreted by java interpreter in order to execute the program.

12. Architecture Neutral

Java is an architecture neutral language because it does not depend on architecture(organization of processor, memory, cpu input/output etc,) of a computer. Hence java can be run on any computer architecture. As bytecode are platform independent, it also makes java as an architecture neutral language, something which is not dependent strongly on specific system configuration.

  • If java was not platform independent, programmer would have to write same program differently for different operating system.
  • Java is not as fast as C or C++, because these languages converts source code directly to machine code while java doesn't do the same.