Share via


jlink ile Java Çalışma Zamanları

Microsoft, genel amaçlı Java çalışma zamanlarının kullanılması yerine belirli uygulama gereksinimleri için hazırlanmış özel Java çalışma zamanlarının benimsenmesini onaylar ve destekler. Bu Java dağıtımı yöntemi, Java çalışma zamanının yalnızca Java platformunun uygulamaların gerçekten ihtiyaç duyduğu bölümlerini içermesini sağlar, bu nedenle hem Bulut hem de sunucu tabanlı Java uygulamaları ile masaüstü/GUI uygulamaları için güvenliği artırır, dağıtım boyutunu azaltır ve performansı geliştirir.

Oracle/Sun Microsystems, geleneksel olarak yalnızca Java Sanal Makinesi, Java API'leri ve işletim sistemi ile tarayıcıya özgü tümleştirmeler içeren Java Çalışma Zamanı Ortamı (JRE) yükleyicileri üreterek bilgisayarların İnternet'ten indirilen Java uygulamalarını çalıştırmasını veya Applets ve Java Web Başlangıç uygulamalarını tarayıcı üzerinden çalıştırmasını sağlar.

Modern web uygulamalarının ve tarayıcılarının ortaya çıkmasıyla hem Applet hem de Java Web Başlangıç teknolojileri kullanım dışı bırakıldı ve tarayıcılar artık Java eklentilerini desteklemiyor. Bilgisayarlarda önceden yüklenmiş genel amaçlı Java Çalışma Zamanı Ortamları gereksinimi daha az fazla mesaiye dönüştü. Java 9 ile Applet API'si kullanımdan kaldırıldı (bkz . JEP 289) ve Java 17 ile API kaldırılmak üzere işaretlendi, yani Java'nın gelecekteki bir sürümünde kesinlikle kaldırılacak.

Java 9 sürümüyle başlayan Java modülerleştirmesi de önemli bir değişikliktir (bkz. JSR 376). Bu değişikliğin bir parçası olarak geliştiriciler artık JDK'de çağrılan jlink yeni eklenen bir komut satırını kullanarak uygulamaların gereksinimlerine uyacak şekilde özel olarak tasarlanmış özel bir Java çalışma zamanı üretebilir ve uygulama koduyla birlikte genellikle Bulut tabanlı iş yükleri için kapsayıcı görüntüsünün bir parçası olarak dağıtılabilir. veya GUI tabanlı uygulamalar için yükleyicilerin bir parçası olarak.

Bugün Minecraft: Java Edition, oyuna eklenmiş özel bir Java çalışma zamanı ile milyonlarca Minecraft oyuncuya dağıtılır. LinkedIn, Yammer, Bing ve Azure gibi çevrimiçi hizmetler arkasında Microsoft, bu tekniği kullanarak yüz binlerce JVM de dağıtır.

Özel Java çalışma zamanı oluşturma

Java çalışma zamanı oluşturmak için ortamınızda JDK 9 veya üzeri yüklü olmalıdır. Önce OpenJDK'nin Microsoft Derlemesi'ni indirin ve yükleyin .

ile gerekli modülleri tanımlama jdeps

Java Platformu artık modüller halinde segmentlere ayrılmıştır. Tam liste için Java 17 belgelerine bakın; Java'nın diğer sürümleri yeni modüller içerebilir.

JDK aracı jdeps java modülü bağımlılıklarını, JDK iç bağımlılıklarını ve geliştiricilerin Java çalışma zamanı oluşturmasına yardımcı olacak diğer yararlı bilgileri belirlemek üzere bir JAR dosyayı, dizini veya dosyayı analiz .class etmek için kullanılabilir.

$ cat HelloWorld.java
public class HelloWorld {
  public static void main(String args[]) {
    System.out.println("Hello World!");
  }
}

$ jdeps HelloWorld.class
HelloWorld.class -> java.base
   <unnamed>                                          -> java.io                                            java.base
   <unnamed>                                          -> java.lang                                          java.base

Araçjdeps, bu sınıfın yalnızca ve java.io paketlerindeki java.lang türlere bağlı olduğunu gösterir, bu nedenle yalnızca modülüne java.baseihtiyaç duyar. Bir dosya için giriş olarak benzer bir JAR çıkış üretilebilir. Gerekli modüllerin listesiyle artık bir Java çalışma zamanı oluşturabilirsiniz.

JDK'den java çalışma zamanı oluşturmak için hangi modülleri istediğinizi bilmeniz gerekir. Bunları tanımlamak için kullanın jdeps . Komut satırı aracıyla jlink ilgili ayrıntılar için lütfen belgelere bakın.

Örneğin:

$ jlink \
         --add-modules java.base \
         --strip-debug \
         --no-man-pages \
         --no-header-files \
         --compress=2 \
         --output /javaruntime

Artık modülüne bağımlı java.base uygulama kodunu yürütmek için konumundaki /javaruntime Java çalışma zamanını kullanabilirsiniz. tarafından jlink üretilen klasörün yapısı javaruntime JDK dizin yapısına benzer ve java JVM'yi başlatmak için komut satırı aracı klasörde her zamanki gibi bulunur./bin/. Özel bir Java çalışma zamanı mevcut bir uygulamanın tüm gerekli modüllerini içerdiğinden, tarafından JAVA_HOMEbaşvurulabilir.

$ /javaruntime/bin/java HelloWorld
Hello, World!

Yukarıdaki örnekte, Windows üzerinde üretilen Java çalışma zamanı Windows üzerinde yaklaşık 24 MB tüketir.

Docker kapsayıcı görüntüsü ile Java çalışma zamanı oluşturma

Görüntü derlemenizin bir parçası olarak özel Java çalışma zamanını oluşturmak, kullanmak ve paketlemek için Docker çok aşamalı derlemelerini kullanabilirsiniz. Docker kullanarak Java çalışma zamanı oluşturmayı öğrenin.

Bilgi bankası

javax.net.ssl.SSLHandshakeException: Önemli uyarı alındı: handshake_failure

Bu sorunun nasıl çözüleceklerine ilişkin bir açıklama için Java Güvenliği ve Şifreleme'yi ziyaret edin.

Kaynaklar

OpenJDK'nin Microsoft Derlemesi hakkında geri bildirim sağlayın

OpenJDK'nin Microsoft Derlemesi'ni geliştirmemize yardımcı olmak için yorumlarınızı, düşüncelerinizi ve fikirlerinizi bize gönderin. Bize geri bildirim göndermek için GitHub'da OpenJDK tartışmaları sayfamızı ziyaret edin.

Java ve OpenJDK, Oracle’ın ve/veya bağlı kuruluşlarının ticari markaları ya da tescilli ticari markalarıdır.