JavaRush /جاوا بلاگ /Random-UR /کیا کوٹلن اور جاوا میں کوئی فرق ہے؟
Paul Soia
سطح
Kiyv

کیا کوٹلن اور جاوا میں کوئی فرق ہے؟

گروپ میں شائع ہوا۔
سب کو سلام. میں آپ کو کوٹلن زبان کے بارے میں چند بنیادی باتیں بتانا چاہتا ہوں، جو کہ ابتدائیوں کے لیے مفید ثابت ہوں گی۔ ایسا ہوتا ہے کہ اب صرف ایک زبان کے ساتھ اینڈرائیڈ کی ترقی میں جانا مشکل ہو جائے گا - زیادہ تر نئے پراجیکٹ کوٹلن میں لکھے جانے لگتے ہیں، زیادہ تر ریڈی میڈ پروجیکٹ جاوا میں لکھے جاتے ہیں۔ کیا کوٹلن اور جاوا میں کوئی فرق ہے؟  - 1اس وقت میرے پاس کام پر 4 پروجیکٹ ہیں: دو کوٹلن میں اور دو جاوا میں (ایک بڑا مین ایک اور تین چھوٹے اندرونی استعمال کے لیے)۔ جب کمپنی نے کوٹلن میں نئے منصوبے لکھنے کا فیصلہ کیا تو یہ فیصلہ مجھے عجیب سا لگا۔ مختلف زبانوں کو کیوں ملایا؟ کوٹلن میں کسی اور کو لکھنے دو، ہمیں اس کی کیا ضرورت ہے؟ لیکن کوئی راستہ نہیں تھا، لہذا میں نے ایک نئی زبان آزمانے کا فیصلہ کیا اور اس کا مطالعہ شروع کیا۔ پہلا کوڈ، یقیناً، مکمل طور پر جاوا انداز میں لکھا گیا تھا، جس نے غلط فہمی میں مزید اضافہ کیا: مجھے نئی زبان کی ضرورت کیوں ہے؟ لیکن جیسا کہ میں نے اسے استعمال کیا، مجھے زیادہ سے زیادہ فوائد ملے اور اب (میں کوٹلن میں تقریباً 2 سال سے لکھ رہا ہوں) میں کہہ سکتا ہوں کہ کوٹلن اینڈرائیڈ کی ترقی میں زیادہ آسان ہے۔ میں کچھ باریکیاں دکھانا چاہتا ہوں جو کسی ایسے شخص پر واضح نہیں ہوں گے جس نے جاوا کے بعد کوٹلن سیکھنا شروع کرنے کا فیصلہ کیا ہو۔ میں آپ کو یہ بھی یاد دلاتا ہوں کہ اینڈرائیڈ جاوا 8 استعمال کرتا ہے، جس کا موجودہ موجودہ ورژن 14 ہے۔ لہذا، پہلے - متغیرات : Java:
Int a = 1;
String s = "test";
کوٹلن:
val a = 1
var b = 2
val c: Int
val d = "test"
کوٹلن میں متغیرات کی دو قسمیں ہیں: val (صرف پڑھنے کے لیے) اور var (پڑھنے کے لیے لکھنا)۔ جب بھی ممکن ہو ویل کا استعمال کرنے کی سفارش کی جاتی ہے۔ متغیر کی قسم کا اعلان کرنا ضروری نہیں ہے اگر متغیر پہلے ہی شروع ہو چکا ہو۔ دوسرا - اگر/اور، بیانات کو تبدیل کریں : آپ جاوا میں بیانات کے اس سلسلے کو کتنی بار استعمال کرتے ہیں:
if (вариант 1)
{...}
else if (вариант 2)
{...}
...
else
{...}
یا اس طرح:
switch(выражениеДляВыбора) {
        case (meaning 1):
                Код1;
                break;
        case (meaning 2):
                Код2;
                break;
...
        case (meaning N):
                КодN;
                break;
        default:
                КодВыбораПоУмолчанию;
                break;
        }
کوٹلن میں، جب آپریٹر کو اس طرح کے اظہار کے لیے استعمال کیا جاتا ہے (حالانکہ if/else بھی استعمال کیا جا سکتا ہے):
val x = 5
val result = when(x) {
        0, 1 -> "cool"
        2 -> "bad"
        5 -> "normal"
        else -> "error"
}
System.out.println(result)
یہاں ہم نہ صرف حالات کی زنجیر سے گزرے بلکہ فوری طور پر پورے اظہار کو نتیجہ کے متغیر کو تفویض کر دیا، جس سے ہمیں کوڈ کی کچھ لائنیں محفوظ ہو گئیں۔ لیکن پھر بھی، اگر آپ کے پاس کسی برانچ میں صرف دو آپشنز ہیں، تو میں تجویز کرتا ہوں کہ معمول کا استعمال کریں if..else۔ جب تعمیر صرف تین اختیارات میں سے مختصر ہوگی۔ آئیے آگے بڑھتے ہیں - کنسٹرکٹرز ۔ یہ یہاں پریوں کی کہانی ہے۔ صرف جاوا اور کوٹلن میں کوڈ کا موازنہ کریں۔ جاوا:
public class Person {

    private String firstName;
    private String lastName;
    private int age;

    public Person(String firstName, String lastName, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }

    public String getFirstName() {
        return firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}
کوٹلن:
class Person(private val firstName: String,
             private val lastName: String,
             private var age: Int) {
}
ایسا لگتا ہے کہ کوٹلن کوڈ میں کچھ نامکمل رہ گیا تھا۔ لیکن نہیں، یہ مختلف زبانوں میں دو ایک جیسے کوڈ ہیں۔ آئیے اس کا تھوڑا سا پتہ لگائیں۔ کوٹلن میں، کنسٹرکٹر کو کلاس کے نام کے باڈی میں براہ راست لکھا جا سکتا ہے (لیکن اگر آپ چاہیں تو، آپ اسے پرانے زمانے کے طریقے سے کر سکتے ہیں، جیسا کہ جاوا میں)۔ لہذا، ہم نے تین متغیرات لکھے ہیں، جاوا میں ہم نے عمر کے متغیر کے لیے ایک کنسٹرکٹر، گیٹرز اور ایک سیٹٹر بنایا ہے۔ کوٹلن میں، جیسا کہ ہمیں یاد ہے، ویل متغیر صرف پڑھنے کے لیے ہے، اور اس لیے ان متغیرات کے لیے سیٹر دستیاب نہیں ہے (کوٹلن خود ہی ہڈ کے نیچے گیٹر سیٹرز کو لاگو کرتا ہے)۔ var متغیر آپ کو سیٹر استعمال کرنے کی اجازت دیتا ہے۔ نتیجے کے طور پر، ہم نے تقریبا ایک لائن میں وہی چیز لکھی جس نے جاوا میں ایک درجن سے زیادہ لائنیں لگیں۔ یہاں میں کوٹلن میں ڈیٹا کلاسز کے بارے میں مزید پڑھنے کی تجویز کرتا ہوں۔ لیکن یہ سب کچھ نہیں ہے کہ کوٹلن کنسٹرکٹرز اچھے ہیں۔ لیکن اگر آپ کو دو کنسٹرکٹرز کی ضرورت ہو تو کیا ہوگا؟ اگر تین ہیں تو کیا ہوگا؟ جاوا میں یہ اس طرح نظر آئے گا:
public Person(String firstName, String lastName, int age) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }

public Person(String firstName, String lastName) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

public Person(String firstName) {
        this.firstName = firstName;
    }
کچھ بھی پیچیدہ نہیں، بس جتنے ڈیزائنرز کی ضرورت ہے، انہوں نے یہی کیا۔ کوٹلن میں آپ صرف ایک کنسٹرکٹر کے ساتھ جا سکتے ہیں۔ کیسے؟ یہ آسان ہے - پہلے سے طے شدہ اقدار۔
class Person(private val firstName: String,
             private val lastName: String? = null,
             private var age: Int = 5) {
}
ہم نے کنسٹرکٹر میں پہلے سے طے شدہ اقدار کو تفویض کیا ہے اور اب انہیں کال کرنا اس طرح نظر آئے گا:
Person(firstName = "Elon", lastName = "Mask", age = 45)
Person(firstName = "Elon", age = 45)
Person(firstName = "Elon", lastName = "Mask")
سوال پیدا ہو سکتا ہے کہ یہ کیا ہے؟
private val lastName: String? = null
یہ دوسرے سوالیہ نشان کیا ہیں؟ ہاں، اگر ویلیو null ہو سکتی ہے، تو یہ سیٹ ہے ?۔ اس طرح کا ایک آپشن بھی ہے - !!(اگر متغیر null کو قبول نہیں کر سکتا)۔ اس کے بارے میں خود پڑھیں، یہ سب آسان ہے۔ اور ہم اگلے نقطہ کی طرف بڑھتے ہیں۔ ایکسٹینشنز _ یہ کوٹلن میں ایک بہت ہی عمدہ ٹول ہے جو جاوا میں دستیاب نہیں ہے۔ کبھی کبھی کسی پروجیکٹ میں ہم ٹیمپلیٹ کے طریقے استعمال کرتے ہیں جو کئی کلاسوں میں دہرائے جاتے ہیں۔ مثال کے طور پر، اس طرح:
Toast.makeText(this, "hello world :)", Toast.LENGTH_SHORT).show();
کوٹلن میں ہم کلاس بڑھا سکتے ہیں:
fun Context.toast(message: CharSequence) = Toast.makeText(this, message, Toast.LENGTH_SHORT).show()
اور پھر اسے پورے پروجیکٹ میں اس طرح استعمال کریں:
context?.toast("hello world")
ہم نے سیاق و سباق کی کلاس کے لیے ایک توسیع کی ہے۔ اور اب جہاں بھی سیاق و سباق دستیاب ہوگا، اس کا نیا ٹوسٹ طریقہ دستیاب ہوگا۔ یہ کسی بھی کلاس کے لیے کیا جا سکتا ہے: سٹرنگ، فریگمنٹ، آپ کی حسب ضرورت کلاسز، کوئی پابندی نہیں ہے۔ اور آخری نقطہ جس پر ہم دیکھیں گے وہ ہے Working with Strings ۔ یہاں سب کچھ آسان ہے۔ جاوا میں یہ اس طرح لکھا ہے:
String s = "friends";
int a = 5;
System.out.println("I have" + a + s + "!");
کوٹلن میں یہ آسان ہے:
val s = "friends"
val a = 5
println("I have $a $s!")
یہ وہ باریکیاں ہیں جن سے میں نے کوٹلن سیکھنے کے آغاز میں ٹھوکر کھائی، مجھے امید ہے کہ اس سے آپ کی مدد ہوگی۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION