Java sanal makinesi - Java virtual machine

Java sanal makinesi
tasarımcı Güneş Mikrosistemleri
bitler 32 bit
tanıtıldı 1994
Sürüm 15.0.3
Tip Yığın ve kayıt-kayıt
kodlama Değişken
Dallanma Karşılaştırın ve dallandırın
endianness Büyük
Açık Evet
Kayıtlar
Genel amaç Yöntem başına işlenen yığını (65535'e kadar işlenen) artı yöntem başına yerel değişkenler (65535'e kadar)
Java Sanal Makinesi Belirtimi Java SE 7 Sürümü'ne dayalı bir Java sanal makinesi (JVM) mimarisine genel bakış

Bir Java sanal makinesi ( JVM ) bir olduğu sanal makine çalıştırmak için bir bilgisayar sağlayan bir Java ile yazılmış programların yanı sıra programları diğer dillere de derlendiği Java bytecode . JVM, bir JVM uygulamasında neyin gerekli olduğunu resmi olarak açıklayan bir belirtimle detaylandırılır . Bir spesifikasyona sahip olmak, Java programlarının farklı uygulamalar arasında birlikte çalışabilirliğini sağlar, böylece Java Geliştirme Kiti'ni (JDK) kullanan program yazarlarının temel donanım platformunun kendine özgü özellikleri hakkında endişelenmesine gerek kalmaz.

JVM referans uygulaması , OpenJDK projesi tarafından açık kaynak kodu olarak geliştirilmiştir ve HotSpot adlı bir JIT derleyicisini içerir . Oracle Corporation tarafından sağlanan ticari olarak desteklenen Java sürümleri , OpenJDK çalışma zamanını temel alır. Eclipse OpenJ9 , OpenJDK için başka bir açık kaynak JVM'dir .

JVM belirtimi

Java sanal makinesi, bir belirtim tarafından tanımlanan soyut (sanal) bir bilgisayardır. Java çalışma zamanı ortamının bir parçasıdır. Kullanılan çöp toplama algoritması ve Java sanal makine talimatlarının herhangi bir dahili optimizasyonu (bunların makine koduna çevrilmesi ) belirtilmemiştir. Bu ihmalin temel nedeni, uygulayıcıları gereksiz yere kısıtlamamaktır. Herhangi bir Java uygulaması, yalnızca Java sanal makinesinin soyut belirtiminin bazı somut uygulamaları içinde çalıştırılabilir.

İle başlayan Java Platform, Standard Edition (J2SE) 5.0 altında geliştirilmiştir JVM şartnamesine değiştirir Java Community Process , 2006 JSR 924. As teklif değişiklikleri destek şartname dönüşür sınıf dosya biçimi vardır (202 JSR) JSR 924'ün bakım sürümü olarak yapılıyor. JVM belirtimi mavi kitap olarak yayınlandı , Önsöz şöyle diyor:

Biz bu şartname yeterince mümkün uyumlu temiz oda uygulamaları yapmak için Java Virtual Machine belgelemek gerektiğini düşünüyoruz. Oracle, Java Sanal Makinesi uygulamalarının düzgün çalıştığını doğrulayan testler sağlar.

Oracle'ın JVMs biri miras HotSpot, diğeri adlı BEA Systems olduğunu JRockit . Temiz oda Java uygulamaları, Kaffe , OpenJ9 ve Skelmir'in CEE-J'sini içerir . Oracle, Java ticari markasının sahibidir ve uygulama paketlerinin Oracle'ın spesifikasyonu ile tam uyumlu olduğunu onaylamak için kullanımına izin verebilir.

sınıf yükleyici

JVM bayt kodunun organizasyon birimlerinden biri sınıftır . Bir sınıf yükleyici uygulaması, Java sınıfı dosya biçimine uyan her şeyi tanıyabilmeli ve yükleyebilmelidir . Herhangi bir uygulama, sınıf dosyalarının yanı sıra diğer ikili biçimleri tanımakta serbesttir , ancak sınıf dosyalarını tanıması gerekir .

Sınıf yükleyici, bu katı sırayla üç temel aktivite gerçekleştirir:

  1. Yükleme: bir tür için ikili verileri bulur ve içe aktarır
  2. Bağlama: doğrulama, hazırlık ve (isteğe bağlı olarak) çözümleme gerçekleştirir
    • Doğrulama: içe aktarılan türün doğruluğunu sağlar
    • Hazırlık: sınıf değişkenleri için bellek ayırır ve belleği varsayılan değerlere başlatır
    • Çözünürlük: türden sembolik referansları doğrudan referanslara dönüştürür.
  3. Başlatma: sınıf değişkenlerini uygun başlangıç ​​değerlerine başlatan Java kodunu çağırır.

Genel olarak, iki tür sınıf yükleyici vardır: önyükleme sınıfı yükleyici ve kullanıcı tanımlı sınıf yükleyici.

Her Java sanal makine uygulamasının, güvenilir sınıfları yükleyebilen bir önyükleme sınıfı yükleyicisi ve bir uzantı sınıfı yükleyicisi veya uygulama sınıfı yükleyicisi olmalıdır. Java sanal makine belirtimi, bir sınıf yükleyicinin sınıfları nasıl konumlandırması gerektiğini belirtmez.

Sanal makine mimarisi

JVM, Java Sanal Makinesi spesifikasyonlarında belirtildiği gibi belirli veri türleri üzerinde çalışır. Veri türleri, ilkel türlere ( tamsayılar , Kayan nokta, uzun vb.) ve Referans türlerine ayrılabilir. Daha önceki JVM yalnızca 32 bit makineydi. 64 bit olan longve doubletürleri yerel olarak desteklenir, ancak her birim 32 bit olduğundan, bir çerçevenin yerel değişkenlerinde veya işlenen yığınında iki birim depolama kullanır. , , Ve tip tüm işaret uzatılmış (haricinde, hangi sıfır uzatılmış ) ve 32-bit tamsayı, aynı şekilde ameliyat tiplerinin. Daha küçük türler, yükleme, depolama ve tür dönüştürme için yalnızca birkaç türe özgü yönergeye sahiptir. 0 temsil eden ve 1 temsil eden 8 bitlik değerler olarak çalıştırılır . ( Java Sanal Makine Belirtimi, İkinci Baskı bu sorunu açıklığa kavuşturduğundan beri bir tür olarak ele alınsa da , derlenmiş ve yürütülen kodda , yöntem imzalarındaki ad yönetimi ve boolean dizilerinin türü dışında a ve a arasında çok az fark vardır . s in yöntem imzaları olarak mangled edilir iken ler olarak mangled olan Boole diziler tür taşırlar. fakat eleman başına 8 bit kullanabilir ve JVM hiçbir yerleşik yeteneği bir içine boole paketlemek için biraz diziden bu yüzden gerçekleştirmek ve davranırlar türü dışında, dizilerle aynıdır . Diğer tüm kullanımlarda, boolean üzerinde işlem yapmak için tüm talimatlar aynı zamanda s üzerinde çalışmak için kullanıldığından , tür JVM tarafından fiilen bilinmemektedir .) Ancak daha yeni JVM sürümleri (OpenJDK HotSpot JVM) 64-bit'i destekler, şunları yapabilirsiniz: 64 bit işletim sisteminde 32 bit/ 64 bit JVM'ye sahip. Java'yı 64 bit ortamda çalıştırmanın birincil avantajı, daha büyük adres alanıdır. Bu, çok daha büyük bir Java yığını boyutuna ve belirli türdeki büyük uygulamalar için gerekli olan artan maksimum Java İş Parçacığı sayısına izin verir, ancak 32 bit JVM'ye kıyasla 64 bit JVM kullanımında bir performans artışı vardır. booleanbyteshortcharcharintbooleanbytefalsetruebooleanbooleanbytebooleanZbyteBboolean[]bytebooleanbyte

JVM, nesneleri ve dizileri depolamak için çöp toplanmış bir yığına sahiptir. Kod, sabitler ve diğer sınıf verileri "yöntem alanında" saklanır. Yöntem alanı mantıksal olarak yığının bir parçasıdır, ancak uygulamalar yöntem alanını yığından ayrı olarak ele alabilir ve örneğin çöp toplamayabilir. Her JVM iş parçacığının , çerçeveleri depolayan kendi çağrı yığını (netlik için "Java Sanal Makine yığını" olarak adlandırılır) da vardır . Bir yöntem her çağrıldığında yeni bir çerçeve oluşturulur ve bu yöntem çıktığında çerçeve yok edilir.

Her çerçeve bir "işlenen yığını" ve bir dizi "yerel değişken" sağlar. İşlenen yığını, işlenenlerden hesaplamalara ve çağrılan bir yöntemin dönüş değerini almak için kullanılırken, yerel değişkenler kayıtlarla aynı amaca hizmet eder ve ayrıca yöntem argümanlarını iletmek için kullanılır. Bu nedenle, JVM hem küme makinesi ve bir yazmaç makinesi .

Bayt kodu talimatları

JVM, aşağıdaki görev grupları için talimatlara sahiptir :

Amaç ikili uyumluluktur. Her belirli ana bilgisayar işletim sistemi , JVM'nin ve çalışma zamanının kendi uygulamasına ihtiyaç duyar. Bu JVM'ler, bayt kodunu anlamsal olarak aynı şekilde yorumlar, ancak gerçek uygulama farklı olabilir. Yalnızca bayt kodunu taklit etmekten daha karmaşık olan , her bir ana bilgisayar işletim sistemine eşlenmesi gereken Java çekirdek API'sini uyumlu ve verimli bir şekilde uygulamaktır .

Bu talimatlar bir dizi ortak herhangi bir özel komut seti mimarisinin yerel veri türleri yerine soyutlanmış veri türleri .

JVM dilleri

JVM dili, Java Sanal Makinesi tarafından barındırılabilen geçerli bir sınıf dosyası olarak ifade edilebilen işlevselliğe sahip herhangi bir dildir. Bir sınıf dosyası, Java Sanal Makinesi talimatlarını ( Java bayt kodu ) ve bir sembol tablosunun yanı sıra diğer yardımcı bilgileri içerir. Sınıf dosya formatı, derlenmiş sınıfları ve arayüzleri temsil etmek için kullanılan donanımdan ve işletim sisteminden bağımsız ikili formattır.

Her ikisi de JVM'ye taşınan eski diller ve tamamen yeni diller olmak üzere birkaç JVM dili vardır. JRuby ve Jython , belki de sırasıyla Ruby ve Python gibi mevcut dillerin en iyi bilinen bağlantı noktalarıdır . Java bayt kodunu derlemek için sıfırdan oluşturulan yeni dillerden Clojure , Apache Groovy , Scala ve Kotlin en popülerleri olabilir. JVM dillerinin dikkate değer bir özelliği, birbirleriyle uyumlu olmalarıdır , böylece örneğin Scala kitaplıkları Java programları ile kullanılabilir ve bunun tersi de geçerlidir.

Java 7 JVM, JVM'de dinamik olarak yazılan dilleri destekleyen yeni bir özellik olan JSR 292'yi uygular : Java Platformunda Dinamik Olarak Yazılan Dilleri Destekleme . Bu özellik, misyonu JVM'yi Java dışındaki dilleri destekleyecek şekilde genişletmek olan Da Vinci Machine projesi içinde geliştirilmiştir .

Bayt kodu doğrulayıcı

Java'nın temel felsefesi, hiçbir kullanıcı programının ana makineyi çökertemeyeceği veya ana makinedeki diğer işlemlere uygunsuz bir şekilde müdahale edemeyeceği ve güvenilenlere ait belirli yöntemleri ve veri yapılarını korumanın mümkün olduğu açısından doğası gereği güvenli olmasıdır. aynı JVM içinde çalıştırılan güvenilmeyen kod tarafından erişim veya bozulma kodu. Ayrıca, genellikle veri bozulmasına veya bir dizinin sonuna erişme veya başlatılmamış bir işaretçi kullanma gibi öngörülemeyen davranışlara yol açan yaygın programcı hatalarının oluşmasına izin verilmez. Sınıf modeli, çöp toplanan yığın ve doğrulayıcı dahil olmak üzere Java'nın çeşitli özellikleri bu güvenliği sağlamak için bir araya gelir .

JVM, yürütülmeden önce tüm bayt kodunu doğrular. Bu doğrulama öncelikle üç tür kontrolden oluşur:

  • Şubeler her zaman geçerli konumlardadır
  • Veriler her zaman başlatılır ve referanslar her zaman tür açısından güvenlidir
  • Özel veya paket özel verilere ve yöntemlere erişim katı bir şekilde kontrol edilir

Bu kontrollerin ilk ikisi, öncelikle bir sınıf yüklendiğinde ve kullanıma uygun hale getirildiğinde gerçekleşen doğrulama adımında gerçekleştirilir. Üçüncüsü, bir sınıfın veri öğelerine veya yöntemlerine ilk kez başka bir sınıf tarafından erişildiğinde, öncelikle dinamik olarak gerçekleştirilir.

Doğrulayıcı, geçerli programlarda yalnızca bazı bayt kodu dizilerine izin verir, örneğin bir atlama (dal) talimatı yalnızca aynı yöntem içindeki bir talimatı hedefleyebilir . Ayrıca, doğrulayıcı, verilen herhangi bir talimatın sabit bir yığın konumunda çalışmasını sağlayarak JIT derleyicisinin yığın erişimlerini sabit kayıt erişimlerine dönüştürmesine izin verir. Bu nedenle, JVM'nin bir yığın mimarisi olması, bir JIT derleyicisi kullanılırken kayıt tabanlı mimarilerde öykünme için bir hız cezası anlamına gelmez . Kod doğrulamalı JVM mimarisi karşısında, bir JIT derleyicisi için, adlandırılmış hayali kayıtlar veya hedef mimarinin kayıtlarına tahsis edilmesi gereken hayali yığın konumları olsun fark etmez. Aslında, kod doğrulama, JVM'yi, bir JIT derleyicisi ile verimli öykünmenin daha karmaşık olduğu ve tipik olarak daha yavaş bir yorumlayıcı tarafından gerçekleştirilen klasik yığın mimarisinden farklı kılar. Ek olarak, varsayılan JVM tarafından kullanılan Yorumlayıcı, tipik bir yorumlayıcı gibi bir yığını taklit etmek yerine bayt kodunu doğrudan yerel, yazmaç tabanlı makine diline çeviren Şablon Yorumlayıcı olarak bilinen özel bir türdür (Birçok açıdan HotSpot Yorumlayıcısı Gerçek bir Yorumlayıcıdan ziyade JIT Derleyici), yani bayt kodunun hedeflediği yığın mimarisi gerçekte uygulamada kullanılmaz, ancak yalnızca yazmaç tabanlı bir mimaride iyi uygulanabilen ara temsil için bir belirtimdir (Bir yığının başka bir örneği). mimarinin yalnızca bir belirtim olması ve yazmaç tabanlı bir sanal makinede uygulanması, Common Language Runtime'dır).

Bayt kodu doğrulayıcının orijinal belirtimi, bazı açılardan eksik veya yanlış olan doğal dili kullandı. JVM'yi resmi bir sistem olarak belirtmek için bir dizi girişimde bulunulmuştur. Bunu yaparak, mevcut JVM uygulamalarının güvenliği daha kapsamlı bir şekilde analiz edilebilir ve olası güvenlik açıkları önlenebilir. Çalıştırılan uygulamanın güvenli olduğu kanıtlanırsa, gereksiz güvenlik kontrollerini atlayarak JVM'yi optimize etmek de mümkün olacaktır.

Uzak kodun güvenli yürütülmesi

Bir sanal makine mimarisi, makine içindeki kodun gerçekleştirmesine izin verilen eylemler üzerinde çok hassas kontrol sağlar. Kodun "anlamsal olarak" doğru olduğunu varsayar, yani (resmi) bayt kodu doğrulama sürecini başarıyla geçti, bir araç tarafından gerçekleştirildi, muhtemelen sanal makineden çıktı. Bu, uzak kaynaklardan güvenilmeyen kodun, Java uygulamaları tarafından kullanılan bir modelin ve diğer güvenli kod indirmelerinin güvenli bir şekilde yürütülmesine izin vermek için tasarlanmıştır . Bayt kodu doğrulandıktan sonra, indirilen kod , kullanıcıyı hatalı davranıştan veya kötü amaçlı koddan korumak için tasarlanmış kısıtlı bir " sandbox " içinde çalışır . Bayt kodu doğrulama sürecine ek olarak, yayıncılar, uygulamaları güvenli olarak dijital olarak imzalamak için bir sertifika satın alabilir ve bu sertifika , kullanıcıdan sanal alandan çıkıp yerel dosya sistemine, panoya erişmesini, harici yazılım parçalarını yürütmesini isteme izni verir . veya ağ.

Bayt kodu doğrulayıcılarının resmi kanıtı Javacard endüstrisi tarafından yapılmıştır (Java Kartı Bayt Kodu için Gömülü Doğrulayıcının Resmi Geliştirmesi)

Bayt kodu yorumlayıcısı ve tam zamanında derleyici

Her donanım mimarisi için farklı bir Java bayt kodu yorumlayıcısına ihtiyaç vardır. Bir bilgisayarda Java bayt kodu yorumlayıcısı varsa, herhangi bir Java bayt kodu programını çalıştırabilir ve aynı program, böyle bir yorumlayıcıya sahip herhangi bir bilgisayarda çalıştırılabilir.

Java bayt kodu bir yorumlayıcı tarafından yürütüldüğünde, yürütme her zaman yerel makine dilinde derlenmiş aynı programın yürütülmesinden daha yavaş olacaktır. Bu sorun, Java bayt kodunu yürütmek için tam zamanında (JIT) derleyicileri tarafından azaltılır. Bir JIT derleyicisi, programı yürütürken Java bayt kodunu yerel makine diline çevirebilir. Programın çevrilen kısımları, yorumlanabileceklerinden çok daha hızlı bir şekilde yürütülebilir. Bu teknik, bir programın sıklıkla yürütülen bölümlerine uygulanır. Bu şekilde bir JIT derleyicisi, genel yürütme süresini önemli ölçüde hızlandırabilir.

Java programlama dili ile Java bayt kodu arasında gerekli bir bağlantı yoktur. Java ile yazılmış bir program doğrudan gerçek bir bilgisayarın makine diline derlenebilir ve Java dışındaki dillerde yazılmış programlar Java bayt koduna derlenebilir.

Java bayt kodunun platformdan bağımsız ve güvenli olması amaçlanmıştır. Bazı JVM uygulamaları bir yorumlayıcı içermez, yalnızca tam zamanında derleyiciden oluşur.

Web tarayıcısında JVM

Java platformunun ömrünün başlangıcında, JVM, Zengin Web Uygulamaları oluşturmak için bir web teknolojisi olarak pazarlandı . 2018 itibariyle, web tarayıcılarını bir araya getiren çoğu web tarayıcısı ve işletim sistemi bir Java eklentisi ile birlikte gönderilmez ve Flash olmayan herhangi bir eklentinin yandan yüklenmesine izin vermez . Java tarayıcı eklentisi JDK 9'da kullanımdan kaldırıldı .

NPAPI Java tarayıcı eklentisi JVM sözde yürütmek için izin verecek şekilde tasarlanmıştır Java uygulamaları HTML sayfaları içine gömülü. Eklentinin kurulu olduğu tarayıcılar için, uygulamanın kendisine atanan sayfada dikdörtgen bir bölgeye çizim yapmasına izin verilir. Eklenti bir JVM içerdiğinden, Java uygulamaları Java programlama diliyle sınırlı değildir; JVM'yi hedefleyen herhangi bir dil eklentide çalışabilir. Kısıtlı bir API kümesi, uygulamaların kullanıcının mikrofonuna veya 3B hızlandırmasına erişmesine izin verir, ancak uygulamalar sayfayı dikdörtgen bölgesinin dışında değiştiremez. Ana rakip teknoloji olan Adobe Flash Player bu konuda da aynı şekilde çalışmaktadır.

Haziran 2015 itibariyle W3Techs'e göre Java uygulaması ve Silverlight kullanımı tüm web siteleri için %0,1'e, Flash ise %10,8'e düşmüştür.

JavaScript JVM'leri ve yorumlayıcıları

Mayıs 2016'dan itibaren JavaPoly , kullanıcıların değiştirilmemiş Java kitaplıklarını içe aktarmalarına ve bunları doğrudan JavaScript'ten çağırmalarına olanak tanır. JavaPoly, kullanıcının bilgisayarında Java yüklü olmasa bile web sitelerinin değiştirilmemiş Java kitaplıklarını kullanmasına izin verir.

JavaScript'e derleme

JavaScript yürütme hızındaki devam eden iyileştirmeler ve web tarayıcıları eklentiler için destek uygulamayan mobil cihazların artan kullanımıyla birlikte, bu kullanıcıları JavaScript'e derleme yoluyla hedefleme çabaları vardır. Kaynak kodunu veya JVM bayt kodunu JavaScript'e derlemek mümkündür.

JVM dilleri arasında evrensel olan JVM bayt kodunu derlemek, dilin mevcut derleyicisini bayt koduna eklemeye olanak tanır. JavaScript derleyicilerinin ana JVM bayt kodu, Dragome Web SDK, Bck2Brwsr ve j2js-compiler'de bulunan derleyici TeaVM'dir.

JVM dillerinden JavaScript'e önde gelen derleyiciler arasında Google Web Araç Seti , Clojurescript (Clojure), GrooScript (Apache Groovy), Scala.js (Scala) ve diğerlerinde bulunan Java-JavaScript derleyicisi bulunur .

Java Çalışma Zamanı Ortamı

Oracle tarafından yayınlanan Java Runtime Environment (JRE), bağımsız bir JVM (HotSpot), Java standart kitaplığı ( Java Sınıf Kitaplığı ), bir yapılandırma aracı ve JDK 9'da sonlandırılıncaya kadar, ücretsiz olarak kullanılabilen bir yazılım dağıtımıdır. tarayıcı eklentisi. Dizüstü ve masaüstü form faktöründe kişisel bilgisayarlara yüklenen en yaygın Java ortamıdır . JVM ile birlikte gelen özellikli telefonlar ve eski akıllı telefonlar dahil olmak üzere cep telefonlarının , Java platformunun Micro Edition'ını hedefleyen uygulamaları çalıştırmaya yönelik bir JVM içermesi muhtemeldir . Bu arada, Java uygulamalarını çalıştıran modern akıllı telefonların, tablet bilgisayarların ve diğer el bilgisayarlarının çoğu, büyük olasılıkla bunu , JVM belirtimi ile uyumlu olmayan açık kaynaklı bir sanal makine içeren Android işletim sisteminin desteğiyle yapıyor . (Bunun yerine, Google'ın Android geliştirme araçları, Java programlarını giriş ve çıkış olarak alır ; bu, Android cihazlarda sanal makine için yerel giriş biçimi olan Dalvik bayt kodudur.)

Verim

JVM belirtimi, uygulama ayrıntılarıyla ilgili olarak uygulayıcılara çok fazla hareket alanı sağlar. Java 1.3'ten beri, Oracle'dan JRE, HotSpot adında bir JVM içerir. Yüksek performanslı bir JVM olarak tasarlanmıştır.

HotSpot, kod yürütmeyi hızlandırmak için tam zamanında derlemeye güvenir. HotSpot, nesne ayırmayı ve çöp toplamayı hızlandırmak için nesil yığınını kullanır.

nesil yığın

Java sanal makinesi yığın için JVM tarafından kullanılan bellek alanıdır dinamik bellek ayırma .

HotSpot'ta yığın nesillere ayrılır :

  • Genç kuşak depolar kısa ömürlü nesneler oluşturulur ve hemen çöp toplanmaktadır.
  • Daha uzun süre devam eden nesneler eski nesle taşınır (aynı zamanda imtiyazlı nesil olarak da adlandırılır ). Bu bellek, ilk ve sonraki çöp toplamalarından kurtulan nesnelerin depolandığı (iki) Survivors alanına bölünmüştür.

Kalıcı nesil (veya PermGen ) sınıf tanımları için kullanılan ve Daimi nesil yığın bir parçası değildi meta öncesinde Java 8. ilişkiliydi. Kalıcı nesil Java 8 kaldırıldı.

Başlangıçta kalıcı bir nesil yoktu ve nesneler ve sınıflar aynı alanda bir arada depolandı. Ancak sınıf boşaltma, nesnelerin toplanmasından çok daha nadiren gerçekleştiğinden, sınıf yapılarının belirli bir alana taşınması önemli performans iyileştirmelerine izin verdi.

Güvenlik

Oracle'ın JRE'si çok sayıda bilgisayara kurulur. JRE'nin güncel olmayan bir sürümüne sahip son kullanıcılar bu nedenle bilinen birçok saldırıya karşı savunmasızdır. Bu, Java'nın doğası gereği güvensiz olduğuna dair yaygın olarak paylaşılan bir inanca yol açtı. Java 1.7'den bu yana, Oracle'ın Windows için JRE'si otomatik güncelleme işlevi içerir.

Java tarayıcı eklentisinin kullanımdan kaldırılmasından önce, herhangi bir web sayfası, kötü niyetli web sitelerine kolayca erişilebilen bir saldırı yüzeyi sağlayan bir Java uygulaması çalıştırmış olabilir . 2013'te Kaspersky Labs, Java eklentisinin bilgisayar suçluları için tercih edilen yöntem olduğunu bildirdi. Java istismarları, bilgisayar korsanlarının saldırıya uğramış web sitelerine dağıttığı birçok istismar paketine dahildir. Java uygulamaları, 25 Eylül 2018'de yayınlanan Java 11'de kaldırıldı.

Ayrıca bakınız

Referanslar

Dış bağlantılar