Basics

Java क्या है?

Introduction
💡 Java एक recipe लिखने जैसा है जिसे दुनिया की किसी भी kitchen (computer) में बनाया जा सकता है।

Java एक programming language है जिससे हम computer को instructions देते हैं। ये 1995 में बनी थी और आज भी apps, websites, games — सबमें use होती है।

सबसे ख़ास बात: "Write Once, Run Anywhere"। मतलब एक बार Java code लिखो, वो Windows, Mac, Linux — हर जगह चल सकता है, बिना दोबारा लिखे!

कैसे? तुम्हारा .java file पहले "compile" होती है और .class file (bytecode) बनती है। फिर JVM (Java Virtual Machine) उस bytecode को हर computer पर समझ कर चला देती है — जैसे एक universal translator!

public class Hello {
  public static void main(String[] args) {
    System.out.println("Hello, Code10x!");
  }
}
Java एक recipe लिखने जैसा है जिसे दुनिया की किसी भी kitchen (computer) में बनाया जा सकता है।
1 / 7
⚡ झट से Recap
  • Java = programming language (1995 से)
  • Write Once, Run Anywhere
  • Code -> Compiler -> Bytecode -> JVM -> Run
इस page में (4 subtopics)

JVM (Java Virtual Machine) एक "virtual computer" है जो bytecode को पढ़कर actual hardware पर run करता है — यही चीज़ Java को platform-independent बनाती है। JVM ख़ुद OS-specific होता है (Windows की JVM अलग, Linux की अलग, Mac की अलग), लेकिन ये सभी एक ही तरह के bytecode को समझ सकती हैं — यही "Write Once, Run Anywhere" का पूरा राज़ है।

JRE (Java Runtime Environment) = JVM + standard libraries (java.lang, java.util, java.io, etc.) + supporting files। अगर तुम्हारे computer पर किसी दूसरे ने बनाया हुआ Java program (जैसे एक .jar file) चलाना है, तो सिर्फ़ JRE install करना काफ़ी है — उसमें JVM already included है। एक normal user (जो सिर्फ़ apps चलाता है, code नहीं लिखता) को सिर्फ़ JRE चाहिए होती है।

JDK (Java Development Kit) = JRE + development tools — सबसे important है javac (compiler जो .java को .class में बदलता है), लेकिन इसमें debugger, javadoc (documentation generator), और jar tool (packaging के लिए) भी होते हैं। Developer (जो code लिखता और compile करता है) को हमेशा JDK चाहिए — इसीलिए जब तुम अपने computer पर Java setup करते हो, तुम "JDK install करो" ही search करते हो, सिर्फ़ JRE नहीं।

एक analogy: अगर Java एक recipe book है, तो JVM वो oven है जो recipe को actually पकाता है। JRE = oven + kitchen का पूरा सामान (बिना जिसके खाना बना ही नहीं सकता)। JDK = पूरी kitchen + एक chef के tools (चाकू, recipe लिखने की notebook) — ताकि तुम ख़ुद नया recipe (नया program) भी बना सको।

JVMJREJDK
क्या हैBytecode execution engineJVM + librariesJRE + dev tools (compiler)
Code चला सकते हो?हाँ (ये ही करता है)हाँहाँ
Code लिख/compile कर सकते हो?नहींनहींहाँ
किसको चाहिएसबको (internally)End-usersDevelopers
// javac Hello.java   -> compiler (JDK ka part), banata hai Hello.class
// java Hello          -> JVM (JRE ka part) chalata hai bytecode ko
💡Tip: "java -version" और "javac -version" दोनों terminal में चला कर देखो — अगर दोनों काम करें, JDK सही से install है। अगर सिर्फ़ "java" काम करे, तुम्हारे पास सिर्फ़ JRE है।

Step 1 — लिखना: तुम एक text editor/IDE में .java file लिखते हो (जैसे Hello.java), जिसमें human-readable Java source code होता है।

Step 2 — Compilation: javac compiler इसे पढ़कर syntax errors check करता है, और अगर सब सही है तो एक .class file बनाता है जिसमें "bytecode" होता है — ये ना तो human-readable है ना machine code, बल्कि एक बीच का format है जो किसी भी JVM के लिए universal है।

Step 3 — Class Loading: जब तुम "java Hello" चलाते हो, JVM का Class Loader उस .class file को memory में load करता है — अगर program दूसरी classes भी use करता है (जैसे ArrayList), उन्हें भी ज़रूरत पड़ने पर load करता है।

Step 4 — Bytecode Verification: JVM का Bytecode Verifier check करता है कि bytecode safe है — कोई memory corruption, illegal type cast, या security violation तो नहीं। ये Java की "Secure" feature का core है।

Step 5 — Execution: अब दो तरीक़ों से bytecode चल सकता है — Interpreter line-by-line translate करके चलाता है (simple, थोड़ा slow), या JIT (Just-In-Time) Compiler उन हिस्सों को जो बार-बार चल रहे हैं ("hot code") सीधा native machine code में convert कर देता है, ताकि अगली बार बहुत fast चले। Modern JVMs दोनों को combine करते हैं — शुरू में interpret करते हैं, फिर hot paths को JIT compile कर देते हैं।

💡Tip: javap -c Hello.class चला कर तुम ख़ुद देख सकते हो bytecode कैसा दिखता है — instructions जैसे "aload_0", "invokespecial" वग़ैरह। Curiosity के लिए एक बार ज़रूर try करो!

Java के design goals उसकी success की सबसे बड़ी वजह हैं। हर feature एक real-world problem solve करता है जो पुरानी languages (जैसे C++) में थी।

Featureइसका मतलब
Object-Orientedसब कुछ class/object के around organize होता है — code reusable और maintainable बनता है
Platform IndependentBytecode किसी भी OS पर JVM के through चल सकता है (Write Once, Run Anywhere)
RobustStrong compile-time type-checking + automatic memory management — crashes बहुत कम
SecureNo direct pointers (C/C++ जैसा), bytecode verifier, sandboxed execution
MultithreadedBuilt-in support एक साथ multiple काम करने का (Thread class, synchronized, etc.)
High PerformanceJIT compiler से near-native speed मिलती है, pure-interpreted languages से fast
DistributedNetworking (java.net) और remote method invocation के built-in tools
DynamicRuntime पर नए classes load हो सकते हैं (जैसे plugins)

Android apps: दुनिया के बड़े हिस्से के Android apps Java (या Kotlin, जो JVM पर ही चलती है) में बने हैं — Android Studio का पूरा ecosystem Java पर based है।

Enterprise Backend: बड़ी companies (banks, e-commerce, telecom) अपना server-side backend Java में बनाती हैं, अक्सर Spring/Spring Boot framework के साथ — robustness और scalability के लिए।

Big Data: Hadoop और Spark जैसे big-data tools ख़ुद Java (या JVM-based languages) में लिखे गए हैं, और उनके साथ काम करने के लिए Java common है।

Desktop Applications, embedded systems, और scientific computing में भी Java का use होता है। इसीलिए Java सीखना सिर्फ़ एक language नहीं, एक पूरा career-path खोलता है — job market में आज भी Java सबसे ज़्यादा demand वाली languages में से एक है।