CodeGym /Kurslar /Java SELF AZ /Java-da uyğunluğun təmin olunması

Java-da uyğunluğun təmin olunması

Java SELF AZ
Səviyyə , Dərs
Mövcuddur

1. Java-nın versiya tarixi

Java-nın tarixi 1991-ci ildə başlayır, o zaman Sun şirkətinin bir qrup proqramçıları kiçik cihazlar üçün dil yaratmağa qərar verdilər: televizor pultları, qəhvə maşınları, tost hazırlayan maşınlar, bank kartları və s.

Belə cihazların istehsalçıları öz məhsullarının idarəetmə kontrollerləri üçün müxtəlif prosessorlardan istifadə edirdilər, buna görə də xüsusi prosessor və ya OS arxitekturasına bağlı qalmamaq çox vacib idi.

Java yaradıcıları problemi iki hissəyə ayırmağa qərar verdilər: onların proqramları müəyyən kontroller üçün maşın koduna deyil, xüsusi bir aralıq koda kompilyasiya ediləcəkdir. Bu kod öz növbəsində xüsusi bir proqram vasitəsilə icra edilir — virtual maşın.

Proqramçıların əksəriyyəti kompüteri sadəcə maşın adlandırır.

Maraqlı fakt

Java dili C++ dilindən götürülmüşdür, lakin onu çox sadələşdirib standartlaşdırmışlar. Əgər C++-da hansısa bir əməliyyatı on müxtəlif üsulla yerinə yetirmək mümkündürsə, Java-da yalnız bir üsul saxlanılmışdır. Bu, hərflə yazı sisteminə keçidi xatırladırdı.

Java-nın ilk versiyası 1996-cı ildə çıxdı. O vaxtdan etibarən Java bütün dünya üzrə qalib yürüşünə başladı, bu da öz növbəsində dilin inkişafını stimullaşdırdı. Hazırda Java ilə milyonlarla kitabxana və milyardlarla kod sətirləri yazılıb və Java-nın yeni versiyaları hər 6 aydan bir çıxır:

Adı Çıxış ili Siniflərin sayı
JDK 1.0 1996 211
JDK 1.1 1997 477
J2SE 1.2 1998 1,524
J2SE 1.3 2000 1,840
J2SE 1.4 2002 2,723
J2SE 5.0 2004 3,279
Java SE 6 2006 3,793
Java SE 7 2011 4,024
Java SE 8 2014 4,240
Java SE 9 2017 6,005
Java SE 10 2018 6,002
Java SE 11 2018 4,411
Java SE 12 2019 4,433
Java SE 13 2019 4,515

Hərçənd ki, Java-nın versiyaları müntəzəm olaraq buraxılmışdır, proqramçıların nöqteyi-nəzərindən bu versiyalar müxtəlif əhəmiyyətə malik idi: Java inkişafını sıçrayışlarla etmişdir.


2. Java 2

Belə bir ilk sıçrayış JDK 1.2 versiyasının çıxışı ilə baş verdi. O qədər yeniliklər var idi ki, Java-nın yaradıcıları onu Java 2 Platform Standard Edition və ya qısaca — J2SE 1.2 olaraq adlandırdılar.

Əsas yeniliklər bunlar idi:

  • strictfp açar sözü
  • Qrafika ilə işləmək üçün Swing kitabxanası
  • Java proqramlarının işini sürətləndirən JIT-kompilyator
  • Kolleksiya kitabxanasının böyük bir dəsti
  • Unicode üçün tam dəstək: yapon, çin və koreya dilləri.

Bu gün bu yeniliklər elə də böyük görünməyə bilər, amma hər böyük layihə kiçikdən başlayır. Əgər 20 il əvvəl proqramçılar qrupu dili təkmilləşdirməyə davam etməsəydi, Java bu gün belə populyar olmazdı.


3. Java 5

JDK 1.5 versiyası 2004-cü ilin sentyabrında çıxdı. Bu versiyada çoxlu yeniliklər olduğu üçün adını dəyişmək qərarına gəldilər: 1.5, 1.6, 1.7 versiyaları yerinə 5.0, 6.0, 7.0 istifadə etməyə başladılar. Buna görə də tam adı JDK 1.5 oldu Java 2 Standard Edition 5.0

Bu yeniləməyə dilin inkişafını mümkün edən xüsusiyyətlər daxil edildi.

Annotasiyalar. Annotasiyalar üzərində müasir framework-ların yarısı qurulub, məsələn, Spring, Hibernate və JUnit kimi.

Generics. Generics kolleksiyaların (və yalnız kolleksiyaların deyil) potensialını yeni səviyyəyə qaldırdı. Kod daha sadə, kompakt və təhlükəsiz oldu.

Autoboxing/Unboxing — primitiv tiplərlə onların wrapper tipləri arasında avtomatik çevirilməsi. Bu, kodun yazılmasını və oxunmasını xeyli sadələşdirdi və kolleksiyaların populyarlığını daha da artırdı.

foreach dövrü hazırda proqramçıların yazdığı dövrlərin ən az yarısını təşkil edir. Kolleksiyalarla iş zamanı bu dövr əvəzolunmazdır.

Enum (enumeration) — daha bir xoş yenilik. Onun istifadəsi bir çox məqamları gözəl şəkildə asanlaşdırır.

Bunlar bütün yeniliklər deyil: yüzlərlə yeni sinif əlavə edilmişdi, amma əsas məsələ odur ki, bu yeniliklər çox doğru idi və Java-nın populyarlığına daha bir güclü təkan verdi.


4. Java 6

Java 6 bir çox kiçik təkmilləşdirmələrlə və adındakı rəqəm 2-dən imtina ilə yadda qaldı: artıq bu Java 2 Standard Edition 6.0 deyil, sadəcə Java Standard Edition 6.0 idi.

Bax, bəzi maraqlı yeniliklər:

Java Compiler API vasitəsilə Java-kompilyatorunu birbaşa koddan çağırmaq mümkün oldu. Artıq proqramınız sinif kodunu mətn şəklində yarada, Java Compiler API-nin metodlarını çağıraraq onu kompilyasiya edə və dərhal kompilyasiya edilmiş sinifin metodlarını çağırmağa başlaya bilərdi. Elə inkişaf sahələri var ki, belə bir şey həyatı çox asanlaşdırırdı.

JavaScript-i birbaşa Java proqramında işlətmək mümkün oldu. Bu imkan JavaSE 6-ya daxil edilmiş Rhino JavaScript-mühərriki sayəsində yarandı.


5. Java 7

2011-ci ilin iyulunda Java 7 buraxıldı. Burada çoxlu təkmilləşdirmələr olmalı idi, amma proqramçılar planlaşdırılanların yalnız kiçik bir hissəsini əlavə etməyə müvəffəq oldular. Xüsusilə, aşağıdakı şeylər əlavə edilmişdi:

Giriş və çıxış məlumatları ilə işləmək üçün yeni kitabxana. O belə adlanır — New Input Output APIjava.nio paketində yerləşir.

Avtomatik tip çıxarışı Java-kompilyatoru tərəfindən kompilyasiya mərhələsində proqramçılara daha az kod yazmağa imkan verdi. Kompilyator daha ağıllı oldu və bu yalnız başlanğıc idi.

Switch-də dəyər kimi sətirlərin istifadəsi mümkün oldu.

Həmçinin resursların avtomatik idarə olunması prosesi əhəmiyyətli dərəcədə təkmilləşdirilmişdir: Java-proqram artıq məlumat axınlarını lazım olmadıqda özü bağlayır: try-with-resources.

Başqa bir çox müxtəlif dəyişikliklər edilmişdi, amma hazırda Java-nı öyrənmə prosesimizdə onlar o qədər də əhəmiyyətli deyil


6. Java 8

Java 8 mart 2014-cü ildə çıxıb və Java-nın ən güclü son yeniləmələrindən biri olub.

Proqramçılar üçün ilk növbədə Java-ya lambda ifadələrinin və funksional interfeyslərin əlavə edilməsi ilə yadda qaldı: @FunctionalInterface annotasiyası. Biz bunları 21-ci səviyyədə öyrənəcəyik. Kodunuz artıq əvvəlki kimi olmayacaq.

Həmçinin, kolleksiyalar üçün Stream (axınlar) əlavə edildi ki, bu da lambda ifadələri ilə birlikdə kodun daha yığcam şəkildə yazılmasına imkan verdi. Amma bu həmişə daha oxunaqlı deyildi.

Stream axınlarının yaranması nəhəyət thread-ləri axın (potok) adlandıranlara daha bir zərbə vurdu. Hal-hazırda çaşqınlığı azaltmaq üçün çoxlu azərbaycanca danışan proqramçılar sapları (threads) sadəcə thread adlandırırlar, lakin çoxsaplılıq (multithreading) sözünü hələ də saxlamağa davam edirlər.

Maraqlıdır

Üçüncü böyük dəyişiklik: Java 8-də tarix və vaxt ilə işləmək üçün yeni API - Date Time API yaradıldı. Biz bunu yaxın gələcəkdə öyrənəcəyik.


7. Java 9

Java 9-un buraxılışı 2017-ci ilin sentyabr ayında baş tutdu. O andan etibarən Java proqramçıları yeni versiyaları daha tez-tez - hər altı aydan bir buraxmaq qərarına gəldilər. Çox güman ki, onları Google Chrome brauzerinin yaradıcılarının yanaşması təsirləndirmişdi.

Java 9-un buraxılışı daha çox Java maşınının daxili quruluşuna təsir etdi. Sıravi proqramçılar üçün ən vacib yenilik isə proqramı modullara bölmək imkanı oldu. Kodunuzda on minlərlə class və ya dinamik şəkildə yüklənən pluginlər olduqda bu, çox rahat olur.

Amma çox güman ki, yaxın vaxtlarda bu bizə çox lazım olmayacaq.


8. Java 11

Java 9-un buraxılışından yarım il sonra Java 10 çıxdı, və yenə yarım ildən sonra Java 11 buraxıldı.

Bu müddətdə bir çox xırda təkmilləşdirilmələr edildi, amma çox güman ki, siz yalnız iki şeyi xatırlayacaqsınız:

Unicode 10 dəstəyi əlavə edilib. İndi Java proqramlarınızda emoji (emoci) istifadə edə bilərsiniz. Onlarla istənilən digər simvollar kimi işləyə bilərsiniz — onlar sadəcə Unicode-un bir hissəsidir.

Bununla yanaşı, tip çıxarma daha da yaxşılaşdırıldı və var açar sözü əlavə edildi — bu sizə mütləq xoş gələcək.

Artıq belə yaza bilərsiniz:

var str = "Salam";

Və kompilyator bunu aşağıdakıya çevirəcək:

String str = "Salam";

Amma itkilər də olmamış deyildi. Java inkişaf etdiriciləri JDK 11-dən JavaFX, Java EE və CORBA kimi kitabxanaları çıxardılar.


9. Uyğunluğun əhəmiyyəti

Tez-tez yeni bir versiyanı buraxarkən proqramçılar hər şeyi təzədən başlamaq istəyirlər. Axı kim köhnə səhvləri düzəltmək istəyər ki, indi tam olaraq düzgün necə edəcəyini bildiyini düşünür.

Ancaq tarix belə yanaşmaya qarşıdır. Hər dəfə proqramçılar yeni bir proqram versiyası buraxdıqda, onun istifadəçilərinin 90%-i köhnə versiyanın istifadəçiləridir. Onlar yeni proqramın funksiyalarından istifadə edə bilər və ya onları nəzərə almasalar da, nifrət etdikləri bir şey var — əgər əvvəllər mükəmməl işləyən bir şey işləməyi dayandırırsa.

Bir çox möhtəşəm məhsul, proqramçılar yeni uyğun olmayan versiyalar buraxanda və ya sadəcə əsaslı dəyişikliklər edəndə məhv oldu. Məsələn, "Pusk" düyməsini rədd etmək fikri ilə gələn Windows 8 istifadəçilərə xoş gəlmədi. Nəticədə Windows 10 buraxılmalı oldu, burada Windows 8-də silinənlərin yarısı geri gətirildi.

Digər tərəfdən, indi Windows-da 20 il əvvəl Windows 95 üçün və ya 30 il əvvəl MS DOS 3.0 üçün yazılmış bir proqramı işə sala bilərsiniz və o işləyəcək. Bu da Windows-un populyar qalmasının səbəblərindən biridir.

Java da uyğunluğa diqqət etməsəydi bu qədər populyar olmazdı. Hər dəfə yeni Java-maşını versiyası çıxdıqda, SDK-nın yeni versiyası çıxdıqda, siniflərdə ciddi dəyişikliklər olduqda, 1996-cı ilin yanvarından etibarən yazılmış bütün Java kodu işləməyə davam edir.

Bu əsasən yeni metodlar, siniflər və paketlərin yalnız əlavə olunması, heç bir şeyin silinməməsi ilə təmin edilir. Bu yanaşmanın özünün həm üstünlükləri, həm də mənfi cəhətləri var.

Bir tərəfdən, Java köhnə, optimallaşdırılmamış və lazımsız kodun çoxluğunu öz arxasında daşıyır, digər tərəfdən isə siz Java 11-də yazılmış layihənizə Java 8-də yazılmış və Java 5 və Java 2-də yazılmış kitabxanaları istifadə edən bir kitabxananı əlavə edə bilərsiniz. Və bu bütün qarışıq möhtəşəm işləyəcək.

C++ dili ilə vəziyyətdə isə siz bir layihədə həm 32-bitlik, həm də 64-bitlik platforma üçün tərtib edilmiş kitabxanaları istifadə edə bilməzsiniz. Əgər bir kitabxana char tipini bir bayt uzunluğunda, digəri isə iki bayt uzunluğunda istifadə edirsə, boş yerdən böyük bir baş ağrınız olacaq.


10. Deprecated

Beləliklə, Java yaradıcısı qərar verdi: heç nəyi silməyəcəklər, amma yeni class-lar və paketlər əlavə edəcəklər. Bəs proqramçılara necə bildirmək olar ki, mövcud optimal olmayan həllə alternativ gəlib?

Bunun üçün @Deprecated annotasiyası tətbiq edilib.

Əgər hansısa metod və ya class köhnəlmiş olubsa, onun elanının yanında bu annotasiya qeyd olunur. Bu o deməkdir ki, proqramçılara həmin proqram elementindən istifadə etmək tövsiyə edilmir.

Siz hələ də bu class-ı və/və ya metodu istifadə edə bilərsiniz, amma bu məsləhət görülmür.

Bəs insanlar nə qədər tez-tez məsləhət görülməyən şeylər edir? Demək olar ki, həmişə 🙂

Bir çox class artıq 20 ildir deprecated vəziyyətindədir, amma onları necə istifadə edirdilərsə, eləcə də istifadə edirlər. Ya vərdiş ediblər, ya da sadəcə rahatdır. Amma bir gün onların silinməsi riskinin olduğunu unutmayın, buna görə də daha yaxşı istifadə etməməkdir.

Bütün müasir IDE-lər, o cümlədən Intellij IDEA, @Deprecated annotasiyasını tanıya bilir. Köhnəlmiş classlar və metodlar xətt ilə üstü çizilmiş adla göstərilir. Təxminən bu cür:

Date date = new Date();
int day = date.getDay();

Köhnəlmiş class-lar çox populyar ola bilər və hər hansı koddakı kimi geniş yayılmışdır, ona görə də onlardan bəzilərinə yaxın vaxtlarda baxacağıq.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION