Kotlin vs Java - kāda ir atšķirība starp abiem?

Autors: John Stephens
Radīšanas Datums: 24 Janvārī 2021
Atjaunināšanas Datums: 1 Jūlijs 2024
Anonim
More than coffee. Javis tube stream. We talk about sore and not only. We answer questions.
Video: More than coffee. Javis tube stream. We talk about sore and not only. We answer questions.

Saturs


Java joprojām var būt pirmā programmēšanas valoda, kas ienāk prātā, domājot par Android, bet tā nav ir izmantot Java Android izstrādei. Patiesībā Kotlin tagad ir Googledod priekšrokuoficiālā valoda Android!

Lai uzzinātu vairāk par Java, iegūstiet bezmaksas Java kursa ievadrakstu vietnē Make Android Apps.

Todaym, Android Studio tiek piegādāts ar iebūvētu Kotlin atbalstu, tāpēc izveidot tādu Android projektu, kurš saprot Kotlin kodu, ir tikpat vienkārši kā atzīmēt izvēles rūtiņu Android Studio projekta izveides vednī. Atbalsts ir pieaudzis par pārāk virsstundu iespēju, ka tagad šis lēmums galvenokārt tiek vērsts uz priekšroku.

Bet, ja jūs pārslēdzaties no Java uz Kotlin, ko tieši jūs iegūstat? Kādas funkcijas ir Kotlinai, kuras Java nav, un otrādi?

Šajā rakstā mēs apskatīsim visas galvenās atšķirības starp Kotlin vs Java.

Kotlin vs Java, vēlāk piedāvā kodolīgāku kodu - bez findViewByIds

Ja salīdzina Kotlin klasi un Java klasi, kas veic vienu un to pašu darbu, Kotlin klase parasti būs daudz kodolīgāka, taču īpaši ir viena joma, kurā Kotlin var nopietni samazināt katlumājas koda daudzumu, kas jums jāraksta: atrastViewByIds.


Kotlin Android paplašinājumi ļauj jūsu darbības failā importēt atsauci uz skatu, kurā brīdī jūs varēsit strādāt ar šo skatu tā, it kā tas būtu darbības sastāvdaļa. Rezultāts? Jums nekad vairs nevajadzēs rakstīt citu findViewById metodi.

Lai varētu izmantot šos paplašinājumus, moduļa līmeņa build.gradle failam būs jāpievieno papildu spraudnis (lietojiet spraudni: “kotlin-android-paplašinājumi”), bet pēc tam esat gatavs sākt skatījumu importēšanu, lai piemērs, ja jūsu activity_main.xml failā bija TextView ar ID textView, tad savai darbībai pievienosit sekojošo:

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

Pēc tam šim teksta skatam varat piekļūt, izmantojot tikai tā ID:

textView.setText (“Sveika pasaule”)

Tas ir daudz kodolīgāks par Java ekvivalentu:

TextView text = (TextView) findViewById (R.id.textView); text.setText ("Sveika pasaule");

Kotlin pēc noklusējuma nav drošs

NullPointerExceptions ir milzīgs neapmierinātības avots Java izstrādātājiem. Java ļauj jebkuram mainīgajam piešķirt nulli, bet, ja mēģināt izmantot objekta atsauci, kurai ir nulles vērtība, tad piesardzieties, lai saskartos ar NullPointerException!


Lasīt arī: Kotiln Android ieviešanai

Kotlinā visi veidi pēc noklusējuma nav izceļami (nespēj turēt nulles vērtību). Ja mēģināsit Kotlin kodā piešķirt vai atgriezt nulli, tas kompilācijas laikā neizdosies, tāpēc neviena no šīm rindām netiks apkopota:

val nosaukums: stīga = nulle

jautri getName (): stīga = nulle

Ja jūs tiešām ja Kotlinā mainīgajam vēlaties piešķirt nulles vērtību, tad jums tas būs skaidri jāatzīmē kā neatceļams, pēc veida pievienojot jautājuma zīmi:

val skaits: Int? = nulle

Tas padara gandrīz neiespējamu saskarties ar NullPointerExceptions Kotlinā - patiesībā, ja jūs sastopaties ar šo izņēmumu, iespējams, ka tas ir tāpēc, ka jūs tieši lūdzāt Kotlinam to iemest, vai arī NullPointerException ir radies no ārējā Java koda.

Paplašināšanas funkcijas

Kotlin dod izstrādātājiem iespēju paplašināt klasi ar jaunu funkcionalitāti, kas ir ideāli piemērota, ja ir kāda klase, kurai jūs vienmēr uzskatījāt, ka trūkst svarīgas metodes!

Šīs “paplašināšanas funkcijas” Java nav pieejamas, lai arī ir pieejamas citās programmēšanas valodās, kuras varat izmantot Android izstrādei, piemēram, C #.

Lasīt tālāk: Java apmācība iesācējiem

Jūs izveidojat paplašināšanas funkciju, piemēram, tās klases nosaukumam, kuru vēlaties paplašināt (piemēram, “Stīga”), ar izveidotās funkcijas nosaukumu (“styleString”):

jautri String.styleString (): Stīgas {// Izveidojiet virknes stilu un pēc tam atgrieziet to //}

Pēc tam jūs varat izsaukt šo funkciju paplašinātās klases gadījumos, izmantojot. apzīmējums, it kā tas būtu daļa no šīs klases:

myString.styleString ()

Korutīni ir pirmās šķiras pilsoņi

Ikreiz, kad jūs sākat ilgstošu darbību, piemēram, tīkla I / O vai CPU ietilpīgu darbu, zvana pavediens tiek bloķēts, līdz operācija tiek pabeigta. Tā kā operētājsistēmā Android pēc noklusējuma ir vītne ar vienu vītni, tiklīdz jūs bloķējat galveno pavedienu, jūsu lietotnes lietotāja saskarne tiks iesaldēta, un tā nereaģēs, līdz darbība būs pabeigta.

Java programmā tradicionāli risinājums ir fona pavediena izveidošana, kurā varat veikt šo intensīvo vai ilgstošo darbu, taču vairāku pavedienu pārvaldīšana var radīt sarežģītu, kļūdainu kodu, un jauna pavediena izveidošana ir dārga darbība.

Lai gan Kotlinā varat izveidot papildu pavedienus, varat izmantot arī korutīnus. Karevīni veic ilgstošus un intensīvus uzdevumus, apturot izpildi noteiktā brīdī, neaizsprostojot pavedienu, un pēc tam atsākot šo funkciju vēlāk, iespējams, citā pavedienā. Tas ļauj jums izveidot bloķējošu asinhrono kodu, kas izskatās sinhroni, un tāpēc ir skaidrāki, kodolīgāki un lasāmāki cilvēkiem. Izstrādājumi nav arī sakrauti, tāpēc tiem ir mazāks atmiņas patēriņš, salīdzinot ar pavedieniem, un tie atver durvis asinhronās nebloķēšanas programmēšanas papildu stiliem, piemēram, async / gaida.

Nav pārbaudītu izņēmumu

Kotlin nav pārbaudījis izņēmumus, tāpēc jums nav jāķer un jādeklarē nekādi izņēmumi.

Tas, vai tas kaut kas pievilina jūs Kotlinai, vai liek jums pieķerties Java, būs atkarīgs no jūsu viedokļa par pārbaudītajiem izņēmumiem, jo ​​šī ir funkcija, kas sadala izstrādātāju kopienu. Ja nemēdzat izmēģināt / noķert bloķēt sava Java koda pārblīvēšanu, tad jūs priecāsities par šo izlaidumu, tomēr, ja atklājat, ka pārbaudīti izņēmumi mudina domāt par kļūdu atkopšanu un galu galā mudina jūs izveidot robustāku kodu, tad jūs, visticamāk, redzēsit to kā zonu, kurā Java ir pārāka par Kotlinu.

Vietējais atbalsts delegācijai

Kotlin, atšķirībā no Java, atbalsta “kompozīcijas pār mantojumu” dizaina modeli, izmantojot pirmās šķiras deleģēšanu (dažreiz zināmu kā netiešu deleģēšanu). Deleģēšana ir vieta, kurā saņemošais objekts deleģē operācijas uz otru deleģēto objektu, kas ir palīgobjekts ar sākotnējo kontekstu.

Kotlinas klases deleģēšana ir mantojuma alternatīva, kas ļauj izmantot vairākus mantojumus. Tikmēr Kotlinas deleģētie rekvizīti palīdz novērst koda dublēšanos, piemēram, ja jums ir nepieciešams atkārtoti izmantot to pašu kodu vairākiem īpašumiem, kas tiek piesaistīti un iestatīti, tad varat iegūt šo kodu deleģētajā īpašumā. Īpašuma pilnvarotājam jādefinē operatora getValue funkcija un pēc izvēles setValue operators:

klases delegāts {operatora izklaide getValue (...) ... ... ...} operatora izklaide setValue (...) ... ... ...}}

Tad, kad veidojat īpašumu, varat paziņot, ka šī īpašuma īpašnieka un iestatītāja funkcijas pārvalda cita klase:

klase MyClass {var īpašums: String by Delegate ()}

Datu klases

Nav neparasti, ka projektā ir vairākas klases, kas neko nedara, bet satur datus. Java programmā jūs atradīsit sev daudz rakstītu šo klašu kodu, kaut arī pašām nodarbībām ir ļoti maza funkcionalitāte. Parasti jums jādefinē konstruktors, lauki, lai saglabātu datus, ieguvēja un iestatītāja funkcijas katram laukam, kā arī hashCode (), equals () un toString () funkcijas.

Kotlinā, ja klases definīcijā iekļaujat atslēgvārdu “dati”, kompilators veiks visu šo darbu jūsu vietā, ieskaitot visu nepieciešamo meklētāju un iestatītāju ģenerēšanu:

datu klase Datums (mēnesis: virkne, diena: vid)

Gudrie metieni

Java gadījumā jums bieži ir jāpārbauda tips un pēc tam objekta atlase situācijās, kad jau ir skaidrs, ka objektu var atdot.

Kotlinas viedie maksājumi var tikt galā ar šīm nevajadzīgajām izmaksām jūsu vietā, tāpēc jums nav jāatstāj paziņojums iekšpusē, ja jūs jau esat to pārbaudījis ar Kotlin operatora “ir” palīdzību. Piemēram, kompilators zina, ka drošs ir šāds raidījums:

ja (sveiks ir stīga) {printString (sveiks)}

Atbalsts konstruktoriem

Atšķirībā no Java Kotlin klasei var būt primārais konstruktors un viens vai vairāki sekundārie konstruktori, kurus izveidojat, iekļaujot tos savā klases deklarācijā:

klases MainActivity konstruktors (firstName: String) {}

Netiek atbalstīts netiešs reklāmguvumu paplašinājums

Kotlins neatbalsta netiešu skaitļu konvertāciju paplašināšanu, tāpēc mazāki tipi netiek netieši pārveidoti par lielākiem. Kotlinā, ja vēlaties mainīgajam Int piešķirt baita veida vērtību, jums būs jāveic tieša konvertēšana, turpretī Java nodrošina netiešu konvertēšanu.

Anotāciju apstrādes bibliotēkas ar Kotlinu

Kotlin atbalsta visus esošos Java ietvarus un bibliotēkas, ieskaitot uzlabotos ietvarus, kas balstās uz anotāciju apstrādi, lai gan dažas Java bibliotēkas jau nodrošina Kotlin paplašinājumus, piemēram, RxKotlin.

Ja vēlaties izmantot Java bibliotēku, kas balstās uz anotāciju apstrādi, tad tās pievienošana Kotlin projektam nedaudz atšķiras, jo atkarība būs jānorāda, izmantojot kotlin-kapt un pēc tam annotationProcessor vietā izmantojiet Kotlin Annotation apstrādes rīku (kapt). Piemēram:

// Piesakies spraudnis // piemēro spraudni: kotlin-kapt // Pievienojiet atbilstošās atkarības, izmantojot kapt konfigurāciju // atkarības {kapt "com.google.dagger: dagger-compiler: $ dagger-version" ... ... ...}

Aizvietojamība ar Java

Diskutējot par Kotlin vai Java izmantošanu Android izstrādē, jums jāapzinās, ka ir arī trešā iespēja: izmantojiet abus. Neskatoties uz visām atšķirībām starp abām valodām, Java un Kotlin ir 100% sadarbspējīgas. Jūs varat piezvanīt Kotlin kodam no Java, un jūs varat piezvanīt Java kodam no Kotlin, tāpēc Kotlin un Java klases vienā projektā ir iespējams, un viss joprojām tiks apkopots.

Šī elastība, lai pārvietotos starp divām valodām, ir noderīga, kad jūs sākat darbu ar Kotlin, jo tas ļauj pakāpeniski iepazīstināt Kotlin ar esošo projektu, taču jūs varat arī izvēlēties izmantot abas valodas pastāvīgi. Piemēram, var būt dažas funkcijas, kuras jums labāk patīk rakstīt Kotlin, un dažas funkcijas, kuras jums ir vieglāk rakstīt Java. Tā kā gan Kotlin, gan Java sastāda bytecode, jūsu tiešie lietotāji nevarēs pateikt, kur beidzas jūsu Java kods, un sākas Kotlin kods, tāpēc nav iemesla, kāpēc jūs nevarat atbrīvot lietotni, kas sastāv no Java un Kotlin kods.

Ja vēlaties izmēģināt Kotlin pats, tad, kamēr jums ir instalēta operētājsistēmas Android Studio 3.0 priekšskatījums vai jaunāka versija, varat sākt izmantot dažus veidus:

  • Izveidojiet jaunu Android Studio projektu. Vienkāršākā metode ir izveidot jaunu projektu un projekta izveides vednī atlasīt izvēles rūtiņu “Iekļaut Kotlin atbalstu”.

  • Pievienojiet Kotlin klasi esošam direktorijam. Control noklikšķiniet uz attiecīgā direktorija, pēc tam atlasiet “File> New> Kotlin File / Class”. Android Studio parādīs reklāmkarogu, kurā jums tiks lūgts konfigurēt savu projektu Kotlin atbalstam; noklikšķiniet uz saites Konfigurēt un izpildiet ekrānā redzamos norādījumus.

  • Pārveidojiet esošos Java failus Kotlin. Izmantojot Kotlin pārveidotāju, varat palaist jebkuru Java failu, ar vadības taustiņu noklikšķinot uz faila un atlasot “Kods> Konvertēt Java failu uz Kotlin failu”.

Iesaiņošana

Kā redzat, ir daudz labu iemeslu, lai izvēlētos Kotlin, nevis Java, tomēr ir arī dažas jomas, kurās Java ir virsroku. Iespējams, ka vissvarīgākais: daudzi Android izstrādātāji šajā brīdī ir vienkārši vairāk pazīstami ar Java. Iespējams, ka debates Kotlin vs Java drīzumā neatrisināsies, abām būs savas priekšrocības. Tātad, vai jūs plānojat pāriet uz Kotlin, vai arī uzskatāt, ka Java joprojām ir labākais risinājums Android izstrādei?

Lasīt tālāk: Ievads Java sintaksē Android izstrādei

APK nojaucot ARCore 1.5, viegli var redzēt atauce uz neatbrīvotiem viedtālruņiem, piemēram, OnePlu 6T.Šķiet, ka šie tālruņi jau ir aptiprināti ARCore atbaltam.APK atkāpe parati ir diezgan uzticama, ta...

Ļaunprātīgu hakeru ar katru dienu kļūt arvien vairāk, un uzņēmumi cīnā pret draudiem. Tikai šī gada ākumā Facebook tika piedzīvot apjomīg datu pārkāpum, pakļaujot tīmeklim vairāk nekā 500 miljonu liet...

Lasītāju Izvēle