জাভা রানটাইম এনভায়রনমেন্ট (JRE) ব্যবহারকারীদের কম্পিউটারে বিভিন্ন এন্টারপ্রাইজ জাভা অ্যাপ্লিকেশন চালানোর জন্য ব্যাপকভাবে ব্যবহৃত হয়। যাইহোক, কিছু অ্যাপ্লিকেশন নির্দিষ্ট জাভা ভার্সন ആপেক্ষা করে এবং অন্য ভার্সনে সঠিকভাবে কাজ নাও করতে পারে। এই আর্টিকেলে আমরা নেটওয়ার্কের কম্পিউটারগুলিতে ইনস্টল করা জাভা ভার্সন চেক করার পদ্ধতি এবং PowerShell ব্যবহার করে JRE আনইনস্টল বা আপডেট করার পদ্ধতি আলোচনা করব।
Windows-এ Java ভার্সন কীভাবে চেক করবেন?
Windows 10-এ সার্চ বক্সে java লিখে Java অ্যাপলেট চালালে আপনার কম্পিউটারে ইনস্টল করা জাভার ভার্সন নম্বর পেতে পারেন।

About Java উইন্ডোতে বর্তমান JRE ভার্সন নির্দিষ্ট থাকে। আমার ক্ষেত্রে এটি Java Version 8 Update 261 (build 1.8.0_261-b12)। JRE বিল্ডের মানটি লক্ষ্য করুন। সমস্ত জাভা ভার্সনের শুরুতে 1 থাকে, তারপর প্রধান JRE ভার্সনের নম্বর (আমার ক্ষেত্রে 8) এবং আপডেট নম্বর।

Windows Programs and Features-এও (Win+R → appwiz.cpl) বর্তমান জাভা ভার্সন চেক করা যায়।

কমান্ড প্রম্পটেও জাভা ভার্সন দেখানো যায়। cmd.exe চালু করে নিচের কমান্ডটি চালান:
java -version
java version "1.8.0_261" Java(TM) SE Runtime Environment (build 1.8.0_261-b12) Java HotSpot(TM) Client VM (build 25.261-b12, mixed mode, sharing)

PowerShell ব্যবহার করে Java ভার্সন চেক করা
PowerShell-এ আপনার কম্পিউটারে ইনস্টল করা জাভা ভার্সন চেক করতে পারেন। পরিবেশ ভেরিয়েবলে সেট করা java.exe এক্সিকিউটেবল ফাইলের ভার্সন চেক করলেই হয়। জাভা ফাইলের ভার্সন দেখানোর কমান্ড:
Get-Command Java | Select-Object Version

জাভা ভার্সন, আপডেট এবং রিলিজ নম্বরের বিস্তারিত তথ্য পেতে:
Get-Command java | Select-Object -ExpandProperty Version
Major Minor Build Revision ----- ----- ----- -------- 8 0 2610 12
স্ক্রিপ্টে ব্যবহারের জন্য জাভা ভার্সনের স্ট্রিং মান পেতে:
(Get-Command java | Select-Object -ExpandProperty Version).ToString()

WMI ক্লাস Win32_Product (Windows-এ ইনস্টল করা প্রোগ্রামের তালিকা) দিয়েও জাভা ভার্সন জানা যায়:
Get-WmiObject -Class Win32_Product -Filter "Name like '%Java%'"

IdentifyingNumber : {26A24AE4-039D-4CA4-87B4-2F32180261F0}
Name : Java 8 Update 261
Vendor : Oracle Corporation
Version : 8.0.2610.12
Caption : Java 8 Update 261
IdentifyingNumber : {4A03706F-666A-4037-7777-5F2748764D10}
Name : Java Auto Updater
Vendor : Oracle Corporation
Version : 2.8.261.12
Caption : Java Auto Updater
এই ID গুলো後來 JRE সঠিকভাবে আনইনস্টল করতে ব্যবহার করা যায়।
শুধু Java ভার্সন দেখতে (Java Auto Updater বাদ দিয়ে) নিচের কমান্ডটি ব্যবহার করুন:
Get-WmiObject -Class Win32_Product -Filter "Name like '%Java%' and not Name like '%Java Auto Updater%'" | Select -Expand Version
PowerShell – রিমোট কম্পিউটারে Java ভার্সন চেক করা
আপনার ডোমেনের সমস্ত কম্পিউটার বা সার্ভারে ব্যবহৃত জাভা ভার্সন জানতে নিচের PowerShell স্ক্রিপ্টটি ব্যবহার করুন। এটি ম্যানুয়ালি দেওয়া তালিকা বা টেক্সট ফাইল থেকে সার্ভারদের তথ্য সংগ্রহ করতে পারে। RSAT-AD-PowerShell মডিউলের Get-ADComputer কমান্ডলেট দিয়ে AD থেকে সার্ভার/কম্পিউটারের তালিকা ও নেওয়া যায়।
# PowerShell স্ক্রিপ্ট: রিমোট কম্পিউটারে Java SE (JRE) ভার্সন চেক করা
# কম্পিউটার তালিকা থেকে চেক করতে
# $computers = @('mun-sql01','mun-fs01','mun-sql02')
# টেক্সট ফাইল থেকে সার্ভার তালিকা নিতে
# $computers = Get-content C:\PS\ServerList.txt
# AD ডোমেনের সব Windows Server-এ Java ভার্সন জানতে
$computers = ((Get-ADComputer -Filter { Enabled -eq $true -and OperatingSystem -Like '*Windows Server*' }).Name)
Get-WmiObject -Class Win32_Product -ComputerName $computers -Filter "Name like '%Java%' and not Name like '%Java Auto Updater%'" | Select __Server, Version

ফলাফলে কম্পিউটার/সার্ভারের তালিকা এবং সেগুলোতে ইনস্টল করা জাভা ভার্সন সহ একটি টেবিল পাবেন। আমার ক্ষেত্রে ডোমেন কম্পিউটার চেক করার সময় ২৪টি ভিন্ন JRE ভার্সন পেয়েছিলাম!
PowerShell স্ক্রিপ্ট: সব Java ভার্সন আনইনস্টল করা
Windows-এ পুরনো জাভা ভার্সনগুলো আনইনস্টল কেন দরকার হতে পারে?
- নতুন জাভা ভার্সন ইনস্টল করার আগে সব পুরনো ভার্সন আনইনস্টল করা ভালো। অন্যান্য প্রোডাক্টের মতো জাভায়ও নতুন ফিচার যোগ হয় এবং ক্রিটিক্যাল এক্সপ্লয়েট ফিক্স হয়। পুরনো ভার্সন থাকলে কম্পিউটার পরিচিত বা ০-দিনের ব্লুনারেবিলিটির ঝুঁকিতে পড়ে। জাভার বিল্ট-ইন অটো-আপডেট মেকানিজম থাকা সত্ত্বেও এডমিনিস্ট্রেটররা ডোমেন কম্পিউটারে এটা ডিজেবল করে দিতে পারেন।
- পেইড জাভা JRE সাবস্ক্রিপশন না থাকলে। ২০১৯-এ Oracle জাভা লাইসেন্সিং নীতি পরিবর্তন করে। পুরনো Oracle JDK (Java SE) ভার্সন ব্যবহার করতে হলে পেইড সাবস্ক্রিপশন লাগে। এটা ১৬ এপ্রিল, ২০১৯ এর পরের সব Java JRE রিলিজের জন্য প্রযোজ্য (Java 8 SE Update 211 থেকে)। কমার্শিয়াল Java SE-র লং-টার্ম সাপোর্ট থাকে (রিলিজ থেকে ৫ বছর আপডেট)। ফ্রি ভার্সন হলো OpenJDK (GPL আন্ডার ডিস্ট্রিবিউটেড), কিন্তু এটিকে প্রতি ৬ মাসে আপডেট করতে হয়। OpenJDK-র অন্য একটি সমস্যা হলো Windows-এ সুবিধাজনক ইনস্টলারের অভাব। Chocolatey প্যাকেজ ম্যানেজার দিয়ে সহজে ইনস্টল করা যায়:
choco install openjdk
লোকাল কম্পিউটারে ইনস্টল করা সব জাভা ভার্সন সরাতে নিচের PowerShell স্ক্রিপ্টটি ব্যবহার করুন:
$jre_installed = Get-WmiObject -Class Win32_Product -Filter "Name like '%Java%'"
$jre_installed.Uninstall()
উপরের আনইনস্টল কমান্ড WMI-ভিত্তিক এবং ধীর গতিতে কাজ করে।
রেজিস্ট্রি থেকে ইনস্টল করা জাভা ভার্সনগুলো খুঁজে বের করে তাদের প্রোডাক্ট GUID (MSI-ভিত্তিক সফ্টওয়্যার ইনস্টলেশনের সময় জেনারেট হয়) দিয়ে আনইনস্টল করা দ্রুত হয়:
# PowerShell স্ক্রিপ্ট: কম্পিউটারে ইনস্টল করা সব Java SE (JRE) ভার্সন আনইনস্টল করা
$uninstall32 = Get-ChildItem "HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall" | ForEach-Object { Get-ItemProperty $_.PSPath } | Where-Object { $_ -like "*Java*" } | Select-Object UninstallString
$uninstall64 = Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" | ForEach-Object { Get-ItemProperty $_.PSPath } | Where-Object { $_ -like "*Java*" } | Select-Object UninstallString
# 64-বিট জাভা ভার্সন আনইনস্টল
if ($uninstall64) {
$uninstall64 = $uninstall64.UninstallString -Replace "msiexec.exe", "" -Replace "/I", "" -Replace "/X", ""
$uninstall64 = $uninstall64.Trim()
Write-Host "Uninstalling Java ..."
Start-Process "msiexec.exe" -ArgumentList "/X $uninstall64 /qb" -Wait
}
# 32-বিট জাভা ভার্সন আনইনস্টল
if ($uninstall32) {
$uninstall32 = $uninstall32.UninstallString -Replace "msiexec.exe","" -Replace "/I","" -Replace "/X",""
$uninstall32 = $uninstall32.Trim()
Write-Host "Uninstalling all Java SE versions..."
Start-Process "msiexec.exe" -ArgumentList "/X $uninstall32 /qb" -Wait
}

PowerShell দিয়ে Java JRE ডাউনলোড ও ইনস্টল করা
নিচের PowerShell স্ক্রিপ্টটি অফিসিয়াল ওয়েবসাইট থেকে লেটেস্ট জাভা ইনস্টলার অটোমেটিক্যালি ডাউনলোড করে কম্পিউটারে ইনস্টল করে (অনলাইন এবং অফলাইন ইনস্টলার দুটোই ডাউনলোড করা যায়)। ইনস্টল কমান্ড রিবুট অনুরোধ দবায় এবং অটোমেটিক জাভা আপডেট ডিজেবল করে।
ওয়েবসাইট থেকে ইনস্টলার ফাইল ডাউনলোড করতে Invoke-WebRequest কমান্ডলেট ব্যবহার করা হয়েছে। যদি আপনার কম্পিউটার প্রক্সি পিছনে থাকে, তবে PowerShell-কে প্রক্সি দিয়ে ইন্টারনেট এক্সেস করতে কনফিগার করুন।
# PowerShell স্ক্রিপ্ট: লেটেস্ট Java SE (JRE) ভার্সন অটোমেটিক্যালি ডাউনলোড ও ইনস্টল করা
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
# অনলাইন জাভা ইনস্টলার ডাউনলোড
$URL = (Invoke-WebRequest -UseBasicParsing https://www.java.com/en/download/manual.jsp).Content | ForEach-Object {
[regex]::Matches($_, '(?:<a title="Download Java software for Windows Online" href=")(.*)(?:">)').Groups[1].Value
}
# অফলাইন জাভা ইনস্টলার ডাউনলোড (কমেন্ট আউট করা আছে)
#$URL = (Invoke-WebRequest -UseBasicParsing https://www.java.com/en/download/manual.jsp).Content | ForEach-Object {
# [regex]::Matches($_, '(?:<a title="Download Java software for Windows Offline" href=")(.*)(?:">)').Groups[1].Value
#}
Invoke-WebRequest -UseBasicParsing -OutFile jre8.exe $URL
Start-Process .\jre8.exe '/s REBOOT=0 SPONSORS=0 AUTO_UPDATE=0' -Wait
echo $?
স্ক্রিপ্টের প্রথম লাইন TLS 1.2 ব্যবহার করার জন্য যোগ করা হয়েছে। অন্যথায় নিচের এরর আসত:
Invoke-WebRequest: The request was aborted: Could not create SSL/TLS secure channel.
এই স্ক্রিপ্টটি জাভা ইনস্টলেশন ফাইল অটোমেটিক্যালি ডাউনলোড করবে, jre8.exe নামে ডিস্কে সংরক্ষণ করবে এবং ইনস্টল করবে।
দুর্ভাগ্য generación, Oracle ওয়েবসাইট থেকে JRE সেটআপ ফাইল নেওয়ার এই পদ্ধতি কয়েক সপ্তাহ আগে থেকে কাজ করছে না। এখন এই পৃষ্ঠাটি কিছু .js স্ক্রিপ্ট দিয়ে জেনারেট হয়। এবং আমি জাভা ইনস্টলারের লিঙ্ক পায়নি। সম্ভবত Oracle শীঘ্রই এটা পরিবর্তন করবে।