المقارنة بين لغتيّ البرمجة Java و Kotlin
< Kotlin
بعض المواضيع في Java ومعالجتها في Kotlin
عالجت لغة Kotlin العديد من المشاكل الموجودة في Java وهي:
- التحكُّم بالمرجعيّات الفارغة (null references) عبر نظام الأنواع
- لا وجود للأنواع الخامّ (raw types)
- تُعدُّ المصفوفات في Kotlin ثابتة (invariant)
- للدوال (functions) في Kotlin أنواع مناسبة وهذا ما يتعارض مع التحويلات SAM في Java
- التنوّع في موقع الاستخدام (use-site variance) دون الحاجة إلى المحارف البديلة (wildcards)
- لا وجود للاستثناءات المُتحقَّق منها (checked exceptions) في Kotlin
ما تمتاز به Java ولا تدعمه Kotlin
- الاستثناءات المُتحقَّق منها (checked exceptions)
- الأنواع الأساسيّة التي لا تُعدُّ أصنافًا
- العناصر الستاتيكيّة (static members)
- الحقول غير الخاصّة (non-private fields)
- الأنواع البديلة (wildcard-types)
- المعامل الثلاثي
a ? b : c
ما تمتاز به Kotlin ولا تدعمه Java
- تعابير lambda والدوال المباشرة (inline functions) وسينتج عنهما سويةً بُنى مخصَّصة للتحكم عالية الأداء
- الدوال الإضافيّة (extension functions)
- أمان القيم الفارغة null
- التحويلات الذكيّة (smart casts)
- قوالب السلاسل النصيّة (string templates)
- الخاصّيّات (properties)
- البواني الأساسيّة (primary constructors)
- التعميم من الصنف الأول (first-class delegation)
- تخمين (inference) نوع للمتحولات وأنواع الخاصّيّات
- نمط Singelton
- تغيّر موقع التصريح (declaration-site variance) والأنواع المُسقَطة (type projections)
- تعابير المجالات (range expressions)
- التحميل الزائد للمعاملات (operator overloading)
- الكائنات المرافقة (companion objects)
- أصناف البيانات (data classes)
- الواجهات المنفصلة للقراءة فقط (read-only) والمجموعات المتغيّرة (mutable collections)
- الروتينات المساعدة (coroutines)