نظرة سريعة على Java مقابل Kotlin

Kotlin هي لغة برمجة جديدة من JetBrains ، صانع أفضل بيئة تطوير متكاملة في العالم.

في العام الماضي تقريبًا ، أعلنت Google عن Kotlin ، كلغة رسمية أخرى لتطوير تطبيقات Android على Google I / O’17.

في عام واحد ، هناك العديد من المقالات حول Kotlin والمطورين يهاجرون إلى Kotlin بوتيرة سريعة.

في Airtel Product Engineering ، نقوم دائمًا بتجربة التقنيات الحديثة وتطبيقها في منتجاتنا. فيما يلي تحليلي على Kotlin.

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

لنبدأ مع بعض من المفضلات الحالية.

  1. تحديد المتغيرات:

في Java ، لدينا نهائي لـ Read Only Variable.

// جافا
شار النهائي = 'ألف' ؛ // قراءة فقط `شار` النوع
char b = 'B'؛ // Mutable `Char` Type
b = 'C' ؛

في Kotlin ، لدينا val لـ Read Only Variable & var for Mutable Variable.

// KOTLIN
val a = 'A' // Read Only `Char` type is inferred
var b = 'B' // تم استنتاج نوع Mutable `Char`
ب = "ج"

2. قوالب السلسلة:

في Java ، استخدمنا String.format لتنسيق سلاسل

// جافا
كثافة العمليات = 20 ؛
final String t1 = String.format ("Amy age is٪ d"، a)؛
أ = 25 ؛
final String t2 = String.format ("٪ s ، الآن هو٪ d." ، t1.replace ("is"، "كان")، a)؛

في Kotlin ، يمكننا استخدام التعبير في القالب.

// KOTLIN
فار = 20
val t1 = "عمر إيمي هو $ أ"
أ = 25
val t2 = "$ {t1.replace (" is "،" was ")} ، الآن $ a."

نرى الفرق ، Kotlin هو الكثير من القراءة ونظيفة.

3. سلامة خالية (أنواع لاغية وأنواع غير خالية)

في Java ، كل شيء افتراضيًا باطل. لذلك ، كنا بحاجة إلى العديد من الشيكات لتجنب NPE

// جافا
اسم السلسلة = لاغ

// طريقة آمنة لتجنب NPE
إذا (خالية! = الاسم) {
    طول الطول = name.length () ؛
}
// رميات NPE
int length2 = name.length () ؛

يهدف نظام Kotlin إلى القضاء على خطر وجود أي إشارات خالية من الكود ، والمعروف أيضًا باسم خطأ مليار دولار.

سلسلة عادية لا يمكن أن تكون خالية ، ولكن للسماح بسلسلة خالية ، يجب أن نعطي النوع مثل سلسلة؟

// KOTLIN
اسم فال: String = "Java"
name = null // Compiler Error
فال اسم العائلة: سلسلة؟ = "كوتلين"
اسم العائلة = فارغة / يعمل بشكل جيد

أثناء الوصول إلى خصائص المتغيرات ، لن تقوم String العادية برمي NPE ولكن String؟ سوف رمي NPE.

هناك بعض الطرق لتجنب ذلك:

  • باستخدام إذا ، تحقق عادي
// عادي تحقق
val val = if (lastName! = null) lastName.length else -1
  • باستخدام SafeCall؟ المشغل (واحد من أفضل الميزات في Kotlin)
// Safe Call
val length = lastName؟ .length // Output: lastName length or null

هذا بإرجاع lastName.length ، إذا لم يكن lastName خاليًا ، أو خاليًا. مكالمات آمنة؟ مفيدة حقًا في سلسلة من المراجع مثل emp؟ .addr. .house إذا كانت أي من الخصائص خالية ، فستُرجع خالية ، لكن ليس NPE.

إذا كنا لا نريد العودة خالية ، ونريد إرجاع بعض القيمة الافتراضية. يمكننا استخدام الفيس المشغل؟

// باستخدام الفيس المشغل
val length = lastName؟ .length؟: -1 // Output: lastName length or -1
  • باستخدام! المشغل (لمحبي NPE)
// باستخدام !! المشغل أو العامل
val length = lastName !!. length // Throw NPE ، إذا كان lastName فارغ

4. نوع الاختيار والصب التلقائي

في Java ، نستخدم مثيل من للتحقق من الكتابة ، ومن ثم نحتاج إلى كتابة cast للوصول إلى خصائصه.

// جافا
إذا (اسم مثيل سلسلة) {
    طول int = ((سلسلة) اسم) .length () ؛
}

في Kotlin ، نستخدمها للتحقق من النوع ، والمترجم بذكاء يلقيها. رهيبة

// KOTLIN
إذا (الاسم سلسلة) {
    طول فال = name.length
}

يتم توفير المزيد من المعلومات هنا.

5. عند التعبير

على سبيل المثال: أريد أن أجد أن الكائن هو 1 أو 5 أو سلسلة أو نوع آخر.

في Java ، يتعين علينا استخدام مثيل & switch لأداء المهمة أعلاه.

// جافا
سلسلة التبديل switchExample (اسم الكائن) {
    إذا (اسم مثيل عدد صحيح) {
        عدد صحيح tempInt = (عدد صحيح) الاسم ؛
        التبديل (tempInt) {
            حالة 1:
            الحالة 5:
                إرجاع "1 أو 5" ؛
            الإفتراضي:
                إرجاع "لا 1 أو 5" ؛
        }
    } آخر إذا (اسم مثيل سلسلة) {
        إرجاع "سلسلة" ؛
    }
    إرجاع "لا كثافة العمليات أو سلسلة" ؛
}

في Kotlin ، عندما يجعل التعبير الأمر بهذه البساطة. إنه نوع مصبوب تلقائيًا ويمكننا استخدام الكثير من التعبيرات بداخله. علاوة على ذلك ، يمكن قراءته كثيرًا.

// KOTLIN
متعة whenExample (الاسم: أي): سلسلة =
        متى (الاسم)
            1 ، 5 -> "1 أو 5"
            هو Int -> "ليس 1 أو 5"
            هي سلسلة -> "سلسلة"
            آخر -> "لا كثافة العمليات أو سلسلة"
        }

6. فصول

في Java ، يتعين علينا إنشاء getter و setters للوصول إلى الخصائص في الفصل.

// جافا
عميل من الدرجة العامة
    اسم السلسلة الخاص

    عميل عام (اسم السلسلة) {
        this.name = الاسم ؛
    }

    سلسلة getName العامة () {
        اسم العودة
    }

    اسم مجموعة الفراغ العامة (اسم السلسلة) {
        this.name = الاسم ؛
    }
}

في Kotlin ، لا مزيد من اللاعبين والمستوطنين. ولكن يمكننا إنشاء ، إذا كنت ترغب في تعيين تلك المخصصة.

// KOTLIN
فئة العميل (اسم فار: سلسلة)

هذا هو الأفضل في كوتلين. عندما رأيت هذا ، جاءت كلمة واحدة إلى ذهني WOW !!! إنه رائع

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

إذا كنت تريد بدء استخدام Kotlin ، يرجى إلقاء نظرة على الوثائق الرسمية. انه حقا جيد.

للاطلاع على المزيد من التحديثات ، ما عليك سوى متابعي على وسيط أو Twitter. اترك أفكارك في قسم التعليقات أو اتصل بي على Twitter وسأواصل الإضافة إلى السلسلة.

إذا كنت ترغب في ذلك ، يرجى تذكر أن تصفق. إذا قمت بالضغط على زر التصفيق ، يمكنك ترك المزيد من التصفيق.