Java: यह क्या भाषा है, इसकी विशेषताएं और Android विकास

लेखक: IT Sectr प्रकाशित: 2026-02-10 पढ़ने का समय: 11 मिनट

Java एक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा है जो एक दशक से अधिक समय तक Android SDK की प्राथमिक भाषा थी। Google के Kotlin में आधिकारिक संक्रमण के बावजूद, Java पारिस्थितिकी तंत्र का एक महत्वपूर्ण हिस्सा बना हुआ है: लीगेसी प्रोजेक्ट, एंटरप्राइज़ एप्लिकेशन और Google Play पर लाखों कोड की पंक्तियाँ Java पर काम करना जारी रखती हैं। JetBrains Developer Ecosystem रिपोर्ट (2025) के अनुसार, लगभग 35% Android प्रोजेक्ट अभी भी Java का उपयोग करते हैं। वर्तमान रुझानों के बारे में अधिक जानकारी के लिए आधिकारिक JetBrains रिपोर्ट पढ़ें।

मुख्य बिंदु

  • Java — 2019 तक प्राथमिक Android भाषा, लीगेसी कोड ~35% प्रोजेक्ट्स बनाता है
  • JVM — वर्चुअल मशीन जो Java बाइटकोड की क्रॉस-प्लेटफ़ॉर्म क्षमता सुनिश्चित करती है
  • Android SDK — कंपाइलर, एमुलेटर और प्रोफ़ाइलर सहित टूल्स का पूरा सेट
  • Kotlin — Java का उत्तराधिकारी, लेकिन दोनों भाषाएं समान JVM बाइटकोड में कंपाइल होती हैं
  • Gradle — बिल्ड सिस्टम जो Android प्रोजेक्ट्स में निर्भरताओं और कॉन्फ़िगरेशन का प्रबंधन करता है

Java क्या है?

Java एक सामान्य-उद्देश्य प्रोग्रामिंग भाषा है जिसे Sun Microsystems ने 1995 में बनाया था। मुख्य सिद्धांत है "Write Once, Run Anywhere": कंपाइल किया गया Java बाइटकोड किसी भी प्लेटफ़ॉर्म पर चलता है जहाँ JVM वर्चुअल मशीन स्थापित है। मोबाइल विकास के संदर्भ में, Java Google द्वारा 2008 में जारी Android SDK की पहली आधिकारिक भाषा बनी।

Java आर्किटेक्चर तीन घटकों पर आधारित है: JDK (Java Development Kit) — डेवलपर टूल्स का सेट, JRE (Java Runtime Environment) — रनटाइम वातावरण, और JVM (Java Virtual Machine) — वर्चुअल मशीन। Android अपना स्वयं का JVM कार्यान्वयन — Android Runtime (ART) उपयोग करता है, जिसने संस्करण 5.0 (Lollipop) में Dalvik को बदल दिया। ART DEX बाइटकोड निष्पादित करता है, जो dx/d8 उपयोगिता के माध्यम से Java बाइटकोड से कंपाइल किया जाता है।

Java की एक प्रमुख विशेषता Garbage Collector (GC) के माध्यम से स्वचालित मेमोरी प्रबंधन है। डेवलपर को स्पष्ट रूप से मेमोरी मुक्त करने की आवश्यकता नहीं है — GC अप्रयुक्त ऑब्जेक्ट्स को ट्रैक करता है और उन्हें हटाता है। Android ART में, Concurrent Mark Sweep (CMS) और Generational GC का उपयोग किया जाता है, जो मोबाइल उपकरणों के सीमित संसाधनों के लिए अनुकूलित हैं। यह डेवलपर पर बोझ कम करता है, लेकिन UI थ्रेड पर कचरा संग्रह के दौरान "लैग" पैदा कर सकता है।

Java संस्करण और Android API

Android Java API का एक उपसमूह समर्थन करता है जो OS के प्रत्येक नए संस्करण के साथ विस्तारित होता है। Android 12 (API 31) ने Java 11 के लिए समर्थन जोड़ा, जिसमें वेरिएबल कैप्चर के साथ लैम्ब्डा, JPMS मॉड्यूल सिस्टम और java.net.http HTTP क्लाइंट शामिल हैं। Android 14 (API 34) ने D8/R8 डिसगरिंग के माध्यम से Java 17 के लिए प्रयोगात्मक समर्थन पेश किया — कुछ सुविधाएं (records, sealed classes) पुराने संस्करणों के लिए संगत कोड में अनुवादित की जाती हैं।

Java संस्करणAndroid API (min)Android संस्करणमुख्य विशेषताएं
Java 7API 194.4 KitKattry-with-resources, multi-catch
Java 8API 247.0 Nougatलैम्ब्डा, Stream API, Optional
Java 11API 3112HTTP Client, Local-Variable Syntax
Java 17API 3414Records, Sealed Classes (D8)

Java SDK और Android विकास

Android SDK में Java कंपाइलर, dex उपयोगिता (d8), aapt (Asset Packaging Tool), एमुलेटर और android.* और java.* लाइब्रेरी शामिल हैं। डेवलपर Java में कोड लिखता है, इसे .class फ़ाइलों (JVM बाइटकोड) में कंपाइल करता है, फिर d8 उन्हें .dex फ़ाइलों (Dalvik Executable) में बदलता है, जो संसाधनों और AndroidManifest.xml के साथ APK में पैक की जाती हैं।

Gradle Android प्रोजेक्ट बिल्ड सिस्टम है। build.gradle (Groovy) या build.gradle.kts (Kotlin DSL) फ़ाइल निर्भरताओं, SDK संस्करणों, फ्लेवर और हस्ताक्षरों का वर्णन करती है। Android Gradle Plugin (AGP) संस्करण 8.x डिसगर को स्वचालित करता है — आधुनिक Java सुविधाओं का पिछड़ा-संगत कोड में अनुवाद। उदाहरण के लिए, java.time.LocalDate डेवलपर के स्रोत में बदलाव के बिना API 21+ संगत कोड में बदल जाता है।

java
// Java में सरल Android Activity
package com.example.myapp;

import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView tv = findViewById(R.id.textView);
        tv.setText("Hello from Java!");
    }

    // बटन क्लिक को संभालने की विधि
    public void onButtonClick(View view) {
        TextView tv = findViewById(R.id.textView);
        tv.setText("Button clicked");
    }
}

MainActivity क्लास AppCompatActivity को बढ़ाती है — पिछड़ी संगतता के लिए AndroidX से एक आधार क्लास। onCreate मेथड Activity बनने पर कॉल की जाती है, इसमें setContentView के माध्यम से लेआउट सेट किया जाता है। findViewById Java वेरिएबल को XML लेआउट के एक तत्व से जोड़ता है। onButtonClick मेथड XML में android:onClick विशेषता के माध्यम से बटन से बंधा होता है।

Activity और जीवनचक्र के साथ काम करना

Java में Activity जीवनचक्र कॉलबैक का एक क्रम है: onCreate → onStart → onResume (सक्रिय), onPause → onStop → onDestroy (समाप्ति)। डेवलपर संसाधनों के प्रबंधन के लिए इन मेथड्स को ओवरराइड करता है। onCreate — आरंभीकरण, onPause — डेटा सहेजना, onDestroy — संसाधन मुक्त करना। Android स्क्रीन घुमाने, बैकग्राउंड में जाने और कॉल प्राप्त करने पर इन मेथड्स को कॉल करता है।

java
// स्थिति प्रबंधन के साथ Activity जीवनचक्र
public class DetailActivity extends AppCompatActivity {
    private String itemId;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_detail);

        itemId = getIntent().getStringExtra("ITEM_ID");
        loadData(itemId);
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
        outState.putString("item_id", itemId);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        super.onRestoreInstanceState(savedInstanceState);
        itemId = savedInstanceState.getString("item_id");
        loadData(itemId);
    }

    private void loadData(String id) {
        // पहचानकर्ता द्वारा डेटा लोड करना
    }
}

onSaveInstanceState मेथड स्क्रीन घुमाने या कार्य स्विच करने पर Activity की स्थिति सहेजता है। Bundle में कुंजी-मान जोड़े होते हैं — सरल प्रकार, Parcelable या Serializable ऑब्जेक्ट। onRestoreInstanceState सहेजी गई स्थिति को पुनर्स्थापित करता है। यह पैटर्न Android के लिए महत्वपूर्ण है, क्योंकि सिस्टम मेमोरी कम होने पर Activity को नष्ट कर सकता है और उपयोगकर्ता के लौटने पर इसे पुनर्स्थापित कर सकता है।

Java सिंटैक्स: क्लासेज़, मेथड्स और टाइप्स

Java सिंटैक्स C-जैसा, सख्ती से टाइप किया गया, ऑब्जेक्ट-ओरिएंटेड है। प्रत्येक .java फ़ाइल में एक public क्लास होती है जिसका नाम फ़ाइल नाम से मेल खाता है। Java क्लासेज़ के बाहर फंक्शन का समर्थन नहीं करता — सब कुछ एक मेथड है। प्रवेश बिंदु कंसोल एप्लिकेशन के लिए स्थैतिक मेथड public static void main(String[] args) या मोबाइल के लिए Android Activity जीवनचक्र मेथड्स है।

Java डेटा प्रकार

Java प्रकारों को प्रिमिटिव (int, double, boolean, char, byte, short, long, float) और संदर्भ प्रकार (क्लासेज़, इंटरफ़ेस, ऐरे, enum) में विभाजित करता है। प्रिमिटिव स्टैक पर संग्रहीत होते हैं और मान द्वारा पास किए जाते हैं। ऑब्जेक्ट हीप में होते हैं, संदर्भ द्वारा पास किए जाते हैं। ऑटोबॉक्सिंग स्वचालित रूप से प्रिमिटिव को रैपर ऑब्जेक्ट (Integer, Double, Boolean) में बदलता है, लेकिन अतिरिक्त ऑब्जेक्ट बनाता है — Android में यह UI प्रदर्शन के लिए महत्वपूर्ण है।

java
// Java डेटा प्रकार और संरचनाओं के उदाहरण
public class DataTypes {
    // प्रिमिटिव
    int count = 42;
    double price = 19.99;
    boolean isActive = true;
    char grade = 'A';

    // संदर्भ प्रकार
    String name = "Android";
    Integer boxed = 100; // autoboxing
    List<String> items = new ArrayList<>();

    // जेनेरिक्स के साथ विधि
    public <T> T getFirst(List<T> list) {
        return list.isEmpty() ? null : list.get(0);
    }

    // मानों के निश्चित सेट के लिए Enum
    public enum Status {
        PENDING, LOADING, SUCCESS, ERROR
    }
}

जेनेरिक्स List<T> संग्रह के लिए प्रकार सुरक्षा प्रदान करते हैं। getFirst मेथड किसी भी प्रकार का तत्व लौटाता है — विशिष्ट प्रकार कॉल साइट पर निर्धारित होता है। Enum Status स्थिरांक के एक निश्चित सेट के साथ एक क्लास में कंपाइल होता है, प्रत्येक इंस्टेंस एक सिंगलटन है। Android में, मेमोरी खपत के कारण enum का उपयोग कम बार किया जाता है: ProGuard/R8 जहाँ संभव हो enum को int स्थिरांक में अनुकूलित करता है।

Java बनाम Kotlin: Android में तुलना

Java और Kotlin की तुलना Android विकास के लिए 2019 से मुख्य विषयों में से एक रही है, जब Google ने Kotlin को प्राथमिकता भाषा घोषित किया। Kotlin Java के साथ पूरी तरह से संगत है — दोनों JVM बाइटकोड में कंपाइल होते हैं, एक-दूसरे को कॉल कर सकते हैं और समान लाइब्रेरी का उपयोग कर सकते हैं। हालांकि, कोड लिखने के दृष्टिकोण नाटकीय रूप से भिन्न हैं।

बॉयलरप्लेट कोड

Kotlin Java की वर्बोसिटी को समाप्त करता है: data class गेटर्स, सेटर्स, equals, hashCode, toString और copy के साथ Java क्लास की 50+ पंक्तियों को बदल देता है। नल सुरक्षा Kotlin के प्रकार सिस्टम में बनाई गई है — NullPointerException व्यावहारिक रूप से असंभव है। एक्सटेंशन फंक्शन बिना इनहेरिटेंस के मौजूदा क्लासेज़ में मेथड जोड़ने की अनुमति देते हैं। Smart Casts जाँच के बाद स्वचालित रूप से प्रकार बदलते हैं।

पहलूJavaKotlin
नल सुरक्षा@Nullable / @NonNull एनोटेशनString? / String — निर्मित
Data classLombok के साथ 50+ पंक्तियाँdata class User(val name: String)
एक्सटेंशनस्थैतिक उपयोगिता क्लासेज़fun String.isEmail(): Boolean
CoroutinesAsyncTask / ExecutorServicesuspend + Structured Concurrency
लैम्ब्डाFunctionalInterface + ::methodडिफ़ॉल्ट रूप से लैम्ब्डा
DI एनोटेशन@Inject, @Module, @Providesसमान, लेकिन कम कोड

प्रदर्शन

प्रदर्शन के मामले में, Java और Kotlin समान हैं — दोनों JVM बाइटकोड में कंपाइल होते हैं, जिसे Android ART समान रूप से निष्पादित करता है। अंतर APK आकार में है: Kotlin kotlin-stdlib लाइब्रेरी के लिए ~200-400 KB जोड़ता है। Java प्रोजेक्ट्स में अतिरिक्त रनटाइम की अनुपस्थिति के कारण APK का आकार छोटा होता है, लेकिन Java Stream API और Optional का उपयोग करते समय, डिसगरिंग के कारण APK का आकार बढ़ सकता है।

Android के लिए Java डेवलपर टूल्स

Android के लिए Java डेवलपर टूल्स में Android Studio, Gradle, प्रोफ़ाइलर और एमुलेटर शामिल हैं। Android Studio आधिकारिक IDE है, जो IntelliJ IDEA Community पर आधारित है, इसमें Java ऑटोकम्पलीट के साथ संपादक, कोड विश्लेषक (lint), रीफैक्टरिंग और विज़ुअल लेआउट एडिटर (Layout Editor) शामिल है।

मुख्य उपकरण

Android Gradle Plugin (AGP) संस्करण 8.x बिल्ड का प्रबंधन करता है: क्लासेज़ में Java कंपाइलेशन, डिसगरिंग, ProGuard/R8 मिनिफिकेशन, APK/AAB में पैकेजिंग। R8 एक अपडेटेड डिसगरिंग और ऑबफस्केटर है, जो ProGuard की जगह लेता है। बिल्ड वेरिएंट (debug/release + product flavors) build.gradle के माध्यम से कॉन्फ़िगर किए जाते हैं। Gradle Daemon कैशिंग के माध्यम से बाद के बिल्ड को गति देता है।

groovy
// build.gradle (app) — Java मॉड्यूल कॉन्फ़िगरेशन
android {
    compileSdk 34
    defaultConfig {
        applicationId "com.example.myapp"
        minSdk 21
        targetSdk 34
        versionCode 1
        versionName "1.0"
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_17
        targetCompatibility JavaVersion.VERSION_17
    }
}

dependencies {
    implementation 'androidx.core:core-ktx:1.12.0'
    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.android.material:material:1.11.0'
    testImplementation 'junit:junit:4.13.2'
}

compileOptions ब्लॉक कंपाइलेशन के लिए Java संस्करण निर्दिष्ट करता है — Java 17 AGP 8.x के साथ उपलब्ध है। न्यूनतम SDK (minSdk) न्यूनतम Android संस्करण निर्धारित करता है जिस पर एप्लिकेशन चलता है। Target SDK वह संस्करण है जिसके लिए एप्लिकेशन का परीक्षण किया गया था। compileSdk और targetSdk के बीच अंतर: compileSdk कंपाइलेशन के लिए API है, targetSdk रनटाइम व्यवहार है।

मोबाइल विकास में Java की सीमाएं

Android में Java की सीमाओं ने Google के Kotlin में संक्रमण का कारण बना। NullPointerException Java Android एप्लिकेशन में सबसे आम अपवाद है, क्योंकि प्रकार सिस्टम nullable और non-null संदर्भों के बीच अंतर नहीं करता है। Google androidx.annotation पैकेज से @Nullable और @NonNull एनोटेशन की सिफारिश करता है, लेकिन कंपाइलर उनकी जाँच नहीं करता — केवल lint करता है।

Coroutines की अनुपस्थिति एक और सीमा है: Java में अतुल्यकालिक संचालन के लिए कॉलबैक, AsyncTask (API 30 से पदावनत), ExecutorService या RxJava की आवश्यकता होती है। इससे कॉलबैक हेल और स्क्रीन घुमाने पर मेमोरी लीक होती है। Structured Concurrency के साथ Kotlin coroutines इस समस्या को भाषा स्तर पर हल करते हैं: मैन्युअल प्रबंधन के बिना Activity नष्ट होने पर coroutine रद्द हो जाता है।

Java में बॉयलरप्लेट कोड equals/hashCode, Parcelable कार्यान्वयन और RecyclerView के लिए ViewHolder को मैन्युअल रूप से लिखने पर त्रुटियों का स्रोत है। Android KTX लाइब्रेरी और Jetpack Compose Kotlin की ओर उन्मुख हैं। नए Android API (Room, Navigation, Compose) डिफ़ॉल्ट रूप से Kotlin में उदाहरण प्रकाशित करते हैं, हालाँकि Java संस्करण मौजूद हैं।

अक्सर पूछे जाने वाले प्रश्न

Java क्या है?

Java Sun Microsystems (1995) की एक ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा है, जो JVM वर्चुअल मशीन पर चलती है। 2019 तक Android SDK की प्राथमिक भाषा थी। इसका उपयोग मोबाइल विकास में लीगेसी प्रोजेक्ट्स, सर्वर-साइड (Spring) और एंटरप्राइज़ एप्लिकेशन के लिए किया जाता है। यह सख्त टाइपिंग, स्वचालित कचरा संग्रह और बाइटकोड की क्रॉस-प्लेटफ़ॉर्म क्षमता द्वारा विशेषता है।

Java को Android के लिए लीगेसी भाषा क्यों माना जाता है?

Google ने 2019 में Kotlin को Android के लिए प्राथमिकता भाषा घोषित किया। नई AndroidX लाइब्रेरी, Jetpack Compose, आर्किटेक्चर अनुशंसाएं और दस्तावेज़ डिफ़ॉल्ट रूप से Kotlin में दिए जाते हैं। Java पूरी तरह से समर्थित रहता है, लेकिन API Kotlin-first दृष्टिकोण से डिज़ाइन किए जाते हैं। Java प्रोजेक्ट्स को अधिक बॉयलरप्लेट कोड की आवश्यकता होती है और उन्हें नई भाषा सुविधाएं पहले नहीं मिलती हैं।

Android में Java के किस संस्करण का उपयोग किया जाता है?

Android पूरी तरह से Java 8 का समर्थन करता है, Java 11 आंशिक रूप से Android 12+ से, और Java 17 प्रयोगात्मक रूप से D8 डिसगरिंग के माध्यम से। Android Gradle Plugin (AGP) 8.x आधुनिक बाइटकोड को desugar के माध्यम से पुराने API के लिए संगत कोड में अनुवादित करता है। डेवलपर Java 11+ में लिख सकता है, लैम्ब्डा, Optional और DateTime API का उपयोग कर सकता है, लेकिन records और sealed classes केवल D8 के माध्यम से उपलब्ध हैं।

Java Kotlin से कैसे अलग है?

Kotlin को कम कोड की आवश्यकता होती है: data class Java बॉयलरप्लेट की दर्जनों पंक्तियों को बदल देता है, नल सुरक्षा प्रकारों में निर्मित है, coroutines अतुल्यकालिकता को सरल बनाते हैं। Java शुरुआती लोगों के लिए सरल सिंटैक्स, एक सिद्ध लाइब्रेरी पारिस्थितिकी तंत्र और स्थिर टूलिंग प्रदान करता है। रनटाइम प्रदर्शन समान है — दोनों Android ART द्वारा निष्पादित JVM बाइटकोड में कंपाइल होते हैं।

Android के लिए Java विकास में किन IDE का उपयोग किया जाता है?

Android Studio Java और Kotlin के समर्थन के साथ Android विकास के लिए मानक IDE है। इसमें एमुलेटर, प्रोफ़ाइलर (CPU, memory, network), Layout Inspector, APK Analyzer शामिल हैं। IntelliJ IDEA सर्वर Java के लिए उपयुक्त है। Eclipse ADT पदावनत है और Google द्वारा समर्थित नहीं है। Android Studio निर्मित कन्वर्टर के माध्यम से Java कोड को Kotlin में माइग्रेट करने के लिए उपकरण भी प्रदान करता है।

सारांश

  • Java — एक ऑब्जेक्ट-ओरिएंटेड भाषा, 11 वर्षों तक Android SDK के लिए प्राथमिक भाषा थी
  • JVM बाइटकोड d8 के माध्यम से DEX में अनुवादित होता है और GC के साथ Android Runtime (ART) द्वारा निष्पादित होता है
  • Android Java 8-17 का समर्थन करता है पिछड़ी संगतता के लिए D8/R8 के माध्यम से डिसगरिंग के साथ
  • Java Activity — जीवनचक्र के साथ आधार घटक: onCreate → onStart → onResume → onPause → onStop → onDestroy
  • Gradle — Java 17, AGP 8.x और बिल्ड वेरिएंट के समर्थन के साथ बिल्ड सिस्टम
  • Kotlin — समान बाइटकोड के साथ Java का उत्तराधिकारी, लेकिन आधुनिक सिंटैक्स और नल सुरक्षा के साथ
  • Java लीगेसी ~35% Android प्रोजेक्ट बनाती है, Google दोनों भाषाओं का समर्थन जारी रखता है

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें