Java: bu hansı dildir, xüsusiyyətləri və Android inkişafı

Müəllif: IT Sectr Dərc olunub: 2026-02-10 Oxuma vaxtı: 11 dəq

Java — on ildən çox Android SDK-nın əsas dili olmuş obyekt yönümlü proqramlaşdırma dilidir. Google-un rəsmi olaraq Kotlin-ə keçməsinə baxmayaraq, Java ekosistemin vacib hissəsi olaraq qalır: legacy layihələr, korporativ tətbiqlər və Google Play-də milyonlarla sətir kod Java ilə işləməyə davam edir. JetBrains Developer Ecosystem (2025) hesabatına görə, Android layihələrinin təqribən 35%-i hələ də Java-dan istifadə edir. Cari tendensiyalar haqqında daha ətraflı rəsmi JetBrains hesabatında oxuyun.

Əsas məqamlar

  • Java — 2019-cu ilə qədər Android-in əsas dili, legacy kod ~35% layihələr təşkil edir
  • JVM — Java bayt-kodunun çoxplatformalılığını təmin edən virtual maşın
  • Android SDK — kompilyator, emulator və profiler daxil olmaqla tam alət dəsti
  • Kotlin — Java-nın varisi, lakin hər iki dil eyni JVM bayt-koduna kompilyasiya olunur
  • Gradle — Android layihələrində asılılıqları və konfiqurasiyaları idarə edən qurma sistemi

Java nədir?

Java — 1995-ci ildə Sun Microsystems şirkəti tərəfindən yaradılmış ümumi təyinatlı proqramlaşdırma dilidir. Əsas prinsip — «Write Once, Run Anywhere»: kompilyasiya olunmuş Java bayt-kodu JVM virtual maşınının quraşdırıldığı istənilən platformada işləyir. Mobil inkişaf kontekstində Java, Google tərəfindən 2008-ci ildə buraxılmış Android SDK-nın ilk rəsmi dili oldu.

Java arxitekturası üç komponentə əsaslanır: JDK (Java Development Kit) — tərtibatçı alətləri dəsti, JRE (Java Runtime Environment) — icra mühiti və JVM (Java Virtual Machine) — virtual maşın. Android JVM-in öz tətbiqini — Android Runtime (ART) istifadə edir, o, 5.0 (Lollipop) versiyasında Dalvik-i əvəz etdi. ART dx/d8 vasitəsilə Java bayt-kodundan kompilyasiya olunan DEX bayt-kodunu icra edir.

Java-nın əsas xüsusiyyəti — Garbage Collector (GC) vasitəsilə avtomatik yaddaş idarəetməsi. Tərtibatçı açıq şəkildə yaddaşı boşaltmalı deyil — GC istifadə olunmayan obyektləri izləyir və silir. Android ART-də mobil cihazların məhdud resurslarına uyğunlaşdırılmış Concurrent Mark Sweep (CMS) və Generational GC istifadə olunur. Bu, tərtibatçının yükünü azaldır, lakin UI axınında zibil yığımı zamanı «laglar» yarada bilər.

Java versiyaları və Android API

Android hər yeni ƏS versiyası ilə genişlənən Java API alt çoxluğunu dəstəkləyir. Android 12 (API 31) Java 11 dəstəyini əlavə etdi, o cümlədən dəyişənləri tutan lambdalar, modul JPMS sistemi və java.net.http HTTP-klienti. Android 14 (API 34) D8/R8 desaqarinqi vasitəsilə Java 17-nin eksperimental dəstəyini təqdim etdi — bəzi funksiyalar (records, sealed classes) köhnə versiyalar üçün uyğun koda tərcümə olunur.

Java versiyasıAndroid API (min)Android versiyasıƏsas funksiyalar
Java 7API 194.4 KitKattry-with-resources, multi-catch
Java 8API 247.0 NougatLambdalar, Stream API, Optional
Java 11API 3112HTTP Client, Local-Variable Syntax
Java 17API 3414Records, Sealed Classes (D8)

Java SDK və Android inkişafı

Android SDK Java kompilyatoru, dex (d8) vasitəsi, aapt (Asset Packaging Tool), emulator və android.* və java.* kitabxanalarını ehtiva edir. Tərtibatçı Java dilində kod yazır, onu .class fayllarına (JVM bayt-kodu) kompilyasiya edir, sonra d8 onları .dex fayllarına (Dalvik Executable) çevirir, bunlar resurslar və AndroidManifest.xml ilə birlikdə APK-ya yığılır.

Gradle — Android layihəsinin qurma sistemi. build.gradle (Groovy) və ya build.gradle.kts (Kotlin DSL) faylı asılılıqları, SDK versiyalarını, flavor-ları (product flavors) və imzaları təsvir edir. Android Gradle Plugin (AGP) 8.x versiyası desaqarinqi avtomatlaşdırır — müasir Java funksiyalarının geriyə uyğun koda tərcüməsi. Məsələn, java.time.LocalDate tərtibatçının mənbə kodunda dəyişiklik olmadan API 21+ ilə uyğun koda çevrilir.

java
// Sadə Android Activity Java-da
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("Java-dan Salam!");
    }

    // Düymə klikini idarə etmək üçün metod
    public void onButtonClick(View view) {
        TextView tv = findViewById(R.id.textView);
        tv.setText("Düymə klikləndi");
    }
}

MainActivity sinifi geriyə uyğunluq üçün AndroidX-dən AppCompatActivity — əsas sinifini miras alır. onCreate metodu Activity yaradıldıqda çağırılır, orada setContentView vasitəsilə layout qurulur. findViewById Java dəyişənini XML layoutundan elementlə əlaqələndirir. onButtonClick metodu XML-də android:onClick atributu vasitəsilə düyməyə bağlanır.

Activity ilə iş və həyat dövrü

Activity həyat dövrü Java-da — callback-lər ardıcıllığı: onCreate → onStart → onResume (aktiv), onPause → onStop → onDestroy (bitmə). Tərtibatçı resursları idarə etmək üçün bu metodları ləğv edir. onCreate — inisializasiya, onPause — məlumatların saxlanması, onDestroy — resursların boşaldılması. Android bu metodları ekran döndərmə, fon rejiminə keçmə və zəng qəbulu zamanı çağırır.

java
// Activity həyat dövrü vəziyyətin idarə edilməsi ilə
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) {
        // Məlumatların identifikator üzrə yüklənməsi
    }
}

onSaveInstanceState metodu ekran döndərmə və ya tapşırıqların dəyişdirilməsi zamanı Activity vəziyyətini saxlayır. Bundle açar-dəyər cütlərini — sadə tipləri, Parcelable və ya Serializable obyektləri ehtiva edir. onRestoreInstanceState saxlanmış vəziyyəti bərpa edir. Bu nümunə Android üçün kritikdir, çünki sistem yaddaş çatışmazlığında Activity-ni məhv edə və istifadəçi qayıtdıqda bərpa edə bilər.

Java sintaksisi: siniflər, metodlar və tiplər

Java sintaksisi — C oxşar, ciddi tipli, obyekt yönümlüdür. Hər .java faylında bir public sinif var, onun adı faylın adı ilə üst-üstə düşür. Java siniflərdən kənar funksiyaları dəstəkləmir — hər şey metoddur. Giriş nöqtəsi — konsol tətbiqləri üçün statik public static void main(String[] args) metodu və ya mobil üçün Android Activity həyat dövrü metodları.

Java məlumat tipləri

Java tipləri primitivlərə (int, double, boolean, char, byte, short, long, float) və istinad tiplərinə (siniflər, interfeyslər, massivlər, enum) ayırır. Primitivlər stekdə saxlanılır və dəyərlə ötürülür. Obyektlər — yığında, istinadla ötürülür. Avtomatik qablaşdırma (autoboxing) primitivi avtomatik olaraq qablaşdırıcı obyektə (Integer, Double, Boolean) çevirir, lakin əlavə obyektlər yaradır — Android-də bu UI performansı üçün kritikdir.

java
// Java məlumat tipləri və strukturları nümunələri
public class DataTypes {
    // Primitivlər
    int count = 42;
    double price = 19.99;
    boolean isActive = true;
    char grade = 'A';

    // İstinad tipləri
    String name = "Android";
    Integer boxed = 100; // autoboxing
    List<String> items = new ArrayList<>();

    // Generics ilə metod
    public <T> T getFirst(List<T> list) {
        return list.isEmpty() ? null : list.get(0);
    }

    // Sabit dəst dəyərləri üçün Enum
    public enum Status {
        PENDING, LOADING, SUCCESS, ERROR
    }
}

Generiklər List<T> kolleksiyaların tip təhlükəsizliyini təmin edir. getFirst metodu istənilən tipdə element qaytarır — konkret tip çağırış nöqtəsində müəyyən edilir. Enum Status sabit dəst sabitləri olan sinifə kompilyasiya olunur, hər bir nümunə singletondur. Android-də enum yaddaş istehlakına görə daha az istifadə olunur: ProGuard/R8 mümkün olduqda enum-ı int sabitlərinə optimallaşdırır.

Java vs Kotlin: Android-də müqayisə

Java və Kotlin müqayisəsi Android inkişafı üçün — Google-un Kotlin-i prioritet dil elan etdiyi 2019-cu ildən əsas mövzulardan biridir. Kotlin Java ilə tam uyğundur — hər ikisi JVM bayt-koduna kompilyasiya olunur, bir-birini çağıra bilər və eyni kitabxanalardan istifadə edə bilər. Bununla belə, kod yazma yanaşmaları köklü şəkildə fərqlənir.

Şablon kodu

Kotlin Java-nın uzunçuluğunu aradan qaldırır: data class getter, setter, equals, hashCode, toString və copy ilə Java sinfinin 50+ sətirini əvəz edir. Null safety Kotlin tip sisteminə daxil edilmişdir — NullPointerException praktiki olaraq mümkün deyil. Extension funksiyalar mövcud siniflərə miras olmadan metod əlavə etməyə imkan verir. Smart Casts yoxlamadan sonra tipləri avtomatik çevirir.

AspektJavaKotlin
Null safety@Nullable / @NonNull annotasiyalarıString? / String — daxili
Data class50+ sətir Lombok ilədata class User(val name: String)
ExtensionStatik yardımçı siniflərfun String.isEmail(): Boolean
CoroutinesAsyncTask / ExecutorServicesuspend + Structured Concurrency
LambdalarFunctionalInterface + ::methodLambdalar defolt olaraq
DI annotasiyaları@Inject, @Module, @ProvidesEyni, lakin daha az kod

Performans

Performans baxımından Java və Kotlin eynidir — hər ikisi Android ART-in eyni şəkildə icra etdiyi JVM bayt-koduna kompilyasiya olunur. APK ölçüsündə fərq: Kotlin kotlin-stdlib kitabxanası üçün ~200-400 KB əlavə edir. Java layihələri əlavə runtime olmaması səbəbindən daha kiçik APK ölçüsünə malikdir, lakin Java Stream API və Optional istifadə edərkən APK ölçüsü desaqarinq səbəbindən arta bilər.

Android üçün Java tərtibatçısının alətləri

Java tərtibatçısının alətləri Android üçün Android Studio, Gradle, profiler və emulatoru əhatə edir. Android Studio — IntelliJ IDEA Community-ə əsaslanan rəsmi IDE, Java avtomatik tamamlama, kod analizatoru (lint), refaktorinq və vizual layout redaktoru (Layout Editor) daxildir.

Əsas alətlər

Android Gradle Plugin (AGP) 8.x versiyası qurmanı idarə edir: Java-nın siniflərə kompilyasiyası, desaqarinq, ProGuard/R8 minifikasiyası, APK/AAB-ya yığılma. R8 — ProGuard-ı əvəz edən təkmilləşdirilmiş desaqarinq və obfuskator. Build variants (debug/release + product flavors) build.gradle vasitəsilə konfiqurasiya olunur. Gradle Daemon keşləmə hesabına sonrakı qurmaları sürətləndirir.

groovy
// build.gradle (app) — Java modulunun konfiqurasiyası
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 bloku kompilyasiya üçün Java versiyasını göstərir — Java 17 AGP 8.x-dən etibarən mövcuddur. Minimal SDK (minSdk) tətbiqin işlədiyi minimum Android versiyasını müəyyən edir. Target SDK — tətbiqin sınaqdan keçirildiyi versiya. compileSdk və targetSdk arasında fərq: compileSdk — kompilyasiya üçün API, targetSdk — runtime davranışı.

Mobil inkişafda Java-nın məhdudiyyətləri

Java-nın məhdudiyyətləri Android-də Google-un Kotlin-ə keçməsinə səbəb oldu. NullPointerException — Java-Android tətbiqlərində ən çox rast gəlinən istisnadır, çünki tip sistemi nullable və non-null istinadları fərqləndirmir. Google androidx.annotation paketindən @Nullable və @NonNull annotasiyalarını tövsiyə edir, lakin kompilyator onları yoxlamır — bunu yalnız lint edir.

Korutinlərin olmaması — daha bir məhdudiyyət: Java-da asinxron əməliyyatlar callback-lər, AsyncTask (API 30-dan etibarən deprecated), ExecutorService və ya RxJava tələb edir. Bu, callback hell və ekran döndərmə zamanı yaddaş sızmalarına gətirib çıxarır. Kotlin korutinləri Structured Concurrency ilə bu problemi dil səviyyəsində həll edir: korutin Activity məhv edildikdə əl ilə idarə olmadan ləğv edilir.

Java-da şablon kodu — equals/hashCode, Parcelable tətbiqləri və RecyclerView üçün ViewHolder-in əl ilə yazılması zamanı səhv mənbəyidir. Android KTX kitabxanaları və Jetpack Compose Kotlin-ə yönəldilmişdir. Yeni Android API-ləri (Room, Navigation, Compose) defolt olaraq Kotlin nümunələri dərc edir, baxmayaraq ki, Java versiyaları mövcuddur.

Tez-tez verilən suallar

Java nədir?

Java — Sun Microsystems (1995) tərəfindən yaradılmış, JVM virtual maşınında işləyən obyekt yönümlü proqramlaşdırma dilidir. 2019-cu ilə qədər Android SDK-nın əsas dili idi. Legacy layihələr, server hissəsi (Spring) və korporativ tətbiqlər üçün mobil inkişafda istifadə olunur. Ciddi tipləşdirmə, avtomatik zibil yığımı və bayt-kodun çoxplatformalılığı ilə fərqlənir.

Niyə Java Android üçün legacy dil hesab olunur?

Google 2019-cu ildə Kotlin-i Android üçün prioritet dil elan etdi. Yeni AndroidX kitabxanaları, Jetpack Compose, arxitektura tövsiyələri və sənədlər defolt olaraq Kotlin-də verilir. Java tam dəstəklənən olaraq qalır, lakin API-lər Kotlin-first yanaşması ilə dizayn olunur. Java layihələri daha çox şablon kodu tələb edir və yeni dil imkanlarını ilk alan olmur.

Android-də Java-nın hansı versiyası istifadə olunur?

Android Java 8-i tam, Java 11-i qismən Android 12+ ilə, Java 17-ni isə D8 desaqarinq vasitəsilə eksperimental olaraq dəstəkləyir. Android Gradle Plugin (AGP) 8.x desugar vasitəsilə müasir bayt-kodu köhnə API-lər üçün uyğun koda tərcümə edir. Tərtibatçı lambda, Optional və DateTime API-dən istifadə edərək Java 11+-da yaza bilər, lakin records və sealed classes yalnız D8 vasitəsilə mövcuddur.

Java Kotlin-dən nə ilə fərqlənir?

Kotlin daha az kod tələb edir: data class Java boilerplate-in onlarla sətirini əvəz edir, null safety tiplərə daxildir, korutinlər asinxronluğu sadələşdirir. Java yeni başlayanlar üçün daha sadə sintaksis, sınaqdan keçmiş kitabxana ekosistemi və sabit alətlər təklif edir. Runtime performansı eynidir — hər ikisi Android ART tərəfindən icra olunan JVM bayt-koduna kompilyasiya olunur.

Android üçün Java inkişafında hansı IDE-lər istifadə olunur?

Android Studio — Java və Kotlin dəstəyi ilə Android inkişafı üçün standart IDE. Emulator, profiler (CPU, memory, network), Layout Inspector, APK Analyzer daxildir. IntelliJ IDEA server Java üçün uyğundur. Eclipse ADT köhnəlmişdir və Google tərəfindən dəstəklənmir. Android Studio həmçinin daxili konvertor vasitəsilə Java kodunu Kotlin-ə miqrasiya etmək üçün alətlər təqdim edir.

Nəticə

  • Java — 11 il ərzində Android SDK-nın əsas dili olmuş obyekt yönümlü dildir
  • JVM bayt-kodu d8 vasitəsilə DEX-ə tərcümə olunur və Android Runtime (ART) GC ilə icra edir
  • Android Java 8-17-ni dəstəkləyir geriyə uyğunluq üçün D8/R8 desaqarinqi ilə
  • Java Activity — onCreate → onStart → onResume → onPause → onStop → onDestroy həyat dövrü olan əsas komponent
  • Gradle — Java 17, AGP 8.x və build variants dəstəyi ilə qurma sistemi
  • Kotlin — eyni bayt-kodla, lakin müasir sintaksis və null safety ilə Java-nın varisi
  • Java legacy ~35% Android layihələrini təşkil edir, Google hər iki dilin dəstəyini davam etdirir

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun