Neden Java Sürümlerini Kontrol Etmek Gerekir?
Java tabanlı uygulamalar — özellikle ElasticSearch, Solr, Apache Kafka gibi sunucu yazılımları — belirli Java sürümlerine bağımlıdır. AlmaLinux sunucusunda zaman içinde birden fazla Java Development Kit (JDK) sürümü kurulu hale gelebilir; bunlar arasında çatışma yaşandığında uygulamalar başlatılamaz veya rastgele hatalar verir. Kurulu tüm Java sürümlerini görmek, hangi sürümün varsayılan olduğunu anlamak ve gereksizleri kaldırmak temizleme öncesi şarttır.Bu kısa rehber AlmaLinux 8/9 üzerinde Java envanteri çıkarmanın en güvenilir komutlarını gösterir; AIOR olarak ElasticSearch + XenForo deploy'larımızda bunu rutin olarak kullanıyoruz.
Aktif Java Sürümünü Görme
En basit kontrol:
Code:
java -version
Çıktı örneği: openjdk version "17.0.9" 2023-10-17 LTS. Bu yalnızca PATH üzerinde çağrılan aktif Java'yı gösterir; birden fazla sürüm kurulu olabilir.
Alternatives Sistemi ile Tüm Sürümleri Listeleme
AlmaLinux/RHEL ailesinde Java sürümleri alternatives sistemi ile yönetilir:
Code:
alternatives --list | grep -i java
veya tam liste:
Code:
alternatives --display java
İkinci komut tüm kurulu Java binary'lerinin tam path'lerini gösterir; "current ‘best' version is" satırı varsayılan sürümü işaret eder. Priority numarası daha yüksek olan öncelikli olur.
rpm ile Paket Sorgulama
JDK paketleri DNF ile kurulduysa rpm sorgusu çok etkilidir:
Code:
rpm -qa | grep -i jdk
rpm -qa | grep -i java
Bu komut java-1.8.0-openjdk-headless, java-11-openjdk, java-17-openjdk gibi kurulu paketleri listeler. headless sürümü grafik bileşen içermez ve sunucu kullanımında tercih edilir.
find ile Dosya Sistemi Taraması
Bazen Java manual olarak /opt altına çıkarılmış olabilir; alternatives ve rpm onu görmez:
Code:
find / -name "java" -type f 2>/dev/null
find / -name "javac" -type f 2>/dev/null
Tipik konumlar: /usr/lib/jvm/java-17-openjdk/bin/java, /opt/jdk-21/bin/java.
JAVA_HOME ve PATH Kontrolü
Uygulamaların hangi Java'yı kullanacağı çoğu zaman JAVA_HOME çevre değişkenine bağlıdır:
Code:
echo $JAVA_HOME
which java
type -a java
type -a java tüm PATH dizinlerinde "java" adında çalıştırılabilir dosya arar; birden fazla varsa hangisi daha önce gelir görürsünüz.
Varsayılan Sürümü Değiştirme
Hangi sürümün varsayılan olacağını alternatives ile interaktif seçebilirsiniz:
Code:
alternatives --config java
Liste açılır, istediğiniz sürüm numarasını girip Enter'a basın. ElasticSearch 8.x için OpenJDK 17 gerekir; ElasticSearch 7.x için OpenJDK 11 veya 17 desteklenir.
Gereksiz Sürümü Kaldırma
Kullanılmayan sürümü kaldırmak için:
Code:
sudo dnf remove java-1.8.0-openjdk
Bu komuttan önce hangi servislerin o sürüme bağımlı olduğunu kontrol edin; systemctl list-units --type=service ve servis dosyalarındaki Environment=JAVA_HOME satırlarına bakın.
Üretim Önerileri
Üretim sunucularında her zaman LTS (Long-Term Support) sürümleri kullanın: 8, 11, 17, 21. Geliştirici sürümleri (19, 20, 22) hızlı güncelleme döngüsünde güvenlik patch'leri için 6 ayda bir yenilenir. AIOR olarak ElasticSearch + XenForo barındırma müşterilerimize OpenJDK 17 LTS kuruyor ve aylık güvenlik patch'lerini biz yönetiyoruz.Why Audit Java Versions?
Java-based server software — ElasticSearch, Solr, Apache Kafka and many others — depends on specific JDK versions. Over time an AlmaLinux server can accumulate several Java installs; when they conflict, services refuse to start or fail intermittently. Listing every installed JDK, identifying the default and cleaning up unused versions is essential maintenance.This short guide shows the most reliable commands for taking a Java inventory on AlmaLinux 8/9. AIOR uses these routinely when deploying ElasticSearch + XenForo stacks.
Checking the Active Version
The simplest check:
Code:
java -version
Sample output: openjdk version "17.0.9" 2023-10-17 LTS. This shows only the Java reachable via PATH — multiple versions may be installed but invisible here.
Listing All Versions via Alternatives
The RHEL family (including AlmaLinux) manages Java versions through alternatives:
Code:
alternatives --list | grep -i java
For a fuller view:
Code:
alternatives --display java
The second command lists every installed Java binary with its full path; the "current 'best' version is" line shows the default. Higher priority numbers win.
Querying RPM Packages
If JDKs were installed via DNF, rpm queries are very effective:
Code:
rpm -qa | grep -i jdk
rpm -qa | grep -i java
This lists installed packages like java-1.8.0-openjdk-headless, java-11-openjdk, java-17-openjdk. The headless variant ships without GUI components — preferred on servers.
Scanning the Filesystem
Sometimes Java is manually extracted under /opt and won't show in alternatives or rpm:
Code:
find / -name "java" -type f 2>/dev/null
find / -name "javac" -type f 2>/dev/null
Typical locations: /usr/lib/jvm/java-17-openjdk/bin/java, /opt/jdk-21/bin/java.
Inspecting JAVA_HOME and PATH
Most apps decide which Java to use based on JAVA_HOME:
Code:
echo $JAVA_HOME
which java
type -a java
type -a java searches every PATH directory for an executable named "java" and shows the order — useful when shadowing is suspected.
Changing the Default
Switch the system default interactively:
Code:
alternatives --config java
A list appears; type the number for your chosen version. ElasticSearch 8.x needs OpenJDK 17; ElasticSearch 7.x supports 11 or 17.
Removing an Unused Version
To remove a version you no longer need:
Code:
sudo dnf remove java-1.8.0-openjdk
Before removing, check which services depend on that version — inspect systemctl list-units --type=service and look for Environment=JAVA_HOME in unit files.