ludovic.deneuville@ensai.fr| Static Typing | Dynamic Typing |
|---|---|
| Type checked at compile time | Type checked at runtime |
| Variable type is declared | Variable type inferred during execution |
| Errors detected earlier | More flexible but errors appear later |
| Strong Typing | Weak Typing |
|---|---|
| Types are strictly enforced | Implicit conversions are common |
| Few automatic casts | Many implicit conversions |
| Safer and more predictable | More flexible but error-prone |
Definition
The Java Virtual Machine (JVM) is the runtime environment for Java programs. It acts as an interpreter between Java code and the operating system.
The JVM :
| Component | Purpose |
|---|---|
| JVM | Runs Java bytecode |
| JRE | Contains JVM + libraries to run Java apps |
| JDK | Includes JRE + compiler + dev tools |
| Java | Python | |
|---|---|---|
| Typing | Strongly typed, static | Strongly typed, dynamic |
| Compilation | Compiled into bytecode | Interpreted |
| Performance | Very fast | Slower |
| Syntax | Verbose, requires {} |
Concise, uses indentation |
| Paradigm | Object-oriented | Multi-paradigm |
| Ecosystem | Huge (Spring, Hibernate…) | Large (Django, Flask, Pandas…) |
| Level | Priority | Typical Uses |
|---|---|---|
| High | Productivity | Web, data, scripting |
| Mid | Balance | Enterprise, backend |
| Low | Control & speed | OS, embedded, real-time |