Kotlin ليست مجرد Java بدون getters
\n\nعندما أصدرت JetBrains لغة Kotlin في عام 2016، تعامل معها الكثيرون على أنها "قاتلة Java" أخرى. مرت ثماني سنوات - وأصبحت الآن اللغة الرئيسية لتطوير Android، ولها دور نشط في الواجهة الخلفية (بفضل Ktor و Spring Boot) وحتى في علم البيانات. لكن القوة الرئيسية لـ Kotlin هي مجتمعها. مشاريع المصادر المفتوحة بهذه اللغة ليست مجرد مجموعة من المكتبات، بل هي دروس حقيقية في الهندسة المعمارية الحديثة.
\n\nفي هذه المقالة، قمنا بتجميع أفضل مستودعات GitHub ذات المصادر المفتوحة بلغة Kotlin التي يجب على كل مطور دراستها. سترى كودًا حقيقيًا، وستفهم كيفية عمل المكتبات الشائعة، وربما تجد الإلهام لمشروعك الخاص. هيا بنا!
\n\nلماذا يجب دراسة المصادر المفتوحة بلغة Kotlin؟
\n\nقبل الغوص في القائمة، دعنا نجيب على السؤال: لماذا ننظر إلى كود الآخرين؟ أولاً، إنها أفضل طريقة لفهم idiomatic Kotlin - ليس فقط بناء الجملة، بل فلسفة اللغة. ثانيًا، غالبًا ما تحتوي مستودعات المصادر المفتوحة على أمثلة لحلول معمارية معقدة: Coroutines للبرمجة غير المتزامنة، وFlow للتدفقات التفاعلية، وSealed classes لنمذجة الحالات.
\n\nلقد اخترنا مشاريع بمستويات مختلفة - من الأدوات المساعدة الصغيرة إلى الأطر الكاملة. يمكن عمل fork لكل منها ودراستها واستخدامها كقالب لمهامك الخاصة.
\n\nأفضل مستودعات المصادر المفتوحة بلغة Kotlin
\n\n1. Ktor - إطار عمل HTTP غير متزامن
\nالمستودع: github.com/ktorio/ktor
\nإذا كنت تكتب واجهة خلفية بلغة Kotlin، فإن Ktor أمر لا غنى عنه. على عكس Spring، فهو خفيف الوزن ومعياري ويستخدم coroutines بشكل كامل. انظر كيف يبدو الخادم ببساطة:
\n\nimport io.ktor.server.engine.*\nimport io.ktor.server.netty.*\nimport io.ktor.server.routing.*\nimport io.ktor.server.response.*\n\nfun main() {\n embeddedServer(Netty, port = 8080) {\n routing {\n get("/") {\n call.respondText("Hello, Open Source!")\n }\n }\n }.start(wait = true)\n}\n\n\nهذا الكود هو خادم عامل بأقل حد. في المستودع، ستجد أمثلة مع WebSockets، والتسلسل عبر kotlinx.serialization، والتكامل مع قواعد البيانات. ادرس هيكل الوحدات - فهو يوضح كيفية تنظيم مشاريع Kotlin بشكل صحيح.
\n\n2. Kotlin Coroutines - أساس البرمجة غير المتزامنة
\nالمستودع: github.com/Kotlin/kotlinx.coroutines
\nالمستودع الرسمي من JetBrains. هنا سترى كيفية عمل launch وasync وFlow والقنوات. انتبه إلى الاختبارات - فهي مثال ممتاز لكيفية اختبار الكود غير المتزامن:
import kotlinx.coroutines.*\nimport kotlinx.coroutines.test.*\nimport org.junit.Test\n\nclass CoroutineTest {\n @Test\n fun testAsyncOperation() = runTest {\n val result = async {\n delay(1000)\n "Success"\n }\n assertEquals("Success", result.await())\n }\n}\n\n\nمن خلال دراسة هذا الكود، ستفهم كيفية عمل runTest ولماذا لا يجب الخوف من اختبار coroutines. هذا هو الأساس لأي تطبيق Kotlin حديث.
3. Koin - حقن التبعية بدون سحر
\nالمستودع: github.com/InsertKoinIO/koin
\nKoin هو إطار عمل DI خفيف الوزن لا يستخدم الانعكاس. كل شيء مبني على تركيبات DSL الخاصة بـ Kotlin. مثال على وحدة:
\n\nval myModule = module {\n single { Database() }\n factory { Repository(get()) }\n}\n\nclass MyApp : Application() {\n override fun onCreate() {\n super.onCre