JavaRush /Java Blog /Random-TK /KotlinRush: Java-da ýazmagy dowam etdirmegiň manysy barmy...
NikEy
Dereje
Новосибирск

KotlinRush: Java-da ýazmagy dowam etdirmegiň manysy barmy?

Toparda çap edildi
Salam, JavaRush talyby, Java-y doly özleşdirmezden ozal, gözýetimleriňizi giňeltmek we barha meşhur Kotlin diline ünsi çekmek isleýärin !
KotlinRush: Java-da ýazmagy dowam etdirmegiň manysy barmy?  - 1
Kotlin, JetBrains tarapyndan işlenip düzülen gaty ýaş dil . Hawa, hawa, iň halaýan IDE-ni döreden şol bir kompaniýa: IntelliJ IDEA. Kotlin JVM dilidir we Java bilen doly utgaşýar , ýagny Kotlin kodundan tanyş Java kitaphanalaryna aňsatlyk bilen girip bilersiňiz. Kitaphanalar hakda näme diýmeli: Kotlin we Java synplary bir paketde bilelikde bolup biler! Kotlin programmirleme jemgyýeti bilen şeýle bir meşhur boldy welin, Google ony Android üçin resmi ösüş dili hökmünde ykrar etdi we ýakynda Kotlin kärhana taslamalarynda meşhurlyk gazanyp başlady. Bu makalada Kotlinde we Java-da ýazylan kodlaryň birnäçe deňeşdirme mysallaryny bermek we käbir netijeleri çykarmak isleýärin. Git! Hemişe bolşy ýaly "Salam Dünýä" bilen başlalyň.
// 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!")
}
Kotlin mysalyna seretseň, aşakdakylary derrew belläp bileris:
  • setiriň ahyrynda nokatly bellik ýazmagyň zerurlygy ýok;
  • ähli usullar gyzykly açar söz bilen düşündirilýär ;
  • Setir çap etmek üçin diňe bir söz ýeterlik - println () !
Mysal döretmek
// Java (до 10)
final Application application = new Application();
// Kotlin
val application = Application()
Kotlin tapawudy:
  • mysaldan düşnükli bolsa üýtgeýjiniň görnüşini yglan etmegiň zerurlygy ýok;
  • üýtgeýän görnüşiň ýerine - val (üýtgewsiz) ýa-da var (üýtgäp bilýän);
  • Mysal döretmek üçin täze açar söz ýazmak hökman däl !
Usullaryň beýany
// Java
public int sum(int a, int b) {
    return (a + b);
}
// Kotlin
fun sum(a: Int, b: Int): Int {
return (a + b)
}
Kotlin tapawudy:
  • usuldan bir zat yzyna gaýtarylmaly bolsa, goluň içine “ : Int ” goşulýar, bu ýerde Int gaýdyp beriş görnüşi;
  • usul parametrleriniň beýany: ilki üýtgeýän ady, soň görnüşi;
  • usul usuly diňe bir setirden ybarat bolany üçin, gaýdyp gelmegi goýup bilersiňiz :
    fun sum(a: Int, b: Int): Int = (a+b)
Formatlanan setir çykyşy
// 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 simli interpolýasiýany goldaýar, üýtgeýjiniň başynda diňe "$" nyşanyny ulanyň. Bu bellik, koduň arassalygyny we okalmagyny ep-esli ýokarlandyrýar. Mysallary deňeşdirmek
// Java
object1.equals(object2)
// Kotlin
object1 == object2
Kotlinde ==obýekt görnüşleri üçin "" deňeşdirme terjime edildi equals! Salgylary deňeşdirmek üçin " ===" ulanylýar. Kadadan çykmalar
// 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)
}
Kotlinde barlanylan kadadan çykmalar ýok, indi tutuş programma arkaly kadadan çykma ýa-da köp derejeli kadadan çykmalar döretmeli däl try-catch. Null Howpsuzlyk
// 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"}"
}
Kotlin NPE meselesine ünsi çekdi we birnäçe talaplary hödürledi:
  • ähli synp meýdanlary we üýtgeýjiler başlangyç bolmaly;
  • Bir meýdanda ýa-da üýtgeýjide “null” ýazyp bilersiňiz, ýöne üýtgeýjiňiziň “Nullable” (“?” Belgisini ýazyň) aç-açan aýtmalysyňyz;
  • Elvis operatory "?:" Şeýle işleýär: çepde Null bar bolsa, sag tarapdaky zady alyň. Mysal üçin, baha üýtgeýjisi başlamasa, “ kesgitlenmedik ” baha alynar.
Synp meýdanlary we olara giriş
// 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")
     }
}
Kotlinde diňe bir meýdany suratlandyrmak ýeterlikdir we ol: eýýäm aç-açan girelgeleri we sazlaýjylary bar (salam lombok ), isleseňiz islendik wagt ýok edilip bilner. Şol bir wagtyň özünde, meýdanyň bahasyna gönüden-göni girip, kapotyň aşagyndaky adyny okaýarys we üýtgedýäris get()|set(). Sikller
// 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)
    }
}
Kotlin yzygiderliligi gezmek üçin amatly we birmeňzeş sintaksis bilen üpjün etdi: diňe çepde üýtgeýjini , sag tarapda yzygiderliligi ulanýarsyňyz we arasynda “ içindäki ” açar söz , görnüş mazmun bilen awtomatiki kesgitlenýär. Singleton
// 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
    }
}
Tanyş “ aýdymçy ” nagşy iş ýüzünde köplenç ulanylýar, şonuň üçin Kotlin “ synpyň ” ýerine ýazylan we synpyň ýeketäkdigini aňladýan aýratyn “ obýekt ” sözüni döretmegi ýüregine düwdi; ulanylanda hatda ulanmarsyňyz konstruktory ýa-da başga usullary çagyrmaly! Adyň usuly parametrleri we deslapky bahalar
// 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")
}
Usulda ýa-da konstruktorda ähli parametrler talap edilmeli däl, Java-da bolsa mümkin bolan parametrleriň utgaşmasy üçin usullar ýa-da konstruktorlar toplumyny döretmäge öwrenişdik. 1 usuly yglan etmäge we ýagdaýa baglylykda zerur parametrler toplumyny oňa geçirmäge mümkinçilik berýän Kotline deslapky parametrler girizildi. Akymlar
// 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) }
}
Java 8-de akymyň girizilmegi kolleksiýalar bilen işleşende aýrylmaz işe öwrüldi. Kotlinde akymlar has amatly we amatly edildi: her kolleksiýada maglumatlar bilen işlemek üçin eýýäm amatly, ýygy-ýygydan ulanylýan usullar bar. Şeýle hem, birinji usulyň içindäki lambda aňlatmasyna üns beriň: eger bir funksiýanyň göçme manyda bir parametri bar bolsa, deklarasiýa aýrylyp bilner (-> bilen birlikde) we oňa atlandyrylyp  bilner . Gaplamagyň wagty geldi ... Funksiýanyň diňe kiçijik, esasy bölegini görkezdim, ýöne Kotlini synap görmek isleýändigiňize ynanýaryn! Tejribämden aşakdaky netijeleri çykaryp bilerin:
  • Java dörediji üçin Kotlin sintaksisini özleşdirmek we kod ýazmaga başlamak gaty aňsat;
  • Kotlin Java bilen doly utgaşýar we ony eýýäm bar bolan taslamalaryňyzda, mysal üçin synaglarda synap bilersiňiz;
  • Kotlin kody has arassa we has okalýar, bir topar gazan ýazmak hökman däl ;
  • IDEA-nyň Kotlin öwrüjisine awtomatiki Java bar, taýýar Java koduny alyp, awtomatiki usulda Kotline öwrüp bilersiňiz;
  • Kotlinde täze taslama ýazylmaly, sebäbi infrastruktura nukdaýnazaryndan Java bilen birmeňzeş, ýöne ulanmak nukdaýnazaryndan has gowy we amatly!
Makalany halaýan bolsaňyz we umuman Java hakda çeşme bilen baglanyşykly bolsaňyz, Kotlini hakyky kärhana taslamasynda ulanmak tejribesi hakda ýazmagy dowam etdirip bilerin. Peýdaly baglanyşyklar:
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION