Day 2 โ€“ Environment Setup & Hello World

Suraj KumarSuraj Kumar
9 min read

JDK (Java Development Kit) โ€“ Quick Notes

๐Ÿ”น What is JDK?

  • JDK = Java Development Kit

  • Use hota hai Java program banane, compile karne aur run karne ke liye.

  • Without JDK, Java development possible nahi hai.


๐Ÿ”น Key Features

  • javac (Compiler): Java code โ†’ bytecode convert karta hai.

  • JRE + JVM included: Run karne ke liye runtime environment aur virtual machine deta hai.

  • Rich Libraries: I/O, Networking, Database, Collections ke ready-made classes.

  • Debugger (jdb): Code error trace karne ke liye.

  • Cross-platform: Ek baar likho โ†’ har OS (Windows/Linux/Mac) pe chalayega.


๐Ÿ”น Why Install JDK?

  • Java program develop + run karne ke liye.

  • Source code compile karne ke liye (javac).

  • Android apps (Java/Kotlin) develop karne ke liye bhi JDK chahiye.


๐Ÿ”น JDK vs JRE vs JVM (Most Asked in Interviews)

  • JDK: Development kit (Compiler + JRE + JVM + tools).

  • JRE: Sirf run karne ke liye (Runtime env + JVM).

  • JVM: Machine jo bytecode ko execute karti hai.


๐Ÿ”น Platforms Supported

  • Windows

  • Linux

  • macOS


โ€œJDK is a software development kit which provides compiler (javac), runtime (JRE), and JVM to build and run Java applications.โ€

โœ… Advantages of JDK

  1. Complete Package โ€“ JDK me compiler (javac), JRE aur JVM sab included hote hain.

  2. Platform Independent โ€“ Ek hi code har OS (Windows/Linux/Mac) par run ho sakta hai.

  3. Rich Libraries โ€“ Networking, I/O, Database, GUI sabke liye ready-made classes.

  4. Fast Performance โ€“ JIT compiler ki wajah se execution speed achhi hoti hai.

  5. Backward Compatibility โ€“ Purane Java apps bhi naye JDK versions pe chal jaate hain.


โŒ Disadvantages of JDK

  1. High Memory Usage โ€“ RAM zyada consume karta hai.

  2. Complex Setup โ€“ PATH aur Environment variable set karna padta hai.

  3. Slow Startup โ€“ JVM initialize hone me time lagta hai.

  4. License Issue โ€“ Oracle JDK commercial use ke liye paid license maangta hai.


JDK Components

ComponentUse
javacJava compiler converts source code into Java bytecode
javaThe loader of the java apps.
javapClass file disassembler,
javadocDocumentation generator,
jarJava Archiver helps manage JAR files.
appletviewerDebugging of Java applets without a web browser,
xjcAccepts an XML schema and generates Java classes,
aptAnnotation-processing tool,
jdbDebugger,
jmcJava Mission Control,
JConsoleMonitoring and Management Console,
pack200JAR compression tool,
extcheckUtility tool to detects JAR file conflicts,
idljIDL-to-Java compiler,
keytoolThe keystore manipulating tool,
jstatdjstat daemon (experimental)
jstatJVM statistics monitoring tool
jshelljshell introduced in java 9.
jstackPrints Java stack traces(experimental)
jrunscriptJava command-line script shell.
jhatJava Heap Analysis Tool (experimental)
jpackageGenerate self-contained application bundles.
javawsWeb Start launcher for JNLP applications,
javahC header and stub generator,
jarsignerjar signing and verification tool
jinfoconfiguration information(experimental)
javafxpackagerPackage and sign JavaFX applications

Java Hello World Program

๐Ÿ”น Prerequisites

  • Install JDK (Java Development Kit).

  • Install any IDE (e.g., IntelliJ, Eclipse) ya simple Notepad + CMD bhi chalega.


๐Ÿ”น First Java Program โ€“ HelloWorld.java

// Simple Java Program
// FileName: HelloWorld.java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World");
    }
}

Output:

Hello, World

๐Ÿ”น Program Breakdown

  1. Class Definition

     public class HelloWorld { ... }
    
    • Har Java program me ek class hoti hai.

    • Agar class public hai โ†’ filename = class name (HelloWorld.java).

  2. main() Method

     public static void main(String[] args)
    
    • public โ†’ JVM access kar sake.

    • static โ†’ bina object banaye run ho jaye.

    • void โ†’ kuch return nahi karega.

    • String[] args โ†’ command line arguments.

  3. System.out.println()

    • System โ†’ predefined class (java.lang).

    • out โ†’ output stream.

    • println() โ†’ console par output print karta hai.


๐Ÿ”น Java Execution Flow

  1. Compilation โ†’

    • Command: javac HelloWorld.java

    • Source code (.java) โ†’ Bytecode (.class)

  2. Execution โ†’

    • Command: java HelloWorld

    • Bytecode JVM me run hota hai โ†’ Machine Code

Diagram (Simple):

Source Code (.java) โ†’ javac (Compiler) โ†’ Bytecode (.class) โ†’ JVM โ†’ Machine Code โ†’ Output

๐Ÿ”น Internal Steps (Compilation + Execution)

  • Compilation: Parsing โ†’ Symbol Table โ†’ Type Checking โ†’ Bytecode (.class)

  • JVM Execution:

    1. Class Loader โ†’ classes load karta hai.

    2. Bytecode Verifier โ†’ safety check (illegal access, stack overflow etc.).

    3. JIT Compiler โ†’ Bytecode โ†’ Native machine code (fast execution).


๐Ÿ”น Commands to Run

  1. Save file โ†’ HelloWorld.java

  2. Compile โ†’ javac HelloWorld.java

  3. Run โ†’ java HelloWorld


๐Ÿ”น Comments in Java

  • Single-line: // comment

  • Multi-line:

      /* 
         This is 
         multi-line 
      */
    

Interview Key Points

JDK = JRE + JVM + Compiler

File name = public class name

main() is entry point of Java program

Java code โ†’ Bytecode โ†’ JVM โ†’ Machine code

JIT compiler improves performance

Java = Write Once, Run Anywhere (WORA)

Java Program Structure (Basic Blocks)

Jab hum Java program likhte hain, toh uska ek specific structure hota hai. Har Java program ek class se start hota hai, aur uske andar ek main() method hota hai jahan se execution begin hota hai.

Basic Blocks of a Java Program

package list;

public class ClassName {
    // Data members (variables)
    // Constructor functions
    // User-defined methods

    public static void main(String[] arguments) {
        // Block of statements
    }
}

Explanation (Hinglish mein)

  1. Package

    • Package ek tarah ka folder hai jo related classes, interfaces, aur sub-packages ko group karta hai.

    • Agar humein dusre package ke predefined classes use karni hai toh import karna padta hai.

    • By default Java automatically java.lang.* package ko import kar leta hai.

  2. Class

    • Class ek user-defined data type hota hai.

    • Har Java program เค•เคฎ เคธเฅ‡ เค•เคฎ ek class ke bina chal nahi sakta.

    • Agar class public declare hoti hai, toh wo dusre packages se bhi accessible hoti hai.

  3. Class Name

    • Class ka naam ek new data type ki tarah act karta hai.

    • Isse hum objects bana sakte hain.

  4. Data Members (Variables)

    • Ye wo variables hote hain jo class ke andar declare kiye jate hain.

    • Ye object ke state (data) ko store karte hain.

  5. Constructor

    • Constructor ek special block of code hai jo automatically tab run hota hai jab naya object create hota hai.

    • Iska main kaam object ko initialize karna hota hai.

    • Important Rules:

      • Constructor ka naam class ke naam ke same hota hai.

      • Constructor ka koi return type nahi hota.

  6. main() Method

    • Ye program ka entry point hota hai.

    • Java compiler hamesha public static void main(String[] args) method se program execute karna start karta hai.

    • Iske andar hum apna logic ya statements likhte hain.


User-Defined Methods

๐Ÿ‘‰ Java mein jo methods hum khud likhte hain unhe user-defined methods bolte hain.
Ye do tarike ke ho sakte hain:

  1. Instance Methods โ€“ Ye methods tabhi call kiye jaa sakte hain jab class ka object banaya gaya ho. Ye mainly object ke data members pe kaam karte hain.

  2. Static Methods โ€“ Ye methods bina object banaye call kiye jaa sakte hain, kyunki ye class ke level ke hote hain. Inhe ClassName.methodName() ke through access kiya jaa sakta hai.

โšก Important:
Har Java program ka entry point main() method hota hai. Iska syntax hamesha fix hota hai:

public static void main(String[] args) {
    // Program execution starts here
}
  • public โ†’ sab jagah se accessible hona chahiye.

  • static โ†’ bina object banaye JVM ise run kar sake.

  • void โ†’ kuch return nahi karega.

  • String[] args โ†’ command-line arguments lene ke liye.


Types of Data Members

Ek Java class ke andar hum data store karte hain variables ki form mein, jinhe data members kaha jata hai.
Ye do types ke hote hain:

  1. Instance (Non-static) Data Members

    • Ye har ek object ke liye alag-alag value store karte hain.

    • Example: agar ek Student class ke andar name aur rollNo variables hain, to har ek student object ke apne alag values honge.

    class Student {
        String name;   // Instance data member
        int rollNo;    // Instance data member
    }
  1. Static (Class) Data Members

    • Ye saari objects ke liye common hote hain.

    • Memory me ye sirf ek hi copy ke form mein bante hain, chahe kitne bhi objects ho.

    • Access karne ke liye ClassName.variableName use hota hai.

    class Student {
        static String schoolName = "ABC School"; // Static data member
    }

Agar 100 students ban gaye, tab bhi schoolName ek hi jagah memory me store hoga.


๐Ÿ”น Types of Methods in Java

Java me methods do types ke hote hain (constructors ko chod kar):

  1. Instance (Non-static) Methods

  2. Static (Class) Methods


๐Ÿ”ธ Instance Methods vs Static Methods

FeatureInstance (Non-Static) MethodsStatic (Class) Methods
Belongs ToParticular object (instance of class)Class itself
AccessObject ke through call karna padta hai (obj.method())Directly class ke naam se call kar sakte hain (ClassName.method())
Can AccessInstance variables + static variablesSirf static variables aur static methods directly
Memory AllocationHar object ke liye alag memory hoti haiSirf ek memory location (class level)
OverridingInstance methods overridden ho sakte hain (Runtime Polymorphism)Static methods override nahi hote (sirf hide hote hain)
Use CaseJab action object-specific hoJab action sab objects ke liye common ho

๐Ÿ”น Example: Instance vs Static Methods

class Student {
    String name;        // instance variable
    static String school = "ABC School";  // static variable

    // Instance method
    void displayInfo() {
        System.out.println("Name: " + name + ", School: " + school);
    }

    // Static method
    static void changeSchool(String newSchool) {
        school = newSchool;
    }

    public static void main(String[] args) {
        // Static method call (class ke naam se)
        Student.changeSchool("XYZ School");

        // Object banake instance method call
        Student s1 = new Student();
        s1.name = "Suraj";
        s1.displayInfo();

        Student s2 = new Student();
        s2.name = "Ankita";
        s2.displayInfo();
    }
}

Output:

Name: Suraj, School: XYZ School
Name: Ankita, School: XYZ School

Key Takeaway for Interview:

  • Static method = Class level functionality (no object required).

  • Instance method = Object-specific functionality (needs object).

  • Static methods cannot access instance variables directly.

0
Subscribe to my newsletter

Read articles from Suraj Kumar directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Suraj Kumar
Suraj Kumar

I am MERN STACK Web Developer.I am Student of BCA.