Kotlin vs Java - mis vahe neil on?

Autor: John Stephens
Loomise Kuupäev: 24 Jaanuar 2021
Värskenduse Kuupäev: 1 Juuli 2024
Anonim
Java tech talk: Spring Boot and GraphQl integration. Как сделать это просто?
Videot: Java tech talk: Spring Boot and GraphQl integration. Как сделать это просто?

Sisu


Java võib endiselt olla esimene programmeerimiskeel, mis meelde tuleb, kui mõelda Androidi peale, kuid sul pole seda on Java kasutamist Androidi arendamiseks. Tegelikult on Kotlin nüüd Google'i omaeelistatudametlik keel Androidi jaoks!

Java kohta lisateabe saamiseks saate tasuta sissejuhatuse Java kursusele saidil Make Android Apps.

Todaym, Android Studio tarnitakse sisseehitatud Kotlini toega, nii et Kotlini koodi mõistva Androidi projekti loomine on sama lihtne kui märkeruudu valimine Android Studio projekti loomise viisardis. Toetus on kasvanud liiga ületunnitöövõimaluse osas, niivõrd, et see otsus langeb praegu peamiselt eelistamisele.

Aga kui teete Java-st Kotlinile ülemineku, siis mida te täpselt võidate? Millised omadused on Kotlinil, mida Java ei oma, ja vastupidi?

Selles artiklis käsitleme kõiki peamisi erinevusi Kotlini ja Java vahel.


Kotlin vs Java, pakub hilisem sisutihedamat koodi - ilma findViewByIds-iga

Kui võrrelda Kotlini klassi ja Java klassi, mis teostavad sama tööd, siis on Kotlini klass üldiselt palju sisutihedam, kuid eriti on olemas üks valdkond, kus Kotlin saab tõsiselt vähendada katlakivi koodi, mida peate kirjutama: findViewByIds.

Kotlini Android-laiendused võimaldavad teil oma tegevusfaili importida viite vaatele, kus saate selle vaadega töötada nii, nagu see oleks osa tegevusest. Tulemus? Te ei pea kunagi enam teist meetodit findViewById kirjutama!

Enne nende laienduste kasutamist peate oma moodulitasemel build.gradle-faili lisama täiendava pistikprogrammi (rakendama pistikprogrammi: 'kotlin-android-pikendused'), kuid pärast seda olete valmis alustama vaadete importimist, näiteks kui teie tegevus_main.xml-fail sisaldas TextView-d koos ID-tekstigaView, lisage oma tegevusele järgmine teave:


impordi kotlinx.android.synthetic.main.activity_main.textView

Seejärel pääsete sellele TextView-le juurde, kasutades ainult selle ID-d:

textView.setText ("Tere maailm")

See on palju sisutihedam kui Java vaste:

TextView text = (TextView) findViewById (R.id.textView); text.setText ("Tere maailm");

Kotlin pole vaikimisi turvaline

NullPointerExceptions on Java arendajate jaoks tohutu pettumuseallikas. Java võimaldab teil määrata nulli mis tahes muutujale, kuid kui proovite kasutada objekti viidet, millel on null väärtus, siis valmistage end ette, et saada NullPointerException!

Loe ka: Kotiln Androidi tutvustamiseks

Kotlinis on kõik tüübid vaikimisi nullitavad (ei saa nulli väärtust hoida). Kui proovite oma Kotlini koodis nulli määrata või tagastada, siis see kompileerimise ajal ebaõnnestub, nii et ükski järgmistest ridadest ei kompileeri:

val nimi: string = null

fun getName (): string = null

Kui sa tõesti soovite Kotlinis muutujale nulli väärtuse määrata, peate selle muutuja selgesõnaliselt märkima nulliks, lisades tüübi juurde küsimärgi:

val arv: Int? = null

See muudab Kotlinis NullPointerExceptionitega peaaegu võimatu kokku puutuda - kui te siiski seda erandit ette näete, siis on tõenäoline, et te palusite Kotlinil selgesõnaliselt selle visata, või kui NullPointerException pärineb välise Java-koodilt.

Laiendusfunktsioonid

Kotlin annab arendajatele võimaluse laiendada klassi uue funktsionaalsusega, mis on ideaalne, kui leidub mõni klass, millest alati arvasite, et teil pole olulist meetodit!

Need laiendusfunktsioonid pole Java-s saadaval, ehkki need on saadaval ka teistes programmeerimiskeeltes, mida saate kasutada Androidi arendamiseks, näiteks C #.

Loe edasi: Java õpetus algajatele

Laiendusfunktsiooni loomisel lisage laiendatava klassi nimi (näiteks „String”) loodava funktsiooni nimele („styleString”), näiteks:

lõbus String.styleString (): String {// Stringige stringi ja tagastage siis //}

Seejärel saate selle funktsiooni laiendatud klassi esinemisjuhtudel välja kutsuda. märge, justkui kuuluks sellesse klassi:

myString.styleString ()

Korutiinid on esmaklassilised kodanikud

Iga kord, kui alustate pikaajalist toimingut, näiteks võrgu I / O või protsessorimahukat tööd, blokeeritakse helistamisniit, kuni toiming on lõpule viidud. Kuna Android on vaikimisi ühe keermega, siis rakenduse kasutajaliides külmub kohe, kui blokeerite peamise lõime, ja see ei reageeri, kuni toiming on lõpule viidud.

Java-s on traditsiooniliseks lahenduseks olnud taustlõnga loomine, kus saate seda intensiivset või pikaajalist tööd teha, kuid mitme lõime haldamine võib põhjustada keeruka, tõrkekindla koodi ja uue lõime loomine on kallis toiming.

Kuigi Kotlinis saate luua täiendavaid lõime, saate kasutada ka korutiine. Juhtorganid täidavad pikaajalisi ja intensiivseid ülesandeid, peatades täitmise kindlas kohas, ilma niiti blokeerimata, ja jätkates seda funktsiooni hiljem, võimaluse korral mõnel teisel niidil. See võimaldab teil luua mitte-blokeeriva asünkroonse koodi paistab sünkroonne ja on seetõttu selgem, sisutihedam ja inimesele loetav. Juhtimisvahendeid ei saa kasutada ka virnadeta, seega on nende mälu vähem kui lõimedega võrreldes ja need avavad ukse asünkroonse mitteblokeeriva programmeerimise täiendavatele stiilidele, näiteks asünkroonile / ootusele.

Kontrollitud erandeid pole

Kotlin ei ole kontrollinud erandeid, seega ei pea te erandeid kinni pidama ega neid deklareerima.

See, kas see tõmbab teid Kotlini poole või paneb teid Java-ga kleepima, sõltub teie arvamusest kontrollitud erandite kohta, kuna see on funktsioon, mis jagab arendajate kogukonda. Kui teil pole probleeme Java-koodi risustamisega, siis võite selle väljajätmisega rahule jääda, kui leiate, et kontrollitud erandid julgustavad mõtlema tõrke taastamisele ja lõppkokkuvõttes suunama teid tugevama loomise poole koodi, siis näete seda tõenäolisemalt kui piirkonda, kus Java on Kotlini kohal parem.

Natiivne toetus delegatsioonile

Kotlin toetab erinevalt Java-st esimese klassi delegeerimise (mõnikord tuntud kaudse delegeerimise) kaudu „kompositsiooni üle pärimise” kujundusmustrit. Delegeerimine on koht, kus vastuvõttev objekt delegeerib toimingud teisele delegeeritud objektile, mis on algses kontekstis abistajaobjekt.

Kotlini klassi delegeerimine on alternatiiv pärandusele, mis võimaldab kasutada mitut pärandit. Samal ajal aitavad Kotlini delegeeritud atribuudid koodi dubleerimist ära hoida, näiteks kui peate sama koodi uuesti kasutama mitmete atribuutide getterite ja setterite jaoks, saate selle koodi ekstraheerida delegeeritud atribuudiks. Omaduse esindaja peab määratlema operaatori funktsiooni getValue ja vajaduse korral operaatori setValue:

klassi delegaat {operaatori lõbus getValue (...) ... ... ...} operaatori lõbus setValue (...) ... ... ...}}

Seejärel võite atribuudi loomisel deklareerida, et selle atribuudi getter- ja setter-funktsioone haldab teine ​​klass:

klass MyClass {var omadus: Stringi autor: ()}

Andmeklassid

Pole tavaline, et projektil on mitu klassi, mis ei tee midagi muud, kui hoiavad andmeid. Javas leiad, et kirjutad nende klasside jaoks palju katlakivi koode, isegi kui klassidel endil on väga vähe funktsioone. Tavaliselt peate määratlema konstrukatori, väljade andmete salvestamiseks, iga välja väljamõõtmise ja seadistamise funktsioonid, pluss hashCode (), equals () ja toString () funktsioonid.

Kui lisate Kotlinis oma klassi määratlusesse märksõna "andmed", teeb kompilaator kogu selle töö teie heaks, sealhulgas genereerib kõik vajalikud getterid ja setterid:

andmeklass Kuupäev (var kuu: string, var päev: Int)

Nutikad heited

Java-s peate sageli kontrollima tüüpi ja seejärel objekti üle kandma olukordades, kus on juba selge, et objekti saab üle anda.

Kotlini nutikad valimisvõimalused saavad nende üleliigsete valuplaanidega teie eest hakkama, nii et te ei pea avaldust sisse laskma, kui olete seda juba Kotlini operaatori juures kontrollinud. Näiteks teab koostaja, et järgmine ülekandmine on ohutu:

if (tere on keel) {printString (tere)}

Tugi konstruktoritele

Erinevalt Java-st võib Kotlini klassil olla esmane konstruktor ja üks või mitu sekundaarset konstruktorit, mille saate luua, lisades need oma klassi deklaratsiooni:

klassi MainActivity konstruktor (eesnimi: string) {}

Puudub kaudsete laiendatavate konversioonide tugi

Kotlin ei toeta numbrite kaudset konversioonide laiendamist, seega ei konverteerita väiksemaid tüüpe vaikimisi suuremateks. Kui soovite Kotlinis sisemisele muutujale baitväärtuse omistada, peate tegema selgesõnalise teisenduse, samal ajal kui Java toetab kaudsete teisenduste toetamist.

Kotlini raamatukogude märkuste töötlemise töö

Kotlin toetab kõiki olemasolevaid Java raamistikke ja teeke, sealhulgas täiustatud raamistikke, mis toetuvad annotatsioonide töötlemisele, ehkki mõned Java teegid pakuvad juba Kotlini laiendusi, näiteks RxKotlin.

Kui soovite kasutada Java-teeki, mis tugineb märkuste töötlemisele, on selle lisamine Kotlini projekti pisut erinev, kuna peate sõltuvuse määrama kotlin-kapt ja seejärel kasutage annotationProcessori asemel Kotlini märkuste töötlemise tööriista (kapt). Näiteks:

// Rakendage pistikprogramm // rakendage pistikprogramm: kotlin-kapt // Lisage vastavad sõltuvused, kasutades kapt-konfiguratsiooni // sõltuvused {kapt "com.google.dagger: dagger-compiler: $ dagger-version" ... ... ...}

Vahetatavus Java-ga

Kui arutate Androidi arendamiseks Kotlini või Java kasutamist, peaksite teadma, et on olemas kolmas võimalus: kasutage mõlemat. Vaatamata kahe keele vahelistele erinevustele on Java ja Kotlin 100% koostalitlusvõimelised. Kotlini koodile saab helistada Java abil ja Java-koodile saab helistada Kotlinist, nii et Kotlini ja Java klassid on sama projekti raames võimalik ja kõik ikkagi komplekteeritakse.

See paindlikkus kahe keele vahel liikumiseks on kasulik, kui alustate Kotliniga, kuna see võimaldab teil Kotlinit olemasolevas projektis järk-järgult tutvustada, kuid võite eelistada mõlemat keelt alaliselt kasutada. Näiteks võivad olla teatud funktsioonid, mida eelistate kirjutada Kotlinis, ja teatud funktsioonid, mida teil on Java-keeles lihtsam kirjutada. Kuna nii Kotlin kui ka Java kompileerivad baidikoodiks, ei saa teie lõppkasutajad öelda, kus teie Java kood lõpeb, ja algab Kotlini kood, seega pole mingit põhjust, miks te ei saa Java-st koosnevat rakendust vabastada ja Kotlini kood.

Kui soovite Kotlinit ise proovida, siis kui teil on installitud Android Studio 3.0 eelvaade või uuem, on teil alustamiseks mitu võimalust:

  • Looge uus Android Studio projekt. Lihtsaim viis on luua uus projekt ja valida projekti loomise viisardist ruut „Kaasa Kotlini tugi”.

  • Lisage Kotlini klass olemasolevasse kataloogi. Klõpsake juhtnupul ja klõpsake kõnesolevat kataloogi, seejärel valige „Fail> Uus> Kotlini fail / klass.” Android Studio kuvab riba, milles palutakse teil konfigureerida oma projekt Kotlini toetamiseks; klõpsake lingil Seadista ja järgige ekraanil kuvatavaid juhiseid.

  • Teisendage olemasolevad Java-failid Kotliniks. Kotlini muunduri kaudu saate käivitada mis tahes Java-faili, klõpsates juhtnupul failil ja valides „Kood> Teisenda Java-fail Kotlini failiks“.

Pakkimine üles

Nagu näete, on Kotlini kui Java eelistamiseks palju häid põhjuseid, kuid on ka paar valdkonda, kus Java omab ülemvõimu. Võib-olla kõige tähelepanuväärsem: paljud Androidi arendajad tunnevad Java-d sel hetkel lihtsalt paremini. Tõenäoliselt ei leia Kotlin vs Java arutelu kiiresti varsti lahendust, mõlemal on oma plussid. Niisiis, kas kavatsete minna Kotlinile üle või tunnete, et Java on endiselt parim valik Androidi arendamiseks?

Loe edasi: Sissejuhatus Java süntaksisse Androidi arendamiseks

Kui olete ettevõtja, väikeettevõtte omanik või ehitate alutavaid ettevõtteid, on oluline, et teil olek organieeritud ja kekendunud äri- ja rahanduplaan. ...

Mut reede algab 29. novembril, kuid Amazon avab oma varade jaok kauplutepoodi piut varakult. Ettevõte on meiega jaganud hunniku Muta reede 2019 tehinguid ja elle välimue põhjal on teil ...

Põnev Postitus