JavaRush /جاوا بلاگ /Random-UR /کوٹلن رش: کیا جاوا میں لکھنا جاری رکھنا کوئی معنی رکھتا ہ...
NikEy
سطح
Новосибирск

کوٹلن رش: کیا جاوا میں لکھنا جاری رکھنا کوئی معنی رکھتا ہے؟

گروپ میں شائع ہوا۔
ہیلو، جاوا رش کے طالب علم، اس سے پہلے کہ آپ جاوا سے مکمل طور پر جذب ہو جائیں، میں آپ کے افق کو وسعت دینا اور تیزی سے مقبول ہونے والی کوٹلن زبان کی طرف توجہ مبذول کرنا چاہوں گا !
کوٹلن رش: کیا جاوا میں لکھنا جاری رکھنا کوئی معنی رکھتا ہے؟  - 1
کوٹلن ایک کافی نوجوان زبان ہے جسے JetBrains نے تیار کیا ہے ۔ ہاں، ہاں، وہی کمپنی جس نے ہمارا پسندیدہ IDE تیار کیا: IntelliJ IDEA۔ Kotlin ایک JVM زبان ہے اور Java کے ساتھ مکمل طور پر مطابقت رکھتی ہے ، یعنی Kotlin کوڈ سے آپ واقف جاوا لائبریریوں تک آسانی سے رسائی حاصل کر سکتے ہیں۔ لائبریریوں کے بارے میں کیا خیال ہے: Kotlin اور Java کی کلاسیں ایک پیکج میں ایک ساتھ رہ سکتی ہیں! کوٹلن پروگرامنگ کمیونٹی میں اس قدر مقبول تھا کہ گوگل نے اسے اینڈرائیڈ کے لیے سرکاری ترقیاتی زبان کے طور پر تسلیم کیا، اور حال ہی میں کوٹلن نے انٹرپرائز پروجیکٹس میں مقبولیت حاصل کرنا شروع کردی ہے۔ اس مضمون میں، میں کوٹلن اور جاوا میں لکھے گئے کوڈ کی کئی تقابلی مثالیں دینا چاہوں گا، اور کچھ نتیجہ اخذ کرنا چاہوں گا۔ جاؤ! آئیے، ہمیشہ کی طرح، "ہیلو ورلڈ" کے ساتھ شروع کریں
// Java
public class Application {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}
// Kotlin
class Application
fun main(vararg args: String) {
    println("Hello World!")
}
کوٹلن کی مثال کو دیکھتے ہوئے، ہم فوری طور پر درج ذیل کو نوٹ کر سکتے ہیں۔
  • لائن کے آخر میں سیمی کالون لکھنے کی ضرورت نہیں؛
  • تمام طریقوں کو تفریحی مطلوبہ الفاظ کے ذریعہ بیان کیا گیا ہے ۔
  • ایک لائن پرنٹ کرنے کے لیے، صرف ایک لفظ کافی ہے - println() !
ایک مثال بنانا
// Java (до 10)
final Application application = new Application();
// Kotlin
val application = Application()
کوٹلن اختلافات:
  • متغیر کی قسم کا اعلان کرنے کی ضرورت نہیں ہے اگر یہ مثال سے واضح ہو؛
  • متغیر قسم کی بجائے - val (غیر متغیر) یا var (تبدیل)؛
  • مثال بنانے کے لیے آپ کو نیا کلیدی لفظ لکھنے کی ضرورت نہیں ہے !
طریقوں کی تفصیل
// Java
public int sum(int a, int b) {
    return (a + b);
}
// Kotlin
fun sum(a: Int, b: Int): Int {
return (a + b)
}
کوٹلن اختلافات:
  • اگر کسی طریقہ سے کسی چیز کو واپس کرنے کی ضرورت ہو تو، دستخط میں " : Int " شامل کیا جاتا ہے، جہاں Int واپسی کی قسم ہے۔
  • طریقہ کے پیرامیٹرز کی تفصیل: پہلے متغیر کا نام، پھر قسم؛
  • چونکہ طریقہ کار کا جسم صرف ایک لائن پر مشتمل ہے، آپ واپسی کو چھوڑ سکتے ہیں :
    fun sum(a: Int, b: Int): Int = (a+b)
فارمیٹ شدہ سٹرنگ آؤٹ پٹ
// Java
public int sum(int a, int b) {
    int result = (a + b);
    System.out.printf("Сумма %d и %d равна %d\n", a, b, result);
    return result;
}
// Kotlin
fun sum(a: Int, b: Int): Int {
    val result = (a + b)
    println("Сумма $a и $b равна $result")
    return result
}
کوٹلن سٹرنگ انٹرپولیشن کو سپورٹ کرتا ہے، صرف متغیر کے شروع میں "$" علامت استعمال کریں۔ یہ اشارے کوڈ کی صفائی اور پڑھنے کی اہلیت کو نمایاں طور پر بہتر بناتا ہے۔ مثالوں کا موازنہ
// Java
object1.equals(object2)
// Kotlin
object1 == object2
==کوٹلن میں، آبجیکٹ کی اقسام کے مقابلے " " کا ترجمہ کیا جاتا ہے equals! اور لنکس کا موازنہ کرنے کے لیے، " ===" استعمال کیا جاتا ہے۔ مستثنیات
// Java
public List<String> getFileContent(String file) throws IOException {
    Path path = Paths.get(file);
    return Files.readAllLines(path);
}
// Kotlin
fun getFileContent(file: String): List<String> {
    val path = Paths.get(file)
    return Files.readAllLines(path)
}
کوٹلن میں کوئی مستثنیات چیکtry-catch نہیں کیے گئے ہیں؛ اب آپ کو پوری ایپلیکیشن کے ذریعے کسی استثنا کو ختم کرنے یا کثیر سطحی استثناء پیدا کرنے کی ضرورت نہیں ہے ۔ کالعدم حفاظت
// Java
public class Data {
    String value;

    String render() {
        if (value == null) {
            return "Value: undefined";
        } else {
            return "Value:" + value.toUpperCase();
        }
    }
}
// Kotlin
class Data {
    var value: String? = null
    fun render(): String =
            "Value: ${value?.toUpperCase() ?: "undefined"}"
}
کوٹلن نے این پی ای کے مسئلے کا خیال رکھا اور متعدد تقاضے متعارف کروائے:
  • تمام کلاس فیلڈز اور متغیرات کو شروع کیا جانا چاہیے؛
  • آپ کسی فیلڈ یا متغیر میں "null" لکھ سکتے ہیں، لیکن پھر آپ کو واضح طور پر کہنا چاہیے کہ آپ کا متغیر Nullable ہے ("؟" کا نشان لکھیں)؛
  • ایلوس آپریٹر "؟:" اس طرح کام کرتا ہے: اگر بائیں طرف Null ہے تو دائیں طرف جو ہے اسے لے لیں۔ ہماری مثال کے معاملے میں، جب ویلیو متغیر کو شروع نہیں کیا جاتا ہے، تو قدر " غیر وضاحتی " لی جائے گی۔
کلاس فیلڈز اور ان تک رسائی
// Java
public class Data {
    private String value;

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}
class App {
    void execute() {
           Data data = new Data()
           data.setValue("Foo")
     }
}
// Kotlin
class Data {
    var value: String = ""
}
class App {
    fun execute() {
          val data = Data()
          data.value = "Foo" // Под капотом выполнится data.set("Foo")
     }
}
Kotlin میں، صرف ایک فیلڈ کی وضاحت کرنا کافی ہے اور بس: اس میں پہلے سے ہی مضمر حاصل کرنے والے اور سیٹرز (hello lombok ) موجود ہیں، جو چاہیں تو کسی بھی وقت اوور رائڈ کیے جا سکتے ہیں۔ ایک ہی وقت میں، ہم فیلڈ کی قدر کو پڑھتے ہیں اور اس تک براہ راست رسائی حاصل کرتے ہیں، اور ہڈ کے نیچے اسے کہتے ہیں get()|set()۔ سائیکل
// Java
void example() {
    for(int i = 1; i <= 10; i++) {
        System.out.println(i);
    }

    for(String line : "a,b,c".split(",")) {
        System.out.println(line);
    }
}
// Kotlin
fun example() {
    for(i in 1..10) {
        println(i)
    }

    for(line in "a,b,c".split(",")) {
        println(line)
    }
}
کوٹلن نے ترتیب کو عبور کرنے کے لیے ایک آسان اور یکساں نحو فراہم کیا ہے: آپ صرف بائیں جانب ایک متغیر ، دائیں جانب ایک ترتیب ، اور درمیان میں کلیدی لفظ " ان " استعمال کرتے ہیں، قسم کا تعین مواد سے خود بخود ہوتا ہے۔ سنگلٹن
// Java
public class Singleton {
    private static Singleton ourInstance = new Singleton();

    public static Singleton getInstance() {
        return ourInstance;
    }

    private Singleton() {
    }
}
class App {
    void execute() {
         Singleton singleton = Singleton.getInstance()
    }
}
// Kotlin
object Singleton {}

class App {
    fun execute() {
          val singleton = Singleton
    }
}
مانوس " سنگلر " پیٹرن کو عملی طور پر اکثر استعمال کیا جاتا ہے، اس لیے کوٹلن نے ایک علیحدہ کلیدی لفظ " آبجیکٹ " بنانے کا فیصلہ کیا، جو کہ " کلاس " کے بجائے لکھا گیا ہے اور اس کا مطلب ہے کہ کلاس سنگلٹن ہے؛ جب استعمال کیا جاتا ہے، تو آپ ایسا نہیں کرتے کنسٹرکٹر یا کسی دوسرے طریقوں کو کال کرنے کی ضرورت ہے! نامزد طریقہ کے پیرامیٹرز اور ڈیفالٹ اقدار
// Java
void setStatus(String code) {
    setStatus(code, "");
}

void setStatus(String code, String desc) {
    this.code = code;
    this.desc = desc;
}
// Kotlin
fun setStatus(code: String, desc: String = "") {
    this.code = code;
    this.desc = desc;
}

fun execute() {
    setStatus("200")
    setStatus(code = "200", desc = "Ok")
}
ایسا ہوتا ہے کہ کسی طریقہ یا کنسٹرکٹر میں تمام پیرامیٹرز کی ضرورت نہیں ہونی چاہیے، اور جاوا میں ہم پیرامیٹرز کے ہر ممکنہ امتزاج کے لیے طریقوں یا کنسٹرکٹرز کا ایک سیٹ بنانے کے عادی ہیں۔ کوٹلن میں پہلے سے طے شدہ پیرامیٹرز متعارف کرائے گئے ہیں، جو آپ کو 1 طریقہ کا اعلان کرنے اور صورتحال کے لحاظ سے پیرامیٹرز کے مطلوبہ سیٹ کو پاس کرنے کی اجازت دیتا ہے۔ سلسلے
// Java
String getFirst(List<String> strings, String alpha) {
    return strings.stream()
            .filter(x -> x.startsWith(alpha))
            .findFirst()
            .orElse("");
}
// Kotlin
fun getFirst(strings: List<String>, alpha: String): String {
    return strings.first { it.startsWith(alpha) }
}
جاوا 8 میں سٹریم کا تعارف جمع کرنے کے ساتھ کام کرتے وقت ایک لازمی فعالیت بن گیا ہے۔ کوٹلن میں، اسٹریمز کو اور بھی آسان اور فعال بنایا گیا ہے: ہر مجموعہ میں پہلے سے ہی ڈیٹا کے ساتھ کام کرنے کے لیے آسان، کثرت سے استعمال ہونے والے طریقوں کا ایک سیٹ موجود ہے۔ اس کے علاوہ، پہلے طریقہ کے اندر لیمبڈا اظہار کو دیکھیں: اگر کسی فنکشن لٹریل میں بالکل ایک پیرامیٹر ہے، تو اس کے اعلان کو ہٹایا جا سکتا ہے (-> کے ساتھ)، اور اسے کہا جا سکتا  ہے ۔ یہ سمیٹنے کا وقت ہے... میں نے فعالیت کا صرف ایک چھوٹا، بنیادی حصہ دکھایا، لیکن مجھے یقین ہے کہ آپ پہلے ہی کوٹلن کو آزمانا چاہتے ہیں! اپنے تجربے سے میں مندرجہ ذیل نتائج اخذ کر سکتا ہوں:
  • جاوا کے ڈویلپر کے لیے کوٹلن نحو پر عبور حاصل کرنا اور کوڈ لکھنا شروع کرنا بہت آسان ہے۔
  • کوٹلن جاوا کے ساتھ مکمل طور پر مطابقت رکھتا ہے، اور آپ اسے پہلے ہی اپنے موجودہ پروجیکٹس میں آزما سکتے ہیں، مثال کے طور پر، ٹیسٹوں میں؛
  • کوٹلن کوڈ صاف ستھرا اور زیادہ پڑھنے کے قابل ہے، آپ کو بوائلر پلیٹ کا ایک گروپ لکھنے کی ضرورت نہیں ہے ۔
  • IDEA کے پاس خودکار جاوا ٹو کوٹلن کنورٹر ہے، آپ ریڈی میڈ جاوا کوڈ لے سکتے ہیں اور اسے خود بخود کوٹلن میں تبدیل کر سکتے ہیں۔
  • کوٹلن میں ایک نیا پروجیکٹ لکھنے کی ضرورت ہے، کیونکہ انفراسٹرکچر کے نقطہ نظر سے یہ جاوا جیسا ہی ہے، لیکن استعمال کے لحاظ سے یہ بہتر اور زیادہ آسان ہے!
اگر آپ کو مضمون پسند آیا ہے اور عام طور پر جاوا کے بارے میں کسی وسائل سے متعلق ہیں، تو میں کوٹلن کو حقیقی انٹرپرائز پروجیکٹ میں استعمال کرنے کے تجربے کے بارے میں لکھنا جاری رکھ سکتا ہوں۔ مفید لنکس:
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION