Kotlin vs Java - mikä ero on näiden kahden välillä?

Kirjoittaja: John Stephens
Luomispäivä: 24 Tammikuu 2021
Päivityspäivä: 1 Heinäkuu 2024
Anonim
Kotlin vs Java - mikä ero on näiden kahden välillä? - Sovellukset
Kotlin vs Java - mikä ero on näiden kahden välillä? - Sovellukset

Sisältö


Java voi silti olla ensimmäinen ohjelmointikieli, joka mieleen tulee, kun ajattelet Androidia, mutta et omistaa Java-sovelluksen käyttäminen Android-kehitykseen. Itse asiassa Kotlin on nyt Googlen omaedullinenvirallinen kieli Androidille!

Lisätietoja Java-ohjelmasta saat ilmaisen johdannon Java-kurssista osoitteessa Make Android Apps.

Todaym, Android Studio toimitetaan sisäänrakennetulla Kotlin-tuella, joten Kotlin-koodin ymmärtävän Android-projektin luominen on yhtä helppoa kuin valintaruudun valitseminen Android Studion projektin luontitoiminnossa. Tuki on kasvanut liian ylityötöiden vaihtoehdolle siihen pisteeseen, että tämä päätös päätyy nyt pääasiassa suosimiseen.

Mutta jos siirryt Java-palvelusta Kotliniin, mitä oikein saat? Mitä ominaisuuksia Kotlinilla on, että Javalla ei ole, ja päinvastoin?


Tässä artikkelissa tarkastellaan kaikkia tärkeimpiä eroja Kotlinin ja Jaavan välillä.

Kotlin vs Java, myöhempi tarjoaa ytimekkäämmän koodin - ilman findViewByIds-ohjelmaa

Jos verrataan Kotlin-luokkaa ja Java-luokkaa, jotka suorittavat samaa työtä, Kotlin-luokka on yleensä paljon tiiviimpi, mutta etenkin on yksi alue, jolla Kotlin voi vähentää vakavasti kirjoittamasi kattilalevykoodin määrää: findViewByIds.

Kotlin Android -laajennusten avulla voit tuoda viittauksen näkymään aktiviteettitiedostoosi, jolloin pystyt työskentelemään kyseisen näkymän kanssa ikään kuin se olisi osa toimintaa. Lopputulos? Sinun ei koskaan tarvitse kirjoittaa uutta findViewById-menetelmää uudestaan!

Ennen kuin voit käyttää näitä laajennuksia, sinun on lisättävä ylimääräinen laajennus moduulitason build.gradle-tiedostoon (käytä laajennusta: 'kotlin-android-laajennukset'), mutta sen jälkeen olet valmis aloittamaan Näkymien tuominen, esimerkki, jos aktiviteetti_main.xml-tiedostosi sisälsi TextView-tunnuksen textView, lisäät aktiviteettiin seuraavan:


Tuo kotlinx.android.synthetic.main.activity_main.textView

Voit sitten käyttää tätä TextView-ohjelmaa käyttämällä vain sen tunnusta:

textView.setText ("Hei maailma")

Tämä on paljon ytimekkäämpi kuin Java-vastaava:

TextView text = (TextView) findViewById (R.id.textView); text.setText ("Hei maailma");

Kotlin ei ole oletuksena turvallista

NullPointerExmissions on valtava turhautumisen lähde Java-kehittäjille. Java antaa sinun määrittää nolla mille tahansa muuttujalle, mutta jos yrität käyttää objektiviittausta, jolla on nolla-arvo, valmista sitten itsesi kohtaamaan NullPointerException!

Lue myös: Kotiln Android-esittelyyn

Kotlinissa kaikki tyypit ovat olettamattomia (ei pysty pitämään nolla-arvoa). Jos yrität määrittää tai palauttaa nollan Kotlin-koodissasi, se epäonnistuu käännöshetkellä, joten kumpikaan seuraavista riveistä ei koota:

val nimi: merkkijono = nolla

hauska getName (): merkkijono = nolla

Jos sinä Todella haluat määrittää nolla-arvon muuttujalle Kotlinissa, sinun on siis merkittävä kyseinen muuttuja nimenomaisesti tyhjäksi lisäämällä kysymysmerkki tyypin jälkeen:

val numero: Int? = nolla

Tämän vuoksi on lähes mahdotonta kohdata NullPointerExceptions -sovelluksia Kotlinissa - itse asiassa, jos kohtaat tämän poikkeuksen, niin on todennäköistä, että koska olet nimenomaisesti pyytänyt Kotlinia heittämään yhden tai NullPointerException on peräisin ulkoisesta Java-koodista.

Laajennustoiminnot

Kotlin antaa kehittäjille mahdollisuuden pidentää luokkaa uudella toiminnallisuudella, mikä on ihanteellista, jos on luokka, josta aina tuntui puuttuvan tärkeä menetelmä!

Näitä 'laajennustoimintoja' ei ole saatavana Java-palvelussa, vaikka niitä on saatavana myös muilla ohjelmointikieleillä, joita voit käyttää Android-kehitykseen, kuten C #.

Lue seuraava: Java-opetusohjelma aloittelijoille

Voit luoda laajennustoiminnon liittämällä etäluokan laajennettavan luokan nimen (kuten 'merkkijono') luomasi funktion nimeen ('styleString'):

hauskaa String.styleString (): Merkkijono {// Muodosta merkkijono ja palauta se sitten //}

Tämän jälkeen voit kutsua tätä toimintoa laajennetun luokan esiintymien kautta. merkintä, ikään kuin se olisi osa tätä luokkaa:

myString.styleString ()

Coroutines ovat ensimmäisen luokan kansalaisia

Aina kun aloitat pitkäaikaisen toiminnan, kuten verkon I / O- tai CPU-intensiivisen työn, kutsuvan langan estetään, kunnes toimenpide on valmis. Koska Android on oletusarvoisesti yksisäikeinen, heti kun lukitset pääsäikeen, sovelluksesi käyttöliittymä jäätyy, ja se ei reagoi, kunnes toimenpide on valmis.

Java-ohjelmassa ratkaisu on perinteisesti ollut luoda taustalanka, jossa voit suorittaa tämän intensiivisen tai pitkäaikaisen työn, mutta useiden ketjujen hallinta voi johtaa monimutkaiseen, virhealttiiseen koodiin, ja uuden säikeen luominen on kallis toimenpide.

Vaikka voit luoda lisää ketjuja Kotlinissa, voit käyttää myös korutineja. Putiinit suorittavat pitkäaikaisia ​​ja intensiivisiä tehtäviä keskeyttämällä suorituksen tietyssä pisteessä estämättä lankaa ja jatkamalla sitten tätä toimintoa myöhemmässä vaiheessa, mahdollisesti toisella säieellä. Tämän avulla voit luoda estämättömän asynkronisen koodin ulkonäkö synkroninen, ja on siksi selkeämpi, tiiviimpi ja luettavissa ihmisille. Putiinit ovat myös pinoamattomia, joten niillä on alhaisempi muistin käyttö verrattuna säikeisiin, ja ne avaavat oven asynkronisen estämättömän ohjelmoinnin lisätyyleille, kuten async / odottaa.

Ei ole tarkistettuja poikkeuksia

Kotlin ei ole tarkistanut poikkeuksia, joten sinun ei tarvitse ottaa kiinni tai ilmoittaa poikkeuksista.

Onko tämä jotain, joka vetää sinut Kotliniin tai saa sinut haluamaan pysyä Java-ohjelmassa, riippuu mielipiteestäsi tarkistetuista poikkeuksista, koska tämä on ominaisuus, joka jakaa kehittäjäyhteisön. Jos olet kyllästynyt kokeilemaan / estämään estää Java-koodisi turhauttamista, olet tyytyväinen tähän puutteeseen. Jos kuitenkin huomaat, että valitut poikkeukset rohkaisevat sinua ajattelemaan virheen palauttamista ja lopulta ajamaan sinua kohti entistä vahvempaa -koodia, niin näet todennäköisemmin tämän alueena, jolla Java on eturintamassa Kotlinin kanssa.

Alkuperäinen tuki valtuuskunnalle

Kotlin, toisin kuin Java, tukee ”koostumus perinnöllisyyden yli” -mallikuviota ensimmäisen luokan delegoinnin kautta (tunnetaan joskus implisiittisenä delegointina). Delegointi on silloin, kun vastaanottava objekti delegoi toiminnot toiselle delegoidulle objektille, joka on auttajaobjekti alkuperäisessä tilanteessa.

Kotlinin luokanvaltuuskunta on vaihtoehto perinnölle, joka mahdollistaa usean perinnön käytön. Samaan aikaan Kotlinin delegoidut ominaisuudet auttavat estämään koodin päällekkäisyyttä, esimerkiksi jos sinun on käytettävä samaa koodia uudelleen useiden ominaisuuksien hankkijoille ja asettajalle, voit purkaa tämän koodin delegoidulle ominaisuudelle. Ominaisuuden edustajan on määritettävä getValue-operaattoritoiminto ja valinnaisesti setValue-operaattori:

luokan edustaja {operaattorin hauskaa getValue (...) ... ... ...} operaattorin hauskaa setValue (...) ... ... ...}}}

Sitten, kun luot ominaisuutta, voit ilmoittaa, että kyseisen ominaisuuden getter- ja setter-toiminnot hoidetaan toisella luokalla:

luokka MyClass {var ominaisuus: String by Delegate ()}

Dataluokat

Ei ole epätavallista, että projektissa on useita luokkia, jotka eivät tee mitään, mutta pitävät tietoja. Java-ohjelmistossa löydät itsesi kirjoittavan paljon luokkakoodikoodia näille luokille, vaikka luokilla itsessäänkin on hyvin vähän toimintoja. Yleensä sinun on määritettävä rakentaja, kentät tietojen tallentamiseksi, getter- ja setter-toiminnot kullekin kentälle sekä hashCode (), equals () ja toString () -toiminnot.

Kotlinissa, jos sisällytät 'avainsanan' avainsanasi luokkamääritykseesi, kääntäjä suorittaa kaiken tämän työn puolestasi, mukaan lukien kaikkien tarvittavien hakejien ja asettajien luomisen:

tietoluokka Päivämäärä (kuukausi: merkkijono, päivä: Int)

Älykkäät heitot

Java-sovelluksessa sinun on usein tarkistettava tyyppi ja sitten valettava esine tilanteissa, joissa on jo selvää, että esine voidaan heittää.

Kotlinin älykkäät valuutat voivat käsitellä näitä tarpeettomia valuuttoja puolestasi, joten sinun ei tarvitse heittää lausuntoa, jos olet jo tarkistanut sen Kotlinin operaattorilla. Kääntäjä tietää esimerkiksi, että seuraava näyttelijä on turvallista:

if (hei on merkkijono) {printString (hei)}

Tuki rakentajille

Toisin kuin Java, Kotlin-luokassa voi olla ensisijainen rakentaja ja yksi tai useampi toissijainen rakentaja, jotka luot, sisällyttämällä ne luokka-ilmoitukseen:

luokan MainActivity konstruktori (etunimi: String) {}

Ei tukea epäsuorasti laajentuville konversioille

Kotlin ei tue epäsuoraa laajennusta numeroihin, joten pienempiä tyyppejä ei muuteta implisiittisesti suuremmiksi. Kotlinissa, jos haluat antaa tavu-tyyppisen arvon sisäiselle muuttujalle, sinun on suoritettava eksplisiittinen muuntaminen, kun taas Java tukee implisiittisiä muunnoksia.

Merkintöjen käsittelykirjastoja Kotlinin kanssa

Kotlin tukee kaikkia olemassa olevia Java-kehyksiä ja -kirjastoja, mukaan lukien edistyneet kehitteet, jotka tukeutuvat merkintöjen käsittelyyn, vaikka jotkut Java-kirjastot tarjoavat jo Kotlin-laajennuksia, kuten RxKotlin.

Jos haluat käyttää Java-kirjastoa, joka perustuu kommenttien käsittelyyn, sen lisääminen Kotlin-projektiisi on hiukan erilainen, koska sinun on määritettävä riippuvuus käyttämällä Kotlin-Kapt ja käytä sitten Kotlinin huomautusten käsittelytyökalua (kapt) annotationProcessor -sovelluksen sijasta. Esimerkiksi:

// Käytä laajennusta // käytä laajennusta: kotlin-kapt // Lisää vastaavat riippuvuudet kapt-määrityksellä // riippuvuudet {kapt "com.google.dagger: dagger-compiler: $ dagger-version" ... ... ...}

Vaihdettavuus Java: n kanssa

Kun keskustellaan siitä, käytetäänkö Kotlinia tai Javaa Android-kehitykseen, sinun tulee olla tietoinen siitä, että on olemassa kolmas vaihtoehto: käytä molempia. Kaikista kielistä johtuvista eroista huolimatta Java ja Kotlin ovat 100% yhteentoimivia. Voit soittaa Kotlin-koodille Javaista ja voit soittaa Java-koodiin Kotlinista, joten Kotlin- ja Java-luokat ovat mahdollista olla rinnakkain samassa projektissa, ja kaikki kokoaa silti.

Tämä joustavuus liikkua kahden kielen välillä on hyödyllinen, kun aloitat Kotlinin kanssa, koska sen avulla voit esitellä Kotlinin olemassa olevaan projektiin asteittain, mutta voit myös mieluummin käyttää molempia kieliä pysyvästi. Esimerkiksi, voi olla tiettyjä ominaisuuksia, jotka haluat kirjoittaa Kotlinissa, ja joitain ominaisuuksia, jotka sinun on helpompi kirjoittaa Javalla. Koska sekä Kotlin että Java kääntyvät tavukoodiksi, loppukäyttäjät eivät voi kertoa mihin Java-koodisi loppuu, ja Kotlin-koodi alkaa, joten ei ole syytä miksi et voi julkaista Java-sovellusta ja Kotlin-koodi.

Jos haluat kokeilla Kotlinia itse, niin kauan kuin sinulla on asennettuna Android Studio 3.0 Esikatselu tai uudempi, on olemassa muutamia tapoja, joilla voit aloittaa:

  • Luo uusi Android Studio -projekti. Helpoin tapa on luoda uusi projekti ja valita Sisällytä Kotlin-tuki -valintaruutu projektin luontitoiminnosta.

  • Lisää Kotlin-luokka olemassa olevaan hakemistoon. Napsauta Control-painiketta napsauttamalla kyseistä hakemistoa ja valitse sitten 'Tiedosto> Uusi> Kotlinin tiedosto / luokka.' Android Studio näyttää bannerin, jossa sinua pyydetään määrittämään projektisi tukemaan Kotlinia; napsauta Määritä-linkkiä ja seuraa näytöllä näkyviä ohjeita.

  • Muunna nykyiset Java-tiedostot Kotliniksi. Voit suorittaa minkä tahansa Java-tiedoston Kotlin-muuntimen kautta napsauttamalla Control-painiketta tiedosto ja valitsemalla Koodi> Muunna Java-tiedosto Kotlin-tiedostoksi.

Käärimistä

Kuten voitte nähdä, on olemassa monia hyviä syitä suosia Kotlinia Javaan, mutta muutamilla alueilla Java on ylivoimainen. Ehkä varsinkin: monet Android-kehittäjät ovat yksinkertaisesti perehtyneet Javaan tässä vaiheessa. Todennäköisesti Kotlin vs Java -keskustelu ei ratkea pian, molemmilla on omat ansioitunsa. Joten siirrytkö Kotliniin vai tunnetko Java edelleenkin parhaiten Android-kehitykseen?

Lue seuraava: Johdanto Java-syntaksiin Android-kehitykseen

Englanninkielien kiinalaien anomalehden mukaan Huawei voi käynnitää oman käyttöjärjetelmänä tämän vuoden elokuua tai yykuua Global Time (kautta Indiah...

Aiemmin tänään, huhu peräiinTechRadar ehdotti, että n. Huawei O - yrityken korvaaminen Androidilla - julkaitaan ​​eni kuua. Tietolähde oli Alaa Elhimy, Huawei Enterprie B...

Lukijoiden Valinta