„Kotlin“ prieš „Java“: kurią programavimo kalbą pasirinkti „Android“ mobiliai aplikacijai

Kotlin vs Java: kas yra geriau? Ši kova prasidėjo 2011 m., kai atsirado Kotlin, o tuo pačiu metu, be jokios abejonės, „patyrusi“ Java visiškai nugalėjo visus naujus konkurentus. Padedant „Google“ ir „JetBrains“, „Kotlin“ buvo sukurtas pašalinti bet kokias „Java“ “raukšles”. Nuo „Google I/O 2017“ kūrėjų konferencijos „Kotlin“ pradėjo sparčiai veikti.

Ar naujokas gali visiškai pakeisti seną gerą „Java“? Ir ar sunku rasti gerų „Kotlin“ kūrėjų? Šiame straipsnyje apžvelgsime klausimą „Kotlin vs Java“ ir įvardinsime kiekvienos kalbos privalumus ir trūkumus, kad geriau suprastume, kas dabar laimi kovą.

„Kotlin vs Java“: oficialių „Android“ programavimo kalbų įvadas

„Android“ ir „Java“, kaip ir „fish and chips“, dažnai buvo susietos. „Android“ SDK netgi parašytas „Java“. Tačiau išradus Kotliną, situacija pradėjo keistis. Taigi, kas yra Kotlino kalba ir ar ji gali įveikti visus „Java“ pranašumus? Pasinerkime į istoriją ir patikrinkime skirtumus tarp Kotlin ir Java, kad suprastume, ar verta pereiti į Kotliną.

Kas yra „Java“ ir kokie jos naudojimo atvejai

„Java“ yra į objektus orientuota, klasėmis pagrįsta programavimo kalba. Jį suprojektavo „Green Team“, kuriai vadovavo Jamesas Goslingas iš „Sun Microsystems“ (dabar priklauso „Oracle Corporation“) ir iš pradžių buvo planuojama pasitarnauti skaitmeninės kabelinės televizijos pramonei. Tačiau kalba atrodė pernelyg sudėtinga šiam tikslui ir vietoj to rado savo vietą interneto programavimo pasaulyje.

„Java“ buvo išleista 1995 m. gegužę ir šiandien vargu ar yra kūrėjas, kuris apie tai nebūtų girdėjęs. Nenuostabu, nes tai yra antra populiariausia „GitHub“ kalba, turinti apie 70 tūkst.

Kaip į objektą orientuota programavimo kalba, pagrindinė „Java“ sintaksė yra panaši į C ir C ++ kalbas. Visas kodas priklauso klasėms, kuriose visos reikšmės yra objektai. Tai leidžia kurti modulines programas ir daugkartinį kodą.

Be „Java“, skirto „Android“ aplikaicjoms, kūrėjai taip pat gali kurti darbalaukio programas ir programų “back end”. Nenuostabu, kad „Java“ turi milžinišką bendruomenę ir beveik 25 naudojimo metus, todėl pasirodė esanti patikima ir saugi.

Kas yra „Kotlin“ kalba ir kokie jos naudojimo atvejai

Kotlin yra visiškai nauja Android programavimo kalba, kurią JetBrains pirmą kartą pristatė 2011 m. Ji gavo pavadinimą iš Kotlino salos Rusijoje ir 2017 m. tapo oficialiai palaikoma Android kūrimo kalba. „Kotlin“ taip pat gali būti naudojamas kuriant serverio ir žiniatinklio kliento programas.

Nuo 2017 m. „Google I/O“ konferencijos Kotlino kalbos vartojimas pradėjo eksponentiškai augti. Tai neturėtų stebinti, nes jis buvo visiškai suderinamas su JVM („Java Virtual Machine“) ir sukompiliuotas iki „Java“ baitų kodo. Tai reiškia, kad „Java“ ir „Kotlin“ kodas gali egzistuoti kartu viename projekte.

Palygindami Kotlin ir Java, pirmiausia pastebėsite, kad Kotlin yra ir į objektą orientuota (OOP), ir funkcinė kalba. Ji puikiai palaiko aukštesnės eilės funkcijas, funkcijų tipus ir lambdas, todėl ją galima lengvai naudoti tiek į objektą, tiek į funkcinį orientuotą programavimo stilių.

2018 m. daug didelių įmonių perėjo prie Kotlin, nes ji yra 100% suderinama su „Java“. Tarp tokių įmonių yra Google, Uber, Trello, Pinterest, Kickstarter ir daugelis kitų. Taigi, kodėl „Kotlin“ tapo tokių milžinų pasirinkimu ir ar tai tikrai galėtų „Java“ paversti šešėliu?

Kotlinas ir „Java“: ar jie tinka kartu?

Kotlin kalba buvo sukurta siekiant išspręsti esamas Java kliūtis, kad ji būtų glaustesnė ir saugesnė bei lengvesnė. Tačiau kokios yra naujos kalbos priėmimo privalumai, jei reikia visiškai perrašyti viską nuo nulio?

Kotlino kūrėjai tikėjosi, kad jis bus 100% suderinamas su „Java“. Be to, kad priėmimo procesas būtų sklandesnis ir lengvesnis, „JetBrain“ sukūrė „Java to Kotlin“ keitiklį ir integravo jį į „IntelliJ“. Tai veikia gana gerai, tačiau vis tiek gali prireikti keleto žmogaus pataisymų, pvz., nulinių verčių koregavimo (susijusių su nulinės sauga) arba tiesioginio kintamojo inicijavimo.

Nereikalaujama konvertuoti „Java“ parašytų aplikaicjų į „Kotlin“, nes Kotlin kodą galima lengvai iškviesti iš „Java“, o „Java“ kodą – iš „Kotlin“. Dauguma esamų „Java“ sistemų ir bibliotekų taip pat yra suderinamos su „Kotlin“. Visa tai daro priėmimo procesą lengvą ir sklandų.

„Kotlin“ palaiko visi pagrindiniai „Java“ IDE, įskaitant „IntelliJ IDEA“, „Eclipse“ ir „NetBeans“. „Kotlin“ papildinys yra komplektuojamas su „Android Studio“, pradedant nuo 3.0 versijos. Kalba taip pat integruojama su kai kuriais pagrindiniais kūrimo įrankiais, tokiais kaip „Gradle“, „Maven“, „Ant“ ir „Kobalt“. Taigi, ar „Kotlin“ ir „Java“ tinka vienam projektui? Atsakymas yra taip.

Java Android kūrimas

„Java“ buvo viršuje daugiau nei du dešimtmečius ir vis dar yra labai populiari programavimo kalba. Mes nepasakysime, kaip sukurti „Android“ aplikacijas su „Java“, bet įvardinsime „Java“ pranašumus, dėl kurių ji yra viena dažniausiai naudojamų kalbų pasaulyje.

„Java“ prieš „Kotlin“: „Java“ pranašumai

Jei palyginsime „Java“ su „Kotlin“, matysime, kad abi kalbos turi teigiamų savybių, į kurias verta atsižvelgti renkantis. Šios „Java“ teigiamos savybvės yra išvardytos žemiau:

Lengva išmokti
Vienas didžiausių „Java“ kodavimo kalbos privalumų yra tai, kad ją lengva išmokti; todėl naudojant „Java“ lengva rašyti, kompiliuoti ir derinti. Kalba yra suprantama ir turi suprantamą sintaksę, todėl gali būti geras atspirties taškas mokantis programuoti.

Be to, kursų, kuriuose mokoma Java, skaičius yra didžiulis ir prireikus galima rasti daug išteklių ir pavyzdžių. Tai labai supaprastina „Java“ mokymosi procesą.

Stipri bendruomenė
Kitas „Java“ pranašumas yra tai, kad ji turi labai stiprią bendruomenę su beveik milijonu „GitHub“ saugyklų. Taigi yra tūkstančiai įvairių bibliotekų ir sistemų, kurias galima panaudoti ir dėl to paspartinti kūrimo procesą.

Nuo platformos nepriklausomas
Dar vienas „Java Pro“ yra tai, kad ji nepriklauso nuo platformos. „Java“ kompiliatorius konvertuoja šaltinio kodą į baitų kodą, kuris yra vadinamoji „tarpinė“ kalba. Baitkodas gali būti vykdomas bet kurioje platformoje naudojant „Java Virtual Machine“. Jūs netgi galite parašyti „Java“ kodą „Android“ naudodami specialią programą „Java N-IDE“.

Java prieš Kotliną: Java trūkumai

Gali atrodyti, kad „Java“ yra tobula kalba, tačiau, kaip ir bet kuri kita programavimo kalba, „Java“ turi savo trūkumų.

Daugžodžiavimas
„Java“ daugiakalbiškumas tapo daugelio anekdotų pagrindu. Iš tiesų „Java“ reikalauja, kad būtų parašyta daug daugiau kodo nei „Kotlin“, todėl yra didesnės klaidos ar klaidų rizika.

Kalbant apie Java ir Kotlin sintaksę, matome, kad Kotlin sintaksė yra aiškesnė ir glaustesnė.

Kotlin sintaksė lyginama su Java sintakse

“Nullability” problemos
„NullPoinerExceptions“ tapo tikru galvos skausmu „Java“ kūrėjams, naudojantiems nenuimamus kintamuosius. Šis nulinis nesaugumas kartais gali būti varginantis, nes nulis reiškia vertės nebuvimą. Todėl kūrėjai turi parašyti papildomas kodo eilutes, kad surastų būdą, kaip išspręsti šią problemą.

Atsižvelgiant į visa tai, gali atrodyti, kad „Android“ aplikacijų kūrimas naudojant „Java“ yra aklavietės galutinis taškas. Bet ar tai tikrai taip? Išsiaiškinkime.

Rekomendacija: kodėl naudoti „Java“ 2019 m.?

Atrodo, kad Kotlinas yra tobula kalba, todėl kodėl kas nors vis dar kuria „Android“ aplikaciją su „Java“? Štai keletas priežasčių:

  • Jūsų komandoje yra „Java“ guru, kurie nenori pereiti prie „Kotlin“.
  • Jūsų komanda išbandė Kotliną ir buvo nepatenkinta.
  • Turite sėkmingą projektą, sukurtą „Java“ (tačiau šiuo atveju nėra problemų kurti naujas funkcijas „Kotlin“). Tačiau yra nedidelis posūkis, nes „Java“ kodą vis tiek turi palaikyti „Java“, jei nenorite perkelti viso projekto į „Kotlin“.

Kokie yra Kotlin privalumai Java kūrėjams? Kokios yra jos silpnosios vietos, palyginti su „Java“? Patikrinkime.

Kotlin: nauja „Android“ kalba

„Kotlin“ kalba suteikia naujų „Android“ kūrimo galimybių. Jis surenkamas pagal JVM baitinį kodą ir gali būti lengvai pritaikytas ir nereikia perrašyti viso projekto.

Kotlin vs Java: Kotlin pranašumai

Nepaisant to, kad Kotlin yra nauja kalba, ji jau parodė daug privalumų, palyginti su „Java“. Kokia jos nauda „Kotlin vs Java“ konkurse? Pažiūrėkime, kodėl gali būti verta susieti „Android“ su „Kotlin“.

Glaustumas
Įrodyta, kad Kotlinas yra glaudesnis. Įvertinimai rodo maždaug 40% sumažėjusį kodo eilučių skaičių. Kodo bazė susitraukia, paliekant mažiau vietos klaidoms ir dėl to gerėja kokybė.

Sąveika
Vienas didžiausių „Kotlin“ pranašumų yra tai, kad jis yra visiškai suderinamas su „Java“. „JetBrains“ konverteris iš „Java“ į „Kotlin“, integruotas į „IntelliJ“, užtikrina sklandų perėjimą prie „Java“ kodo. Be to, Kotlin palaiko beveik visas esamas Java bibliotekas ir kompiliuoja į Java suderinamą baitų kodą.

Funkcinio programavimo palaikymas
Kotlin palaiko ne tik objektinį programavimą, bet ir funkcinį programavimą. „Kotlin“ turi tinkamus funkcijų tipus, o ne „Java“ vieno abstraktaus metodo (SAM) konversijas, todėl jis gali padėti lengviau išspręsti daugelį kūrėjų problemų.

Nesėkminga sistema
„Kotlin“ turi integruotą “greito gedimo” sistemą, kuri padeda sumažinti klaidas ir, kai tik įmanoma, išvengti klaidų kode. Šiuo tikslu yra trys standartinės Kotlin bibliotekos funkcijos: patikrinti, reikalauti ir patvirtinti.

Palaikanti bendruomenė
Kotlin yra jauna kalba, tačiau ji jau turi gana palaikančią bendruomenę. Yra „Kotlin Slack“ kanalas, prie kurio gali prisijungti kiekvienas kūrėjas, norėdamas gauti paramą ir pagalbą iš kitų „Kotlin“ kūrėjų.

Kotlinas prieš Java: silpni Kotlino taškai

Jokia kalba nėra visiškai tobula, o Kotlino kalba nėra išimtis. Be daugybės privalumų, jis turi ir silpnų vietų.

Lėtas kompiliavimas
Kodo kompiliavimo procesas yra lėtesnis, priešingai nei Java. Statistika rodo, kad švarios versijos „Java“ sukuriamos 17% greičiau nei „Kotlin“. Tačiau nuoseklioms papildomoms versijoms, kuriose nėra failų arba pakeistas vienas izoliuotas/pagrindinis failas, kompiliavimo laikas yra beveik identiškas arba „Kotlin“ gali būti net šiek tiek greitesnis.

Trūksta išteklių
Nors jis buvo sukurtas dar 2011 m., tik paskutiniais metais Kotlin pradėjo populiarėti. Vadinasi, dar nėra labai lengva rasti labai sumanių „Kotlin“ kūrėjų, kurie mokytų ir vadovautų jūsų komandai.

Naujos „Kotlin“ funkcijos „Android“ kūrime

Padarykime „Kotlin“ apžvalgą ir sužinokime, kokių naujų funkcijų jis turi savo kišenėje, kad „Android“ programavimas būtų dar lengvesnis ir pakankamas.

— Nulinė sauga per nulinable ir nonullable tipus, saugius iššaukimus ir saugius “metimus”
„Kotlin“ suteikia specialų būdą užkirsti kelią nulinių tikrinimų naudojimui naudojant specialius nenulinamus tipus.

if (someOjbect != null) …

Šie tipai neleidžia kintamajame nustatyti null. Jei bandysite, jūsų projektas nebus sudarytas. Ši „Kotlin“ funkcija garantuoja, kad negausite „NullPointerException“, kai naudosite nenuimamą kintamąjį.

Kitas atvejis yra nuliniai tipai, leidžiantys nustatyti nulį. Tačiau, norėdamas išvengti NPE, Kotlin turi specialų operatorių?. Pavyzdžiui. someObject?.someMethod(). Šis kodas bus vykdomas tik tuo atveju, jei „someObject“ nėra nulis.

Pratęsimo funkcijos
Ši funkcija leidžia pridėti savo metodus prie esamų klasių. Tai labai naudinga, kai reikia išplėsti esamų klasių funkcionalumą. Pavyzdžiui, pagal numatytuosius nustatymus „ImageView“ klasė „Android“ neturi metodų, kaip įkelti vaizdus iš interneto, tačiau ją galima tiesiog išplėsti, kad būtų suteikta ši funkcija. Tarkime, kad sukuriame plėtinio funkciją loadImage(url: String). Po to galite tiesiog išaukti „loadImage“ (url) bet kuriame „ImageView“ egzemplioriuje ir jis veiks.

Aukštesnės eilės funkcijos
Ši funkcija leidžia kūrėjams kurti metodus, kurie gali gauti kitus metodus kaip argumentus ar grąžinimo metodus. Pavyzdžiui, tarkime, kad turime elementų sąrašą ir vartotojui spustelėjus elementą, turime nukreipti jį į naują ekraną su išsamia informacija apie šį elementą. Išanalizuokime Kotlin ir Java šios funkcijos diegimo būdą.

Java programoje turime sukurti sąsają su metodu, įdiegti šią sąsają kokiame nors objekte, kuris išklausys vartotojo palietimo įvykius, ir iškviesti sąsajos metodą kiekvieną kartą, kai vartotojas paliečia elementą.

Kotlinas turi paprastesnį įgyvendinimą. Mes tiesiog parašome funkciją, kurioje yra visa logika, kurią reikia panaudoti, kai vartotojas paliečia. Taigi, užuot iškvietę sąsajos metodą (kuris iškviečia metodą su logika), mes tiesiogiai iškviečiame esamą funkciją.

Duomenų klasės
Yra daug naudojimo atvejų, kai mums tiesiog reikia laikyti duomenis klasėse (MVP architektūroje tai yra „M“ modelis). „Kotlin“ ir „Java“ palyginimas parodys, kad „Kotlin“ suteikia paprastą būdą sukurti šias klases. Kai sukuriame duomenų klasę, Kotlin automatiškai sukuria naudingas funkcijas skaitymo/rašymo reikšmėms, duomenims kopijuoti ir kt.

Nekintamumas
Ši funkcija leidžia objektams būti nekintamiems, o tai reiškia, kad kartą sukurtas objektas negali būti pakeistas ateityje. Jei reikia pakeisti objektą, turėtumėte sukurti kintamą nekintamo objekto kopiją, ją pakeisti ir toliau dirbti su juo. Nekintami daiktai yra saugūs; kadangi jų negalima pakeisti, nereikia jų sinchronizuoti ir nėra lygiagrečių problemų.

Tipo slapyvardžiai (pridėta „Kotlin 1.1“)
Ši funkcija leidžia trumpesnius esamų tipų pavadinimus. Pavyzdžiui, vietoj „MutableMap >“ „Java“, čia pateikiami „Kotlin“ kodo pavyzdžiai, kuriuos galite naudoti.

typealias FileTable = MutableMap >

ir naudokite „FileTable “ kaip naują tipą, kuris iš tikrųjų bus išplėstas „MutableMap“ >

Kotlin prieš Java: kuris yra geresnis?

Daugelį metų „Java“ buvo viena iš pirmųjų pasirinkimų ir rekomenduojamų kalbų kuriant „Android“ aplikacijas. Tačiau, atsiradus Kotlinui, ji lėtai, bet atsisakė šios vietos. Kotlin kilo iš pramonės poreikių, o jo sintaksė ir struktūra buvo įkvėpta Java ir tokių gerai žinomų kalbų kaip Scala ir C#. Jis buvo sukurtas taip, kad būtų lengva pasinerti ir įsisavinti.

Žemiau rasite Kotlin vs Java lentelę, kurioje apibendrinama tai, ką minėjome straipsnyje.

KotlinJava
Pritaikymas/PriėmimasAtviro kodo
„Java“ į „Kotlin“ keitiklis
OOP ir FP palaikymas
Atviras šaltinis (tik „OpenJDK“ diegimas)
OOP
Kompiliavimo laikasLėtesnis nei JavKažkiek greitesnis
Kodo ilgis/ skaitomumasGlaustaiPernelyg daugiakalbiška
Programavimo greitisGreitaVid/greičiau
Bendruomenės paramaAuganti bendruomenėDidžiulė bendruomenė „GitHub“,
„Reddit“ ir „StackOverflow“
SaugumasSaugesnis (dėl null-security)Saugus

„Google“ ir „JetBrains“ agresyviai reklamuoja „Kotlin“, todėl nenuostabu, kad vis daugiau matomų kompanijų viešai paskelbė, kad naudoja „Kotlin“. Kiekviena diena atneša naujų bibliotekų ir kodų pavyzdžių.

„Kotlin“ ir „Java“ diskusijos įrodė, kad „Kotlin“ yra saugesnis („hello null-safety :)“, todėl yra mažesnė “avarijų” tikimybė. „Kotlin“ yra lankstesnis, suteikia daugiau galimybių, padedančių sumažinti parašytų eilučių skaičių, todėl atsiranda mažiau klaidų.

Nuo 2018 m. rudens prie komandos taip pat prisijungė individualios programinės įrangos kūrimo įmonė Okursa, kuri dabar aktyviai naudoja Kotlin kuriant Android projektus.

Remdamiesi savo patirtimi ir Kotlin vs. Java analize, manome, kad Kotlin puikiai tinka pradedantiesiems ir jau įsitvirtinusioms įmonėms ir padeda išlikti efektyviam bei sumažinti pakaitinio kodo skaičių. Galiausiai, statistika rodo, kad Kotlin galimai visai pakeis Java mobilių aplikacijų kūrimo rinkoje. Taigi sukurkime „Android“ aplikaciją naudodami „Kotlin“.


Susisiekite su Mumis

Contact Us