Kotlin vs Java - koks skirtumas tarp šių dviejų?

Autorius: John Stephens
Kūrybos Data: 24 Sausio Mėn 2021
Atnaujinimo Data: 1 Liepos Mėn 2024
Anonim
Kotlin vs Java | Java or Kotlin for Android Development | Kotlin Tutorial | Edureka
Video.: Kotlin vs Java | Java or Kotlin for Android Development | Kotlin Tutorial | Edureka

Turinys


„Java“ vis dar gali būti pirmoji programavimo kalba, kuri atsimenama galvojant apie „Android“, bet to nedarote turėti naudoti „Java“ „Android“ plėtrai. Tiesą sakant, Kotlin dabar yra „Google“pirmenybė teikiamaoficiali „Android“ kalba!

Norėdami sužinoti daugiau apie „Java“, gaukite nemokamą „Java“ kurso įvadą apsilankę „Make Android Apps“.

„Todaym“ „Android Studio“ pristatomas su įmontuotu „Kotlin“ palaikymo įrenginiu, todėl sukurti „Android“ projektą, suprantantį „Kotlin“ kodą, yra taip paprasta, kaip pažymėti žymimąjį laukelį „Android Studio“ projekto kūrimo vedlyje. Parama išaugo ir dėl viršvalandžių pasirinkimo, ir dabar šis sprendimas dažniausiai teikiamas pirmenybei.

Bet jei jūs pereisite nuo „Java“ prie „Kotlin“, ką būtent jūs įgysite? Kokias savybes turi „Kotlin“, kurios „Java“ neturi, ir atvirkščiai?

Šiame straipsnyje apžvelgsime visus pagrindinius Kotlin ir Java skirtumus.

„Kotlin vs Java“, vėlesnis siūlo trumpesnį kodą - be „findViewByIds“

Jei palyginsite „Kotlin“ ir „Java“ klases, kurios atlieka tą patį darbą, tada „Kotlin“ klasė paprastai bus daug glausta, tačiau ypač yra viena sritis, kur „Kotlin“ gali rimtai sumažinti katilinės kodo, kurį jums reikia rašyti, kiekį: „findViewByIds“.


„Kotlin“ „Android“ plėtiniai leidžia į savo veiklos failą importuoti nuorodą į vaizdą, tada galėsite dirbti su tuo vaizdu taip, tarsi jis būtų veiklos dalis. Rezultatas? Jums niekada nebereikės dar kartą rašyti kito „findViewById“ metodo!

Prieš naudodamiesi šiais plėtiniais, turėsite pridėti papildomą papildinį prie modulio lygio „build.gradle“ failo (pritaikykite papildinį: „kotlin-android-plėtiniai“), bet po to būsite pasirengę importuoti rodinius, skirtus pavyzdys, jei jūsų veikla_main.xml faile buvo „TextView“ su ID „textView“, tada prie savo veiklos pridėtumėte šiuos dalykus:

importuoti kotlinx.android.synthetic.main.activity_main.textView

Tada galėsite pasiekti šį „TextView“ naudodami tik jo ID:

textView.setText („Sveikas pasaulis“)

Tai yra daug glaudesnis nei „Java“ atitikmuo:

„TextView text“ = („TextView“) „findViewById“ (R.id.textView); text.setText („Sveikas pasaulis“);

Pagal numatytuosius nustatymus Kotlin nėra visiškai saugus

„NullPointerExceptions“ yra didžiulis „Java“ kūrėjų nusivylimo šaltinis. „Java“ leidžia priskirti nuliui bet kurį kintamąjį, tačiau jei bandysite naudoti objekto nuorodą, kurios reikšmė yra nulinė, tada pasiruoškite sau, kad susidurtumėte su „NullPointerException“!


Taip pat skaitykite: „Kotiln“ „Android“ įvadas

Kotlin'e visi tipai pagal nutylėjimą yra niekiniai (negali išlaikyti nulinės vertės). Jei bandysite priskirti arba grąžinti nulį savo „Kotlin“ kode, tada jis nepavyks kompiliavimo metu, todėl nė viena iš šių eilučių nebus kompiliuota:

val vardas: Styga = nulis

įdomus getName (): eilutė = null

Jei tu tikrai norite Kotlinui kintamajam priskirti nulinę vertę, tada turėsite aiškiai pažymėti tą kintamąjį kaip niekinį, po tipo pridėdami klaustuką:

val skaičius: Int? = niekinis

Dėl to beveik neįmanoma susidurti su „NullPointerExceptions“ „Kotlin“ - iš tikrųjų, jei susidursite su šia išimtimi, greičiausiai taip yra todėl, kad aiškiai paprašėte Kotlino išmesti vieną, arba „NullPointerException“ yra kilęs iš išorinio „Java“ kodo.

Pratęsimo funkcijos

„Kotlin“ suteikia kūrėjams galimybę pratęsti klasę naudojant naują funkcionalumą, o tai yra idealu, jei yra klasė, kuriai jūs visada jautėte, kad trūksta svarbaus metodo!

Šios „plėtinio funkcijos“ „Java“ nėra, nors jos yra ir kitomis programavimo kalbomis, kurias galite naudoti kurdami „Android“, pvz., C #.

Skaityti toliau: „Java“ pamoka pradedantiesiems

Plėtinio funkciją sukuriate prisegdami klasės, kurią norite išplėsti, pavadinimą (pvz., „Styga“), pavyzdžiui, prie kuriamos funkcijos pavadinimo („styleString“):

įdomus String.styleString (): Styga {// Stilizuokite eilutę ir grąžinkite ją //}

Tada šią funkciją galite paskambinti išplėstinės klasės egzemplioriais, naudodami. žymėjimas, tarsi tai būtų tos klasės dalis:

„myString.styleString“)

Korutinai yra pirmos klasės piliečiai

Kiekvieną kartą inicijuodami ilgai trunkančią operaciją, pavyzdžiui, tinklo I / O ar procesoriaus reikalaujantį darbą, skambučio gija blokuojama, kol operacija bus baigta. Kadangi „Android“ pagal numatytuosius nustatymus yra su viena gija, kai tik užblokuosite pagrindinį giją, jūsų programos vartotojo sąsaja bus užšaldyta, ir ji nereaguos, kol operacija nebus baigta.

„Java“ programoje tradiciškai sprendimas buvo sukurti foninį siūlą, kuriame galite atlikti šį intensyvų ar ilgai trunkantį darbą, tačiau kelių gijų valdymas gali sukelti sudėtingą klaidų kodą, o sukurti naują giją yra brangi operacija.

Nors „Kotlin“ galite sukurti papildomų gijų, taip pat galite naudoti branduolius. Korutinai vykdo ilgai trunkančias ir intensyvias užduotis, sustabdydami vykdymą tam tikrame taške neužblokavę gijos, o vėliau atnaujindami šią funkciją vėliau, galbūt kitame gijoje. Tai leidžia jums sukurti neužblokuojantį asinchroninį kodą atrodo sinchroninis, todėl yra aiškesnis, glaudesnis ir suprantamesnis žmonėms. „Coroutines“ taip pat nėra statmenos, todėl, palyginti su gijomis, sunaudoja mažiau atminties ir atveria duris papildomiems asinchroninio neužblokuojamojo programavimo stiliams, tokiems kaip „Async“ / laukia.

Patikrintų išimčių nėra

Kotlin netikrino išimčių, todėl jums nereikia sugauti ar deklaruoti jokių išimčių.

Ar tai pritraukia jus prie Kotlino, ar priverčia norėti laikytis „Java“, priklausys nuo jūsų nuomonės apie patikrintas išimtis, nes tai yra funkcija, skirianti kūrėjų bendruomenę. Jei jums neteks bandymų / gaudymo blokų, griozduojančių jūsų „Java“ kodą, tuomet būsite patenkinti šiuo praleidimu, tačiau jei pastebėsite, kad pažymėtos išimtys skatina mąstyti apie klaidų atkūrimą ir galų gale skatina kurti patikimesnius. kodą, tada greičiausiai tai matysite kaip sritį, kurioje „Java“ turi pranašumą prieš Kotliną.

Gimtoji parama delegacijai

Kotlin, skirtingai nei „Java“, palaiko „kompozicijos, susijusios su paveldėjimu“, modelį per pirmosios klasės delegavimą (kartais vadinamą numanomu delegavimu). Delegavimas yra tas, kai gaunantis objektas perduoda operacijas antrajam deleguotam objektui, kuris yra pagalbinis objektas pradiniame kontekste.

Kotlino klasės delegacija yra paveldėjimo alternatyva, leidžianti naudoti kelis palikimus. Tuo tarpu „Kotlin“ perduotos savybės padeda išvengti kodo dubliavimosi, pavyzdžiui, jei reikia pakartotinai naudoti tą patį kodą keliems nuosavybės savininkams ir rinkėjams, tuomet galite jį išskleisti į deleguotą nuosavybę. Nuosavybės atstovas turi apibrėžti „getValue“ operatoriaus funkciją ir, pasirinktinai, „setValue“ operatorių:

klasės atstovas {operatoriaus linksma getValue (...) ... ... ...} operatoriaus linksma setValue (...) ... ... ...}}

Tuomet, kurdami nuosavybę, galite pareikšti, kad šios savybės gavimo ir nustatymo funkcijas vykdo kita klasė:

klasės „MyClass“ {var nuosavybė: eilutė, kurią perdavė delegatas ()}

Duomenų klasės

Neįprasta, kad projekte yra kelios klasės, kurios nieko nedaro, bet kaupia duomenis. „Java“ programoje rasite daug šių klasių kodų kodų, net jei patys užsiėmimai turi labai mažai funkcijų. Paprastai turėsite apibrėžti konstruktorių, laukus duomenims saugoti, kiekvieno lauko gavimo ir nustatymo funkcijas bei „hashCode“ (), „equals“ () ir „toString“ () funkcijas.

Kotlin mieste, jei į savo klasės apibrėžimą įtraukiate raktinį žodį „duomenys“, kompiliatorius atliks visą šį darbą už jus, įskaitant sugeneruoti visus reikalingus rinkėjus ir nustatytojus:

duomenų klasė Data (var mėnuo: eilutė, var diena: vid)

Išmanieji sumetimai

„Java“ programoje dažnai reikia patikrinti jo tipą ir tada atiduoti objektą tokiose situacijose, kai jau aišku, kad objektą galima atiduoti.

„Kotlin“ intelektualiosios versijos gali atlikti šias nereikalingas sumas už jus, todėl jums nereikia rašyti pareiškimo viduje, jei jau patikrinote jį su „Kotlin“ operatoriumi. Pvz., Sudarytojas žino, kad šie dalyviai yra saugūs:

if (labas yra stygos) {printString (labas)}

Parama konstruktoriams

Kitaip nei Java, Kotlin klasė gali turėti pirminį konstruktorių ir vieną ar daugiau antrinių konstruktorių, kuriuos sukuriate įtraukdami juos į savo klasės deklaraciją:

klasės „MainActivity“ konstruktorius (vardas: Pavadinimas: Styga) {}

Negalima palaikyti netiesiogiai augančių konversijų

Kotlin nepalaiko numanomo išplėstinio skaičių konvertavimo, todėl mažesni tipai nėra netiesiogiai konvertuojami į didesnius. Kotlin mieste, jei norite vidiniam kintamajam priskirti baito tipo vertę, turėsite atlikti aiškų konvertavimą, o „Java“ palaiko netiesiogines konversijas.

Komentarų tvarkymo bibliotekos su Kotlinu

„Kotlin“ palaiko visas esamas „Java“ struktūras ir bibliotekas, įskaitant pažangias struktūras, kurios priklauso nuo anotacijos apdorojimo, nors kai kurios „Java“ bibliotekos jau teikia „Kotlin“ plėtinius, pvz., „RxKotlin“.

Jei norite naudoti „Java“ biblioteką, kuri remiasi anotacijų apdorojimu, pridėdami ją prie „Kotlin“ projekto šiek tiek skiriasi, nes priklausomybę turėsite nurodyti naudodami kotlin-kapt ir naudokite „Kotlin Annotation“ apdorojimo įrankį (kapt), o ne „annotationProcessor“. Pavyzdžiui:

// Taikyti papildinį // Taikyti papildinį: kotlin-kapt // Pridėkite atitinkamas priklausomybes naudodami kapt konfigūraciją // priklausomybės {kapt "com.google.dagger: dagger-compiler: $ dagger-version" ... ... ...}

Keičiamumas su Java

Diskutuodami, ar naudoti „Kotlin“ ar „Java“ „Android“ kūrimui, turėtumėte žinoti, kad yra trečioji parinktis: naudoti abu. Nepaisant visų šių dviejų kalbų skirtumų, „Java“ ir „Kotlin“ yra 100% suderinamos. Galite paskambinti „Kotlin“ kodu iš „Java“, o „Java“ kodą galite paskambinti iš „Kotlin“, taigi „Kotlin“ ir „Java“ klases įmanoma laikyti viena šalia kitos tame pačiame projekte, ir viskas vis tiek bus sukompiliuota.

Šis lankstumas judėti tarp dviejų kalbų yra naudingas, kai jūs pradedate dirbti su „Kotlin“, nes tai leidžia laipsniškai pristatyti „Kotlin“ į esamą projektą, tačiau taip pat galbūt norėsite nuolat naudoti abi kalbas. Pvz., Gali būti tam tikrų funkcijų, kurias norite rašyti Kotlin, ir tam tikrų funkcijų, kurias jums lengviau rašyti „Java“. Kadangi „Kotlin“ ir „Java“ susideda iš taškų kodo, jūsų galutiniai vartotojai negalės pasakyti, kur baigiasi jūsų „Java“ kodas, ir prasideda „Kotlin“ kodas, todėl nėra jokios priežasties, kodėl negalima išleisti programos, kurią sudaro „Java“ ir Kotlino kodas.

Jei norite išbandyti „Kotlin“ patys, tol, kol turite įdiegtą „Android Studio 3.0“ ar naujesnę versiją, galite pradėti keliais būdais:

  • Sukurkite naują „Android Studio“ projektą. Paprasčiausias būdas yra sukurti naują projektą ir projekto kūrimo vedlyje pažymėti žymimąjį laukelį „Įtraukti Kotlino palaikymą“.

  • Įtraukite Kotlin klasę į esamą katalogą. „Control“ spustelėkite atitinkamą katalogą, tada pasirinkite „Failas> Naujas>„ Kotlin File / Class ““. „Android Studio“ parodys reklamjuostę, kurioje bus prašoma sukonfigūruoti projektą, kad jis palaikytų Kotlin; spustelėkite nuorodą „Konfigūruoti“ ir vykdykite ekrane pateikiamus nurodymus.

  • Konvertuokite esamus „Java“ failus į „Kotlin“. Galite paleisti bet kurį „Java“ failą per „Kotlin“ keitiklį, spustelėdami „Control“ spustelėdami failą ir pasirinkdami „Kodas> Konvertuoti„ Java “failą į„ Kotlin “failą“ “.

Apvyniojimas

Kaip matote, yra daug rimtų priežasčių, kodėl „Kotlin“ teikia pirmenybę „Java“, tačiau yra keletas sričių, kuriose „Java“ yra viršesnė. Galbūt labiausiai pastebimas: daugelis „Android“ kūrėjų šiuo metu yra paprasčiau susipažinę su „Java“. Tikėtina, kad „Kotlin vs Java“ diskusijos nebus greitai išspręstos, kai abu turės savo nuopelnus. Taigi, ar ketinate pereiti prie „Kotlin“, ar manote, kad „Java“ vis dar yra geriausias „Android“ plėtros variantas?

Skaityti toliau: Įvadas į „Java“ sintaksę „Android“ plėtrai

Kai „Apple“ 2017 m. Pritatė „iPhone X“, ilicio lėnio bendrovė, pašalinui avo fizinį namų mygtuką, pradėjo naudoti naują getų navigacijo itemą. Nor matėme, kad kai kurie „Android“ gamintojai ekperiment...

Norite išbandyti VR, bet nežinote, nuo ko pradėti? Priijunkite ir mėgaukitė mėgtamomi TV laidomi ir filmai viiškai nauju būdu naudodami „iPM 3D“ virtualio realybė akiniu.uipažink u avo mėgtamai peron...

Skaitytojų Pasirinkimas