Kotlin: إعداد بيئة كوتلن وهيكلة المشروع

آخر تحديث: 2026-08-26

من JDK إلى Gradle، من kotlinc REPL إلى IntelliJ IDEA — جهّز بيئة تطوير كوتلن في 5 دقائق وشغّل مشروع OrderProcessor لأليس.

1. ما ستتعلمه


2. قصة مبتدئ حقيقية

(1) مشكلة: إعداد البيئة يبدو كمتاهة

أليس مطورة جديدة في الفريق. مهمة اليوم الأول: إعداد بيئة تطوير OrderProcessor. قضت 3 ساعات تصارع إصدارات JDK وتهيئة Gradle وإضافات IDE — دون تشغيل Hello World واحد.

(2) سير العمل الموحد للإعداد

BASH
# الخطوة 1: تثبيت JDK 17 (LTS)
# الخطوة 2: تثبيت IntelliJ IDEA
# الخطوة 3: إنشاء مشروع Gradle مع Kotlin DSL
# الخطوة 4: تشغيل Hello World في 5 دقائق

باتباع سير عمل موحد، أكملت أليس إعداد البيئة وشغّلت برنامجها الأول في 5 دقائق.


3. تثبيت JDK وتهيئته

(1) اختيار إصدار JDK

الإصدار النوع التوصية ملاحظات
JDK 17 LTS ⭐⭐⭐ دعم طويل المدى، الحد الأدنى لـ Spring Boot 3.x
JDK 21 LTS ⭐⭐⭐ أحدث LTS، دعم الخيوط الافتراضية
JDK 8 تراثي صيانة المشاريع القديمة، ليس للمشاريع الجديدة
JDK 11 LTS قديم ⭐⭐ إصدار انتقالي؛ المشاريع الجديدة يجب أن تستخدم 17+

(2) التثبيت ومتغيرات البيئة

BASH
# macOS (Homebrew)
brew install openjdk@17

# Ubuntu/Debian
sudo apt install openjdk-17-jdk

# Windows - حمّل من adoptium.net
# ثم عيّن متغيرات البيئة
BASH
# تحقق من التثبيت
java -version
# openjdk version "17.0.x" ...

# عيّن JAVA_HOME (أضف إلى ~/.bashrc أو ~/.zshrc)
export JAVA_HOME=$(/usr/libexec/java_home -v 17)  # macOS
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk     # Linux
100%
flowchart TD
    A[Download JDK 17] --> B[Install JDK]
    B --> C[Set JAVA_HOME]
    C --> D[Add to PATH]
    D --> E{java -version OK?}
    E -->|Yes| F[Proceed to IDE]
    E -->|No| G[Check PATH config]
    G --> C

4. تثبيت IntelliJ IDEA

(1) اختيار الإصدار

الإصدار السعر دعم كوتلن الأنسب لـ
IDEA Ultimate مدفوع كامل (Spring/KMP/Compose) مطوري المؤسسات
IDEA Community مجاني دعم كوتلن أساسي المتعلمون الفرديون
Fleet معاينة IDE الجيل القادم المتبنون الأوائل

(2) التحقق من إضافة كوتلن

TEXT 📖 للعرض فقط
IntelliJ IDEA → Settings → Plugins → Installed
  ✅ Kotlin (bundled since 2020.x)
  ✅ Gradle (bundled)
💡 تلميح: IntelliJ IDEA 2020.x والإصدارات الأحدث تأتي مع إضافة كوتلن مدمجة — لا حاجة لتثبيت يدوي.


5. إعداد مشروع Gradle Kotlin DSL

(1) هيكل المشروع

TEXT 📖 للعرض فقط
order-processor/
├── build.gradle.kts        # تهيئة البناء (Kotlin DSL)
├── settings.gradle.kts     # إعدادات المشروع
├── gradle/
│   └── wrapper/
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── src/
│   ├── main/
│   │   └── kotlin/
│   │       └── com/order/
│   │           └── Main.kt
│   └── test/
│       └── kotlin/
│           └── com/order/
│               └── MainTest.kt
└── gradlew / gradlew.bat   # سكربتات غلاف Gradle

(2) build.gradle.kts

KOTLIN
// build.gradle.kts
plugins {
    kotlin("jvm") version "1.9.22"
    application
}

group = "com.order"
version = "1.0.0"

repositories {
    mavenCentral()
}

dependencies {
    implementation(kotlin("stdlib"))
    testImplementation(kotlin("test"))
    testImplementation("org.junit.jupiter:junit-jupiter:5.10.1")
}

tasks.test {
    useJUnitPlatform()
}

application {
    mainClass.set("com.order.MainKt")
}

kotlin {
    jvmToolchain(17)
}

(3) settings.gradle.kts

KOTLIN
// settings.gradle.kts
rootProject.name = "order-processor"

6. أول برنامج كوتلن لك

(1) اكتب Main.kt

KOTLIN
// src/main/kotlin/com/order/Main.kt

fun main() {
    println("Hello, OrderProcessor!")

    val orderCount = 1_500
    val dailyRevenue = 89_500.50

    // قالب سلسلة مع تعبير
    println("Today's stats: $orderCount orders, \$$dailyRevenue USD revenue")
}

(2) مقارنة طرق التشغيل

الطريقة الأمر حالة الاستخدام
Gradle ./gradlew run معيار للمشاريع الإنتاجية
IDE انقر المثلث الأخضر التطوير والتصحيح اليومي
kotlinc kotlinc ... التغليف عبر سطر الأوامر
REPL kotlinc تفاعلي التجريب السريع

(3) المخرجات المتوقعة

TEXT 📖 للعرض فقط
Hello, OrderProcessor!
Today's stats: 1500 orders, $89500.50 USD revenue

7. ساحة REPL التفاعلية

كوتلن يتضمن REPL مدمج (حلقة القراءة-التقييم-الطباعة) مثالي لاختبار مقاطع الكود بسرعة.

BASH
$ kotlinc
Welcome to Kotlin version 1.9.22
Type :help for help, :quit for quit
>>> val orderTotal = 299.99
>>> println("Order total: \$$orderTotal USD")
Order total: $299.99 USD
>>> "ORD-${1001}".also { println(it) }
ORD-1001
>>> :quit

(1) أوامر REPL السريعة

الأمر الوظيفة
:help عرض المساعدة
:quit الخروج من REPL
:history عرض سجل الإدخال
:dump عرض الفئات المعرّفة

8. مثال كامل: تأسيس OrderProcessor لأليس

KOTLIN
// ============================================
// OrderProcessor - تأسيس المشروع
// الميزة: تهيئة المشروع مع نماذج المجال الأساسية
// ============================================

// نموذج المجال
data class Order(val id: String, val total: Double, val status: String)

// منطق الأعمال
fun calculateTax(order: Order, rate: Double = 0.08): Double {
    return order.total * rate
}

fun formatReceipt(order: Order, tax: Double): String {
    val grandTotal = order.total + tax
    return """
        |========================================
        |  Order Receipt
        |========================================
        |  Order ID  : ${order.id}
        |  Subtotal  : $${order.total} USD
        |  Tax (8%)  : $$tax USD
        |  Grand Total: $$grandTotal USD
        |  Status    : ${order.status}
        |========================================
    """.trimMargin()
}

fun main() {
    val order = Order("ORD-001", 299.99, "CONFIRMED")
    val tax = calculateTax(order)
    val receipt = formatReceipt(order, tax)
    println(receipt)

    // معالجة طلبات متعددة
    val orders = listOf(
        Order("ORD-002", 1_500.00, "PROCESSING"),
        Order("ORD-003", 45.50, "SHIPPED"),
        Order("ORD-004", 8_900.00, "CONFIRMED")
    )

    val totalRevenue = orders.sumOf { it.total }
    println("\nTotal revenue: \$$totalRevenue USD across ${orders.size} orders")
}

المخرجات:

TEXT 📖 للعرض فقط
========================================
  Order Receipt
========================================
  Order ID  : ORD-001
  Subtotal  : $299.99 USD
  Tax (8%)  : $23.999200000000002 USD
  Grand Total: $323.9892 USD
  Status    : CONFIRMED
========================================

Total revenue: $10445.5 USD across 3 orders

❓ أسئلة شائعة

س هل يجب أن أستخدم Gradle مع كوتلن؟ هل يمكنني استخدام Maven؟
ج يمكنك استخدام Maven، لكن Gradle Kotlin DSL هو التوصية الرسمية. تهيئة بناء Kotlin DSL هي نفسها كود كوتلن آمن الأنواع.
س هل يمكن لكوتلن العمل على JDK 8؟
ج نعم. كوتلن يدعم JDK 8+، لكن المشاريع الجديدة يجب أن تستخدم JDK 17 LTS لأداء أفضل ودعم ميزات أكثر.
س هل IntelliJ IDEA Community كافٍ؟
ج لتعلم Kotlin/JVM فقط، نعم. لكن تطوير Spring Boot وKMP متعدد المنصات يتطلب النسخة Ultimate.
س ماذا لو لم يُوجد أمر kotlinc؟
ج مترجم كوتلن يأتي مع IntelliJ IDEA، أو يمكنك تثبيته منفصلاً عبر sdkman أو brew.
س ما الفرق بين Gradle Kotlin DSL وGroovy DSL؟
ج Kotlin DSL يستخدم كوتلن لسكربتات البناء، مما يوفر تلميحات الأنواع والتحقق في وقت الترجمة. Groovy DSL أكثر مرونة لكنه يفتقر أمان الأنواع. Kotlin DSL موصى به للمشاريع الجديدة.
س ماذا لو ظهرت رسالة "Main class not found" في وقت التشغيل؟
ج تحقق أن mainClass في build.gradle.kts يشير لاسم الفئة الصحيح (لاحظ اللاحقة Kt: MainMainKt).

▶ مثال: التثبيت عبر sdkman

BASH
curl -s "https://get.sdkman.io" | bash
sdk install kotlin
kotlinc -version

المخرجات:

TEXT 📖 للعرض فقط
kotlinc-jvm 2.0.21 (JRE 17.0.11)

▶ مثال: إنشاء مشروع Gradle

BASH
gradle init --type kotlin-application --dsl kotlin
./gradlew run

المخرجات:

TEXT 📖 للعرض فقط
BUILD SUCCESSFUL

▶ مثال: REPL تفاعلي

KOTLIN
>>> val x = 10
>>> val y = 20
>>> x + y
30

المخرجات:

TEXT 📖 للعرض فقط
30

▶ مثال: الترجمة المباشرة بـ kotlinc

BASH
# أنشئ ملف مصدر
echo 'fun main() {
    val name = "Kotlin"
    println("Hello from $name!")
    println("2 + 2 = ${2 + 2}")
}' > Hello.kt

# ترجم ثم شغّل
kotlinc Hello.kt -include-runtime -d Hello.jar
java -jar Hello.jar

**المخرجات:

TEXT 📖 للعرض فقط
Hello from Kotlin!
2 + 2 = 4

▶ مثال: تشغيل سكربت Kotlin مباشرة

KOTLIN
// script.main.kts
val orders = listOf(
    "ORD-001" to 299.99,
    "ORD-002" to 1500.00,
    "ORD-003" to 50.00
)

orders.forEach { (id, total) ->
    println("$id: \$$total USD")
}

val total = orders.sumOf { it.second }
println("---")
println("Grand total: \$$total USD")
BASH
kotlinc -script script.main.kts

**المخرجات:

TEXT 📖 للعرض فقط
ORD-001: $299.99 USD
ORD-002: $1500.0 USD
ORD-003: $50.0 USD
---
Grand total: $1849.99 USD

▶ مثال: REPL متعدد الأسطر

KOTLIN
>>> data class Order(val id: String, val total: Double)
>>> val orders = listOf(
...     Order("A", 10.0),
...     Order("B", 20.0),
...     Order("C", 30.0)
... )
>>> orders.sumOf { it.total }
60.0
>>> orders.filter { it.total > 15.0 }.map { it.id }
[B, C]

**المخرجات:

TEXT 📖 للعرض فقط
60.0
[B, C]

▶ مثال: اختبار صحة التثبيت

KOTLIN
// verify.kt — شغّل هذا للتحقق من التثبيت
fun main() {
    val jdk = System.getProperty("java.version")
    val os = System.getProperty("os.name")
    val user = System.getProperty("user.name")

    println("=== Kotlin Environment ===")
    println("JDK: $jdk")
    println("OS: $os")
    println("User: $user")
    println("Kotlin: ${KotlinVersion.CURRENT}")
}

**المخرجات:

TEXT 📖 للعرض فقط
=== Kotlin Environment ===
JDK: 17.0.11
OS: Windows 11
User: alice
Kotlin: 1.9.22

📖 ملخص


📝 تمارين

  1. أساسي (⭐) : ثبّت JDK 17 + IntelliJ IDEA، أنشئ مشروع Gradle Kotlin DSL، وشغّل Hello World. تلميح: راجع القسم 6
  2. متوسط (⭐⭐) : عدّل build.gradle.kts لإضافة تبعية kotlinx.coroutines. تلميح: implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
  3. تحدي (⭐⭐⭐) : اكتب سكربت مع kotlinc يقرأ وسائط سطر الأوامر ويطبع ملخص طلب. تلميح: args يعطي وسائط CLI، kotlinc -script للتشغيل

← السابق | التالي ←

Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%