jlink ile Java Çalışma Zamanları
Microsoft, genel amaçlı Java çalışma zamanlarının kullanımı yerine belirli uygulama ihtiyaçları için hazırlanmış özel Java çalışma zamanlarının benimsenmesi onay ve desteklemektedir. Bu Java dağıtımı yöntemi, Java çalışma zamanının yalnızca Uygulamalar için gerçekten gerekli olan Java platformunun parçalarını içerdiğini, dolayısıyla güvenliği artırmanın, dağıtım boyutunun azaltılmasını ve hem Bulut hem de sunucu tabanlı Java uygulamaları için masaüstü/GUI uygulamalarının performansının artırılmasını sağlar.
Oracle/Sun Microsystems geleneksel olarak yalnızca Java Sanal Makinesi, Java API'leri, işletim sistemi ve tarayıcıya özgü tümleştirmeler içeren ve bilgisayarların İnternet'te indirilen Java uygulamalarını çalıştırmasını veya Applets ve Java Web Start uygulamalarını tarayıcı üzerinden çalıştırmasını hedefleyen Java Runtime Environment (JRE) yükleyicileri üretmektedir.
Modern web uygulamaları ve tarayıcıların gelişiyle, hem Applets hem de Java Web Start teknolojileri kullanım dışı kaldı ve tarayıcılar artık Java eklentilerini desteklememektedir. Bilgisayarlara önceden yüklenmiş genel amaçlı Java Çalışma Zamanı Ortamları ihtiyacı daha az fazla uzatmaya neden oldu. Java 9 ile Applet API kullanım dışı bırakıldı (bkz. JEP 289)ve Java 17 ile API kaldırılacak olarak işaretlendi. Bu, Java'nın gelecek bir yayında kaldırılacak anlamına geliyor.
Bir diğer önemli değişiklik de Java 9 sürümüyle başlayan Java'nınmodülerleştirilmesidir (bkz. JSR 376). Geliştiriciler, bu değişikliğin bir parçası olarak JDK'de yeni eklenen bir komut satırı kullanarak uygulamaların ihtiyaçlarına uyacak şekilde özel olarak tasarlanmış özel bir Java çalışma zamanı oluşturabilir ve bu çalışma zamanı genellikle Bulut tabanlı iş yükleri için bir kapsayıcı görüntüsünün parçası olarak uygulama koduyla birlikte yerleşik bir çalışma zamanı olarak jlink dağıtılabilir. veya GUI tabanlı uygulamalar için yükleyicilerin bir parçası olarak.
Bugün Minecraft: Java Edition, oyun içinde Minecraft Java çalışma zamanıyla milyonlarca kullanıcıya dağıtıldı. Microsoft çevrimiçi hizmetler LinkedIn, Yammer, Bing ve Azure gibi tüm sanal ağların arkasında bu tekniği kullanarak yüz binlerce JVM de dağıtıyor.
Özel Java çalışma zamanı oluşturma
Java çalışma zamanı oluşturmak için ortamınıza JDK 9 veya sonraki bir sürümü yüklü olmalıdır. Önce OpenJDK'nin Microsoft Build'ini indirin ve yükleyin.
ile gerekli modülleri tanımlama jdeps
Java Platformu artık modüller olarak segmentlere böldür. Tam liste için Java 17 belgelerine bakın; Diğer Java sürümleri yeni modüller içerebilir.
JDK jdeps aracı, Java modülü .class bağımlılıklarını, JDK iç bağımlılıklarını ve geliştiricilerin Java çalışma zamanları üretmelerine yardımcı olacak diğer yararlı bilgileri tanımlamak için bir dosyayı, dizini veya dosyayı analiz etmek JAR 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 paketlerinde türlerine bağlı olduğunu java.langjava.io gösterir, bu nedenle yalnızca modülüne ihtiyaç java.base vardır. Bir dosya için giriş olarak benzer bir JAR çıkış üretilebilirsiniz. Gerekli modüllerin listesiyle artık bir Java çalışma zamanı oluşturabilirsiniz.
ile Java çalışma zamanı oluşturma jlink
JDK'den bir Java çalışma zamanı oluşturmak için istediğiniz modülleri biliyor gerekir. Bunları jdeps tanımlamak için kullanın. Komut satırı jlink aracıyla ilgili ayrıntılar için lütfen jlink
Örnek:
$ jlink \
--add-modules java.base \
--strip-debug \
--no-man-pages \
--no-header-files \
--compress=2 \
--output /javaruntime
Artık modüle bağımlı uygulama kodunu yürütmek için üzerinde bulunan Java /javaruntime çalışma zamanlarını java.base kullanabilirsiniz. tarafından üretilen klasörün yapısı JDK dizin yapısına benzer ve javaruntime JVM'yi başlatmak için komut satırı aracı her zamanki jlinkjava gibi klasörde ./bin/ bulunur. Özel bir Java çalışma zamanı mevcut bir uygulamanın tüm gerekli modüllerini içerdiği için, tarafından JAVA_HOME başvurulabilirsiniz.
$ /javaruntime/bin/java HelloWorld
Hello, World!
Yukarıdaki örnekte, Windows üzerinde üretilen Java çalışma zamanı, Windows üzerinde yaklaşık 24 MB Windows.
Docker kapsayıcı görüntüsüyle Java çalışma zamanı oluşturma
Özel Java çalışma zamanını görüntü derlemenizin bir parçası olarak oluşturmak, kullanmak ve paketlemek için Docker çok aşamalı derlemeleri kullanabilirsiniz. Bkz. Docker kullanarak Java çalışma zamanları oluşturma.
Bilgi bankası
javax.net.ssl.SSLHandshakeException: Önemli uyarı alındı: handshake_failure
Güvenli bağlantı kurma girişiminde bulunan bir kitaplık kullanırken modülün Java çalışma jdk.crypto.ec zamanının içinde olduğundan emin olun. Diğer ayrıntılar için bkz. kubernetes-client/java#893.
Kaynaklar
OpenJDK'nin Microsoft Derlemesi hakkında geri bildirim sağlama
OpenJDK'nin Microsoft Derlemesi'nin iyileştirilmesine yardımcı olmak için yorumlarınızı, düşüncelerinizi ve fikirlerinizi bize gönderin. Geri bildiriminizi göndermek için openJDK tartışmaları GitHub 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.