Yazılım Geliştirme: Java modül sistemi için minimum destek

Adanali

Member
Geçtiğimiz birkaç yılda Java modül sistemi hakkında birçok farklı görüş duyduk. Çoğu geliştirici, modüllerin tanımlanmasına yönelik standartlaştırılmış seçenek konusunda olumlu olsa da, örneğin sürüm desteği gibi özelliklerin eksikliği nedeniyle tanımı eleştiren birçok eleştirel görüş vardır. Ancak bu tartışmayı burada başlatmak istemiyorum. Ben modül sisteminde pek çok avantaj görüyorum ve özellikle çerçeve ve kütüphane geliştiricilerinin tüm bu sistemi kullanmak (istemek) istediklerini anlayabiliyorum.

Duyuru








Hendrik Ebbers (@hendrikEbbers) bir Java Şampiyonudur, JCP Uzman Grubunun üyesidir ve birçok kez JavaOne Rockstar Konuşmacısı olarak tanınmıştır. Hendrik, şirketi Open Elements ile şu anda Hedera Hashgraph'ın tasarlanmasına ve hizmetlerinin halka sunulmasına yardımcı oluyor. Hendrik, JUG Dortmund ve Cyberland'in kurucu ortağıdır ve dünya çapında Java konusunda konuşmalar ve atölye çalışmaları düzenlemektedir. “JavaFX 8 Kontrollerinde Uzmanlaşmak” adlı kitabı 2014 yılında Oracle Press tarafından yayımlandı. Hendrik, JakartaEE veya Eclipse Adoptium gibi açık kaynaklı projeler üzerinde aktif olarak çalışıyor. Hendrik, AdoptOpenJDK TSC ve Eclipse Adoptium WG üyesidir.







Buradaki büyük dezavantaj, hiçbir şekilde Java modül sistemine uygun olmayan (geçişli) bir bağımlılığın, modül sisteminin tanımlarına ve kısıtlamalarına uymayabileceği ve bu nedenle modül yoluna eklenememesidir. Java modül sistemi, modül yolunda bulduğu her JAR için otomatik olarak bir modül oluşturur. Bu, genellikle kitaplıkta küçük değişiklikler yapılarak çözülebilecek bazı sorunlara yol açabilir.

Birkaç yazıda bu sorunlara daha yakından bakmak ve olası çözümlere dikkat çekmek istiyorum. Bu makale, otomatik formların kullanımına ve tanımına daha yakından bakmaktadır.

Modülleri otomatik modüller olarak kolayca uygulayın


Modül sisteminin önemli bir tanımı, her modülün benzersiz bir isme ihtiyaç duymasıdır. Bu, açıkça bildirilen modüller arasında yapılır. module-info.java ve örtülü olarak bildirilen otomatik modüller. Daha fazla bilgiyi JavaSE spesifikasyonunda bulabilirsiniz. Projenizde modüler sistemin avantajlarından yararlanamıyorsanız bir tane kullanın. module-info.java Kullanmak istiyorsanız kütüphanenizi otomatik modül olarak tanımlamanız yeterli.

Tek gereksinim, modülün benzersiz bir isme sahip olmasıdır. Gerekirse Java, modül yolundaki JAR'lar için JAR adından da bir ad çıkarabilir, ancak bu açıkça önerilmez. Özellikle otomatik bir forma isim tanımlamak gerçekten çok basit olduğundan. Sadece bu olmalı Automatic-Module-Name Mülkiyet MANIFEST.MF JAR'ın tanımı yapılabilir. Derleme aracınız olarak Maven veya Gradle kullanıyorsanız, bu aynı zamanda bir eklenti kullanılarak tamamen otomatik olarak da yapılabilir.

Aşağıdaki örnekte görebileceğiniz gibi, bir Maven yapısıyla yalnızca maven-jar eklentisini buna göre yapılandırmanız gerekir:


<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<configuration>
<archive>
<manifestEntries>
<Automatic-Module-Name>com.example.lib</Automatic-Module-Name>
</manifestEntries>
</archive>
</configuration>
</plugin>



Bunların hepsi, her Java yapısının bir parçası olması gereken Java Kitaplığı eklentisini kullanarak Gradle'da kolayca uygulanabilir. Gradle'da kullanıma yönelik ayrıntılı belgeler burada bulunabilir; aşağıdaki kod ise bir projeye basit entegrasyonu gösterir:


tasks.jar {
manifest {
attributes("Automatic-Module-Name" to "com.example.lib")
}
}



Sonraki adımlar


Değişiklikler gerçekten çok basit olduğundan her şeyi açık kaynak kütüphanelere pull request olarak sunmak için de idealdir. Bir örnekte, bir tanımlamak için bir PR'ım var. Automatic-Module-Name açık kaynaklı bir Java kütüphanesine eklendi. Belki bir açık kaynak geliştiricisi, kendi kütüphanelerinin böyle bir dönüşümü için, örneğin Hacktoberfest'e yeni gelenler tarafından uygulanabilecek bir “İyi İlk Sayı”yı okuyup oluşturacaktır.






Java 21'in piyasaya sürülmesiyle birlikte Virtual Threads kesinlikle son yılların en ilginç gelişmelerinden biri oldu. Bu küçük yardımcılar, işletim sistemi veya donanım kaynak sınırlarına ulaşmadan sayısız istemci isteğini aynı anda karşılayarak görev işlemeyi daha eşzamanlı hale getirir.

Marwan Abu-Khalil, 5 Şubat 2024'teki Virtual Threads ile Ölçeklenebilir Java Uygulamaları atölyesinde bundan nasıl yararlanılacağını, bu amaca yönelik bir mimarinin nasıl yapılandırılması gerektiğini ve hangi tuzakların ve özel durumların dikkate alınması gerektiğini anlatıyor.








(kendim)



Haberin Sonu
 
Üst