-OpenJDK İnşa(Building) Part2-

Kerim Fırat
4 min readDec 7, 2020

Bu makalede OpenJDK inşa(build) serisinin 2.bölümü işlenecektir.
OpenJDK inşa serisinin 1.bölüm yazısı için şu linki ziyaret edebilirsiniz.

İşletim sistemi gereksinimleri

OpenJDK projesi en çok kullanılan ve bilinen işletim sistemlerinden Linux,macOS ve Windowsu destekler.Dolayısıyla tüm bu sistemlerde ve çeşitli sürümlerinde OpenJDK’yı hem inşa edebilir hem de test edip,kurup kullanabilirsiniz. Ancak günlük olarak test edilen sürümlerden ne kadar uzaklaşırsanız,sorunlarla karşılaşma olasılığınız o kadar artar. Dolalyısıyla güncel sürümlere yakın olmakta fayda var. Bu durum sadece OpenJDK ve/veya open source projelerinde değil,tüm diğer yazılım programlarında kullanıcı olarak da dikkate alınması gerekir.

Aşağıdaki tabloda,JDK oluştururken(inşa) Oracle tarafından kullanılan işletim sistemi sürümleri gösteriliyor.Bu tür bilgiler her zaman değiştirilebilir.
Bu nedenle OpenJDK geliştirici sayfasını güncel takip etmekte fayda var.

Tabloda Linux bölümünde görülen çift sürüm numaraları,işletim sisteminin daha modern bir sürümünü oluştururken eski bir sürümden başlık dosyalarının ve harici kütüphanelerin kullanıldığı Oracle’da kullanılan hibrit modelden kaynaklanmaktadır. Derleme grubunun,desteklenen derleme platformları hakkında bilgi sağladığı bir wiki sayfası da bulunuyor.
Bu wiki sayfası zaman zaman projeye katkıda bulunanlar tarafından farklı platformlarda inşa etmenin başarılarını veya başarısızlıklarını diğer katkıda bulunanlarla paylaşmak için güncellenir.
Bu nedenle ilgili wiki sayfasına sık sık göz atmanızda fayda var.

Windows:

Bu işletim sistemi için çok iç açıcı şeyler söylemeyebilirim ancak XP dışında yeni sürümlerde JDK’yı inşa edebilirsiniz. Çalışmak için bu sistemi seçtiyseniz, özel hususlar-talimatlar bölümünü dikkate almanız gerekir.

Windows,JDK tarafından desteklenen tek POSIX olmayan işletim sistemidir ve bu nedenle biraz daha ekstra özen göstermek gerekir. Windows üzerinde inşa etmek için bir POSIX destek katmanı gereklidir.
Buna bağlı olarak şu anda desteklenen tüm katmanlar sadece Cygwin ve WSL(Linux için Windows alt sistemi)’dir.

NOT: Msys,çok eski bir bash nedeniyle artık desteklenmiyor.Msys2'nin gelecekteki bir sürümde desteklenmesi muhtemeldir. Ancak bunun için biraz fazla çaba sarfetmeniz gerekecek.

Windows sisteminde çalışsanız bile derleme sisteminde tüm yollar(path) Unix tarzı yollar olarak temsil edilir.
Örnek:

C:\git\jdk\Makefile

yerine

/cygdrive/c/git/jdk/Makefile

Bu kural aynı zamanda derleme sistemine giriş için de geçerlidir.
Yani yapılandırma(configure) aşamasında da bu kural geçerlidir.
Örnek:

--with-msvcr-dll=c:\msvcr100.dll

yerine

--with-msvcr-dll=/cygdrive/c/msvcr100.dll

kullanılmalıdır.
Bununla ilgili detayları,”OpenJDK inşa” başlığında ileriki yazı dizilerimde işleyeceğiz.

Cygwin

Windows üzerinde JDK inşa etmek için işleyen bir Cygwin ortamı gereklidir.
Cygwin edinmek için bu linki kullanabilirsiniz.
Eğer 64 bit sisteme sahipseniz,Cygwin’in 64 bit sürümünü kullanmanızı şiddetle tavsiye ediyoruz.

Not:Cygwin,bir paketin belirli bir sürümünü yüklemek veya sürüme geri dönmek için bir kolay yolu bulunmuyor. Dolayısıyla tüm paketleri sürekli olarak güncelleme modeline sahiptir.Bu,Cygwin’a JDK inşa tarafında kullanılan bir paket eklediğinizde,kaldırdığınızda ve/veya güncellediğinizde,beklenmedik inşa sorunlarına neden olabilir.

JDK Gygwin’de GNU Make 4.0 veya daha üstü bir sürümü gerekli görür. Ancak Cygwin şuanda yalnızca GNU Make’i 4.0'ın üzerindeki bir sürümde dağıttığı için bu genel bir sorun olmaktan çıkıyor.
Temel Cygwin kurulumunun yanı sıra aşağıdaki paketler de sisteme kurulmalıdır.

autoconf
make
zip
unzip

Bu paketleri normal kurmanın yanı sıra aşağıdaki komutu kullanarak da kurabilirsiniz:

<Cygwin setup yolu>/setup-x86_64 -q -P autoconf -P make -P unzip -P zip

Ancak ne yazık ki Cygwin bazı durumlarda güvenilmez olabilir.
Eğer windows üzerinde derleme yaparken derleme aracı çökmeleri veya garip sorunlarla karşılaşırsanız,lütfen Cygwin FAQ sayfasını inceleyin.

Windows Subsystem for Linux (WSL)

Windows 10 1809 veya daha yenisi-günceline,wslpath yardımcı programına bağımlılık ve WSLENV aracılığıyla ortam değişkeni paylaşımı desteği nedeniyle desteklenmektedir. Aynı şekilde 1803 sürümünde de çalışabilir ancak ara sıra yapılan derleme hataları gözlemlenmiştir. Bu nedenle güncel versiyona bağlı kalmak faydalıdır.

WSL’den Windows ve Linux için binary oluşturmak mümkündür. Windows binary dosyaları oluşturmak için bir windows önyükleme JDK’sı kullanmanız gerekir. Bu JDK windows içinden windows’un erişebileceği bir dizinde olması gerekir. Linux binary dosyaları oluşturmak için bir linux önyükleme JDK kullanmalısınız.WSL de varsayılan(default) olarak windows için binary oluşturur. Ancak Linux için aşağıdaki şekilde bir yapılandırma komutu kullanmalısınız:

--build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu

Windows binary dosyaları oluşturuyorsanız,kaynak kodlar windows içinde ve erişilebilir bir dizinde bulunmalıdır. Bunun nedeni Windows çalıştırılabilir dosyaların kaynak koduna erişebilmesi gerektiğidir.
Ayrıca kaynağın depolandığı sürücü,WSL’de büyük kücük harfe duyarlı olmayacak şekilde “/etc/fstab” veya “/etc/wsl.conf” değiştirilerek monte edilmelidir. Bağlama seçenekleri değiştirilmeden önce kaynağın klonlanması durumunda ayrı dizinleri “fsutil” aracı kullanarak doğrulayabilir ve düzeltebilirsiniz. Tüm bunlara ek olarak WSL üzerinde geliştirme yapmak mümkün olsa da,test yapmanın hala tam olarak desteklenmediğini unutmayın.

NOT: Windows,WSL ve MacOS platformlarında OpenJDK geliştirme deneyimim olmadığı için bu kısımlara ek yorum yapamıyacağım.

macOS

Apple işletim sistemi ve buna bağlı tooları(Xcode) güncellemek ve bunları güncellemeye zorlamak için farklı politikalar kullanıyor.
Ne yazık ki bu durum,JDK gibi bir projenin macOS çalıştıran sürekli güncellenen bir makineye ayak uydurmasını zorlaştırıyor.Bu durumla başa çıkmak için yazı serimizdeki “Apple Xcode” bölümünü inceleyebilirsiniz.

MacOS bir sistemde çalışmaya kararlıysanız en az Mac OS X 10.13(High Sierra) kullanmanız öneriliyor. OpenJDK inşa(build) dökümantasyonun yazıldığı sırada JDK, macOS 10.12(Sierra) üzerinde başarıyla derlenmiştir.

Standart macOS ortamı JDK inşa için temel araçları içermektedir. Ancak harici kütüphaneler için bir paket yöneticisi ayrıca önerilmekdir.
JDK örneklerde homebrew kullanır ancak istediğiniz farklı bir araç kullanmaktan serbestsiniz.

Linux

JDK’yı Linux üzerinde inşa etmek genellikle problem oluşturmaz.
Tek tavsiye,kullandığınız linux dağıtımı tarafından sağlanan derleyicileri,başlık dosyaları ve harici kütüphaneleri kullanmaktır. Yani kullanacağınız harici kütüphaneler ve derleyiciler,kullandığınız linux dağıtımının sağladığı derleyiciler ve kütüphaneler olmalıdır.
Farklı dağıtımlara ait harici kütüphanelerden tedbir amaçlı uzak durmak faydalı olacaktır.

Linux,temel araçları standart işletim sisteminin bir parçası olarak bizlere sağlar.Ancak büyük olasılıkla geliştirici paketlerini yüklememiz gerekecektir.

Apt(paket yapısı) tabanlı linux dağıtımlar için(Debian,Ubuntu,vb.) aşağıdaki komutu kullanabiliriz:

sudo apt-get install build-essential

Rpm tabanlı dağıtımlar linux için(RedHat,Fedora,vb..):

sudo yum groupinstall "Development Tools"

Apline linux için temel araçların yanı sıra,bazı programların GNU sürümlerini kurmamız gerekir.Bunlar:

sudo apk add build-base bash grep zip

Dolayısıyla Linux’da oldukça zahmetsiz bir şekilde proje üzerinde çalışma yapmamız mümkün. Bu sadece OpenJDK’ya özgü bir durum değildir. Diğer sayısız Open Source projeleri yine linux üzerinde inşa etmek,katkı sağlamak ve yine open source dünyasına yeni projeler kazandırmak oldukça zahmetsiz ve keyflidir.

Makale serisinin devamı PartX olarak gelecek…

-end of

--

--

Kerim Fırat
Kerim Fırat

Written by Kerim Fırat

Senior Android Platform(AOSP,AAOS) Architect,Open Source Contributor | Turkey Java User Group Vice Chairman | Author

No responses yet