Kotlin vs Java - care este diferența dintre cele două?

Autor: John Stephens
Data Creației: 24 Ianuarie 2021
Data Actualizării: 1 Iulie 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

Conţinut


Este posibil ca Java să fie totuși primul limbaj de programare care apare în minte atunci când te gândești la Android, dar nu avea pentru a utiliza Java pentru dezvoltarea Android. De fapt, Kotlin este acum Googlepreferatlimba oficială pentru Android!

Pentru a afla mai multe despre Java, obțineți un curs introductiv gratuit la Java la Make Android Apps.

Astăzi, Android Studio este livrat cu suportul Kotlin încorporat, astfel încât crearea unui proiect Android care înțelege codul Kotlin este la fel de ușoară precum selectarea unei căsuțe de selectare în asistentul de creare a proiectului Android Studio. Sprijinul a crescut pentru opțiunea prea mare, în sensul că acum această decizie se bazează în principal pe preferințe.

Dar dacă faceți trecerea de la Java la Kotlin, ce câștigați exact? Ce caracteristici are Kotlin, că Java nu, și invers?

În acest articol, vom analiza toate diferențele majore dintre Kotlin și Java.


Kotlin vs Java, ulterior oferă un cod mai succint - fără findViewByIds

Dacă comparați o clasă Kotlin și o clasă Java care efectuează aceeași lucrare, atunci clasa Kotlin va fi, în general, mult mai concisă, dar există o zonă în special în care Kotlin poate reduce serios cantitatea de cod placă pe care trebuie să o scrieți: findViewByIds.

Extensiile Android Kotlin vă permit să importați o referință la o Vizualizare în fișierul dvs. Activitate, moment în care veți putea lucra cu acea Vizionare ca și cum ar fi făcut parte din Activitate. Rezultatul? Niciodată nu va trebui să mai scrii o altă metodă findViewById!

Înainte de a putea folosi aceste extensii, va trebui să adăugați un plugin suplimentar la fișierul dvs. build.gradle la nivel de modul (aplicați pluginul: 'kotlin-android-extensions'), dar după aceea sunteți gata să începeți să importați vizualizări, pentru exemplu dacă fișierul dvs. activitate_main.xml conține un TextView cu ID textView, atunci ați adăuga următoarele la Activitatea dvs.:


import kotlinx.android.synthetic.main.activity_main.textView

Puteți accesa apoi acest TextView folosind doar ID-ul său:

textView.setText ("Hello World")

Aceasta este mult mai succint decât echivalentul Java:

TextView text = (TextView) findViewById (R.id.textView); text.setText ("Hello World");

În mod implicit, Kotlin este sigur

NullPointerExceptions sunt o sursă uriașă de frustrare pentru dezvoltatorii Java. Java vă permite să atribuiți nulă oricărei variabile, dar dacă încercați să utilizați o referință de obiect care are o valoare nulă, atunci pregătiți-vă să întâlniți o NullPointerException!

Citește și: Kotiln pentru introducere Android

În Kotlin, toate tipurile sunt nule (incapabil să dețină o valoare nulă) în mod implicit. Dacă încercați să atribuiți sau să returnați nul în codul dvs. Kotlin, atunci nu va reuși la compilare, astfel încât niciuna dintre următoarele linii nu va fi compilată:

nume val: String = null

distracție getName (): String = null

daca tu într-adevăr doriți să atribuiți o valoare nulă unei variabile din Kotlin, atunci va trebui să marcați explicit această variabilă ca nullable, adăugând un semn de întrebare după tipul:

număr val: Int? = nul

Acest lucru face aproape imposibil să întâlnești NullPointerExceptions în Kotlin - de fapt, dacă întâlnești această excepție, atunci șansele sunt, deoarece ai cerut explicit lui Kotlin să arunce una, sau NullPointerException provine din cod Java extern.

Funcții de extensie

Kotlin oferă dezvoltatorilor posibilitatea de a extinde o clasă cu o funcționalitate nouă, ceea ce este ideal dacă există o clasă despre care ai simțit întotdeauna că lipsește o metodă importantă!

Aceste „funcții de extensie” nu sunt disponibile în Java, deși sunt disponibile în alte limbaje de programare pe care le puteți utiliza pentru dezvoltarea Android, cum ar fi C #.

Citește Următorul: Tutorial Java pentru începători

Creați o funcție de extensie prefixând numele clasei pe care doriți să o extindeți (cum ar fi „String”) la numele funcției pe care o creați („styleString”), de exemplu:

fun String.styleString (): String {// Stilează șirul și apoi returnează-l //}

Puteți apoi să apelați această funcție pe instanțele clasei extinse, prin intermediul. notație, ca și cum ar face parte din acea clasă:

myString.styleString ()

Coroutinele sunt cetățeni de primă clasă

Ori de câte ori inițiați o operație pe termen lung, cum ar fi I / O de rețea sau o muncă intensă în procesor, firul apelant este blocat până la finalizarea operațiunii. Având în vedere că Android este single-threaded în mod implicit, imediat ce blocați thread-ul principal, interfața de utilizare a aplicației dvs. va îngheța și va rămâne fără răspuns până la finalizarea operațiunii.

În Java, soluția a fost, în mod tradițional, crearea unui thread de fundal în care puteți efectua această lucrare intensivă sau pe termen lung, dar administrarea mai multor fire poate duce la coduri complexe, predispuse la erori, iar crearea unui nou thread este o operație scumpă.

În timp ce puteți crea fire suplimentare în Kotlin, puteți utiliza, de asemenea, coroutine. Coroutinele execută sarcini de lungă durată și intens, suspendând execuția la un anumit punct fără a bloca firul, apoi reluând această funcție într-un punct ulterior, eventual pe un alt thread. Acest lucru vă permite să creați un cod asincron care nu blochează arată sincron și, prin urmare, este mai clar, concis și mai cititor de oameni. Corutinele sunt de asemenea stivuite, deci au o memorie mai mică în comparație cu firele și deschid ușa către stiluri suplimentare de programare asincronă care nu blochează, cum ar fi async / wait.

Nu există excepții verificate

Kotlin nu are excepții verificate, așa că nu trebuie să prindeți sau să declarați excepții.

Indiferent dacă acesta este ceva care te atrage către Kotlin sau te face să vrei să rămâi cu Java depinde de opinia ta cu excepțiile verificate, deoarece aceasta este o caracteristică care împarte comunitatea de dezvoltatori. Dacă te-ai săturat de a încerca / prinde blocuri care înfundă codul Java, atunci vei fi mulțumit de această omisiune, însă dacă găsești că excepțiile verificate te încurajează să te gândești la recuperarea erorilor și, în final, te împing către o creare mai robustă atunci este mai probabil să vedeți acest lucru ca o zonă în care Java are marginea peste Kotlin.

Sprijin pentru delegare

Kotlin, spre deosebire de Java, acceptă modelul de design „compoziție peste moștenire”, prin delegația de primă clasă (uneori cunoscută sub numele de delegare implicită). Delegarea este locul în care un obiect primitor delegă operațiuni către un al doilea obiect delegat, care este un obiect de ajutor cu contextul inițial.

Delegația de clasă a lui Kotlin este o alternativă la moștenire care permite utilizarea moștenirii multiple. Între timp, proprietățile delegate ale lui Kotlin ajută la prevenirea duplicării codului, de exemplu, dacă aveți nevoie să reutilizați același cod pentru getter și setatori de mai multe proprietăți, puteți extrage acest cod într-o proprietate delegată. Delegatul de proprietate trebuie să definească funcția de operator getValue și, opțional, operatorul setValue:

class Delegate {operator fun getValue (...) ... ... ...} operator fun setValue (...) ... ... ...}}

Atunci, atunci când creați o proprietate, puteți declara că funcțiile getter și setter pentru această proprietate particulară sunt gestionate de o altă clasă:

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

Clase de date

Nu este neobișnuit ca un proiect să aibă mai multe clase care nu fac altceva decât să dețină date. În Java, veți găsi scris multe coduri de plăci pentru aceste clase, chiar dacă clasele în sine au o funcționalitate foarte mică. De obicei, va trebui să definiți un constructor, câmpuri pentru a stoca datele, funcțiile getter și setter pentru fiecare câmp, plus funcțiile hashCode (), egal (() și toString ().

În Kotlin, dacă includeți cuvântul cheie „date” în definiția clasei dvs., atunci compilatorul va efectua toate aceste lucrări pentru dvs., inclusiv generarea tuturor getter-urilor și setatorilor necesare:

clasa de date Data (var luna: șir, zi var: Int)

Distribuții inteligente

În Java, de multe ori trebuie să verificați tipul și apoi să aruncați un obiect în situații în care deja este clar că obiectul poate fi turnat.

Distribuțiile inteligente ale Kotlin pot gestiona aceste distribuții redundante pentru dvs., deci nu trebuie să aruncați în interiorul unei declarații dacă l-ați verificat deja cu operatorul „este” al lui Kotlin. De exemplu, compilatorul știe că următoarea distribuție este sigură:

if (hello is String) {printString (salut)}

Suport pentru constructori

Spre deosebire de Java, o clasă Kotlin poate avea un constructor primar și unul sau mai mulți constructori secundari, pe care îi creați incluzându-i în declarația de clasă:

class MainActivity constructor (firstName: String) {}

Fără suport pentru conversiile implicite de lărgire

Kotlin nu acceptă conversiile implicite pentru lărgirea numerelor, astfel încât tipurile mai mici nu sunt implicit convertite în tipuri mai mari. În Kotlin, dacă doriți să atribuiți o valoare de tip Byte unei variabile Int, atunci va trebui să efectuați o conversie explicită, în timp ce Java are suport pentru conversii implicite.

Bibliotecile de procesare a adnotărilor cu Kotlin

Kotlin acceptă toate cadrele și bibliotecile Java existente, inclusiv cadrele avansate care se bazează pe procesarea adnotărilor, deși unele biblioteci Java furnizează deja extensii Kotlin, precum RxKotlin.

Dacă doriți să utilizați o bibliotecă Java care se bazează pe procesarea adnotărilor, atunci adăugarea acesteia la proiectul Kotlin este ușor diferită, deoarece va trebui să specificați dependența folosind funcția Kotlin-kapt plugin, apoi utilizați instrumentul de procesare a adnotării Kotlin (kapt) în loc de annotationProcessor. De exemplu:

// Aplicați pluginul // aplicați pluginul: kotlin-kapt // Adăugați dependențele respective folosind configurația kapt // dependențe {kapt "com.google.dagger: dagger-compilator: $ dagger-version" ... ... ...}

Intercambiabilitate cu Java

Când dezbateți dacă folosiți Kotlin sau Java pentru dezvoltarea Android, trebuie să știți că există o a treia opțiune: folosiți ambele. În ciuda tuturor diferențelor dintre cele două limbi, Java și Kotlin sunt interoperabile 100%. Puteți apela codul Kotlin din Java și puteți apela codul Java de la Kotlin, astfel încât este posibil să aveți clase Kotlin și Java unul lângă altul în cadrul aceluiași proiect și totul va fi compilat.

Această flexibilitate pentru a vă deplasa între cele două limbi este utilă atunci când începeți cu Kotlin, deoarece vă permite să introduceți gradual Kotlin într-un proiect existent, dar este posibil să preferați să utilizați ambele limbi permanent. De exemplu, pot exista anumite caracteristici pe care preferați să le scrieți în Kotlin și anumite funcții pe care le găsiți mai ușor de scris în Java. Întrucât Kotlin și Java compilează la bytecode, utilizatorii finali nu vor putea să spună unde se încheie codul dvs. Java și începe codul Kotlin, deci nu există niciun motiv pentru care nu puteți lansa o aplicație care constă din Java și Codul Kotlin.

Dacă doriți să încercați Kotlin pentru dvs., atunci dacă aveți Android Studio 3.0 Preview sau versiune superioară instalată, există câteva moduri prin care puteți începe:

  • Creați un nou proiect Android Studio. Cea mai ușoară metodă este de a crea un proiect nou și de a selecta caseta de selectare „Include suportul Kotlin” din asistentul de creare a proiectului.

  • Adăugați o clasă Kotlin la un director existent. Faceți clic pe directorul în cauză, apoi selectați „Fișier> Nou> Fișier / clasă Kotlin.” Android Studio va afișa un banner care vă solicită să configurați proiectul pentru a susține Kotlin; faceți clic pe linkul „Configurați” și urmați instrucțiunile de pe ecran.

  • Convertiți fișierele Java existente în Kotlin. Puteți rula orice fișier Java printr-un convertor Kotlin, făcând clic pe butonul Control și selectând „Cod> Convertiți fișier Java în fișier Kotlin.”

Înveliți

După cum puteți vedea, există o mulțime de motive bune pentru a prefera Kotlin față de Java, cu toate acestea există câteva zone în care Java are mâna superioară. Poate cel mai important: mulți dezvoltatori Android sunt pur și simplu mai familiarizați cu Java în acest moment. Probabil că dezbaterea Kotlin și Java nu se va rezolva oricând în curând, ambele având propriile lor merite. Deci, veți face trecerea la Kotlin sau credeți că Java este încă cea mai bună opțiune pentru dezvoltarea Android?

Citește Următorul: O introducere în sintaxa Java pentru dezvoltare Android

Cu acete dipozitive au apărut o erie de probleme de afișare. unt unele dintre cele mai frecvente probleme Galaxy 9 și Galaxy 9 Plu. Puțini utilizatori au raportat o problemă în care ecranul are d...

Ultima actualizare, 12 iunie 2019 (11:45 ET): Cea mai nouă actualizare pentru amung Galaxy 9 și Galaxy 9 Plu va aduce corecția de ecuritate din iunie 2019 (via amMobile). Aceta va aduce, de aemenea, c...

Interesant Astăzi