Kotlin vs Java - aký je rozdiel medzi nimi?

Autor: John Stephens
Dátum Stvorenia: 24 Január 2021
Dátum Aktualizácie: 1 V Júli 2024
Anonim
Kotlin vs Java - aký je rozdiel medzi nimi? - Aplikácie
Kotlin vs Java - aký je rozdiel medzi nimi? - Aplikácie

Obsah


Java môže byť stále prvým programovacím jazykom, ktorý vám pri premýšľaní o systéme Android príde na myseľ, ale nemáte to mať používať Java pre vývoj Androidu. V skutočnosti je Kotlin teraz spoločnosť Googlevýhodnýoficiálny jazyk pre Android!

Ak sa chcete dozvedieť viac o Java, získajte bezplatný úvod do kurzu Java na stránke Make Android Apps.

Dnes je Android Studio dodávané so zabudovanou podporou Kotlin, takže vytvorenie projektu pre Android, ktorý ovláda kód Kotlin, je rovnako jednoduché ako začiarknutie políčka v sprievodcovi vytvorením projektu pre Android Studio. Podpora sa pre túto možnosť rozrástla príliš nadčas, a to až do tej miery, že toto rozhodnutie sa teraz uprednostňuje.

Ale ak urobíte prechod z Java na Kotlin, čo presne získate? Aké vlastnosti má Kotlin, že Java nemá, a naopak?


V tomto článku sa zameriame na všetky hlavné rozdiely medzi Kotlinom a Javou.

Kotlin vs Java, neskôr ponúka stručnejší kód - bez findViewByIds

Ak porovnáte triedu Kotlin a triedu Java, ktoré vykonávajú rovnakú prácu, potom bude trieda Kotlin vo všeobecnosti omnoho stručnejšia, ale je tu jedna oblasť, v ktorej môže Kotlin vážne znížiť množstvo kódu kotla, ktoré musíte napísať: findViewByIds.

Rozšírenia Kotlin pre Android vám umožňujú importovať odkaz na zobrazenie do súboru aktivity, kedy budete môcť s týmto zobrazením pracovať, akoby to bolo súčasťou aktivity. Výsledok? Už nikdy nebudete musieť písať ďalšiu metódu findViewById!

Predtým, ako budete môcť tieto rozšírenia použiť, budete musieť do súboru build.gradle na úrovni modulu pridať ďalší doplnok (použiť doplnok: 'kotlin-android-extensions'), ale potom ste pripravení začať importovať zobrazenia, pre príklad, ak váš súbor activity_main.xml obsahoval textové zobrazenie s ID textView, do svojej aktivity by ste pridali nasledujúce položky:


importovať kotlinx.android.synthetic.main.activity_main.textView

K tomuto TextView potom môžete pristupovať iba pomocou jeho ID:

textView.setText („Ahoj svet“)

Toto je veľa stručnejšie ako ekvivalent Java:

TextView text = (TextView) findViewById (R.id.textView); text.setText („Ahoj svet“);

Kotlin je predvolene bezpečný

Výnimky NullPointerException sú pre vývojárov Java obrovským zdrojom frustrácie. Java vám umožňuje priradiť null ktorejkoľvek premennej, ale ak sa pokúsite použiť odkaz na objekt, ktorý má nulovú hodnotu, potom sa postavte, aby ste narazili na NullPointerException!

Prečítajte si tiež: Kotiln pre zavedenie systému Android

V Kotline sú všetky typy v predvolenom nastavení nulovateľné (nemôžu mať nulovú hodnotu). Ak sa pokúsite priradiť alebo vrátiť hodnotu Null v kóde Kotlin, zlyhá pri kompilácii, takže sa nezkompiluje ani jeden z nasledujúcich riadkov:

názov valca: String = null

fun getName (): String = null

Ak ty naozaj Ak chcete premennej v Kotline priradiť nulovú hodnotu, budete musieť túto premennú explicitne označiť ako neplatnú, a to pridaním otáznika za typ:

číslo valca: Int? = null

Vďaka tomu je takmer nemožné stretnúť sa s NullPointerExceptions v Kotlin - v skutočnosti, ak narazíte na túto výnimku, je pravdepodobné, že ste to preto, že ste výslovne požiadali Kotlina, aby jeden vyhodil, alebo NullPointerException pochádza z externého kódu Java.

Rozširovacie funkcie

Kotlin dáva vývojárom možnosť rozšíriť triedu o nové funkcie, čo je ideálne, ak existuje trieda, o ktorej ste vždy cítili, že jej chýba dôležitá metóda!

Tieto „funkcie rozšírenia“ nie sú dostupné v jazyku Java, hoci sú k dispozícii v iných programovacích jazykoch, ktoré môžete použiť na vývoj systému Android, napríklad v jazyku C #.

Čítať ďalej: Výukový program Java pre začiatočníkov

Funkciu rozšírenia vytvoríte predponou názvu triedy, ktorú chcete rozšíriť (napríklad „String“), na názov funkcie, ktorú vytvárate („styleString“), napríklad:

fun String.styleString (): String {// Štýl reťazca a potom ho vráťte //}

Túto funkciu potom môžete zavolať v prípade rozšírenej triedy prostredníctvom. zápis, akoby bol súčasťou tejto triedy:

myString.styleString ()

Coroutines sú prvotriednymi občanmi

Kedykoľvek iniciujete dlhodobú operáciu, ako sú sieťové I / O alebo práce náročné na CPU, volacie vlákno sa zablokuje, kým sa operácia neskončí. Pretože systém Android je v predvolenom nastavení s jedným vláknom, akonáhle zablokujete hlavné vlákno, používateľské rozhranie vašej aplikácie zamrzne a až do dokončenia operácie nebude reagovať.

V Jave bolo tradične riešením vytvoriť vlákno na pozadí, kde môžete vykonávať túto náročnú alebo dlhotrvajúcu prácu, ale správa viacerých vlákien môže viesť k zložitému kódu náchylnému na chyby a vytvorenie nového vlákna je nákladná operácia.

Aj keď v Kotline môžete vytvárať ďalšie vlákna, môžete použiť aj coroutiny. Coroutines vykonávajú dlhodobé a intenzívne úlohy pozastavením vykonávania v určitom bode bez blokovania vlákna a následným obnovením tejto funkcie v neskoršom bode, pravdepodobne na inom vlákne. To vám umožní vytvoriť neblokujúci asynchrónny kód, ktorý vzhľad synchrónny, a preto je jasnejší, výstižnejší a čitateľnejší pre človeka. Coroutines sú tiež stohovateľné, takže majú nižšie využitie pamäte v porovnaní s vláknami a otvárajú dvere k ďalším štýlom asynchrónneho neblokujúceho programovania, ako je async / čakajú.

Neexistujú žiadne kontrolované výnimky

Kotlin nemá kontrolované výnimky, takže nemusíte žiadne výnimky chytiť ani vyhlasovať.

Či je to niečo, čo vás priťahuje do Kotlin, alebo či chcete, aby ste sa držali Java, bude závisieť od vášho názoru na kontrolované výnimky, pretože to je funkcia, ktorá rozdeľuje vývojársku komunitu. Ak ste chorí s blokovaním pokusov a úlovkov, ktoré zaplňujú váš kód Java, potom budete s týmto opomenutím spokojní. Ak však zistíte, že kontrolované výnimky vás povzbudia, aby ste premýšľali o obnove chýb a nakoniec vás prinútili vytvoriť robustnejšie kód, potom to pravdepodobne uvidíte ako oblasť, kde má Java pred Kotlinom výhodu.

Natívna podpora delegácie

Kotlin, na rozdiel od Java, podporuje návrhový vzorec „zloženie nad dedičstvom“ prostredníctvom prvotriednej delegácie (niekedy známej ako implicitné delegovanie). Delegovanie je miesto, kde prijímajúci objekt deleguje operácie na druhý delegovaný objekt, ktorý je pomocným objektom v pôvodnom kontexte.

Delegácia triedy Kotlin je alternatívou k dedičstvu, ktoré umožňuje použiť viacnásobné dedičstvo. Medzitým môžu delegované vlastnosti spoločnosti Kotlin zabrániť duplikácii kódu, napríklad ak potrebujete znova použiť ten istý kód pre získavače a nastavovače viacerých vlastností, potom môžete tento kód extrahovať do delegovanej vlastníctva. Delegát majetku musí definovať funkciu operátora getValue a prípadne operátora setValue:

class Delegate {operator fun getValue (...) ... ... ...}} zábavné setValue (...) ... ... ...}}

Keď potom vytvárate vlastnosť, môžete vyhlásiť, že funkcie getra a setteru pre túto konkrétnu vlastnosť sú spravované inou triedou:

class MyClass {var property: String by Delegate ()}

Dátové triedy

Pre projekt nie je neobvyklé, že má viac tried, ktoré nerobia nič, iba uchovávajú údaje. V Jave sa píšete pre tieto triedy veľa kódu kódu, ale samotné triedy majú veľmi malú funkčnosť. Zvyčajne budete musieť definovať konštruktora, polia na ukladanie údajov, funkcie getra a setteru pre každé pole plus funkcie hashCode (), equals () a toString ().

Ak v spoločnosti Kotlin zahrnete kľúčové slovo „data“ do svojej definície triedy, kompilátor za vás vykoná všetku túto prácu vrátane vygenerovania všetkých potrebných getterov a nastavovačov:

dátová trieda Dátum (var. mesiac: String, var. deň: Int)

Inteligentné obsadenie

V jazyku Java musíte často skontrolovať typ a potom odovzdať objekt v situáciách, keď už je jasné, že objekt je možné odovzdať.

Inteligentné obsadenia spoločnosti Kotlin zvládnu tieto nadbytočné obsadenia za vás, takže ak už ste skontrolovali operátora spoločnosti Kotlin „nemusíte“, nemusíte odovzdávať vyhlásenie. Napríklad kompilátor vie, že nasledujúce obsadenie je bezpečné:

if (ahoj je String) {printString (ahoj)}

Podpora pre konštruktérov

Na rozdiel od jazyka Java môže trieda Kotlin obsahovať primárny konštruktor a jedného alebo viacerých sekundárnych konštruktorov, ktoré vytvoríte ich zahrnutím do deklarácie triedy:

konštruktor triedy MainActivity (meno: String) {}

Neexistuje podpora pre implicitné rozšírenie konverzií

Kotlin nepodporuje implicitné rozšírenie počtu konverzií, takže menšie typy sa implicitne neprevedú na väčšie typy. Ak chcete v Kotlini priradiť hodnotu typu Byte k premennej Int, musíte vykonať explicitný prevod, zatiaľ čo Java má podporu pre implicitné konverzie.

Knižnice spracovávajúce anotácie s Kotlinom

Kotlin podporuje všetky existujúce kostry a knižnice Java, vrátane pokročilých rámcov, ktoré sa spoliehajú na spracovanie anotácií, hoci niektoré knižnice Java už poskytujú Kotlinské rozšírenia, ako napríklad RxKotlin.

Ak chcete používať knižnicu Java, ktorá sa spolieha na spracovanie anotácií, jej pridanie do vášho projektu Kotlin je trochu odlišné, pretože závislosť je potrebné určiť pomocou Kotlín-Kapt plugin a potom namiesto nástroja annotationProcessor použite nástroj na spracovanie anotácií Kotlin (kapt). Napríklad:

// Použiť doplnok // Použiť doplnok: kotlin-kapt // Pridajte príslušné závislosti pomocou konfigurácie kapt // Závislosti {kapt "com.google.dagger: dagger-compiler: $ dagger-version" ... ... ...}

Zameniteľnosť s Java

Pri diskusii o tom, či použiť Kotlin alebo Java na vývoj systému Android, by ste mali vedieť, že existuje tretia možnosť: použiť oboje, Napriek všetkým rozdielom medzi týmito dvoma jazykmi sú Java a Kotlin 100% interoperabilné. Môžete zavolať Kotlinov kód z Java a môžete zavolať Java kód z Kotlinov, takže je možné mať triedy Kotlin a Java vedľa seba v rámci toho istého projektu a všetko sa bude kompilovať.

Táto flexibilita pri prechode medzi týmito dvoma jazykmi je užitočná, keď začínate s programom Kotlin, pretože vám umožňuje postupne zavádzať projekt Kotlin do existujúceho projektu, ale môžete tiež uprednostniť trvalé používanie oboch jazykov. Napríklad môžu existovať určité funkcie, ktoré uprednostňujete písať v Kotlin, a niektoré funkcie, ktoré je pre vás ľahšie písať v jazyku Java. Keďže systémy Kotlin aj Java sa kompilujú do bajtkódu, vaši koncoví používatelia nebudú môcť zistiť, kde končí váš kód Java, a začína kód Kotlin, takže nie je dôvod, prečo nemôžete uvoľniť aplikáciu pozostávajúcu z Java a Kotlinov kód.

Ak si chcete Kotlin vyskúšať sami, potom, ak máte nainštalovanú ukážku aplikácie Android Studio 3.0 alebo novšiu, môžete začať niekoľkými spôsobmi:

  • Vytvorte nový projekt Android Studio. Najjednoduchšou metódou je vytvorenie nového projektu a začiarknutie políčka Zahrnúť podporu Kotlin v sprievodcovi vytvorením projektu.

  • Pridajte triedu Kotlin do existujúceho adresára. Kliknite pravým tlačidlom myši na príslušný adresár a vyberte položku Súbor> Nový> Súbor / trieda Kotlin. “V aplikácii Android Studio sa zobrazí banner s výzvou na konfiguráciu projektu na podporu Kotlin; kliknite na odkaz „Konfigurovať“ a postupujte podľa pokynov na obrazovke.

  • Konvertujte existujúce súbory Java na Kotlin. Ktorýkoľvek súbor Java môžete spustiť pomocou konvertora Kotlin. Stačí kliknúť na súbor a kliknúť na položku Kód> Konvertovať súbor Java na súbor Kotlin. “

Zabalenie

Ako vidíte, existuje veľa dobrých dôvodov, prečo preferovať Kotlin pred Java, existuje však niekoľko oblastí, v ktorých má Java navrch. Snáď predovšetkým: mnoho vývojárov systému Android je v tomto okamihu jednoducho oboznámení s Java. Pravdepodobne sa diskusia o Kotlin vs Java nevyrieši v dohľadnej dobe a obe majú svoje vlastné zásluhy. Takže sa chystáte prejsť na Kotlin, alebo si myslíte, že Java je stále najlepšou voľbou pre vývoj Androidu?

Čítať ďalej: Úvod do syntaxe Java pre vývoj systému Android

Tu máme rozmanitý peronál. Pochádzame z celého veta a používame najrôznejšie technológie. Táto éria výberov zametnancov vám ukáže, ak&#...

V roku 2015 poločnoť Google natavila umelo inteligentný program DeepMind na hranie tarej čínkej tolovej hry Go. Táto hra pre dvoch hráčov, ktorá je ako mix šachov a dám, ...

Pre Teba