Features of Java

Portability and security were the primary motivations for creating Java. Alongside these foundational elements, several other features significantly influenced the eventual development of this versatile programming language:

1) Simple

Java is straightforward to learn due to its clean, easy-to-understand syntax. Complex concepts from C++, such as pointers and operator overloading, have been excluded or simplified for clarity.

2) Object Oriented

Java centres around objects, which encapsulate data and related behaviour. Its object-based design allows for seamless extensions and modifications.

3) Robust

Java prioritises code reliability by focusing on compile-time and runtime error detection. Its automatic Garbage Collector improves memory management, while Exception Handling addresses runtime errors efficiently.

4) Platform Independent

Unlike languages such as C or C++, Java compiles programs into universal bytecode, guaranteeing portability across platforms. Bytecode can run on any system equipped with Java Runtime Environment (JRE), adding an extra layer of security.

Here is the mermaid diagram in case you are interested:

graph TD
    A[/Java Program/] -->|Compiles| B{{Java Compiler}}
    B -->|Generates| C[/Bytecode/]

	G[(JVM)]
	H[(JVM)]
	I[(JVM)]
	
    C --> G
    C --> H
    C --> I
    
    A ~~~ J["JIT Compiler: Compiles and optimises frequently used methods"]

	subgraph Linux
		G[JVM]
	end
	
	subgraph Mac
		H[JVM]
	end
	
	subgraph Windows
		I[JVM]
	end		

    %% Updated styles for cohesiveness
    style A fill:#ffcc00,stroke:#000,stroke-width:2px
    style B fill:#66b3ff,stroke:#000,stroke-width:2px
    style C fill:#ff66b3,stroke:#000,stroke-width:2px
    style Linux fill:#99ffcc,stroke:#333,stroke-width:2px
    style Mac fill:#99ffcc,stroke:#333,stroke-width:2px
    style Windows fill:#99ffcc,stroke:#333,stroke-width:2px
    style G fill:#66b3ff,stroke:#333,stroke-width:2px
    style H fill:#66b3ff,stroke:#333,stroke-width:2px
    style I fill:#66b3ff,stroke:#333,stroke-width:2px
  

5) Secure

By minimising interaction with the operating system, Java ensures a secure environment for applications. Its design eliminates system vulnerabilities, enabling the creation of tamper-proof and virus-free software.

6) Multi Threading

Java’s multithreading capability allows multiple tasks to be performed simultaneously within shared memory resources. For instance, spell-checking runs in the background while typing text.

7) Architectural Neutral

Java’s compiled bytecode is independent of computer architecture, ensuring programs are easily interpretable across any system.

8) Portable

The platform-neutral bytecode of Java eliminates implementation-dependent features. All aspects relating to storage, such as data type sizes, are predefined for consistency.

9) High Performance

Although Java is not as fast as compiled languages like C++, its Just-In-Time Compiler improves performance by optimising frequently used methods.