لا يخفي على الجميع لغة Kotlin والتي اكتسبت شعبية كبيرة مؤخراً. حيث قامت قوقل باعتمادها رسمياً كلغة ثانية لبرمجة تطبيقات اندرويد و لغة Kotlin ليست فقط للمنصات بل ايضاً تدعم برمجة تطبيقات الويب.وخلال الأشهر الماضية تم اصدار Kotlin Native والتي تسمح لك ببرمجة كل شي تقريباً من السيرفر سايد الى المواقع والتطبيقات. وهي تعمل دون الحاجة الى VM بحيث انها تعمل مباشرةً بدون متطلبات او انظمة اضافية وهي صممت للانظمة التي لا تدعم VM كنظام IOS مثلاً او للانظمة والمبرمجين بحيث انها تستخدم LLVM وتقوم بناءً علي النظام بتحديد المتطلبات للتشغيل. مازالت Kotlin Native تحت التطوير وفي كل إصدار يتم دعم واضافة مميزات جديدة .
الأنظمة والدعم :
لغة Kotlin تدعم الان العديد من الانظمة ولعل من أهمها :
- Windows (x86_64 only at the moment)
- Linux (x86_64, arm32, MIPS, MIPS little endian)
- MacOS (x86_64)
- iOS (arm64 only)
- Android (arm32 and arm64)
- WebAssembly (wasm32 only)
” تحتاج إلى تحمبل AppCode للبدء في هذا الدرس من هنا منصة تطوير تطبيقات الايفون للماك تدعم لغتي Objective-c وايضا لغة Swift وتتعامل مع ملفات xcode ، اذا كنت طالب او معلم يمكنك الحصول على مجموعة JetBrains مجانا من هنا“
تحميل اضافة Kotlin Native :
بعد الانتهاء من تحميل AppCode وتثبيته ستقوم بتحميل إضافة Kotlin/Native for AppCode .ويتم ذلك من خلال صفحة Plugins
- من خلال قائمة AppCode | Preferences
- بعد ذلك قم باختيار Install JetBrains plugin
- ابحث عن اضافة Kotlin/Native for AppCode
- قم بتثبيتها واعادة التشغيل للبرنامج .
اول تطبيق :
عند فتح البرنامج واختيار New Project ستظهر لك قائمة كما في الاسفل . سنقوم باختيار Application ونكمل بقية الخطوات .
الان تم ضبط وتحميل المشروع ويمكن الان تشغيل التطبيق
النتيجة :
الشفرة البرمجية :
نعلم جميعاًِ ان لكل نظام SDK خاص فيه وربما قد سمعت عن cross-platform التي تدعم جميع الانظمة بشفرة برمجية واحدة . هنا الوضع يختلف مع Kotlin Native فيجب عليك ان تتعلم مكونات نظام على حدة كاندرويد او ايفون . نلاحظ في الشفرة التالية.
import kotlinx.cinterop.* import platform.Foundation.* import platform.UIKit.* @ExportObjCClass class ViewController : UIViewController { constructor(aDecoder: NSCoder) : super(aDecoder) override fun initWithCoder(aDecoder: NSCoder) = initBy(ViewController(aDecoder)) @ObjCOutlet lateinit var label: UILabel @ObjCOutlet lateinit var textField: UITextField @ObjCOutlet lateinit var button: UIButton @ObjCAction fun buttonPressed() { label.text = "Konan says: 'Hello, ${textField.text}!'" } }
نلاحظ ان class او الصنف يرث من class UIViewController وهو في IOS يعبر عن شاشة واحد ويمكن استخدام دورة حياة UIViewController .
ايضاً نلاحط Annotation ObjCOutlet وهو لربط Object مع الشاشة في storyBoard كمرجع وايضاً ObjCAction تعبيراً عن امر النقر على الازرار في الشاشة