انتقل إلى المحتوى الرئيسي

TP1.1 — تثبيت Java JDK 17

الأهداف​

هذا العمل العملي سيمكنك من:

  • تثبيت JDK 17 (مجموعة تطوير جافا) على نظام التشغيل الخاص بك
  • تكوين متغيرات البيئة (JAVA_HOME, PATH)
  • التحقق من التثبيت باستخدام الأوامر java, javac و which java
  • فهم الفرق بين JDK وJRE والتوزيعات المختلفة

المدة المقدرة: 20-30 دقيقة


لماذا Java 17؟​

السببالتفاصيل
LTS (دعم طويل الأمد)دعم طويل الأمد من قبل Oracle والمجتمع (حتى 2029+)
Spring Boot 3.xالإصدار الأدنى المطلوب من Spring Boot 3
ميزات حديثةسجلات، فئات مختومة، مطابقة الأنماط، كتل نصية
الاستقرارإصدار مثبت في الإنتاج منذ 2021
أي توزيع تختار؟
  • Eclipse Temurin (Adoptium) — موصى به، مجاني، مفتوح المصدر
  • Oracle JDK — مجاني للتطوير، ترخيص تجاري في الإنتاج
  • Amazon Corretto — مجاني، مدعوم من Amazon
  • Azul Zulu — مجاني، معتمد

نوصي بـ Eclipse Temurin لهذا الدورة.


التثبيت على Windows​

🪟 انقر هنا للتثبيت على Windows (الطريقة الرسومية)

الخطوة 1: تنزيل JDK 17​

  1. اذهب إلى https://adoptium.net/
  2. اختر:
    • نظام التشغيل: Windows
    • المعمارية: x64
    • نوع الحزمة: JDK
    • الإصدار: 17 (LTS)
  3. انقر على "Latest LTS Release" لتنزيل الملف .msi

الخطوة 2: تثبيت JDK​

  1. انقر نقرًا مزدوجًا على الملف .msi الذي تم تنزيله
  2. اتبع معالج التثبيت
  3. مهم: أثناء التثبيت، حدد هذه الخيارات:
    • ✅ Add to PATH
    • ✅ Set JAVA_HOME variable
    • ✅ Associate .jar files
┌──────────────────────────────────────┐
│ Eclipse Temurin JDK 17 Setup │
│ │
│ ✅ Add to PATH │
│ ✅ Set JAVA_HOME variable │
│ ✅ Associate .jar │
│ │
│ Install to: C:\Program Files\ │
│ Eclipse Adoptium\jdk-17.0.x.x\ │
│ │
│ [Install] │
└──────────────────────────────────────┘

الخطوة 3: التحقق من التثبيت​

أغلق جميع النوافذ المفتوحة، ثم افتح PowerShell أو CMD جديد:

java -version

النتيجة المتوقعة:

openjdk version "17.0.13" 2024-10-15
OpenJDK Runtime Environment Temurin-17.0.13+11 (build 17.0.13+11)
OpenJDK 64-Bit Server VM Temurin-17.0.13+11 (build 17.0.13+11, mixed mode, sharing)
javac -version

النتيجة المتوقعة:

javac 17.0.13

الخطوة 4: التحقق من JAVA_HOME​

$env:JAVA_HOME

النتيجة المتوقعة:

C:\Program Files\Eclipse Adoptium\jdk-17.0.13.11-hotspot
where.exe java

النتيجة المتوقعة:

C:\Program Files\Eclipse Adoptium\jdk-17.0.13.11-hotspot\bin\java.exe

إذا لم يتم تعيين JAVA_HOME تلقائيًا​

  1. قائمة ابدأ → اكتب "متغيرات البيئة"
  2. انقر على "تعديل متغيرات البيئة للنظام"
  3. انقر على "متغيرات البيئة..."
  4. في متغيرات النظام، انقر على جديد:
    • الاسم: JAVA_HOME
    • القيمة: C:\Program Files\Eclipse Adoptium\jdk-17.0.13.11-hotspot
  5. ابحث عن المتغير Path → تعديل → جديد:
    • %JAVA_HOME%\bin
  6. موافق في كل مكان → إعادة تشغيل الطرفية
🪟 التثبيت على Windows باستخدام Chocolatey (بديل سريع)

إذا كان لديك Chocolatey مثبتًا:

choco install temurin17

التحقق:

java -version
javac -version
$env:JAVA_HOME
where.exe java

يقوم Chocolatey بتكوين JAVA_HOME و PATH تلقائيًا.

🪟 التثبيت على Windows باستخدام Scoop (بديل سريع)

إذا كان لديك Scoop مثبتًا:

scoop bucket add java
scoop install temurin17-jdk

التحقق:

java -version
javac -version
$env:JAVA_HOME
where.exe java

التثبيت على macOS​

🍎 التثبيت على macOS باستخدام Homebrew (موصى به)

الخطوة 1: تثبيت Homebrew (إذا لم يكن مثبتًا بالفعل)​

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

الخطوة 2: تثبيت JDK 17​

brew install --cask temurin@17

الخطوة 3: التحقق من التثبيت​

java -version

النتيجة المتوقعة:

openjdk version "17.0.13" 2024-10-15
OpenJDK Runtime Environment Temurin-17.0.13+11 (build 17.0.13+11)
OpenJDK 64-Bit Server VM Temurin-17.0.13+11 (build 17.0.13+11, mixed mode)
javac -version

النتيجة المتوقعة:

javac 17.0.13

الخطوة 4: التحقق من المسار وJAVA_HOME​

which java

النتيجة المتوقعة:

/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home/bin/java
/usr/libexec/java_home -v 17

النتيجة المتوقعة:

/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home

الخطوة 5: تكوين JAVA_HOME (دائم)​

افتح ملف تعريف shell الخاص بك:

nano ~/.zshrc

أضف في النهاية:

export JAVA_HOME=$(/usr/libexec/java_home -v 17)
export PATH=$JAVA_HOME/bin:$PATH

أعد التحميل:

source ~/.zshrc

تحقق:

echo $JAVA_HOME

النتيجة المتوقعة:

/Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home
🍎 التثبيت على macOS باستخدام SDKMAN! (بديل)

تثبيت SDKMAN!​

curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"

عرض إصدارات Java 17 المتاحة​

sdk list java | grep tem

النتيجة (مثال):

 Temurin       |     | 17.0.13      | tem    | installed  | 17.0.13-tem

التثبيت​

sdk install java 17.0.13-tem

التحقق​

java -version
which java
echo $JAVA_HOME
ميزة SDKMAN!

يسمح بتثبيت عدة إصدارات من Java والتبديل بسهولة:

sdk use java 17.0.13-tem    # استخدام Java 17
sdk use java 21.0.5-tem # التبديل إلى Java 21
sdk default java 17.0.13-tem # تعيين Java 17 كإعداد افتراضي
🍎 التثبيت على macOS يدويًا (تنزيل مباشر)

الخطوة 1: تنزيل​

  1. اذهب إلى https://adoptium.net/
  2. اختر macOS → aarch64 (Apple Silicon M1/M2/M3) أو x64 (Intel)
  3. قم بتنزيل الملف .pkg

الخطوة 2: التثبيت​

انقر نقرًا مزدوجًا على الملف .pkg واتبع المعالج.

الخطوة 3: تكوين JAVA_HOME​

echo 'export JAVA_HOME=$(/usr/libexec/java_home -v 17)' >> ~/.zshrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.zshrc
source ~/.zshrc

الخطوة 4: التحقق​

java -version
javac -version
which java
echo $JAVA_HOME

التثبيت على Linux​

🐧 Ubuntu / Debian (apt)

الخطوة 1: تحديث الحزم​

sudo apt update && sudo apt upgrade -y

الخطوة 2: تثبيت JDK 17​

الخيار A — OpenJDK من المستودعات الرسمية:

sudo apt install openjdk-17-jdk -y

الخيار B — Eclipse Temurin (موصى به للتوحيد):

sudo apt install -y wget apt-transport-https gpg

wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | \
gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null

echo "deb https://packages.adoptium.net/artifactory/deb $(lsb_release -cs) main" | \
sudo tee /etc/apt/sources.list.d/adoptium.list

sudo apt update
sudo apt install temurin-17-jdk -y

الخطوة 3: التحقق من التثبيت​

java -version

النتيجة المتوقعة:

openjdk version "17.0.13" 2024-10-15
OpenJDK Runtime Environment Temurin-17.0.13+11 (build 17.0.13+11)
OpenJDK 64-Bit Server VM Temurin-17.0.13+11 (build 17.0.13+11, mixed mode, sharing)
javac -version

النتيجة المتوقعة:

javac 17.0.13

الخطوة 4: التحقق من المسار​

which java

النتيجة المتوقعة:

/usr/bin/java
readlink -f $(which java)

النتيجة المتوقعة (تظهر المسار الحقيقي):

/usr/lib/jvm/temurin-17-jdk-amd64/bin/java

الخطوة 5: تكوين JAVA_HOME​

sudo nano /etc/environment

أضف هذا السطر:

JAVA_HOME="/usr/lib/jvm/temurin-17-jdk-amd64"

أو لـ OpenJDK:

JAVA_HOME="/usr/lib/jvm/java-17-openjdk-amd64"

أعد التحميل:

source /etc/environment
echo $JAVA_HOME
بديل — في ~/.bashrc
echo 'export JAVA_HOME=/usr/lib/jvm/temurin-17-jdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

إذا كانت هناك عدة إصدارات من Java مثبتة​

sudo update-alternatives --config java

سيعرض جميع الإصدارات المثبتة ويسمح لك بالاختيار:

يوجد 2 خيارات للبديل java.

الاختيار المسار الأولوية الحالة
------------------------------------------------------------
* 0 /usr/lib/jvm/java-21-openjdk-amd64/bin/java 2111 الوضع التلقائي
1 /usr/lib/jvm/java-17-openjdk-amd64/bin/java 1711 الوضع اليدوي
2 /usr/lib/jvm/java-21-openjdk-amd64/bin/java 2111 الوضع اليدوي

اضغط على <Enter> للاحتفاظ بالقيمة الافتراضية[*] أو اكتب الرقم المحدد: 1

نفس الشيء لـ javac:

sudo update-alternatives --config javac
🐧 Fedora / CentOS / RHEL (dnf/yum)

Fedora​

sudo dnf install java-17-openjdk-devel -y

CentOS / RHEL​

sudo yum install java-17-openjdk-devel -y

التحقق​

java -version
javac -version
which java

تكوين JAVA_HOME​

echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
echo $JAVA_HOME

اختيار الإصدار النشط​

sudo alternatives --config java
sudo alternatives --config javac
🐧 Arch Linux / Manjaro (pacman)
sudo pacman -S jdk17-openjdk

اختيار الإصدار النشط​

sudo archlinux-java status
sudo archlinux-java set java-17-openjdk

التحقق​

java -version
javac -version
which java
echo $JAVA_HOME
🐧 التثبيت باستخدام SDKMAN! (جميع التوزيعات)

تثبيت SDKMAN!​

curl -s "https://get.sdkman.io" | bash
source "$HOME/.sdkman/bin/sdkman-init.sh"

تثبيت Java 17​

sdk list java | grep tem
sdk install java 17.0.13-tem

التحقق​

java -version
javac -version
which java
echo $JAVA_HOME

إدارة عدة إصدارات​

sdk list java                      # عرض جميع الإصدارات المتاحة
sdk install java 21.0.5-tem # تثبيت Java 21 بالإضافة
sdk use java 17.0.13-tem # استخدام Java 17 لهذه الجلسة
sdk default java 17.0.13-tem # Java 17 كإعداد افتراضي
🐧 التثبيت اليدوي (تنزيل مباشر)

الخطوة 1: تنزيل​

cd /tmp
wget https://github.com/adoptium/temurin17-binaries/releases/download/jdk-17.0.13%2B11/OpenJDK17U-jdk_x64_linux_hotspot_17.0.13_11.tar.gz

الخطوة 2: استخراج​

sudo mkdir -p /usr/lib/jvm
sudo tar -xzf OpenJDK17U-jdk_x64_linux_hotspot_17.0.13_11.tar.gz -C /usr/lib/jvm

الخطوة 3: تكوين​

echo 'export JAVA_HOME=/usr/lib/jvm/jdk-17.0.13+11' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

الخطوة 4: التحقق​

java -version
javac -version
which java
echo $JAVA_HOME

التحقق النهائي (جميع أنظمة التشغيل)​

افتح طرفية جديدة ونفذ جميع هذه الأوامر:

1. إصدار Java​

java -version

✅ يجب أن يعرض openjdk version "17.0.x"

2. مترجم Java​

javac -version

✅ يجب أن يعرض javac 17.0.x

3. أين تم تثبيت Java؟​

# macOS / Linux
which java
readlink -f $(which java) # المسار الحقيقي (Linux)

# Windows PowerShell
where.exe java

4. هل تم تعيين JAVA_HOME؟​

# macOS / Linux
echo $JAVA_HOME

# Windows PowerShell
$env:JAVA_HOME

# Windows CMD
echo %JAVA_HOME%

✅ يجب أن يعرض مسارًا إلى JDK 17

5. اختبار سريع — تجميع وتشغيل برنامج​

أنشئ ملفًا Hello.java:

public class Hello {
public static void main(String[] args) {
System.out.println("Java " + System.getProperty("java.version") + " fonctionne !");
System.out.println("JAVA_HOME = " + System.getProperty("java.home"));
}
}

قم بتجميع وتشغيل:

javac Hello.java
java Hello

النتيجة المتوقعة:

Java 17.0.13 fonctionne !
JAVA_HOME = /Library/Java/JavaVirtualMachines/temurin-17.jdk/Contents/Home

نظف:

rm Hello.java Hello.class

حل المشاكل​

❌ java غير معترف به كأمر
السببالحل
Java غير مثبتاتبع خطوات التثبيت أعلاه
PATH غير مكونأضف JAVA_HOME/bin إلى PATH
الطرفية غير معاد تحميلهاأغلق وأعد فتح الطرفية

Windows: تحقق من أن %JAVA_HOME%\bin موجود في PATH النظام.

macOS/Linux: تحقق من أن ~/.zshrc أو ~/.bashrc يحتوي على:

export JAVA_HOME=...
export PATH=$JAVA_HOME/bin:$PATH
❌ إصدار Java غير صحيح معروض

إذا كان java -version يعرض Java 8 أو 11 أو 21 بدلاً من 17:

Windows:

  1. تحقق من PATH: يجب أن يظهر الإصدار 17 قبل الآخرين
  2. احذف الإصدارات القديمة من PATH

macOS:

/usr/libexec/java_home -V          # يعرض جميع الإصدارات
export JAVA_HOME=$(/usr/libexec/java_home -v 17)
java -version # يجب أن يعرض الآن 17

Linux:

sudo update-alternatives --config java    # اختر الإصدار 17
sudo update-alternatives --config javac
❌ JAVA_HOME غير معرف

Windows:

  1. قائمة ابدأ → "متغيرات البيئة"
  2. متغيرات النظام → جديد
  3. الاسم: JAVA_HOME, القيمة: C:\Program Files\Eclipse Adoptium\jdk-17.0.13.11-hotspot

macOS:

echo 'export JAVA_HOME=$(/usr/libexec/java_home -v 17)' >> ~/.zshrc
source ~/.zshrc

Linux:

echo 'export JAVA_HOME=/usr/lib/jvm/temurin-17-jdk-amd64' >> ~/.bashrc
source ~/.bashrc
❌ الفرق بين java و javac
الأمرالدورمضمن في
javaتشغيل برنامج Java مترجمJRE وJDK
javacتجميع كود المصدر .java إلى .classJDK فقط

إذا كان java يعمل ولكن ليس javac → لقد قمت بتثبيت JRE بدلاً من JDK. أعد تثبيت JDK.

❓ JDK مقابل JRE مقابل JVM — ما الفرق؟
┌─────────────────────────────────────┐
│ JDK │
│ (Java Development Kit) │
│ ┌────────────────────────────────┐ │
│ │ JRE │ │
│ │ (Java Runtime Environment) │ │
│ │ ┌──────────────────────────┐ │ │
│ │ │ JVM │ │ │
│ │ │ (Java Virtual Machine) │ │ │
│ │ │ يشغل البايت كود │ │ │
│ │ └──────────────────────────┘ │ │
│ │ + مكتبات قياسية │ │
│ │ + java (تشغيل) │ │
│ └────────────────────────────────┘ │
│ + javac (تجميع) │
│ + jdb (مصحح) │
│ + javadoc, jar, jshell... │
└─────────────────────────────────────┘
المكونما يفعلهلمن
JVMيشغل البايت كود Javaالجميع
JREJVM + مكتبات لتشغيلالمستخدمين النهائيين
JDKJRE + أدوات لتطوير (javac, jdb...)المطورين ← هذا هو المطلوب

قائمة التحقق من التحقق​

قبل الانتقال إلى العمل العملي التالي (تثبيت Maven)، تحقق من:

  • java -version يعرض 17.0.x
  • javac -version يعرض 17.0.x
  • which java (أو where.exe java) يعيد مسارًا صالحًا
  • echo $JAVA_HOME (أو $env:JAVA_HOME) معرف
  • برنامج Hello.java يتم تجميعه وتشغيله بشكل صحيح

الخطوة التالية​

تم تثبيت Java 17! انتقل الآن إلى تثبيت Maven:

➡️ العمل العملي التالي: تثبيت Maven 3.9.x


⬅️ العودة إلى الوحدة 1