Java (yazılım platformu) - Java (software platform)

Java (yazılım platformu)
Java teknolojisi logosu
Java teknolojisi logosu
Orijinal yazar (lar)James Gosling, Sun Microsystems
Geliştirici (ler)Oracle Corporation
İlk sürüm23 Ocak 1996; 24 yıl önce (1996-01-23)[1][2]
Kararlı sürüm15.0.1 (20 Ekim 2020; 49 gün önce (2020-10-20)[3]) [±]

11.0.9.1 (4 Kasım 2020; 28 gün önce (2020-11-04)[4]) [±]

8u275 (4 Kasım 2020; 28 gün önce (2020-11-04)[5]) [±]
Önizleme sürümü16 + 27 (2 Aralık 2020; 6 gün önce (2020-12-02)[6]) [±]
YazılmışJava, C ++, C, montaj dili[7]
İşletim sistemiMicrosoft Windows, Solaris, Linux, Mac os işletim sistemi[8]
PlatformIA-32, x64, ARMv7, ARMv8, SPARC (Java 14'e kadar) (Java 8 şunları içerir: 32 bit destek - artık ticari kullanım için Oracle tarafından ücretsiz olarak desteklenmezken - Java 10'da resmi olarak bırakıldığından 32 bit platformlar diğer sürümlerde desteklenmez.)[8]
Uygunİngilizce, Çince, Fransızca, Almanca, İtalyanca, Japonca, Korece, Portekizce, İspanyolca, İsveççe[9]
TürYazılım platformu
LisansÇift lisans: GNU Genel Kamu Lisansı sınıf yolu istisnası ile sürüm 2,[10] ve bir tescilli lisans.[11]
İnternet sitesijava.com
Java destekli bir program

Java bir dizi bilgisayar yazılımı ve tarafından geliştirilen spesifikasyonlar James Gosling -de Sun Microsystems, daha sonra tarafından satın alındı Oracle Corporation, geliştirmek için bir sistem sağlayan Uygulama yazılımı ve onu bir çapraz platform bilgi işlem ortamı. Java, çok çeşitli bilgi işlem platformları itibaren gömülü cihazlar ve cep telefonları -e kurumsal sunucular ve süper bilgisayarlar. Java uygulamaları Bağımsız Java uygulamalarından daha az yaygın olan, genellikle güvenli korumalı yerleşik olarak yerel uygulamaların birçok özelliğini sağlamak için ortamlar HTML sayfalar.

Yazılı Java programlama dili olarak dağıtılacak kod üretmenin birincil yoludur bayt kodu içinde Java sanal makinesi (JVM); bayt kodu derleyiciler dahil olmak üzere diğer diller için de mevcuttur Ada, JavaScript, Python, ve Yakut. Ek olarak, JVM'de yerel olarak çalışmak üzere birkaç dil tasarlanmıştır: Clojure, Harika, ve Scala. Java sözdizimi büyük ölçüde ödünç alıyor C ve C ++, ancak nesne yönelimli özellikler sonra modellenir Smalltalk ve Amaç-C.[12] Java, aşağıdaki gibi bazı düşük seviyeli yapılardan kaçınır: işaretçiler ve nesnelerin olduğu çok basit bir hafıza modeline sahiptir. yığın üzerinde tahsis edilmiş (bazı uygulamalar, örneğin şu anda Oracle tarafından desteklenen tüm uygulamalar, kaçış analizi tahsis etmek için optimizasyon yığın bunun yerine) ve nesne türlerinin tüm değişkenleri Referanslar. Bellek yönetimi, entegre otomatik çöp toplama JVM tarafından gerçekleştirildi.

13 Kasım 2006'da Sun Microsystems, Java uygulamasının büyük kısmını GNU Genel Kamu Lisansı (GPL).[13][14]

En son sürüm Java 15, Eylül 2020'de piyasaya sürüldü. Açık Kaynak platformu olan Java, Amazon, IBM, Azul Systems, AdoptOpenJDK gibi birçok dağıtıcıya ve ücretsiz ve ticari destek dağıtımlarına sahip diğer pek çok kişiye (Amazon Correto, Zulu, AdoptOpenJDK, Liberica, vb.), ancak Oracle dağıtımı ile ilgili olarak Java 11 şu anda desteklenen uzun vadeli destek 25 Eylül 2018'de piyasaya sürülen (LTS) sürümü ("Oracle Müşterileri Oracle Premier Desteği alacak"). Oracle (ve diğerleri) "Java'nın eski sürümlerini kaldırmanızı şiddetle tavsiye ediyor",[15] çözülmemiş güvenlik sorunları nedeniyle ciddi riskler nedeniyle.[16][17][18] Java 9 (ve 10) artık desteklenmediğinden, Oracle kullanıcılarına Java 11'e "hemen geçiş yapmalarını" tavsiye eder (Java 15 ayrıca LTS dışı bir seçenektir). Oracle, son ticari kullanım için ücretsiz genel güncellemeyi yayınladı. miras Ocak 2019'da Java 8 LTS ve süresiz olarak kişisel kullanım için genel güncellemelerle Java 8'i desteklemeye devam edecek. Oracle, Java 6 için genişletilmiş destek Aralık 2018'de sona erdi.[19]

Platform

Java platformu, içinde yazılan programları geliştirmeyi ve çalıştırmayı kolaylaştıran bir programlar paketidir. Java Programlama dili. Bir Java platformu, bir yürütme motoru içerecektir ( sanal makine ), bir derleyici ve bir dizi kütüphaneler; ayrıca ek olabilir sunucular ve gereksinimlere bağlı olan alternatif kitaplıklar. Java, herhangi bir işlemciye özgü değildir veya işletim sistemi Java platformları, Java programlarının kullanılmasını sağlamak amacıyla çok çeşitli donanım ve işletim sistemleri için uygulandığından aynı şekilde koş hepsinde. Farklı platformlar, farklı cihaz sınıflarını hedefler ve uygulama alanları:

  • Java Kartı: Küçük Java tabanlı uygulamalara izin veren bir teknoloji (uygulamalar ) güvenli bir şekilde çalıştırılmak akıllı kartlar ve benzeri küçük bellekli cihazlar.
  • Java ME (Micro Edition): Sınırlı depolama, görüntüleme ve güç kapasitelerine sahip cihazlar için birkaç farklı kitaplık seti (profil olarak bilinir) belirtir. Genellikle mobil cihazlar, PDA'lar, TV uygulamaları geliştirmek için kullanılır. set üstü kutular ve yazıcılar.
  • Java SE (Standart Sürüm): Masaüstü bilgisayarlar, sunucular ve benzer cihazlarda genel amaçlı kullanım içindir.
  • Jakarta EE (Enterprise Edition): Java SE artı çeşitli API'ler için yararlı çok katmanlı müşteri sunucusu kurumsal uygulamalar.

Java platformu, her biri genel yeteneklerinin bir bölümünü sağlayan birkaç programdan oluşur. Örneğin, Java kaynak kodunu Java bayt koduna (JVM için bir ara dil) dönüştüren Java derleyicisi, Java Geliştirme kiti (JDK). Java Runtime Environment (JRE), JVM'yi bir tam zamanında (JIT) derleyici, ara bayt kodunu anında yerel makine koduna dönüştürür. Java platformu ayrıca kapsamlı bir kitaplık seti içerir.

Platformdaki temel bileşenler Java dil derleyicisi, kitaplıklar ve Java ara bayt kodunun sanal makine belirtiminde belirtilen kurallara göre yürütüldüğü çalışma zamanı ortamıdır.

Java Sanal Makinesi

Java platformunun kalbi, çalışan bir "sanal makine" kavramıdır. Java bayt kodu programları. Bu bayt kodu, programın hangi donanım veya işletim sistemi altında çalıştığından bağımsız olarak aynıdır. Bununla birlikte, Java 10 (ve öncesi) gibi yeni sürümler küçük değişiklikler yaptı, yani bayt kodu genel olarak yalnızca ileriye uyumlu. İçinde bir JIT (Just In Time) derleyicisi vardır. Java Sanal Makinesiveya JVM. JIT derleyici, Java bayt kodunu çalışma zamanında yerel işlemci talimatlarına çevirir ve yerel kodu yürütme sırasında bellekte önbelleğe alır.

Bayt kodunun bir ara dil olarak kullanılması, Java programlarının mevcut bir sanal makineye sahip herhangi bir platformda çalışmasına izin verir. Bir JIT derleyicisinin kullanılması, Java uygulamalarının, yükleme sırasında kısa bir gecikmeden sonra ve tamamı veya çoğu JIT tarafından derlenerek "ısındıktan" sonra, yerel programlar kadar hızlı çalışma eğiliminde oldukları anlamına gelir.[20][21][22]JRE sürüm 1.2'den bu yana, Sun'ın JVM uygulaması bir tam zamanında derleyici tercüman yerine.

Java programları olmasına rağmen çapraz platform veya platform bağımsız, bu programları çalıştıran Java Sanal Makinelerinin (JVM) kodu değildir. Desteklenen her işletim platformunun kendi JVM'si vardır.

Sınıf kitaplıkları

Çoğu modernde işletim sistemleri (OS'ler), programcının işini basitleştirmek için büyük bir yeniden kullanılabilir kod gövdesi sağlanmıştır. Bu kod genellikle bir dizi dinamik olarak yüklenebilir kitaplıklar uygulamalar çalışma zamanında çağırabilir. Java platformu herhangi bir belirli işletim sistemine bağlı olmadığından, uygulamalar önceden var olan işletim sistemi kitaplıklarından herhangi birine güvenemez. Bunun yerine, Java platformu, modern işletim sistemlerinde yaygın olarak bulunan aynı yeniden kullanılabilir işlevlerin çoğunu içeren kapsamlı bir standart sınıf kitaplık seti sağlar. Sistem kitaplığının çoğu Java ile de yazılmıştır. Örneğin, Salıncak kütüphane, kullanıcı arayüzünü boyar ve olayları kendisi yöneterek, farklı platformların bileşenleri işleme şekli arasındaki pek çok ince farkı ortadan kaldırır.

Java sınıfı kitaplıkları, Java platformunda üç amaca hizmet eder. İlk olarak, diğer standart kod kitaplıkları gibi, Java kitaplıkları da programcıya, öğe listelerini korumak veya karmaşık dizge ayrıştırması yapmak gibi ortak görevleri yerine getirmek için iyi bilinen bir işlevler kümesi sağlar. İkinci olarak, sınıf kitaplıkları, normalde donanıma ve işletim sistemine büyük ölçüde bağlı olan görevler için soyut bir arabirim sağlar. Ağ erişimi ve dosya erişimi gibi görevler, genellikle her platformun kendine özgü uygulamalarıyla büyük ölçüde iç içe geçmiştir. java.net ve java.io Kitaplıklar yerel işletim sistemi kodunda bir soyutlama katmanı uygular, ardından Java uygulamalarının bu görevleri gerçekleştirmesi için standart bir arabirim sağlar. Son olarak, bazı temel platformlar bir Java uygulamasının beklediği tüm özellikleri desteklemediğinde, sınıf kitaplıkları, ya bir ikame sağlamak için öykünerek ya da en azından mevcudiyeti kontrol etmek için tutarlı bir yol sağlayarak, eksik bileşenleri zarif bir şekilde ele almaya çalışır. belirli bir özelliğin.

Diller

Yalnızca "Java" kelimesi, genellikle Java platformuyla kullanılmak üzere tasarlanmış Java programlama dilini ifade eder. Java programlama dili Java 7'den önce Java platformunun temel bir parçası olarak listelenmiş olmasına rağmen, programlama dilleri tipik olarak "platform" ifadesinin kapsamı dışındadır. Dil ve çalıştırma zamanı bu nedenle genellikle tek bir birim olarak kabul edilirdi. Bununla birlikte, Java 7 spesifikasyonuyla, Java dilini ve Java sanal makinesini ayrı varlıklar olarak daha net bir şekilde ele almak için bir çaba gösterildi, böylece artık tek bir birim olarak kabul edilmiyorlar.[23]

Üçüncü taraflar birçok derleyiciler veya tercümanlar JVM'yi hedefleyen. Bunlardan bazıları mevcut diller için, diğerleri ise Java dilinin uzantıları içindir. Bunlar şunları içerir:

  • BeanShell - Java için hafif bir betik dili[24] (Ayrıca bakınız JShell )
  • Seylan - Nesne yönelimli, oldukça statik olarak yazılmış bir programlama dili değişmezlik
  • Clojure - Modern, dinamik, ve işlevsel lehçe of Lisp programlama dili Java platformunda
  • Gosu - Apache License 2.0 kapsamında yayınlanan genel amaçlı bir Java Virtual Machine tabanlı programlama dili
  • Harika - Python, Ruby, Perl ve Smalltalk özellikleriyle birlikte tamamen Java ile birlikte çalışabilir, Java-sözdizimi uyumlu, statik ve dinamik bir dil
  • JRuby - bir Yakut çevirmen
  • Jython - bir Python çevirmen
  • Kotlin - Bir endüstriyel programlama dili JVM dolu Java birlikte çalışabilirlik
  • Gergedan - bir JavaScript çevirmen
  • Scala - Java uyumlu olmayan sözdizimine sahip çok paradigmalı bir programlama dili "daha iyi Java" olarak tasarlanmıştır

Benzer platformlar

Java'nın başarısı ve bir kez yazın, her yerde çalıştırın kavram diğer benzer çabalara yol açmıştır, özellikle .NET Framework, Java'nın birçok başarılı yönünü bünyesinde barındıran 2002'den beri ortaya çıkmaktadır. .NET, birden çok programlama dilini desteklemek için sıfırdan oluşturulmuşken, Java platformu başlangıçta yalnızca Java dilini desteklemek için inşa edilmiştir, ancak o zamandan beri JVM için birçok başka dil de yapılmıştır. Java gibi, .NET dilleri de bayt koduna göre derlenir ve amacı JVM'ye benzer olan Ortak Dil Çalışma Zamanı (CLR) tarafından yürütülür. JVM gibi, CLR de otomatik çöp toplama yoluyla bellek yönetimi sağlar ve .NET bayt kodunun birden çok işletim sisteminde çalışmasına izin verir.

.NET, ilk adı verilen Java benzeri bir dil içeriyordu J ++, sonra aradı Görsel J # Java spesifikasyonu ile uyumsuzdu. 2007'de durduruldu ve destek 2015'te sona erdi.

Java Geliştirme kiti

Java Geliştirme kiti (JDK) bir Güneş Java geliştiricilerine yönelik ürün. Java'nın piyasaya sürülmesinden bu yana, en yaygın kullanılan Java olmuştur yazılım geliştirme kiti (SDK).[kaynak belirtilmeli ] Bir Java derleyicisini, tam bir kopyasını içerir. Java Runtime Environment (JRE) ve diğer birçok önemli geliştirme aracı.

Tarih

James Gosling

Java platformu ve dili, şu tarihte dahili bir proje olarak başladı Sun Microsystems Aralık 1990'da, C ++ /C Programlama dilleri. Mühendis Patrick Naughton Sun'ın C ++ ve C durumundan giderek daha fazla hayal kırıklığına uğradı uygulama programlama arayüzleri (API'ler) ve araçların yanı sıra Haberler proje organizasyon tarafından ele alındı. Naughton bilgilendirildi Scott McNealy Sun'ı terk etme ve oraya gitme planı hakkında Sonraki; McNealy ondan kendisinin Tanrı olduğunu varsaymasını ve şirketi nasıl düzelteceğini açıklayan bir e-posta göndermesini istedi. Naughton, diğer Sun projelerini geciktiren bürokrasi olmadan özerk olarak çalışabilecek küçük bir ekibin kurulmasını öngördü. McNealy, mesajı Sun'daki diğer önemli kişilere iletti ve Stealth Projesi başladı.[25]

Stealth Projesi kısa süre sonra Yeşil Proje, ile James Gosling ve Mike Sheridan, Naughton'a katılıyor. Diğer mühendislerle birlikte küçük bir ofiste çalışmaya başladılar. Sand Hill Yolu içinde Menlo Parkı, Kaliforniya. Sun'ın büyük yeni fırsatlar sunmasını beklediği yeni nesil akıllı cihazları programlamak için yeni teknoloji geliştirmeyi hedeflediler.[26]

Ekip başlangıçta C ++ kullanmayı düşündü, ancak birkaç nedenden dolayı reddetti. Çünkü onlar bir yerleşik sistem sınırlı kaynaklarla, C ++ 'nın çok fazla belleğe ihtiyaç duyduğuna ve karmaşıklığının geliştirici hatalarına yol açtığına karar verdiler. Dilin eksikliği çöp toplama programcıların zorlu ve hataya açık bir görev olan sistem belleğini manuel olarak yönetmeleri gerektiği anlamına geliyordu. Ekip ayrıca C ++ dilinin güvenlik için taşınabilir olanakların olmayışından da endişe ediyordu. dağıtılmış programlama, ve iş parçacığı. Son olarak, her tür cihaza kolayca bağlanabilecek bir platform istediler.

Bill Joy birleştiren yeni bir dil tasarlamıştı Mesa ve C. adlı bir makalede Daha ileri, Sun'a mühendislerinin bir nesne odaklı C ++ tabanlı ortam. Başlangıçta Gosling, C ++ 'yı değiştirmeye ve genişletmeye çalıştı ("C ++ ++ -" olarak adlandırdığı önerilen bir geliştirme), ancak kısa süre sonra, adını verdiği yeni bir dil yaratmak için bunu terk etti. Meşe, ofisinin hemen dışında duran ağaçtan sonra.[27]

1992 yazında ekip, Green dahil olmak üzere yeni platformun bazı kısımlarını gösterebildi. işletim sistemi, Meşe dili, kitaplıklar ve donanım. 3 Eylül 1992'deki ilk gösterileri, bir kişisel dijital asistan (PDA) cihazı adlı Yıldız7[1] grafiksel bir arayüze ve kullanıcıya yardımcı olmak için "Duke" adlı akıllı bir aracıya sahipti. O yılın Kasım ayında, Yeşil Proje ayrıldı ve Birinci şahıs, tamamen Sun Microsystems'e ait olan bir yan kuruluş ve ekip, Palo Alto, Kaliforniya.[28] Firstperson ekibi, son derece etkileşimli cihazlar geliştirmeye ilgi duyuyordu. Time Warner bir ..... yayınlandı teklif talebi (RFP) için set üstü kutusu Firstperson hedefini değiştirdi ve set üstü kutu platformu önerisiyle yanıt verdi. Ancak kablo endüstri, platformlarının kullanıcıya çok fazla kontrol verdiğini hissettiğinden, Firstperson teklifini kaybetti. SGI. İle ek bir anlaşma 3DO Şirketi bir set üstü kutu için de gerçekleştirilemedi. Televizyon endüstrisine ilgi gösteremeyen şirket, Sun'a geri döndü.

Java Web ile buluşuyor

John Gage

Haziran ve Temmuz 1994'te - üç günlük beyin fırtınasından sonra John Gage (Sun Bilim Direktörü), Gosling, Joy, Naughton, Wayne Rosing, ve Eric Schmidt - ekip platformu yeniden hedefledi Dünya çapında Ağ. Bunu grafiklerin gelişiyle hissettiler. internet tarayıcıları sevmek Mozaik İnternet, kablo TV için tasarladıkları aynı yüksek etkileşimli ortama dönüşebilirdi. Bir prototip olarak Naughton, WebRunner adında küçük bir tarayıcı yazdı (filmin adını Bıçak Sırtı ), yeniden adlandırıldı HotJava[26] 1995'te.

Sun, Oak dilini şu şekilde yeniden adlandırdı: Java sonra marka arama bunu ortaya çıkardı Meşe Teknolojisi adı kullandı Meşe.[29] Java 1.0a 1994 yılında indirilebilir hale gelmesine rağmen, Java'nın ilk halka açık sürümü olan HotJava tarayıcısına sahip Java 1.0a2 23 Mayıs 1995'te Gage tarafından SunWorld konferans. Gage'in duyurusuna eşlik eden, Marc Andreessen, Genel Müdür Yardımcısı Netscape Communications Corporation, beklenmedik bir şekilde Netscape tarayıcılarının Java desteği içereceğini duyurdu. 9 Ocak 1996'da Sun Microsystems, teknolojiyi geliştirmek için JavaSoft grubunu kurdu.[30]

Web tarayıcıları için sözde Java uygulamaları artık Java'nın en popüler kullanımı (bununla birlikte örneğin sunucu tarafında daha fazla kullanılan) veya kod istemcisi tarafında çalıştırmanın en popüler yolu (JavaScript daha popüler hale geldi) olmasa da, Java'yı (veya Kotlin gibi diğer JVM dillerini) web tarayıcılarında çalıştırmak mümkündür, örneğin, JVM desteği bunlardan kaldırıldıktan sonra bile, örn. TeaVM.

Sürüm geçmişi

Java dili, JDK'nın yayınlanmasından bu yana birkaç değişikliğe uğramıştır (Java Geliştirme kiti ) 1.0, 23 Ocak 1996 ve standarda çok sayıda sınıf ve paket eklemesi kütüphane. J2SE 1.4'ten beri Java Topluluğu Süreci (JCP) Java Dilinin gelişimini yönetmiştir. JCP kullanır Java Spesifikasyon İstekleri (JSR'ler) Java platformuna eklemeler ve değişiklikler önermek ve belirtmek için. Java Dil Belirtimi (JLS) dili belirtir; JLS'deki değişiklikler JSR 901 altında yönetilir.[31]

Güneş çıktı JDK 1.1 19 Şubat 1997 tarihinde. Başlıca eklemeler, AWT olay modeli iç sınıflar dile eklendi, JavaBeans ve JDBC.

J2SE 1.2 (8 Aralık 1998) - Codename Oyun alanı. Bu ve sonraki sürümler J2SE 5.0 aracılığıyla yeniden markalandı Java 2 ve "J2SE" sürüm adı (Java 2 Platformu, Standart Sürüm ) temel platformu J2EE'den ayırmak için JDK'nın yerini aldı (Java 2 Platformu, Kurumsal Sürüm ) ve J2ME (Java 2 Platformu, Micro Edition ). Başlıca eklemeler dahil yansıma, bir koleksiyonlar çerçeve Java IDL (bir arayüz açıklama dili için uygulama CORBA birlikte çalışabilirlik) ve Salıncak çekirdek sınıflara grafik API. Bir Java Eklentisi piyasaya sürüldü ve Sun'ın JVM'si bir JIT derleyicisi ilk kez.

J2SE 1.3 (8 Mayıs 2000) - Kod adı Kerkenez. Dikkate değer değişiklikler, Sıcak nokta JVM (HotSpot JVM ilk olarak Nisan 1999'da J2SE 1.2 JVM için piyasaya sürüldü), JavaSound, Java Adlandırma ve Dizin Arayüzü (JNDI) ve Java Platform Hata Ayıklayıcı Mimarisi (JPDA).

J2SE 1.4 (6 Şubat 2002) - Codename Merlin. Bu, Java Topluluk Süreci kapsamında JSR 59 olarak geliştirilen Java platformunun ilk sürümü oldu.[32] Büyük değişiklikler dahil düzenli ifadeler sonra modellenmiştir Perl, istisna zinciri, Entegre XML ayrıştırıcı ve XSLT işlemci (JAXP ), ve Java Web Başlangıcı.

J2SE 5.0 (30 Eylül 2004) - Codename Kaplan. Başlangıçta 1.5 olarak numaralandırılmıştı ve hala dahili sürüm numarası olarak kullanılmaktadır.[33] JSR 176 altında geliştirilen Tiger, birkaç önemli yeni dil özelliği ekledi: her döngü için, jenerik, otomatik kutulama ve var-args.[34]

Java SE 6 (11 Aralık 2006) - Codename Mustang. Bir veritabanı yöneticisi ile birlikte paketlenmiştir ve JVM ile komut dosyası dillerinin kullanımını kolaylaştırır (örneğin JavaScript kullanma Mozilla 's Gergedan motor). Sun, bu sürümden itibaren "J2SE" adını şu şekilde değiştirdi: Java SE ve sürüm numarasından ".0" çıkarıldı.[35] Diğer önemli değişiklikler arasında takılabilir ek açıklamalar (JSR 269 ), birçok GUI görünüm ve izlenimini desteklemek için yerel UI geliştirmeleri dahil iyileştirmeler Windows Vista ve iyileştirmeler Java Platform Hata Ayıklayıcı Mimarisi (JPDA) ve JVM Aracı Arayüzü daha iyi izleme ve sorun giderme için.

Java SE 7 (28 Temmuz 2011) - Codename Yunus. Bu sürüm JSR 336 altında geliştirilmiştir.[36] Anahtardaki dizeler, kaynaklarla deneme ve tür çıkarımı genel örnek oluşturma için. JVM, dinamik dil desteği ile genişletilirken, sınıf kitaplığı bir join / fork çerçevesi ile diğerleri arasında genişletildi,[37] Geliştirilmiş yeni bir dosya G / Ç kitaplığı ve aşağıdakiler gibi yeni ağ protokolleri için destek SCTP. Java 7 Güncellemesi 76, 14 Nisan 2015 sona erme tarihi ile Ocak 2015'te yayınlandı.[38]

Haziran 2016'da Java 7'nin son genel güncellemesinden sonra,[39] "uzaktan istismar edilebilir "Java 6, 7 ve 8'deki güvenlik hataları duyuruldu.[17]

Java SE 8 (18 Mart 2014) - Önemli değişiklikler, lambda ifadeleri (kapanışlar ) ve varsayılan yöntemler, Project Nashorn JavaScript çalışma zamanı, Joda Time'dan esinlenen yeni bir Tarih ve Saat API'si ve PermGen'in kaldırılması. Bu sürüm, Windows XP platformunda resmi olarak desteklenmemektedir.[40] Bununla birlikte, Java 7'nin yaşam döngüsünün sona ermesi nedeniyle, XP kullanıcıları için önerilen sürümdür. Daha önce, Windows XP SP3 için yalnızca resmi olmayan bir el ile yükleme yöntemi açıklanmıştı. Java için geliştirme platformu olan JDK8'i ifade eder ve aynı zamanda tam işlevsel bir Java Runtime Environment.[41] Java 8, Windows Server 2008 R2 SP1, Windows Vista SP2 ve Windows 7 SP1, Ubuntu 12.04 LTS ve sonraki sürümlerinde (ve diğer bazı işletim sistemlerinde) desteklenir.[42]

Java SE 9 ve 10 daha yüksek sistem gereksinimleri vardı, yani Windows 7 veya Server 2012 (ve web tarayıcısı minimum sertifikalı Internet Explorer 11 veya diğer web tarayıcıları) ve Oracle düştü 32 bit tüm platformlar için uyumluluk, yani yalnızca Oracle'ın "64 bit Java sanal makineleri (JVM'ler) sertifikalıdır ".[43]

Java SE 11 Eylül 2018'de yayınlandı, ilki LTS beri serbest hızlı sürüm model, sürüm 9'dan başlayarak benimsenmiştir. OpenJDK 11, ilk kez GNU Genel Kamu Lisansı altında Java platformu için tam kaynak kodunu temsil etmektedir ve Oracle, isteğe bağlı bir özel lisans ile hala çift lisanslı olsa da, kod farklılıkları yoktur. ya da tescilli lisanslı sürüme özgü modüller.[44] Java 11 özellikleri, iki yeni çöp toplayıcı uygulaması içerir; derin sorunları gidermek için Uçuş Kaydedici ve aşağıdakileri içeren yeni bir HTTP istemcisi WebSocket destek.[45]

Java SE 12 Mart 2019'da yayınlandı.[46]

Java SE 13 Eylül 2019'da yayınlandı.[47]

Java SE 14 Mart 2020'de yayınlandı.[48]

Java SE 15 Eylül 2020'de yayınlandı.

Dil değişikliklerine ek olarak, JDK 1.0'da birkaç yüz sınıftan J2SE 5.0'da üç binin üzerine çıkan Java sınıf kitaplığında yıllar içinde önemli değişiklikler yapıldı. Tüm yeni API'ler, örneğin Salıncak ve Java 2D geliştirildi ve orijinal JDK 1.0 sınıflarının ve yöntemlerinin çoğu kullanımdan kaldırıldı.

Kullanım

Masaüstü kullanımı

Üzerinde çalışan bir Java programı Windows Vista masaüstü bilgisayar (Java 8 tarafından desteklenmektedir, ancak resmi olarak Java 10 tarafından desteklenmemektedir)

Oracle'a göre 2010'da Java Runtime Environment 850 milyondan fazla bilgisayarda bulundu.[49] Microsoft paketlemedi Java Runtime Environment (JRE) ile işletim sistemleri Sun Microsystems, Microsoft'a Windows'a özgü sınıfları paketlenmiş Java çalışma zamanı ortamına eklemesi ve yeni sınıfları bu sınıflar aracılığıyla kullanılabilir hale getirmesi için dava ettiğinden Görsel J ++.[kaynak belirtilmeli ] Apple artık bir Java çalışma zamanı içermiyor OS X itibariyle sürüm 10.7, ancak sistem, JRE gerektiren bir uygulama ilk kez başlatıldığında kullanıcıdan onu indirip yüklemesini ister.[kaynak belirtilmeli ] Birçok Linux dağıtımları Dahil et OpenJDK özel Oracle JRE'yi indirme ihtiyacını ortadan kaldıran varsayılan sanal makine olarak çalışma zamanı.[50]

Bazı Java uygulamaları oldukça yaygın masaüstü kullanımındadır. NetBeans ve Tutulma entegre geliştirme ortamları ve gibi dosya paylaşım istemcileri LimeWire ve Vuze. Java ayrıca MATLAB matematik programlama ortamı, her ikisi de Kullanıcı arayüzü ve çekirdek sistemin bir parçası olarak. Java, aşağıdakiler gibi bazı üst düzey işbirliği uygulamaları için platformlar arası kullanıcı arabirimi sağlar: Nilüfer Notları.

Oracle, öncelikle JDK 9'daki Java Runtime Environment'tan ayrı olarak kurulabilen Java tarayıcı eklentisini kullanımdan kaldırmayı ve ardından web geliştiricilerini alternatif bir teknoloji kullanmaya zorlayarak gelecekteki bir sürümden tamamen kaldırmayı planlıyor.[51]

Maskot

Plain ol 'Duke

Duke, Java'nın maskot.[52]

Sun bunu duyurduğunda Java SE ve Java ME altında serbest bırakılacak özgür yazılım lisansı ( GNU Genel Kamu Lisansı ), Duke grafiklerini ücretsiz olarak yayınladılar BSD lisansı aynı zamanda.[53] Her yıl yeni bir Duke kişiliği yaratılır.[54] Örneğin, Temmuz 2011'de "Future Tech Duke" daha büyük bir burun, bir jetpack ve mavi kanatlar içeriyordu.[55]

Lisanslama

Sun'ın Java uygulamaları için kaynak kodu (yani fiili referans uygulaması) bir süredir mevcuttu, ancak yakın zamana kadar,[56] Lisans koşulları, Sun ile bir sözleşme imzalamadan (ve genellikle ücretini ödemeden) onunla neler yapılabileceğini ciddi şekilde kısıtladı. Bu nedenle bu şartlar, her ikisinin de gereksinimlerini karşılamadı. Açık Kaynak Girişimi ya da Özgür Yazılım Vakfı açık kaynak veya özgür yazılım olarak kabul edilmek ve bu nedenle Sun Java tescilli bir platformdu.[57]

Birkaç üçüncü taraf projesi (ör. GNU Sınıfyolu ve Apache Harmony ) oluşturuldu ücretsiz yazılım kısmi Java uygulamaları, Sun kitaplıklarının büyük boyutu ile birlikte temiz oda yöntemleri Java kitaplıkları uygulamalarının (derleyici ve VM nispeten küçük ve iyi tanımlanmış) eksik olduğu ve tam olarak uyumlu olmadığı anlamına geliyordu. Bu uygulamalar, Sun'ınkinden çok daha az optimize olma eğilimindeydi.[kaynak belirtilmeli ]

Ücretsiz yazılım

Güneş ilan edildi JavaOne 2006, Java'nın Bedava ve açık kaynaklı yazılım,[58] ve 25 Ekim 2006'da Oracle OpenWorld konferans, Jonathan I. Schwartz şirketin çekirdeğin piyasaya sürüldüğünü duyurmaya hazır olduğunu söyledi Java Platformu 30 ila 60 gün içinde ücretsiz ve açık kaynaklı yazılım olarak.[59]

Sun, Java HotSpot sanal makinesini ve derleyicisini ücretsiz yazılım olarak yayınladı. GNU Genel Kamu Lisansı 13 Kasım 2006'da, JDK'nın geri kalanının (JRE'yi içeren) Mart 2007'ye kadar GPL altına alınacağına söz vererek ("Sun'ın dağıtılabilir kaynak biçiminde yayınlama hakkına sahip olmadığı birkaç bileşen hariç) GPL altında ").[60] Göre Richard Stallman, bu "Java tuzağının" sona ermesi anlamına gelir.[61] Mark Shuttleworth ilk basın duyurusu olarak adlandırdı, "Dünya için gerçek bir dönüm noktası ücretsiz yazılım topluluk".[62]

Sun, kaynak kodu of Sınıf kitaplığı altında GPL Kodlarının ücretsiz bir yazılım ve açık kaynak lisansı altında yayınlanmasını istemeyen üçüncü şahıslardan Sun tarafından lisanslanan bazı sınırlı parçalar hariç, 8 Mayıs 2007 tarihinde.[63] Yüklü kısımlardan bazıları, yazı tipi oluşturma ve 2D rasterleştirme gibi platformun oldukça önemli parçaları olduğu ortaya çıktı, ancak bunlar daha sonra Sun tarafından açık kaynak olarak piyasaya sürüldü (bkz. OpenJDK Sınıf kitaplığı ).

Sun'ın amacı, tescilli ve kapalı kaynak olarak kalan parçaları alternatif uygulamalarla değiştirmek ve sınıf kitaplığını tamamen özgür ve açık kaynaklı hale getirmekti. Bu arada, bir üçüncü taraf projesi aradı Buzlu çay ipotekli kodu saplamalar veya kaynak kodlarla değiştirerek tamamen ücretsiz ve oldukça kullanışlı bir JDK oluşturdu. GNU Sınıfyolu. Ancak OpenJDK, o zamandan beri yüklü parçalar olmadan üretilebilir hale geldi (OpenJDK 6 b10'dan[64]) ve çoğu Linux dağıtımı için varsayılan çalışma ortamı haline gelmiştir.[65][66][67][68]

Haziran 2008'de, Buzlu çay 6 (OpenJDK'nin paketlenmiş sürümü olarak Fedora 9 ) geçti Teknoloji Uyumluluk Kiti test eder ve tam uyumlu bir Java 6 uygulaması olduğu iddia edilebilir.[69]

OpenJDK GPL kapsamında olduğu için, JRE'nin özel bir sürümünü doğrudan yazılım uygulamalarıyla yeniden dağıtmak mümkündür.[70][71] son kullanıcının (veya sistem yöneticisinin) tescilli Oracle JRE'nin doğru sürümünü sistemlerinin her birine indirmesini ve kurmasını zorunlu kılmak yerine.

Eleştiri

Çoğu durumda, Java desteği Web tarayıcılarında gereksizdir ve güvenlik uzmanları, kesinlikle gerekli olmadıkça bir tarayıcıda çalıştırılmamasını önerir.[72] Birkaç Web sitesi için Java gerekliyse, kullanıcıların özellikle bu siteler için ayrı bir tarayıcı kurulumuna sahip olması önerildi.[kaynak belirtilmeli ]

Jenerikler

Ne zaman jenerik Java 5.0'a eklendiğinden, zaten geniş bir sınıf çerçevesi vardı (bunların çoğu zaten kullanımdan kaldırıldı ), bu nedenle uygulanacak jenerikler silme izin vermek geçiş uyumluluğu ve bu mevcut sınıfların yeniden kullanılması. Bu, diğer bazı dillere kıyasla bu eklentinin sağlayabileceği özellikleri sınırladı.[73][74] Joker karakterlerin eklenmesi Java'yı sarsıldı.[75]

İşaretsiz tam sayı türleri

Java yerelden yoksun İşaretsiz tam sayı türleri. İmzalanmamış veriler genellikle şu dilde yazılmış programlardan oluşturulur: C ve bu türlerin olmaması, C ve Java arasında doğrudan veri alışverişini engeller. İmzalanmamış büyük sayılar, Java'nın bu görevler için kullanımını daha az elverişli hale getirebilen kriptografi dahil birçok sayısal işlem alanında da kullanılır.[76]Bu sorunu dönüştürme kodu ve daha büyük veri türleri kullanarak kısmen aşmak mümkün olsa da, imzasız verilerin işlenmesi için Java'yı kullanışsız hale getirir. 16 bitlik işaretsiz bir değeri göreceli kolaylıkla tutmak için 32 bitlik işaretli bir tamsayı kullanılabilirken, 32 bitlik işaretsiz bir değer 64 bitlik işaretli bir tamsayı gerektirecektir. Ek olarak, Java dilinde 64 bitten büyük bir tür bulunmadığından, 64 bitlik işaretsiz bir değer Java'da herhangi bir tamsayı türü kullanılarak depolanamaz. İşlevler kullanılarak soyutlanırsa, işlev çağrıları bazı diğer dillere özgü olan birçok işlem için gerekli hale gelir. Alternatif olarak, aynı boyuttaki işaretsiz tam sayıları taklit etmek için Java'nın işaretli tam sayılarını kullanmak da mümkündür, ancak bu, karmaşık bitsel işlemler hakkında ayrıntılı bilgi gerektirir.[77]

Kayan nokta aritmetiği

Java'nın kayan nokta aritmetiği büyük ölçüde IEEE 754 (İkili Kayan Nokta Aritmetiği için Standart), bazı özellikler kullanılırken bile desteklenmez. katıfp İstisna Bayrakları ve Yönlendirilmiş Yuvarlamalar gibi değiştirici - IEEE Standardı 754 tarafından zorunlu kılınan yetenekler. Ek olarak, 754'te izin verilen ve birçok işlemcide bulunan genişletilmiş hassas kayan nokta türlerine Java'da izin verilmez.[78][79]

Verim

Java'nın ilk günlerinde ( HotSpot VM 2000 yılında Java 1.3'te uygulandı) performansla ilgili bazı eleştiriler vardı. Kıyaslamalar tipik olarak Java'nın C'den (yerel koda derlenen bir dil) yaklaşık% 50 daha yavaş olduğunu bildirmiştir.[80][81][82]

Java'nın performansı önceki sürümlerden bu yana önemli ölçüde gelişmiştir.[20] Performansı JIT derleyicileri yerel derleyicilere göre bazı optimize edilmiş testlerde oldukça benzer olduğu gösterilmiştir.[20][21][22]

Java bayt kodu bir sanal makine tarafından çalışma zamanında yorumlanabilir veya yükleme sırasında veya çalışma zamanında doğrudan bilgisayarın donanımında çalışan yerel koda derlenebilir. Yorum, yerel yürütmeden daha yavaştır ve yükleme zamanında veya çalışma zamanında derlemenin, derleme için bir ilk performans cezası vardır. Modern performanslı JVM uygulamalarının tümü derleme yaklaşımını kullanır, bu nedenle ilk başlatma süresinden sonra performans yerel koda eşdeğerdir.

Güvenlik

Java platformu bir güvenlik mimarisi sağlar[83] kötü niyetli veya kötü yazılmış yazılımlara karşı koruma sağlamak için kullanıcının güvenilmeyen bayt kodunu "korumalı alanda" çalıştırmasına izin verecek şekilde tasarlanmıştır. Bu "korumalı alan" özelliğinin amacı, kötüye kullanılabilecek belirli platform özelliklerine ve API'lere erişimi kısıtlayarak kullanıcıyı korumaktır. kötü amaçlı yazılım yerel dosya sistemine erişim, rastgele komutlar çalıştırma veya iletişim ağlarına erişim gibi.

Son yıllarda araştırmacılar, güvenilmeyen kodun korumalı alan mekanizmasını atlamasına izin veren ve kullanıcıları kötü niyetli saldırılara maruz bırakan Oracle'ın da dahil olduğu bazı yaygın kullanılan Java uygulamalarında çok sayıda güvenlik açığı keşfettiler. Bu kusurlar yalnızca, genel web sitelerinden indirilen Java uygulamalarını çalıştıran web tarayıcısı eklentileri gibi, isteğe bağlı olarak güvenilmeyen bayt kodunu çalıştıran Java uygulamalarını etkiler. Kullanıcının güvendiği ve üzerinde tam kontrole sahip olduğu uygulamalar, yürütülen tüm kodlardan etkilenmez.

31 Ağustos 2012'de, Microsoft Windows'da Java 6 ve 7 (o zamanlar her ikisi de destekleniyor), OS X ve Linux'un ciddi bir güvenlik açığına sahip olduğu bulundu. uzaktan istismar sadece kötü amaçlı bir web sayfası yükleyerek gerçekleşmesi.[84] Java 5 daha sonra da kusurlu bulundu.[85]

10 Ocak 2013'te, üç bilgisayar uzmanı Java aleyhine konuşarak Reuters güvenli olmadığını ve insanların Java'yı devre dışı bırakması gerektiğini. AlienVault Labs Labs Yöneticisi Jaime Blasco, "Java bir karmaşa. Güvenli değil. Onu devre dışı bırakmanız gerekiyor." Dedi.[86]Bu güvenlik açığı etkiler Java 7 ve etkileyip etkilemediği belli değil Java 6, bu nedenle tüketicilerin bunu devre dışı bırakması önerilir.[87][88] Oracle'dan gelen güvenlik uyarıları, güvenlikle ilgili kritik yamaların Java programlarını duyurur.[89]

14 Ocak 2013'te güvenlik uzmanları, güncellemenin bilgisayarları saldırılardan korumada hala başarısız olduğunu söyledi.[90] Bu istismar deliği, Amerika Birleşik Devletleri İç Güvenlik Bakanlığı kullanıcıları Java'yı devre dışı bırakmaya veya kaldırmaya teşvik etmek.[18] Apple, Java'yı çalıştıran tüm bilgisayarlar için sınırlı sırada OS X bir virüs koruma programı aracılığıyla işletim sistemi.[91]

2014'te ve o zamanki güncel Java güvenlik ve güvenlik açığı sorunlarına yanıt veren güvenlik blog yazarı Brian Krebs kullanıcılardan en azından Java tarayıcı eklentisini ve ayrıca tüm yazılımı kaldırmalarını istedi. "Java eklentisinin olmadığı bir dünyayı dört gözle bekliyorum (ve okuyuculara üç aylık yama güncellemelerini hatırlatmak zorunda kalmayacağım) ancak bu eklentinin çeşitli sürümlerinin dünya çapındaki son kullanıcı sistemlerinden kaldırılması muhtemelen yıllar alacak."[92] "Umut vaat ettikten sonra, tarayıcıdaki kullanışlılığını geride bıraktı ve bilgisayar kullanıcıları pahasına siber suçluları sevindiren bir kabusa dönüştü."[93] "Bence herkes Java'yı tüm PC'lerinden ve Mac'lerinden kaldırmalı ve sonra tekrar eklemeleri gerekip gerekmediğini dikkatlice düşünmeli. Tipik bir ev kullanıcısıysanız, muhtemelen onsuz yapabilirsiniz. Bir işletme kullanıcısıysanız, siz seçeneği olmayabilir. "[94]

Reklam yazılımı

Java çalışma zamanı ortamı, yükleme sırasında ve yaklaşık olarak her ay yayınlanan güncellemeler sırasında varsayılan olarak yüklenecek sponsorlu yazılımları bir araya getirme geçmişine sahiptir. Bu, "Ask.com araç çubuğu "tarayıcı aramalarını reklamlara ve" McAfee Security Scan Plus "a yönlendirecektir.[95] Bu teklifler, Java Denetim Masası'ndaki bir ayar aracılığıyla engellenebilir, ancak bu açık değildir. Bu ayar, Java Denetim Masasındaki "Gelişmiş" sekmesinin altında, "Çeşitli" başlığının altında yer alır ve burada seçenek "sponsor tekliflerini" engelleme seçeneği olarak etiketlenir.

Sistemi güncelle

Java, kullanıcı müdahalesi ve yönetici hakları gerektirmeyen bir otomatik güncelleyici henüz yayınlamadı[96] Google Chrome'un aksine[97] ve Flash oynatıcı.[98]

Ayrıca bakınız

Referanslar

  1. ^ "JavaSoft, Java 1.0 ile birlikte gelir" (Basın bülteni). Web.archive.org. Arşivlenen orijinal 5 Şubat 2008. Alındı 9 Şubat 2016.
  2. ^ Ortiz, C. Enrique; Giguère, Éric (2001). Java 2 Micro Edition için Mobil Bilgi Cihazı Profili: Geliştirici Kılavuzu (PDF). John Wiley & Sons. ISBN  978-0471034650. Alındı 30 Mayıs 2012.
  3. ^ "OpenJDK 15 Güncellemeleri". Oracle Corporation. Alındı 15 Eylül 2020.
  4. ^ "OpenJDK 11 Güncellemeleri". Oracle Corporation. Alındı 8 Kasım 2020.
  5. ^ "OpenJDK 8 Güncellemeleri". Oracle Corporation. Alındı 8 Kasım 2020.
  6. ^ "JDK 16 Erken Erişim Yapıları". Oracle Corporation. Alındı 4 Aralık 2020.
  7. ^ "HotSpot Grubu". Openjdk.java.net. Alındı 9 Şubat 2016.
  8. ^ a b "Oracle JDK 8 ve JRE 8 Sertifikalı Sistem Yapılandırmaları İçeriği". Oracle.com. Nisan 8, 2014. Alındı 9 Şubat 2016.
  9. ^ "Java SE 7 Desteklenen Yerel Ayarlar". Oracle.com. Alındı 9 Şubat 2016.
  10. ^ "OpenJDK: GPLv2 + Sınıf Yolu İstisnası". Openjdk.java.net. 1 Nisan 1989. Alındı 9 Şubat 2016.
  11. ^ "Java SE için BCL". Oracle.com. 2 Nisan 2013. Alındı 9 Şubat 2016.
  12. ^ Naughton, Patrick. "Java, Objective-C'den Güçlü Bir Şekilde Etkilendi". Sanal Okul. Arşivlenen orijinal 3 Eylül 2012.
  13. ^ "Güneş Java'yı Açar". Sun Microsystems. 13 Kasım 2006. Arşivlenen orijinal 13 Mayıs 2008.
  14. ^ O'Hair Kelly (Aralık 2010). "OpenJDK7 ve OpenJDK6 İkili Fişler Mantığı Kaldırıldı". Oracle Corporation. Alındı 25 Kasım 2011.
  15. ^ "Java'nın eski sürümlerini neden sistemimden kaldırmalıyım?". www.java.com. Arşivlendi 12 Şubat 2018'deki orjinalinden. Alındı 6 Şubat 2018.
  16. ^ "Java'nın eski sürümlerini neden sistemimden kaldırmalıyım?". Oracle. Alındı 9 Eylül 2016.
  17. ^ a b "Oracle Kritik Yama Güncellemesi - Temmuz 2016". www.oracle.com.
  18. ^ a b Whittaker, Zack (11 Ocak 2013). "İç Güvenlik, sıfır gün kusurunun ortasında Java'yı devre dışı bırakması için uyardı". ZDNet. Alındı 9 Şubat 2016.
  19. ^ Alexander, Christopher. "Java SE 6 Advanced". www.oracle.com. Alındı 20 Mayıs, 2018.
  20. ^ a b c Lewis, J. P .; Neumann, Ulrich. "C ++ ile Java'nın Performansı". Grafik ve Sürükleyici Teknoloji Laboratuvarı, Güney Kaliforniya Üniversitesi.
  21. ^ a b "Java, C ++ Karşılaştırmasından Daha Hızlı". Kano.net. 14 Kasım 2003. Alındı 9 Şubat 2016.
  22. ^ a b FreeTTS - Bir Performans Örnek Olayı Arşivlendi 2009-03-25 de Wayback Makinesi, Willie Walker, Paul Lamere, Philip Kwok
  23. ^ "Bölüm 1. Giriş". docs.oracle.com.
  24. ^ www.beanshell.org
  25. ^ Southwick, Karen (1999). High Noon: the inside story of Scott McNealy and the rise of Sun Microsystems. New York [u.a.]: Wiley. pp.120–122. ISBN  0471297135.
  26. ^ a b Byous, Jon (April 2003). "Java Technology: The Early Years". Sun Microsystems. Arşivlenen orijinal 30 Mayıs 2008. Alındı 2 Ağustos 2009.
  27. ^ Southwick, Karen (1999). High Noon: the inside story of Scott McNealy and the rise of Sun Microsystems. New York [u.a.]: Wiley. s.124. ISBN  0471297135.
  28. ^ Walrath, Kathy (December 21, 2001). "Önsöz". Sun Microsystems. Alındı 2 Ağustos 2009.
  29. ^ Murphy, Kieron (4 October 1996). "So why did they decide to call it Java?". JavaWorld. Alındı 2020-07-15. 'The lawyers had told us that we couldn't use the name "OAK" because [it was already trademarked by] Oak Technologies,' said Frank Yellin, a senior engineer at Sun. 'So a brainstorming session was held to come up with ideas for a new name.'
  30. ^ "Sun Microsystems announces formation of JavaSoft" (Basın bülteni). Sun Microsystems. 9 January 1996. Archived from orijinal 2008-02-10 tarihinde.
  31. ^ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 63". Jcp.org. Alındı 9 Şubat 2016.
  32. ^ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 59". Jcp.org. Alındı 9 Şubat 2016.
  33. ^ "Version 1.5.0 or 5.0?". Java.sun.com. Alındı 9 Şubat 2016.
  34. ^ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 176". Jcp.org. Alındı 9 Şubat 2016.
  35. ^ "Java Naming". Java.com. Oracle. Alındı 25 Ağustos 2011.
  36. ^ "The Java Community Process(SM) Program - JSRs: Java Specification Requests - detail JSR# 336". Jcp.org. Alındı 9 Şubat 2016.
  37. ^ Lea, Doug (September 13, 2004). "JSRs: Java Specification Requests: JSR 166: Concurrency Utilities". Java Topluluğu Süreci. Oracle Corp.
  38. ^ "Java™ SE Development Kit 7 Update 76 Release Notes". Oracle.com. Alındı 9 Şubat 2016.
  39. ^ "Java 7 and Java 8 Releases by Date". www.java.com.
  40. ^ "Windows XP and Java". Java.com. Nisan 8, 2014. Alındı 9 Şubat 2016.
  41. ^ "java - installing JDK8 on Windows XP - advapi32.dll error". Yığın Taşması.
  42. ^ "Oracle JDK 8 and JRE 8 Certified System Configurations". www.oracle.com.
  43. ^ "Oracle JDK 10 Certified System Configurations". www.oracle.com. Alındı 27 Mart, 2018. Only X.org Mode supported. Wayland mode is unsupported.
  44. ^ "Oracle Java SE Support Roadmap". Oracle Corporation. 25 Eylül 2018. Alındı 25 Eylül 2018.
  45. ^ "JDK 11". Oracle Corporation. 25 Eylül 2018. Alındı 26 Eylül 2018.
  46. ^ "JDK 12". OpenJDK. Alındı 22 Mart, 2019.
  47. ^ "JDK 13". OpenJDK. Alındı 17 Eylül 2019.
  48. ^ "JDK 14". OpenJDK. Alındı 25 Mart, 2020.
  49. ^ "What is Java technology and why do I need it?". Arşivlenen orijinal 25 Eylül 2010. Alındı 15 Aralık 2011. Java runs on more than 850 million personal computers worldwide, and on billions of devices worldwide, including mobile and TV devices.
  50. ^ "Java - Fedora Project Wiki". fedoraproject.org.
  51. ^ Topic, Dalibor (January 27, 2016). "Moving to a plugin-free web". Oracle.
  52. ^ "Duke, Java Maskotu". Oracle. Alındı 18 Mart, 2019.
  53. ^ "duke: Project Home Page". Sun Microsystems. Arşivlenen orijinal 18 Haziran 2007. Alındı 18 Mart, 2007.
  54. ^ "Duke, Java Maskotu".
  55. ^ "Future Tech Duke (The Java Source)". Tori Wieldt. Arşivlenen orijinal 20 Ağustos 2011. Alındı 17 Ağustos 2011.
  56. ^ Smith, Donald (September 11, 2018). "Oracle JDK Releases for Java 11 and Later".
  57. ^ Stallman, Richard (May 24, 2006). "The Curious Incident of Sun in the Night-Time". Groklaw.
  58. ^ Schwartz, Jonathan. "?". Jonathan Schwartz's Blog. Sun Microsystems. Arşivlenen orijinal on July 15, 2006.
  59. ^ "Oracle OpenWorld: UnBreakable Linux / 5015.2 not on the horizon | Formtek Blog". Formtek.com. 26 Ekim 2006. Alındı 9 Şubat 2016.
  60. ^ "Oracle and Sun Microsystems | Strategic Acquisitions | Oracle". Sun.com. Alındı 9 Şubat 2016.
  61. ^ "Free but Shackled - The Java Trap - GNU Project - Free Software Foundation". Gnu.org. 12 Nisan 2004. Alındı 9 Şubat 2016.
  62. ^ "Sun 'releases' Java to the World". BBC haberleri. 13 Kasım 2006. Alındı 6 Mayıs, 2010.
  63. ^ "Open JDK is here!". Sun Microsystems. 8 Mayıs 2007. Alındı 9 Mayıs 2007.
  64. ^ Wielaard, Mark (May 30, 2007). "OpenJDK6 b10 source posted". Alındı 12 Temmuz, 2008.
  65. ^ "Redhat Java".
  66. ^ "Fedora Java".
  67. ^ "Debian Java".
  68. ^ "Ubuntu Java".
  69. ^ Sharples, Rich (June 19, 2008). "Java nihayet Ücretsiz ve Açık". Arşivlenen orijinal 20 Haziran 2008.
  70. ^ libgdx (December 9, 2013). "Bundling a jre · libgdx/libgdx Wiki · GitHub". Github.com. Alındı 9 Şubat 2016.
  71. ^ "Question about bundling custom OpenJDK". Java-Gaming.org. Alındı 9 Şubat 2016.
  72. ^ Cluley, Graham (January 15, 2013). ""Unless it is absolutely necessary to run Java in web browsers, disable it", DHS-sponsored CERT team says – Naked Security". Nakedsecurity.sophos.com. Alındı 9 Şubat 2016.
  73. ^ "Generics in Java". Object Computing, Inc. Archived from orijinal on January 2, 2007. Alındı 9 Aralık 2006.
  74. ^ "What's Wrong With Java: Type Erasure". 6 Aralık 2006. Alındı 9 Aralık 2006.
  75. ^ "Java and Scala's Type Systems are Unsound" (PDF).
  76. ^ "Java libraries should provide support for unsigned integer arithmetic". Bug Database, Sun Developer Network. Oracle. Alındı 18 Ocak 2011.
  77. ^ Owens, Sean R. (November 5, 2009). "Java and unsigned int, unsigned short, unsigned byte, unsigned long, etc. (Or rather, the lack thereof)". darksleep.com. Alındı 9 Ekim 2010.
  78. ^ Kahan, W .; Darcy, Joseph D. (March 1, 1998). "Java'nın Kayan Noktası Her Yerde Herkese Nasıl Zarar Verir" (PDF). Alındı 9 Aralık 2006.
  79. ^ "Types, Values, and Variables". Sun Microsystems. Alındı 9 Aralık 2006.
  80. ^ Which programming languages are fastest? | Computer Language Benchmarks Game Arşivlendi 14 Ağustos 2011, Wayback Makinesi
  81. ^ speed ÷ C++ GNU g++ speed | Computer Language Benchmarks Game Arşivlendi 26 Eylül 2011, at Wayback Makinesi
  82. ^ "C++ vs Java performance; It's a tie! | Blog of Christian Felde". Blog.cfelde.com. Alındı 9 Şubat 2016.
  83. ^ "Java Security Architecture: Contents". Docs.oracle.com. 2 Ekim 1998. Alındı 9 Şubat 2016.
  84. ^ Horowitz, Michael (August 31, 2012). "Java security flaw: yada yada yada | Computerworld". Blogs.computerworld.com. Arşivlenen orijinal 24 Temmuz 2014. Alındı 9 Şubat 2016.
  85. ^ Brook, Chris. "The first stop for security news". Tehdit noktası. Arşivlenen orijinal Mart 8, 2013. Alındı 9 Şubat 2016.
  86. ^ "Why and How to Disable Java on Your Computer Now - Technology & science - Innovation". NBC Haberleri. Ocak 12, 2013. Alındı 9 Şubat 2016.
  87. ^ "US Department of Homeland Security Calls On Computer Users To Disable Java". Forbes.com. Alındı 9 Şubat 2016.
  88. ^ Brook, Chris. "The first stop for security news". Tehdit noktası. Arşivlenen orijinal Nisan 9, 2013. Alındı 9 Şubat 2016.
  89. ^ "Critical Patch Updates and Security Alerts". Oracle.com. Alındı 9 Şubat 2016.
  90. ^ Finkle, Jim (January 14, 2013). "Emergency patch for Java fails to fix cybercrime holes, warn experts". Independent.ie. Alındı 9 Şubat 2016.
  91. ^ Kelly, Meghan (January 14, 2013). "Oracle issues fix for Java exploit after DHS warns of its holes". VentureBeat. Alındı 9 Şubat 2016.
  92. ^ Krebs, Brian (February 16, 2016). "Good Riddance to Oracle's Java Plugin". KrebsOnSecurity.
  93. ^ Gonsalves, Antone (September 5, 2012). "Java Is No Longer Needed. Pull The Plug-In". Okuma yazma. Wearable World.
  94. ^ "Java: should you remove it?". theguardian.com. Guardian Media Group. 8 Şubat 2013.
  95. ^ Bott, Ed. "A close look at how Oracle installs deceptive software with Java updates". ZDNet.com. ZDNet. Alındı 14 Aralık 2014.
  96. ^ "windows 7 - How do I update Java from a non-admin account?". Süper Kullanıcı.
  97. ^ "Update Google Chrome - Computer - Google Chrome Help". support.google.com.
  98. ^ "Adobe Güvenlik Bülteni". helpx.adobe.com.

Dış bağlantılar