Kotlin: إعداد بيئة كوتلن وهيكلة المشروع
آخر تحديث: 2026-08-26
من JDK إلى Gradle، من kotlinc REPL إلى IntelliJ IDEA — جهّز بيئة تطوير كوتلن في 5 دقائق وشغّل مشروع OrderProcessor لأليس.
1. ما ستتعلمه
- تثبيت JDK وتهيئة
JAVA_HOME - تثبيت IntelliJ IDEA مع إضافة كوتلن
- هيكل مشروع Gradle Kotlin DSL
كتابة الكود→الترجمة→التشغيل: Hello World- REPL /
kotlincكساحة تفاعلية
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
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: Main → MainKt).▶ مثال: التثبيت عبر 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
📖 ملخص
- JDK 17 LTS هو الإصدار الموصى به لتطوير كوتلن؛ يجب تهيئة
JAVA_HOME - IntelliJ IDEA يأتي مع إضافة كوتلن مدمجة وهو أفضل IDE للتطوير
- Gradle Kotlin DSL يوفر تهيئة بناء آمنة الأنواع
- نقطة دخول برنامج كوتلن هي
fun main()، لا حاجة لفئة مُغلِقة - REPL رائع للتجريب السريع والتحقق من مقاطع الكود
data class+ قوالب السلاسل + المعلمات الافتراضية تجعل الكود أكثر إيجازًا
📝 تمارين
- أساسي (⭐) : ثبّت JDK 17 + IntelliJ IDEA، أنشئ مشروع Gradle Kotlin DSL، وشغّل Hello World. تلميح: راجع القسم 6
- متوسط (⭐⭐) : عدّل
build.gradle.ktsلإضافة تبعيةkotlinx.coroutines. تلميح:implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3") - تحدي (⭐⭐⭐) : اكتب سكربت مع
kotlincيقرأ وسائط سطر الأوامر ويطبع ملخص طلب. تلميح:argsيعطي وسائط CLI،kotlinc -scriptللتشغيل