هيلو، JavaRush شاگرد، ان کان اڳ جو توهان مڪمل طور جاوا ۾ جذب ٿي وڃو، مان توهان جي افق کي وڌائڻ ۽ وڌندڙ مقبول ڪوٽلن ٻولي ڏانهن ڌيان ڏيڻ چاهيان ٿو !
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 وٽ هڪ خودڪار جاوا کان ڪوٽلن ڪنورٽر آهي، توهان وٺي سگهو ٿا تيار ٿيل جاوا ڪوڊ ۽ خودڪار طريقي سان ان کي ڪوٽلن ۾ تبديل ڪريو؛
- هڪ نئين پروجيڪٽ کي ڪوٽلن ۾ لکڻ جي ضرورت آهي، ڇاڪاڻ ته انفراسٽرڪچر جي نقطي نظر کان اهو ساڳيو ئي آهي جاوا، پر استعمال جي لحاظ کان اهو بهتر ۽ وڌيڪ آسان آهي!
GO TO FULL VERSION