JRE nedir? Java Runtime Environment'a Giriş

Java Geliştirme Kiti (JDK), Java Sanal Makinesi (JVM) ve Java Çalışma Zamanı Ortamı (JRE) birlikte, Java uygulamalarını geliştirmek ve çalıştırmak için güçlü bir Java platformu bileşenleri üçlüsü oluşturur. Daha önce JDK ve JVM'yi tanıttım. Bu hızlı öğreticide, Java için çalışma zamanı ortamı olan JRE hakkında bilgi edineceksiniz.

Pratik olarak konuşursak, çalışma zamanı ortamı , diğer yazılımları çalıştırmak için tasarlanmış bir yazılım parçasıdır. Java için çalışma zamanı ortamı olarak JRE, Java sınıfı kitaplıklarını, Java sınıf yükleyicisini ve Java Sanal Makinesi'ni içerir. Bu sistemde:

  • Sınıf yükleyici doğru sınıfları yükleme ve çekirdek Java sınıf kütüphaneleri ile bağlamak için sorumludur.
  • JVM , Java uygulamaları onlar çalıştırmak gerekiyor ve cihazınızda veya bulut ortamında iyi performans kaynaklara sahip sağlamaktan sorumludur.
  • JRE ağırlıklı bu diğer bileşenler için bir kapsayıcıdır ve onların çalışmaları yöneterek sorumludur.

İlerleyen bölümlerde bu bileşenlerin birlikte nasıl çalıştığını çok daha derinlemesine inceleyeceğiz.

JDK, JRE ve JVM'yi yükleme

Kurulum açısından bakıldığında, bir JDK'yı her indirdiğinizde, sürüm uyumlu bir JRE içerecek ve bu JRE, varsayılan bir JVM içerecektir. JRE'yi JDK'dan ayrı olarak da indirebilirsiniz ve çeşitli JVM'ler arasından seçim yapabilirsiniz. Varsayılanlar, özellikle Java ile başlarken çoğu uygulama için iyi çalışır.

Çalışma zamanı ortamı nedir?

Bir yazılım programının çalışması gerekir ve bunu yapması için bir ortama ihtiyaç duyar. Çalışma zamanı ortamı sınıf dosyalarını yükler ve bunları çalıştırmak için belleğe ve diğer sistem kaynaklarına erişim olmasını sağlar. Geçmişte çoğu yazılım, işletim sistemini (OS) çalışma zamanı ortamı olarak kullanıyordu. Program, bulunduğu bilgisayarın içinde çalışıyordu, ancak kaynak erişimi için işletim sistemi ayarlarına güveniyordu. Bu durumda kaynaklar, bellek ve program dosyaları ve bağımlılıklar gibi şeyler olacaktır. Java Runtime Environment, en azından Java programları için tüm bunları değiştirdi.

Java için WORA

İlk sunulduğunda, Java'nın "bir kez yaz, her yerde çalıştır" ilkesi devrim niteliğinde kabul edildi, ancak bugün çoğu yazılım sistemi için bir norm olarak kabul edildi.

Java Runtime Environment

Yazılıma, sistem donanımının üstüne oturan bir dizi katman olarak bakabiliriz. Her katman, üstündeki katmanlar tarafından kullanılacak (ve gerekli) hizmetler sağlar. Java Runtime Environment, bir bilgisayarın işletim sistemi üzerinde çalışan ve Java'ya özgü ek hizmetler sağlayan bir yazılım katmanıdır.

JRE, işletim sistemlerinin çeşitliliğini yumuşatarak, Java programlarının neredeyse tüm işletim sistemlerinde değişiklik yapmadan çalışmasını sağlar. Ayrıca katma değerli hizmetler de sağlar. Otomatik bellek yönetimi, JRE'nin en önemli hizmetlerinden biridir ve programcıların belleğin tahsisini ve yeniden tahsisini manuel olarak kontrol etmek zorunda kalmamalarını sağlar.

Kısacası, JRE, Java programları için bir tür meta-işletim sistemidir. Bu , temeldeki işletim sistemini Java uygulamalarını çalıştırmak için tutarlı bir platforma soyutlayan klasik bir soyutlama örneğidir .

JRE, JVM ile nasıl çalışır?

Java Sanal Makinesi, canlı Java programlarını yürütmekten sorumlu çalışan bir yazılım sistemidir. JRE, Java kodunuzu alan, onu gerekli kitaplıklarla birleştiren ve yürütmek için JVM'yi başlatan disk üstü sistemdir.

JRE, Java programlarınızın çalıştırması gereken kitaplıkları ve yazılımları içerir. Örnek olarak, Java sınıfı yükleyici, Java Runtime Environment'ın bir parçasıdır. Bu önemli yazılım parçası, derlenmiş Java kodunu belleğe yükler ve kodu uygun Java sınıfı kitaplıklarına bağlar.

Az önce anlattığım katmanlı görünümde JVM, JRE tarafından oluşturulmuştur. Paket perspektifinden bakıldığında, JRE, Şekil 1'de gösterildiği gibi JVM'yi içerir.

Matthew Tyson

JRE'yi kurma ve kullanma

JRE'nin kavramsal bir yanı olsa da, gerçek dünya pratiğinde, amacı Java programlarınızı çalıştırmak olan bir bilgisayara yüklenen yazılımdır. Bir geliştirici olarak, çoğunlukla JDK ve JVM ile çalışacaksınız çünkü bunlar Java programlarınızı geliştirmek ve çalıştırmak için kullandığınız platform bileşenleridir. Bir Java uygulaması kullanıcısı olarak, bu programları çalıştırmanıza izin veren JRE ile daha fazla ilgileneceksiniz.

Çoğu durumda, bilgisayarınız Java yüklü olarak gelir ve buna JRE de dahil edilir. Manuel olarak kurmanız veya yükseltmeniz gerekirse, Oracle'dan mevcut JRE sürümünü indirebilirsiniz.

JRE sürümleri

Java Runtime Environment, Java'nın her yeni sürümü için güncellenir ve sürüm numaraları Java platformu sürüm belirleme sistemiyle uyumludur, bu nedenle örneğin JRE 1.8, Java 8'i çalıştırır. veya Standard Edition) JRE'de durum böyle değildir. Çoğu bilgisayar, nasıl geliştirildiğine bakılmaksızın herhangi bir Java uygulamasını çalıştırabilen Java SE için geliştirilmiş bir JRE'yi çalıştırır. Çoğu mobil cihaz, mobil cihaza önceden yüklenmiş olan ve indirilemeyen Java ME için bir JRE ile birlikte gelir.

JRE kurulduktan sonra, girerek komut satırında onunla etkileşim kurabilirsiniz  java -version, bu size hangi sürümün kurulu olduğunu söyleyecektir. POSIX sistemlerinde, kurulu konumu her zaman ile kontrol edebilirsiniz which java.

Devops'ta JRE

JRE, programlarınızı çoğunlukla seçtiğiniz işletim sistemi veya IDE'de çalıştırdığı geliştirme aşamasında pek fark edilmez. JRE, izleme ve yapılandırma için kullanıldığından, geliştirme ve sistem yönetiminde biraz daha belirgin bir rol oynar.

Temel olarak JRE, bir Java uygulamasının özelliklerini yapılandırmak ve kontrol etmek için kullanacağınız "düğmeleri" sağlar. Bellek kullanımı, sistem yönetiminin temelini oluşturan en önemli örnektir. Bellek kullanımı her zaman önemli olsa da, bulut yapılandırmalarında hayati öneme sahiptir ve devops, bulut tabanlı bir teknolojidir. Devops ortamında çalışıyorsanız veya devop'lara ayrılmakla ilgileniyorsanız, Java belleğinin nasıl çalıştığını ve JRE'de nasıl izlendiğini anlamak iyi bir fikirdir.

Devops veya sysadmin?

Devops yeni bir terimdir, ancak onlarca yıldır geçerli olan bir şeyi, geliştirme ve operasyonlar arasındaki birlikte çalışabilirliği tanımlar. Bu anlamda devops , daha önce operasyonlar veya sistem yönetimi olarak adlandırılanlar için daha yeni bir terimdir. Sysadmin gibi, devops'un önemli bir yönü, yazılımı yürütmek için gerekli sistemleri yönetmektir. JRE'yi yönetmek, Java uygulamalarını çalıştıran sistemleri yönetmenin bir parçasıdır.

Java belleği ve JRE

Java belleği üç bileşenden oluşur: yığın, yığın ve meta alan (önceden permgen olarak adlandırılıyordu).

  • Metaspace , Java'nın programınızın sınıf tanımları gibi değişmeyen bilgilerini tuttuğu yerdir.
  • Yığın alanı , Java'nın değişken içeriği tuttuğu yerdir.
  • Yığın alanı , Java'nın işlev yürütmeyi ve değişken referansları depoladığı yerdir.

Java 8'de bellek yönetimi

Java 8'e kadar, metaspace permgen olarak biliniyordu. Metaspace, çok daha havalı bir isim olmasının yanı sıra, geliştiricilerin Java'nın bellek alanıyla nasıl etkileşimde bulunduğunda önemli bir değişikliktir. Önceden, java -XX:MaxPermSizepermgen alanının boyutunu izlemek için komutu kullanırdınız. Java 8'den itibaren Java, programınızın meta gereksinimlerini karşılamak için meta alanının boyutunu otomatik olarak artırır. Java 8 ayrıca MaxMetaspaceSizemetaspace boyutunu sınırlamak için kullanılabilecek yeni bir bayrak getirdi.

Diğer bellek seçenekleri, yığın ve yığın, Java 8'de aynı kalır.

Yığın alanını yapılandırma

Yığın alanı , Java bellek sisteminin en dinamik parçasıdır. Java'ya yığının ne kadar büyük başlayacağını ve ne kadar büyük olmasına izin verileceğini söylemek için -Xmsve -Xmxişaretlerini kullanabilirsiniz . Bu bayrakların belirli program ihtiyaçları için nasıl ayarlanacağını anlamak, Java'da bellek yönetiminin önemli bir yönüdür. İdeal olan, yığının en verimli çöp toplamayı elde edecek kadar büyük olmasını sağlamaktır. Yani, programın çalışmasına izin vermek için yeterli belleğe izin vermek istiyorsunuz, ancak gerekenden daha büyük olmasını istemiyorsunuz.

Yığın alanını yapılandırma

Yığın alanı , işlev çağrılarının ve değişken referanslarının sıraya alındığı yerdir. Yığın alanı, Java programlamasında en çok bilinen ikinci hatanın kaynağıdır: yığın taşması istisnası (ilki, boş işaretçi istisnasıdır). Yığın taşması istisna çok fazla bunun rezerve edilmiş çünkü yığın alanı kalmadı olduğunu gösterir. Genellikle, bir yöntem veya yöntemler birbirini döngüsel bir şekilde çağırdığında yığın taşması elde edersiniz, böylece sürekli artan sayıda işlev çağrısını yığına ayırırsınız.

-XssYığın başlangıç ​​boyutunu yapılandırmak için anahtarı kullanırsınız. Yığın daha sonra programın ihtiyaçlarına göre dinamik olarak büyür.

Java uygulaması izleme

Uygulama izleme, JVM'nin bir işlevi olsa da, JRE, izleme için gerekli temel olan yapılandırma seçeneklerini sağlar. Klasiklerden (Unix komutu gibi top), Oracle'ın altyapı izleme gibi gelişmiş uzaktan izleme çözümlerine kadar Java uygulamalarını izlemek için çeşitli araçlar mevcuttur .

Bu seçenekler arasında, çalışan bir JVM'nin incelenmesine izin veren VisualVM gibi görsel profil oluşturucular bulunur. Bu araçlar, etkin noktaları ve bellek sızıntılarını izlemenin yanı sıra, sisteminizdeki genel bellek tüketimini izlemenizi sağlar.

Sonuç

Java Runtime Environment, JVM'nin yürütmesi için Java uygulamalarını yükleyen disk üzerindeki programdır. Java Geliştirme Kiti'ni indirdiğinizde varsayılan olarak bir JRE dahil edilir ve her JRE, çekirdek Java sınıfı kitaplıklarını, bir Java sınıf yükleyicisini ve bir Java Sanal Makinesi'ni içerir. JVM, JDK ve JRE'nin, özellikle bulut ve geliştirme ortamlarında çalışmak için nasıl etkileşimde bulunduğunu anlamak faydalıdır. Bu ortamlarda JRE, izleme ve yapılandırmada geleneksel Java uygulama geliştirmeye göre daha güçlü bir rol oynar.

"JRE nedir? Java Runtime Environment'a Giriş" adlı bu hikaye ilk olarak JavaWorld tarafından yayınlanmıştır.