Java

**Java** – Sun Microsystems şirkəti tərəfindən təqdim olunan obyektyönlü proqramlaşdırma dilinə və texnologiyalara verilən ümumi ad. Java proqram dili struktur və sintaksisinə görə C proqram dilinə çox yaxındır. Rəsmi olaraq 23 may 1995-ci ildə təqdim olunmuşdur.

Başlanğıcda Oak ("palıd") adlandırılan bu dil Ceyms Qoslinq (ing. James Gosling) tərəfindən məişət cihazlarının proqramlaşdırılması üçün yaradılmışdı. Daha sonra bu ad Java ilə əvəz olundu və server proqram təminatının yazılması üçün istifadə olunmağa başladı. Bu proqramlaşdırma dili Java kofe markasının şərəfinə adlandırılmışdır və buna görə də onun rəsmi embleminin üzərində fincanda buxarlanan kofe təsvir olunmuşdur.

Java obyektyönümlü proqramlaşdırma dilidir, yəni bütün kodlar siniflərdə(class) təyin edilir və həmin siniflərin çoxu obyektlərə çevrilə bilir. Javadan əvvəlki dillər prosessual(procedural) idi, hansı ki o dillərdə metodlar(routines) var idi,lakin siniflər yox idi. Java həmçinin sinif daxilində fuksional proqramlaşdırmaya da imkan verir, lakin obyekt yönümlü olması Java`nın əsas xüsusiyyətidir. Java kodları JVM daxilində çalışdırılır (run). Hər hansı bir Java proqramı main() metodunun execution`u(işə salınması,çalışdırılması) ilə başladılır. Java yaddaş sızıntısının(memory leaks) qarşısın alır və yaddaşı özü idarə edir.

## Java platformasının təsnifatı
Java daxilində bir neçə əsas ailə texnologiyaları mövcuddur:

* Java SE — Java Standard Edition, Java əsas nəşri, bu nəşrdə Java Runtime Environment, kompilyatorlar, API vardır; İstifadəçi əlavələrin yaradılması üçün və ilk növbədə stolüstü sistemlər üçün münasibdir.
* Java EE — Java Enterprise Edition, Müəssisə səviyyəsində proqram təminatının yaradılması üçün spesifikasiyalar yığını şəklindədir.
* Java ME — Java Micro Edition, Java Micro Edition, bu qurğularda, məsələn mobil telefonlarda, qurulanlar sistemləri, hesablama gücü ilə məhdud istifadə üçün yaradılıb.
* JavaFX — Növbəti addım olan kimi təkamülündə Java Platform Rich Client texnologiyası; Korporativ əlavələr və biznesin qrafik interfeys yaradılması üçün nəzərdə tutulub.
* Java Card — Texnologiya ilə emal imkanları çox məhdud həcm yerinə, smart-kartlar və digər qurğularda işləyən proqramlar üçün təhlükəsiz mühit yaradır.

## Java dilinin təkamülü

## JavaScript və Java
JavaScript və Java arasında heç bir qohumluq yoxdur. Buna baxmayaraq Java eləcə də C dilinə çox oxşardır.

JavaScript klient skriptləşdirmə dilidir. JavaScript internet səhifənin dinamik imkanlarını genişləndirmək məqsədilə istifadə olunur. JavaScript dilində yazılmış modul HTML faylına alt proqram kimi inteqrasiya edilir və standart əmr vasitəsilə HTML kodunun uyğun sətrindən çağırılır. Veb brauzerdə (veb səyyahda) qurulmuş dil interpretatoru hipermətnin həm kodunu, həm də skriptini bütöv sənəd kimi qəbul edərək hər iki verilənləri eyni zamanda emal edir.

Java isə JavaScriptdən fərqli olaraq ondan istifadə edən səhifəyə inteqrasiya olunmur. Sərbəst əlavə (proqram) kimi mövcuddur, elmi dildə desək apletdir. Bu dildən istifadə edərkən aplet uyğun əmr vasitəsilə HTML faylından çağırılmasına baxmayaraq onun yüklənməsi, inisializə olunması və yerinə yetirilməsi fon rejimində ayrıca proqram kimi olur.

## İmkanlar
C++ dilinin mürəkkəbliyi və obyekt orientasiyalı olmayan xüsusiyyətləri bu dilin əsas səbəblərdən biridir. Digər başlıca səbəb hər hansı platformada kompayl edilən kodun başqa platformlarda da dəyişdirilmədən işlədilə bilməsinə olan ehtiyacdır. Dilin bu xüsusiyyəti Java Virtual Maşını sayəsində həyata keçirilir. Java dili mürəkkəbliyi aradan qaldırmaq üçün bir çox C++ xüsusiyyətini – çox köklü irsiyyət, şablonlar (yeni versiyalarda şablonlar daxil edilib), pointerləri özünə daxil etmir. Bundan başqa dildə C++ da olmayan tullantı təmizləmə mexanizmi(garbage collector) mövcuddur.

Java texnologiyasının köməyi ilə səhifəyə interaktiv elementlər daxil etmək, sürüşkən pəncərələrin və qurulmuş freymlərin formatlarını bütünlüklə nəzarətdə saxlamaq mümkündür. Bu dil vasitəsilə "saat", "qaçan sətr", digər animasiyalar və çat yaratmaq mümkündür.

*Üstün cəhəti:* serverdə Java proqramının işini təmin etmək məqsədilə əlavə modullarının yüklənmə və qurulmasının lazım olmamasıdır.

*Mənfi cəhəti*: Java dilinin kompilyasiyasını dəstəkləməyən köhnə versiyalı veb brauzerlərlə (veb səyyahlarla) işləyən istifadəçilər bu dildə yaradılmış obyektləri görə bilmirlər.

### Əsas imkanları
* avtomatik yaddaş idarəetməsi;
* müstəsna hallarda bacarıqların geniş emalı;
* daxil etmə — xaric etmə filtrasiyası vasitələrinin zəngin komplekti;
* standart kolleksiyanın yığımı: massiv, sıra və s.
* şəbəkə proqramları üçün sadə alətlər mövcudluğu;
* Siniflərin mövcudluğu, HTML sorğularının və çağırışların yerinə yetirməyə imkan verir;
* Dil vasitələri quraşdırılmış axınlar üçün əlavələrin yaradılması;

## Java dilində yazılmış proqramın misalı
Proqram "Hello, world!" yazısını göstərir:

```java
public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, world!");
    }
}
```


## Ədəbiyyat
* Jon Byous, "Java technology: The early years". 2005.
* James Gosling, "A brief history of the Green project. Java.net", 2007.
* Tim Lindholm and Frank Yellin. "The Java Virtual Machine specification, second edition". Addison-Wesley, 1999.

## Həmçinin bax
* Veb səyyah
* J2ME

## İstinadlar

## Xarici keçidlər

*