Here’s a comparative table showing what Python, Java, and JavaScript have and don’t have in terms of features and syntax:
Feature | Python | Java | JavaScript |
---|---|---|---|
Strong Typing | ✅ Yes | ✅ Yes | ❌ No (Weakly Typed) |
Dynamic Typing | ✅ Yes | ❌ No (Statically Typed) | ✅ Yes |
Static Typing | ❌ No (Optional with Type Hints) | ✅ Yes | ❌ No |
Compilation | ❌ No (Interpreted) | ✅ Yes (Compiled to Bytecode) | ❌ No (Interpreted) |
Garbage Collection | ✅ Yes | ✅ Yes | ✅ Yes |
Object-Oriented | ✅ Yes | ✅ Yes (Strict OOP) | ✅ Yes (Prototype-based OOP) |
Functional Programming | ✅ Yes (Supports FP) | ✅ Yes (Supports FP) | ✅ Yes (Supports FP) |
Manual Memory Management | ❌ No | ✅ Yes (With new and delete ) | ❌ No |
Threads & Multithreading | ✅ Yes (GIL limits parallelism) | ✅ Yes (True Multithreading) | ❌ No (Uses async/non-blocking) |
Asynchronous Programming | ✅ Yes (async/await ) | ✅ Yes (Using Threads) | ✅ Yes (async/await , Promises) |
Exception Handling | ✅ Yes (try-except ) | ✅ Yes (try-catch-finally ) | ✅ Yes (try-catch ) |
Multiple Inheritance | ✅ Yes (Using Mixins) | ❌ No (Only Interfaces) | ❌ No (Prototype-based) |
Interfaces | ❌ No (Uses Duck Typing) | ✅ Yes (interface ) | ❌ No (Uses Object Prototypes) |
Operator Overloading | ✅ Yes | ❌ No | ❌ No |
Pointers | ❌ No | ✅ Yes (Limited) | ❌ No |
Switch-Case Statement | ❌ No | ✅ Yes | ✅ Yes (Since ES6) |
Ternary Operator | ✅ Yes (a if cond else b ) | ✅ Yes (cond ? a : b ) | ✅ Yes (cond ? a : b ) |
Closures | ✅ Yes (Using lambda ) | ❌ No (But supports lambdas) | ✅ Yes (Functions are closures) |
First-Class Functions | ✅ Yes | ❌ No | ✅ Yes |
Modules & Packages | ✅ Yes (import ) | ✅ Yes (package ) | ✅ Yes (import/export in ES6) |
File Handling | ✅ Yes (open() ) | ✅ Yes (Uses I/O Streams) | ✅ Yes (Using fs in Node.js) |
Regular Expressions | ✅ Yes (re module) | ✅ Yes (Built-in) | ✅ Yes (RegExp object) |
List Comprehensions | ✅ Yes ([x for x in range(5)] ) | ❌ No | ❌ No |
Data Structures (Built-in) | ✅ Yes (Lists, Sets, Dicts) | ❌ No (Uses Java Collections) | ✅ Yes (Arrays, Objects, Maps) |
Lambda Functions | ✅ Yes (lambda x: x+1 ) | ✅ Yes ((x) -> x+1 ) | ✅ Yes ((x) => x+1 ) |
Reflection | ✅ Yes (getattr() , setattr() ) | ✅ Yes (Reflection API ) | ✅ Yes (Object.keys() , typeof ) |
DOM Manipulation | ❌ No | ❌ No | ✅ Yes (document.querySelector ) |
Mobile App Development | ✅ Yes (Kivy, Flutter) | ✅ Yes (Android via Java/Kotlin) | ✅ Yes (React Native) |
Backend Development | ✅ Yes (Django, Flask) | ✅ Yes (Spring, Hibernate) | ✅ Yes (Node.js) |
Machine Learning Support | ✅ Yes (TensorFlow, PyTorch) | ✅ Yes (With Libraries) | ✅ Yes (TensorFlow.js) |
Browser Support | ❌ No (Runs on Server) | ❌ No (Needs JVM) | ✅ Yes (Runs in Browser) |