Java vs. Kotlin Ar trebui să utilizați Kotlin pentru dezvoltarea Android?

Când te gândești la dezvoltarea Android, șansele sunt ca un limbaj de programare să revină imediat la minte: Java.

Deși este adevărat că majoritatea aplicațiilor Android sunt scrise în Java, atunci când vine vorba de dezvoltarea Android, Java nu este dvs. numai opțiune.

Puteți scrie aplicații Android în orice limbă care poate fi compilată și rulată pe Java Virtual Machine (JVM), iar utilizatorii finali nu vor fi cei mai înțelepți. Și un limbaj de programare compatibil cu JVM care atrage atenția comunității Android este Kotlin, un limbaj de programare static tipărit de la JetBrains.

Dacă ați auzit lucruri bune despre Kotlin și sunteți interesat să-l încercați singur, atunci sunteți în locul potrivit. În această serie din trei părți, voi împărți tot ce trebuie să știți pentru a începe să folosiți Kotlin pentru dezvoltarea Androidului.

În această primă tranșă, mă voi uita de ce, în calitate de dezvoltator de Android, ați dori să luați în considerare trecerea de la Java în primul rând și apoi voi examina argumentele pro și contra ale selectării lui Kotlin ca înlocuitor Java. Până la sfârșitul acestui articol, veți avea o înțelegere solidă a exact ceea ce oferă Kotlin și va ști dacă este potrivit pentru dvs.. 

În partea a doua, vom examina modul în care vă configurați instalarea Android Studio pentru a sprijini Kotlin și pentru a crea o aplicație Android Android care este scrisă integral în Kotlin. Cu aceste fundații, în cea de-a treia tranșă vom examina cum să suprasolicitați dezvoltarea Androidului, utilizând câteva caracteristici mai avansate ale limbajului Kotlin.

De ce ar trebui să fac schimbarea de la Java?

În timp ce Java este una dintre cele mai utilizate limbi de programare din lume și este destul de mult limbajul oficial al dezvoltării Android, există multe motive pentru care Java ar putea să nu mereu fi cea mai bună opțiune pentru proiectele Android.

Cea mai mare problemă este că Java nu este un limbaj modern și, deși Java 8 a reprezentat un pas uriaș pentru platformă, introducând o mulțime de caracteristici pe care dezvoltatorii le așteptau (inclusiv funcțiile lambda), la momentul scrierii Android suportă doar un subset de caracteristici Java 8. Se pare puțin probabil ca dezvoltatorii Android să profite din plin de avantajele Java 8 în curând, așa că în viitorul apropiat, dacă doriți să utilizați Java în proiectele Android, atunci sunteți aproape blocați cu Java 7.

Java în ansamblu are, de asemenea, câteva probleme destul de bine documentate, inclusiv fără sfârșit încerca-captură blocuri, lipsă de extensibilitate, lipsă de siguranță (și asta infam NullPointerException), ca să nu mai vorbim de lipsa suportului pentru funcționalitățile de programare funcțională. Deși Java începe să adauge niște elemente de programare funcționale, cum ar fi expresiile lambda și interfețele funcționale, Java este în continuare un limbaj procedural. Sintaxa Java este, de asemenea, destul de verbose, în special în comparație cu multe limbi de programare moderne.

Avantajele lui Kotlin

Așadar, vă recomandăm să treceți la una dintre multele limbi moderne de programare proiectate să ruleze pe JVM. În timp ce nu există lipsă de limbi care să se compileze în Java bytecode, există câțiva factori care îl fac pe Kotlin să iasă din mulțime:

Interschimbabilitate cu Java

Unul dintre cele mai puternice puncte de vedere ale lui Kotlin, ca potențială alternativă la Java, este nivelul absolut de interoperabilitate dintre Java și Kotlin - puteți chiar să aveți codul Java și Kotlin existenți unul lângă altul în același proiect și totul va fi compilat perfect. Mai jos, puteți vedea un exemplu de proiect care constă dintr-o Java Activitate și o activitate Kotlin.


De fapt, odată ce proiectul mixt Kotlin și Java este compilat, utilizatorii nu vor putea să spună ce părți ale proiectului tău sunt scrise în Java și ce părți sunt scrise în Kotlin.

Deoarece clasele Kotlin și Java pot exista unul lângă celălalt în același proiect, puteți începe să utilizați Kotlin fără a fi nevoie să faceți ceva drastic cum ar fi transformarea unui întreg proiect în Kotlin sau lansarea unui nou proiect specific pentru a vă putea încerca mâna la Kotlin. 

Datorită acestui nivel de interoperabilitate, dacă aveți un proiect pe care deja lucrați, puteți încerca Kotlin într-o mică parte a proiectului, fără a afecta restul bazei dvs. de cod. Și dacă decideți că doriți să continuați să utilizați Kotlin, puteți fie să migrați codul Java existent al proiectului la unul dintre fișierele Kotlin în același timp, fie să lăsați neclintit codul Java vechi al proiectului și să utilizați doar Kotlin pentru noile clase și caracteristici.

Deoarece Kotlin este complet interoperabil cu Java, veți putea folosi de asemenea majoritatea bibliotecilor și cadrelor Java în proiectele Kotlin - chiar și cadre avansate care se bazează pe procesarea adnotărilor.

Curba de învățare ușoară

Kotlin își propune să fie o îmbunătățire a Java-ului, mai degrabă decât o rescriere completă, atât de multe dintre abilitățile pe care le-ați dobândit și de-a lungul carierei Java ar trebui să fie în continuare aplicabile proiectelor dumneavoastră Kotlin.

Kotlin este, de asemenea, proiectat pentru a avea o curbă blândă de învățare pentru dezvoltatorii Java. Dezvoltatorii Java ar trebui să afle că majoritatea sintaxelor Kotlin se simte familiar; de exemplu, codul folosit pentru a crea o clasă nouă în Kotlin este foarte similar cu Java:

class MainActivity: AppCompatActivity () 

Kotlin este, de asemenea, conceput pentru a fi intuitiv și ușor de citit, deci chiar dacă și tu do întâmpinați un cod care este drastic diferit, ar trebui totuși să puteți înțelege ce face acest cod.  

Combinați cele mai bune programări funcționale și procedurale

Există în prezent o serie de paradigme de programare care sunt utilizate pe scară largă, dar când vine vorba de întrebarea "care este cea mai bună abordare", nu există un răspuns ușor. Fiecare paradigmă de programare are un set propriu de puncte forte și puncte slabe, astfel încât, deși nu există lipsă de scenarii în care programarea funcțională are un avantaj, există și o mulțime de probleme în care o abordare procedurală este mai eficientă.

Deci, de ce ar trebui să alegeți între funcțional și procedural? Ca multe limbi moderne de programare, Kotlin își propune să vă aducă cele mai bune din ambele lumi prin combinarea conceptelor și a elementelor atât din programarea funcțională, cât și din cea funcțională.

Asistență Studio de primă clasă

Kotlin este dezvoltat de compania JetBrains, compania din spatele IntelliJ - IDE-ul pe care se bazează Android Studio. Nu e de mirare că Android Studio are un sprijin excelent pentru Kotlin. Odată ce ați instalat pluginul Kotlin, Android Studio face configurarea lui Kotlin în proiectul dvs. ca fiind simplă ca deschiderea câtorva meniuri. 


Odată ce ați instalat pluginul Kotlin pentru Android Studio, IDE-ul dvs. nu va avea probleme cu înțelegerea, compilarea și rularea codului Kotlin. Android Studio oferă, de asemenea, depanare, completare automată, navigare prin cod, testarea unităților și suport complet pentru refactoring pentru Kotlin.

Odată ce proiectul dvs. Android Studio este configurat pentru a sprijini Kotlin, veți putea chiar să convertiți un întreg fișier sursă Java într-un fișier Kotlin, cu doar câteva clicuri ale mouse-ului.

Cod mai concis

Dacă comparați o clasă Java și o clasă Kotlin care generează aceleași rezultate, cea scrisă în Kotlin va fi de obicei mult mai succintă și mai compactă decât cea scrisă în Java. Și, după cum știe fiecare dezvoltator, mai puține coduri înseamnă mai puține bug-uri!

De exemplu, următorul cod Java creează o activitate constând dintr-un buton de acțiune plutitoare (FAB) care, atunci când este apăsat, afișează un snackbar care conține mesajul util Acesta este un snackbar.

clasa publica MainActivity extinde AppCompatActivity @Override protejat void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); Bara de instrumente Bara de instrumente = (Bara de instrumente) findViewById (R.id.toolbar); setSupportActionBar (bara de instrumente); FloatingActionButton myfab = (FloatingActionButton) findViewById (R.id.myfab); myfab.setOnClickListener (noul View.OnClickListener () @Override public void onClick (Vizualizare vizualizare) Snackbar.make (vizualizați, "Snackbar", Snackbar.LENGTH_LONG) .setAction ("Action", null) ););  

Echivalentul Kotlin realizează aceeași lucrare în mai puțin cod, mai ales când vine vorba de crearea FAB și de setarea onClickListener:

class MainActivity: AppCompatActivity () suprascrie fun onCreate (savedInstanceState: Bundle?) super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) val toolbar = findViewById (R.id.toolbar) ca Bara de instrumente setSupportActionBar (bara de instrumente) val myfab = findViewById (R.id.myfab) ca FloatingActionButton myfab.setOnClickListener vizualizare -> Snackbar.make (vezi, "Aceasta este o snackbar", Snackbar.LENGTH_LONG) .setAction ("Action", null) .show  

Ambele fragmente de cod au exact aceeași ieșire:


Kotlin este deosebit de bun în reducerea cantității de cod de boilerplate pe care trebuie să-l scrieți, ceea ce ar trebui să facă codificarea în Kotlin o experiență mult mai plăcută, comparativ cu codarea în limbi mai complexe, cum ar fi Java. 

În special, extensiile de la Kotlin Android (pe care le vom explora în partea a doua) vă permit să importați referința la un fișier Vizualizați într-o activitate, astfel încât să puteți lucra cu vizualizarea ca și cum ar face parte din acea activitate. Aceasta înseamnă că nu mai trebuie să identificați fiecare Vizualizare folosind findViewById, care poate transforma codul, cum ar fi:

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

În mult mai succint:

myTextView.setText ("Hello World")

Care e siretlicul?

Nici un limbaj de programare nu este perfect, așa că, deși Kotlin are multe de oferit dezvoltatorilor Android, există câteva dezavantaje pe care trebuie să le țineți minte:

Dimensiune suplimentară a duratei de execuție

Biblioteca standard Kotlin și timpul de execuție vor mări dimensiunea .apk. În timp ce acest lucru este doar egal cu aproximativ 800KB, dacă aplicația dvs. este deja pe partea mare, atunci acel 800KB suplimentar ar putea să-l pătrundă peste margine și să facă utilizatorii să se gândească de două ori înainte de a descărca aplicația.

Citirea inițială a codului

Deși sintaxa concisă a lui Kotlin este una dintre cele mai mari puncte forte ale limbii, este posibil să descoperiți inițial câteva puncte greu de descifrat de Kotlin, pur și simplu pentru că se petrec atât de mult într-o cantitate atât de mică de cod. Java poate fi mai verbose, dar partea superioară este că totul este clar definit, ceea ce înseamnă că codul Java necunoscut tinde să fie mai ușor de descifrat decât Kotlin necunoscut.

De asemenea, dacă se utilizează incorect, supraîncărcarea operatorului de la Kotlin poate avea drept rezultat un cod greu de citit.

Lipsa suportului oficial 

Kotlin poate avea un sprijin excelent în Android Studio, dar merită să ne amintim că Kotlin nu este aprobat oficial de Google.

De asemenea, compilarea și compilarea automată a Android Studio tinde să ruleze ușor mai încet atunci când lucrați cu Kotlin, comparativ cu un proiect Java pur.

Ajutor comunitar mai mic și mai puțin disponibil

Deoarece Kotlin este o limbă relativ nouă, comunitatea Kotlin este încă destul de mică, mai ales în comparație cu comunitatea care înconjoară limbi mai cunoscute, cum ar fi Java. daca tu do faceți comutarea la Kotlin, atunci este posibil să nu aveți acces la același număr de tutoriale, postări de blog și documentație pentru utilizatori și poate întâmpina mai puțin sprijin comunitar în locuri precum forumuri și stack overflow. La momentul scrisului, căutând Kotlin pe Stack Overflow returnează doar peste 4.600 de postări etichetate cu Kotlin-în comparație cu cele 1.000.000 de postări care conțin Java etichetă.

Concluzie

În primul post al seriei din trei părți, am analizat motivul pentru care vă recomandăm să treceți la porțiunea Java a dezvoltării dvs. Android într-una dintre cele mai moderne limbi compatibile cu JVM. De asemenea, am analizat mai degrabă avantajele și dezavantajele unice ale lui Kotlin ca potențial înlocuitor Java. 

Dacă ați cântărit avantajele și dezavantajele și ați decis să luați Kotlin pentru o rotire, atunci în partea a doua a acestei serii vă voi arăta cum să utilizați Android Studio pentru a crea o aplicație Android Android, scrisă în întregime în Kotlin . De asemenea, vom analiza modul în care puteți folosi Kotlin pentru a vă asigura că nu trebuie să mai scrieți altul findViewById din nou! 

Între timp, verificați câteva din celelalte tutoriale ale dezvoltării Android aici pe Envato Tuts+!

  • Înțelegerea concordanței pe Android utilizând HaMeR

    În acest tutorial vom explora cadrul HaMeR (Handler, Message and Runnable), unul dintre cele mai puternice modele de concurență disponibile pe Android. Tu o să ...
    Tin Megali
    Android SDK
  • Începeți cu Firebase pentru Android

    Crearea unui server back-end necesită un set de competențe pe care majoritatea dezvoltatorilor independenți de aplicații le lipsește. Din fericire, există Firebase, o platformă bazată pe cloud care ...
    Ashraff Hathibelagal
    Android SDK
  • Android From Scratch: Utilizarea API-urilor REST

    În acest tutorial, vă voi arăta cum să utilizați clasele și metodele disponibile în Android SDK pentru a vă conecta la serverele web la distanță și pentru a interacționa cu ...
    Ashraff Hathibelagal
    Android SDK
  • Cum să începeți cu un șablon de aplicație Android

    CodeCanyon are sute de șabloane de aplicații Android pe care le puteți utiliza pentru a începe să dezvoltați următoarea aplicație. În acest tutorial, vă ajut să începeți ...
    Ashraff Hathibelagal
    Android
  • Faceți fotografii cu aplicația dvs. Android

    Magazinul Google Play are zeci de aplicații pentru camere - fiecare dintre ele permițând un alt mod de a face fotografii sau de a face ceva unic cu imaginile din ...
    Ashraff Hathibelagal
    Android SDK


Cod