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 2008 میں Google کے جاری کردہ 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
// State مینجمنٹ کے ساتھ 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 میں موازنہ

Android ڈویلپمنٹ کے لیے Java اور Kotlin کا موازنہ 2019 سے اہم موضوعات میں سے ایک رہا ہے، جب Google نے Kotlin کو ترجیحی زبان قرار دیا۔ Kotlin Java کے ساتھ مکمل طور پر مطابقت رکھتی ہے — دونوں JVM بائٹ کوڈ میں کمپائل ہوتی ہیں، ایک دوسرے کو کال کر سکتی ہیں اور ایک ہی لائبریریاں استعمال کر سکتی ہیں۔ تاہم، کوڈ لکھنے کے طریقے ڈرامائی طور پر مختلف ہیں۔

بوائلر پلیٹ کوڈ

Kotlin Java کی طوالت کو ختم کرتی ہے: data class گیٹرز، سیٹرز، equals، hashCode، toString اور copy کے ساتھ Java کلاس کی 50+ لائنوں کی جگہ لے لیتی ہے۔ nul سیفٹی Kotlin کے قسم کے نظام میں شامل ہے — NullPointerException عملی طور پر ناممکن ہے۔ توسیعی فنکشنز وراثت کے بغیر موجودہ کلاسز میں طریقے شامل کرنے کی اجازت دیتے ہیں۔ سمارٹ کاسٹس جانچ کے بعد خود بخود اقسام تبدیل کر دیتے ہیں۔

پہلوJavaKotlin
nul سیفٹی@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 APIs (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 مکمل طور پر تعاون یافتہ رہتا ہے، لیکن APIs کو Kotlin-first طریقہ کار سے ڈیزائن کیا جاتا ہے۔ Java پروجیکٹس کو زیادہ بوائلر پلیٹ کوڈ کی ضرورت ہوتی ہے اور وہ نئی زبان کی خصوصیات سب سے پہلے حاصل نہیں کرتے۔

Android میں Java کا کون سا ورژن استعمال ہوتا ہے؟

Android مکمل طور پر Java 8 کو سپورٹ کرتا ہے، Java 11 جزوی طور پر Android 12+ سے، اور Java 17 تجرباتی طور پر D8 ڈی شوگرنگ کے ذریعے۔ Android Gradle Plugin (AGP) 8.x جدید بائٹ کوڈ کو desugar کے ذریعے پرانے APIs کے لیے مطابقت پذیر کوڈ میں ترجمہ کرتا ہے۔ ڈویلپر Java 11+ میں لکھ سکتا ہے، لیمبڈا، Optional اور DateTime API استعمال کر سکتا ہے، لیکن records اور sealed classes صرف D8 کے ذریعے دستیاب ہیں۔

Java Kotlin سے کیسے مختلف ہے؟

Kotlin کو کم کوڈ کی ضرورت ہوتی ہے: data class Java بوائلر پلیٹ کی درجنوں لائنوں کی جگہ لے لیتی ہے، nul سیفٹی اقسام میں شامل ہے، coroutines غیر مطابقت پذیری کو آسان بناتے ہیں۔ Java初学者 کے لیے آسان نحو، ایک ثابت شدہ لائبریری ایکو سسٹم اور مستحکم ٹولنگ فراہم کرتا ہے۔ رن ٹائم کارکردگی ایک جیسی ہے — دونوں Android ART کے ذریعے چلائے جانے والے JVM بائٹ کوڈ میں کمپائل ہوتی ہیں۔

Android کے لیے Java ڈویلپمنٹ میں کون سے IDEs استعمال ہوتے ہیں؟

Android Studio Java اور Kotlin کی سپورٹ کے ساتھ Android ڈویلپمنٹ کے لیے معیاری IDE ہے۔ اس میں ایمولیٹر، پروفائلر (CPU، میموری، نیٹ ورک)، 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 کا جانشین، لیکن جدید نحو اور nul سیفٹی کے ساتھ
  • Java لیگیسی ~35% Android پروجیکٹس پر مشتمل ہے، Google دونوں زبانوں کو سپورٹ کرتا رہتا ہے

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں