Basic Features Of Java

Features of java is discussed below::

  • Simple
Java was designed to be easy for the professional programmer to learn and use effectively and java is easy to master. 

If we have Basic concepts of object-oriented programming, learning Java will be an easier.
  • Object-Oriented
Java was not designed to be source-code compatible with any other language.

This allowed the Java team the freedom to design with a blank slate.

One outcome of this was a clean, usable, pragmatic approach to objects. 
  • Robust
The multi-platformed environment of the Web places extraordinary demands on a program, because the program must execute reliably in a variety of systems.

Thus, the ability to create robust programs was given a high priority in the design of Java.

Because Java is a strictly typed language, it checks your code at compile time.

To better understand how java is robust, consider two of the main reasons for program failure: memory management can be a difficult, tedious task in traditional programming environments.
  • Multi-threaded
Java was designed to meet the real-world requirement of creating interactive, networked programs.

To accomplish this, Java supports multi-threaded programming, which allows you to write programs that do many things simultaneously.  
  • Architecture-Neutral
Acentral issue for the Java designers was that of code longevity and portability.

Operating system upgrades, processor upgrades, and changes in core system resources can all combine to make a program malfunction.
  • Interpreted and High Performance
Java enables the creation of cross-platform programs by compiling into an intermediate representation called Java bytecode.

Java run-time systems that provide this feature lose none of the benefits of the platform-independent code.  
  • Distributed
Java is designed for the distributed environment of the Internet because it handles TCP/IP protocols.

This feature enables a program to invoke methods across a network.
  • Dynamic
Java programs carry with them substantial amounts of run-time type information that is used to verify and resolve accesses to object at run time.