1. Java sürümlerinin geçmişi

Java'nın tarihi, bir grup Sun programcısının küçük cihazlar için bir dil yaratmaya karar verdiği 1991 yılında başlar: TV uzaktan kumandaları, kahve makineleri, tost makineleri, banka kartları vb.

Bu cihazların üreticileri, ürünlerini kontrol etmek için çok farklı işlemciler kullandılar, dolayısıyla belirli bir işlemcinin veya işletim sisteminin mimarisine bağlı olmak çok önemli hale geldi.

Java'nın yaratıcıları sorunu iki kısma ayırmaya karar verdiler: Programları, belirli bir işlemci için makine kodunda değil, özel bir ara kodda derlenecekti. Buna karşılık, bu ara kod, sanal makine adı verilen özel bir program tarafından yürütülür .

Çoğu programcı, bir bilgisayarı bir makine olarak adlandırır.

İlginç.

C++, Java dili için temel alındı ​​ve büyük ölçüde basitleştirildi ve standartlaştırıldı. C++ bir şeyi 10 şekilde yapmanıza izin veriyorsa, Java bunlardan yalnızca birini korumuştur. Bazı açılardan hiyerogliflerden alfabeye geçiş gibiydi.

Java'nın ilk sürümü 1996'da piyasaya sürüldü. O zamandan beri Java dünya çapında muzaffer yürüyüşüne başladı ve bu da dilin kendisinin gelişimini ve büyümesini teşvik etti. Bugün Java'da milyonlarca kitaplık ve milyarlarca satır kod yazılıyor ve her 6 ayda bir Java'nın yeni sürümleri yayınlanıyor:

İsim Yıl sınıf sayısı
JDK 1.0 1996 211
JDK1.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

Java'nın sürümleri düzenli olarak yayınlansa da, programcılar için hepsi aynı öneme sahip değildi: Java uyum ve başlangıçlarla gelişti.


2.Java 2

İlk büyük sıçrama, JDK 1.2'nin piyasaya sürülmesiyle gerçekleşti. Orada o kadar çok yenilik vardı ki, Java'nın yaratıcıları onu Java 2 Platform Standard Edition veya kısaca J2SE 1.2 olarak yeniden adlandırdı.

Ana yenilikler şunlardı:

  • strictfpanahtar kelime
  • Grafiklerle çalışmak için Swing kitaplığı
  • Java programlarının yürütülmesini hızlandıran JIT derleyicisi
  • Büyük bir koleksiyon seti
  • Tam Unicode desteği: Japonca, Çince ve Korece.

Bugün, bu yenilikler çok büyük görünmüyor, ancak her büyük proje küçük bir projeden büyüyor. Küçük bir programcı grubu 20 yıl önce dili geliştirmeye devam etmeseydi Java bugün bu kadar popüler olmayacaktı.


3.Java 5

JDK 1.5, Eylül 2004'te piyasaya sürüldü. Ayrıca pek çok yenilik getirdi, bu nedenle yeni bir adı hak etti: 1.5, 1.6 ve 1.7 sürümleri yerine 5.0, 6.0 ve 7.0 kullanmaya karar verdiler. Yani, JDK 1.5'in tam adı Java 2 Standard Edition 5.0 idi.

Bu güncelleme, dilin daha fazla geliştirilmesinin mümkün olmayacağı şeyler içeriyordu.

Açıklamalar _ Spring ve Hibernate'den JUnit'e kadar başlıca modern çerçevelerin yarısı ek açıklamalar üzerine kuruludur.

jenerikler _ Jenerikler, koleksiyonların (ve çok daha fazlasının) gücünü yeni zirvelere taşıdı. Kod daha basit, daha kompakt ve daha güvenli hale geldi.

Otomatik kutulama/kutudan çıkarma, ilkel türler ve bunların sarmalayıcı türleri arasında otomatik dönüştürmedir. Bu, kod yazmayı ve okumayı çok daha kolay hale getirdi ve koleksiyonları daha da popüler hale getirdi.

Döngü artık programcıların yazdığı foreachtüm döngülerin en az yarısını oluşturuyor. Ve elbette koleksiyonlarla çalışırken vazgeçilmezdir.

Numaralandırma başka bir güzel yeni özelliktir. Birçok şeyin güzel bir şekilde basitleştirilmesini sağlar.

Tüm yenilikler bunlar değil: yüzlerce yeni sınıf eklendi. Önemli olan, bunların tam olarak doğru yenilikler olması ve Java'nın popülaritesine güçlü bir destek daha sağlamasıdır.


4.Java 6

Java 6, çok sayıda küçük iyileştirme ve addaki 2 rakamının terk edilmesiyle hatırlanıyor: artık "Java 2 Standard Edition 6.0" değil, sadece "Java Standard Edition 6.0" idi.

İşte ilginç yeniliklerden bazıları:

Java Compiler API, Java derleyicisini doğrudan koddan çağırmayı mümkün kıldı . Bu, programınızın artık sınıf kodunu temsil eden metin üretebileceği, Java Derleyici API'sinin yöntemlerini çağırarak derleyebileceği ve ardından derlenmiş sınıfın yöntemlerini hemen çağırmaya başlayabileceği anlamına gelir. Bu yeteneğin hayatı büyük ölçüde basitleştirdiği tüm gelişim alanları vardır.

JavaScript'i doğrudan bir Java programı içinde çalıştırmak mümkün hale geldi . Bu özellik, JavaSE 6'nın Rhino JavaScript motorunu içermesi nedeniyle ortaya çıktı.


5.Java 7

Java 7, Temmuz 2011'de yayınlandı. İçinde pek çok iyileştirme olması gerekiyordu, ancak programcılar planlananın yalnızca küçük bir bölümünü eklemeyi başardılar. Özellikle, aşağıdaki gibi şeyler eklediler:

Veri girişi ve çıkışıyla çalışmak için yeni bir kitaplık. Yeni Girdi Çıktı API'sı olarak bilinen pakette bulunur java.nio.

Java derleyicisinin derleme zamanındaki otomatik tür çıkarımı, programcıların daha az kod yazmasına olanak tanır. Derleyici daha akıllı hale geldi ve bu sadece başlangıçtı.

Switch deyimi, dizeleri vaka değerleri olarak kullanma yeteneği kazandı.

Otomatik kaynak yönetimi de önemli ölçüde iyileştirildi: Yapılandırma ile try-with-resourcesbir Java programı, artık ihtiyaç duyulmadığında sizin için veri akışlarını kapatabilir.

Başka birçok değişiklik oldu, ancak Java öğrenmenin şu anki aşamasında çok önemli değiller.


6.Java 8

Java 8, Mart 2014'te çıktı ve Java'nın son zamanlardaki en güçlü güncellemesiydi.

Her şeyden önce, programcılar onu lambda ifadeleri ve işlevsel arayüzler (açıklama) eklemesiyle hatırlar @FunctionalInterface. Bunları Level 21'de inceleyeceğiz. Kodunuz bir daha asla eskisi gibi olmayacak.

Koleksiyonlar için lambda ifadeleriyle birlikte çok daha kompakt kod yazmayı mümkün kılan akışlar da eklendi. Her zaman çok daha okunaklı olmasa da.

İlginç.

Ve üçüncü büyük değişiklik, Java 8'in tarihler ve saatlerle çalışmak için yepyeni bir API'yi - Date Time API - sunmasıydı . Yakın gelecekte inceleyeceğiz.


7. Java 9

Java 9, Eylül 2017'de piyasaya sürüldü. O zamandan beri, Java'nın yaratıcıları yeni sürümleri daha sık, altı ayda bir yayınlamaya karar verdiler. Muhtemelen Google Chrome tarayıcısının geliştiricileri tarafından benimsenen yaklaşımdan etkilenmişlerdir.

Java 9 sürümü, daha çok Java makinesinin içindekilere odaklandı. Sıradan programcılara getirdiği en önemli şey, bir programı modüllere bölme yeteneğiydi. Bu, on binlerce sınıfınız olduğunda veya kodunuz eklentileri dinamik olarak kaldırdığında çok kullanışlıdır.

Ama muhtemelen yakın gelecekte bizim için çok az işe yarayacak.


8. Java 11

Java 9'un yayınlanmasından altı ay sonra Java 10 çıktı ve altı ay sonra da Java 11 çıktı.

Bu süre zarfında pek çok küçük iyileştirme yapıldı, ancak büyük olasılıkla yalnızca ikisini hatırlayacaksınız:

Unicode 10 desteği eklendi. Artık emojileri Java programlarınızda kullanabilirsiniz. Onlarla, boole türüyle çalıştığınız şekilde çalışabilirsiniz:

Tür çıkarımı iyileştirildi ve beğeneceğinizden emin olduğunuz varanahtar kelime ortaya çıktı.

Şimdi aşağıdakileri yazabilirsiniz:

var str = "Hello";

Ve derleyici bunu şuna dönüştürür:

String str = "Hello";

Ama bazı kayıplar da oldu. Java'nın yaratıcıları JavaFX, Java EE ve CORBA gibi kitaplıkları JDK 11'den çıkardı.


9. Uyumluluğun Önemi

Yeni bir sürüm yayınlandığında, programcılar genellikle sıfırdan başlamak isterler. Ne de olsa, kodun en başından beri nasıl yazılması gerektiğinden kesinlikle emin olduklarında, bir grup eski hatayı kim düzeltmek ister?

Ancak tarih böyle bir yaklaşımı desteklemiyor. Programcılar bir programın yeni bir sürümünü her yayınladığında, kullanıcılarının %90'ı eski bir sürümü kullanıyor. Programın yeni özelliklerini kullanabilir veya görmezden gelebilirler, ancak kullanıcıların nefret ettiği şey, eskiden iyi çalışan bir şeyin artık çalışmamasıdır.

Programcılar uyumlu olmayan yeni sürümler çıkardığında birçok harika ürün öldü. Ya da sadece büyük değişiklikler yaptıklarında. Örneğin, Windows 8'de Başlat düğmesini terk etme fikri kullanıcılara çekici gelmedi. Windows 10'un piyasaya sürülmesi, Windows 8'de kaldırılanların yarısını geri getirdi.

Dahası, Windows, Windows 95 için 20 yıl önce yazılmış, hatta MS DOS 3.0 için 30 yıl önce yazılmış programları çalıştırmanıza izin verir; çalışırlar. Windows'un popüler kalmasının nedenlerinden biri de budur.

Ve Java, geliştiricileri uyumluluğu umursamasaydı bu kadar popüler olmazdı. Java makinesinin yeni bir sürümü, SDK'nın yeni bir sürümü veya sınıflarda büyük değişiklikler olduğunda, Ocak 1996'dan beri yazılan tüm Java kodları çalışmaya devam eder.

Bu genellikle hiçbir şeyi çıkarmadan yalnızca yeni yöntemler, sınıflar ve paketler ekleyerek elde edilir. Bu yaklaşımın artıları ve eksileri vardır.

Bir yandan Java, eski, yetersiz ve gereksiz kod biçimindeki bir sürü bagajı sürükler. Öte yandan, Java 11'de yazılmış projeniz her zaman Java 5 ve Java 2'de yazılmış kitaplıkları kullanan Java 8'de yazılmış bir kitaplığı kullanabilir. Bu kod karmaşası gayet iyi çalışacaktır.

C++ dili ile hem 32-bit hem de 64-bit platformlar için derlenmiş kütüphaneler aynı projede kullanılamaz. charVe aniden bir kitaplıkta kullanılan türün bir bayt kullanırken diğerinin iki bayt kullandığını keşfederseniz, büyük bir baş ağrınız olur .


10. Kaldırıldı

Bu nedenle, Java'nın yaratıcıları hiçbir şeyi kaldırmamaya, yalnızca yeni sınıflar ve paketler eklemeye karar verdiler. Ancak programcılara mevcut yetersiz çözüme yeni ve değerli bir alternatif olduğunu nasıl bildirirler?

Bunu yapmak için ek açıklama ile geldiler @Deprecated.

Bir yöntem veya sınıf kullanımdan kaldırılmışsa, bu ek açıklama, bildiriminin yanına eklenir. Bu, programcıların kodu kullanmaktan caydırıldığı anlamına gelir.

Kullanımdan kaldırılmış bir sınıfı veya yöntemi kullanmaya devam edebilirsiniz, ancak bu önerilmez.

Ve insanlar tavsiye edilmeyen şeyleri ne sıklıkla yapıyor? Neredeyse her zaman 🙂

Birçok sınıf 20 yıldır kullanımdan kaldırılmıştır — kullanılmış ve halen kullanılmaktadır. İnsanlar onlara aşinadır veya sadece uygundur. Ancak bir noktada kaldırılma riski vardır, bu yüzden onları kullanmamak daha iyidir.

IntelliJ IDEA dahil olmak üzere tüm modern IDE'ler ek açıklamayı işleyebilir @Deprecated. Kullanımdan kaldırılan sınıfların ve yöntemlerin adları üstü çizili biçimlendirme kullanılarak görüntülenir. Bunun gibi bir şey:

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

Kullanımdan kaldırılan sınıflar çok popülerdir ve genellikle kodda bulunur, bu yüzden yakında bazılarına bakacağız.