JavaRush /جاوا بلاگ /Random-SD /KotlinRush: ڇا جاوا ۾ لکڻ جاري رکڻ جو مطلب آهي؟
NikEy
سطح
Новосибирск

KotlinRush: ڇا جاوا ۾ لکڻ جاري رکڻ جو مطلب آهي؟

گروپ ۾ شايع ٿيل
هيلو، JavaRush شاگرد، ان کان اڳ جو توهان مڪمل طور جاوا ۾ جذب ​​ٿي وڃو، مان توهان جي افق کي وڌائڻ ۽ وڌندڙ مقبول ڪوٽلن ٻولي ڏانهن ڌيان ڏيڻ چاهيان ٿو !
KotlinRush: ڇا جاوا ۾ لکڻ جاري رکڻ جو مطلب آهي؟  - 1
Kotlin JetBrains پاران ترقي يافته نوجوان ٻولي آھي . ها، ها، اها ساڳي ڪمپني جيڪا اسان جي پسنديده IDE ٺاهي ٿي: IntelliJ IDEA. ڪوٽلن هڪ JVM ٻولي آهي ۽ جاوا سان مڪمل طور تي مطابقت رکي ٿي ، يعني ڪوٽلن ڪوڊ مان توهان آساني سان واقف جاوا لائبريرين تائين رسائي حاصل ڪري سگهو ٿا. لائبريرين بابت ڇا: ڪوٽلن ۽ جاوا ڪلاس هڪ ئي پيڪيج ۾ گڏ ٿي سگهن ٿا! ڪوٽلن پروگرامنگ ڪميونٽي ۾ ايترو ته مشهور هو جو گوگل ان کي Android لاءِ سرڪاري ڊولپمينٽ لينگويج طور تسليم ڪيو، ۽ تازو ئي Kotlin انٽرپرائز پروجيڪٽس ۾ مقبوليت حاصل ڪرڻ شروع ڪيو آهي. هن آرٽيڪل ۾، مان ڪوٽلن ۽ جاوا ۾ لکيل ڪوڊ جا ڪيترائي تقابلي مثال ڏيڻ چاهيان ٿو، ۽ ڪجهه نتيجو ڪڍو. وڃ! اچو ته، هميشه وانگر، "هيلو ورلڊ" سان شروع ڪريون.
// 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()
ڪوٽلن ۾ فرق:
  • متغير جي قسم کي بيان ڪرڻ جي ڪا ضرورت ناهي جيڪڏهن اهو مثال کان واضح آهي؛
  • variable قسم جي بدران - val (immutable) يا 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
}
Kotlin string interpolation کي سپورٽ ڪري ٿو، صرف متغير جي شروعات ۾ "$" علامت استعمال ڪريو. هي اشارو خاص طور تي ڪوڊ جي صفائي ۽ پڙهڻ جي صلاحيت کي بهتر بڻائي ٿو. مثالن جو مقابلو
// 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"}"
}
ڪوٽلن اين پي اي جي مسئلي جو خيال رکيو ۽ ڪيتريون ئي گهرجون متعارف ڪرايون:
  • سڀ طبقن جا شعبا ۽ variables جي شروعات ٿيڻ گهرجي؛
  • توھان لکي سگھوٿا “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")
     }
}
ڪوٽلن ۾، اهو ڪافي آهي ته صرف هڪ فيلڊ کي بيان ڪرڻ لاءِ ۽ اهو ئي آهي: ان ۾ اڳ ۾ ئي ضمني حاصل ڪرڻ وارا ۽ سيٽر (هيلو لومبوڪ ) آهن، جن کي ڪنهن به وقت ختم ڪري سگهجي ٿو جيڪڏهن گهربل هجي. ساڳئي وقت، اسان پڙهي ۽ تبديل ڪريون ٿا فيلڊ جي قيمت کي صرف ان کي سڌو رسائي سان، ۽ هود جي هيٺان ان کي سڏيو ويندو آهي 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")
}
اهو ٿئي ٿو ته هڪ طريقي يا تعمير ڪندڙ ۾ سڀئي پيرا ميٽر گهربل نه هجن، ۽ جاوا ۾ اسان کي استعمال ڪيو ويندو آهي هڪ سيٽ ٺاهڻ لاءِ طريقن يا تعمير ڪندڙن جي هر ممڪن ميلاپ لاءِ. Default parameters متعارف ڪرايا ويا آھن Kotlin ۾، جيڪا توھان کي اجازت ڏئي ٿي 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 ۾ وهڪرو جو تعارف هڪ لازمي ڪارڪردگي بڻجي چڪو آهي جڏهن گڏ ڪرڻ سان ڪم ڪري رهيو آهي. ڪوٽلن ۾، اسٽريمز کي اڃا به وڌيڪ آسان ۽ ڪارائتو بڻايو ويو آهي: هر مجموعن ۾ اڳ ۾ ئي ڊيٽا سان ڪم ڪرڻ لاءِ آسان، اڪثر استعمال ٿيل طريقن جو هڪ سيٽ هوندو آهي. انهي سان گڏ، پهرين طريقي جي اندر lambda ايڪسپريس کي نوٽيس ڪريو: جيڪڏهن هڪ فنڪشن لفظي صحيح طور تي هڪ پيٽرولر آهي، ان جي اعلان کي ختم ڪري سگهجي ٿو (-> سان گڏ)، ۽  ان جو حوالو ڏنو ويو آهي . اهو وقت ختم ٿيڻ جو وقت آهي... مون ڪارڪردگيءَ جو فقط هڪ ننڍڙو، بنيادي حصو ڏيکاريو آهي، پر مون کي پڪ آهي ته توهان اڳ ۾ ئي ڪوشش ڪرڻ چاهيو ٿا Kotlin! منهنجي تجربي مان مان هيٺيان نتيجا ڪڍي سگهان ٿو:
  • جاوا ڊولپر لاءِ ڪوٽلن نحو تي عبور حاصل ڪرڻ ۽ ڪوڊ لکڻ شروع ڪرڻ تمام آسان آهي؛
  • Kotlin جاوا سان مڪمل طور تي مطابقت رکي ٿي، ۽ توھان اڳ ۾ ئي پنھنجي موجوده منصوبن ۾ ڪوشش ڪري سگھو ٿا، مثال طور، ٽيسٽ ۾؛
  • Kotlin ڪوڊ صاف ۽ وڌيڪ پڙهڻ لائق آهي، توهان کي بوائلر پليٽ جو هڪ گروپ لکڻ جي ضرورت ناهي ؛
  • IDEA وٽ هڪ خودڪار جاوا کان ڪوٽلن ڪنورٽر آهي، توهان وٺي سگهو ٿا تيار ٿيل جاوا ڪوڊ ۽ خودڪار طريقي سان ان کي ڪوٽلن ۾ تبديل ڪريو؛
  • هڪ نئين پروجيڪٽ کي ڪوٽلن ۾ لکڻ جي ضرورت آهي، ڇاڪاڻ ته انفراسٽرڪچر جي نقطي نظر کان اهو ساڳيو ئي آهي جاوا، پر استعمال جي لحاظ کان اهو بهتر ۽ وڌيڪ آسان آهي!
جيڪڏهن توهان مضمون پسند ڪيو آهي ۽ عام طور تي جاوا بابت وسيلن تي لاڳاپيل آهيو، مان هڪ حقيقي ڪاروباري منصوبي ۾ ڪوٽلن استعمال ڪرڻ جي تجربي بابت لکڻ جاري رکي سگهان ٿو. مفيد لنڪس:
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION