Menu

Main Menu

  • Categories not found.

logo

Menu

  • Categories not found.
android udvikling
Vigtigste › android udvikling › Kotlin vs Java: nøgleforskelle mellem Android's officielt understøttede sprog

Kotlin vs Java: nøgleforskelle mellem Android's officielt understøttede sprog

Java til Android udvikling. Java til Android udvikling. Du kan skrive Android-apps på en række forskellige programmeringssprog, herunder C #, Lua, C / C + +, JavaScript, Scala og Clojure, men der er især et andet programmeringssprog. O.

For at lære mere om Java får du en gratis introduktionskursus Java på Make Android Apps.

Kotlin-kode er nu lige så nemt som at markere en afkrydsningsfelt i Android Studio's projektoprettelsesguide.

Denne nyhed har genereret masser af buzz, og det har også udløst lidt af en Kotlin vs Java-debat. Kotlin for nylig, men hvis du laver omskifteren fra Java til Kotlin, hvad nøjagtigt opnår du? Hvad har Kotlin, den java ikke, og omvendt?

I denne artikel, Kotlin vs Java, herunder et par funktioner, som du vil ofre, hvis du flytter til Kotlin.

Kotlin vs Java, den senere tilbyder mere kortfattet kode - uden findViewByIds

Kotlin kan alvorligt reducere mængden af ​​boilerplate kode, du skal skrive: findViewByIds,

Kotlin Android Extensions giver dig mulighed for at importere det til din aktivitetsfil, hvor du kan se det som en del af aktiviteten. Resultatet? Du skal aldrig skrive endnu en FindViewById-metode igen!

Før du kan bruge disse udvidelser, skal du tilføje et ekstra plugin til din build.gradle-fil på modulniveau (anvend plugin: 'kotlin-android-extensions'), men derefter er du klar til at begynde at importere visninger for eksempel, hvis din activity_main.xml-fil indeholdt en tekstvisning med id-tekstvisningen, tilføjer du følgende til din aktivitet:

 importere kotlinx.android.synthetic.main.activity_main.textView 

Du kan derefter få adgang til denne TextView ved hjælp af bare dens ID:

 textView.setText ("Hello World") 

Dette er meget mere kortfattet end Java-ækvivalenten:

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

Kotlin er som standard ikke-sikker

NullPointerExceptions er en stor kilde til frustration for Java-udviklere. Java giver dig mulighed for at tildele nul til en hvilken som helst variabel, men hvis du forsøger at bruge en objektreference, der har en nullværdi, så sæt dig selv op for at møde en NullPointerException!

Læs næste: Kotiln til Android introduktion

I Kotlin er alle typer ikke-nullerbare som standard. Hvis du forsøger at tildele eller returnere null i din Kotlin-kode, vil det mislykkes på kompileringstidspunktet.

 val navn: String = null 
 sjov getName (): String = null 

Hvis du virkelig vil tildele en variabel til en variabel i Kotlin, skal du eksplicit markere denne variabel som nullabilitet ved at tilføje et spørgsmålstegn efter typen:

 val nummer: Int? = nul 

Kotlin at kaste en, eller ZeroPointerExceptions i Kotlin - faktisk, hvis du ikke ved hvad du skal gøre.

Forlængelsesfunktioner

Kotlin giver dig mulighed for at udvide en klasse med ny funktionalitet, hvilket er ideelt.

Disse "udvidelsesfunktioner" er ikke tilgængelige i Java, selv om de er tilgængelige på andre programmeringssprog, som du kan bruge til Android-udvikling, som f.eks. C #.

Læs næste : Java-vejledning til begyndere

Du opretter en udvidelsesfunktion ved at prefikse navnet på den klasse, du vil udvide (søg som 'String') til navnet på den funktion, du opretter ('styleString'), for eksempel:

 sjov String.styleString (): String {// Stil strengen og returner den derefter //} 

Du kan derefter kalde denne funktion på forekomster af den udvidede klasse via notation, som om det var en del af denne klasse:

 myString.styleString () 

Coroutines er førsteklasses borgere

Når du starter en langvarig operation, søg som netværk I / O eller CPU-intensivt arbejde, blokeres opkaldstråden, indtil operationen er færdig. Da Android er standardtrådede, vil du automatisk fryse, så snart du blokerer hovedtråden, din app's brugergrænsefladen vil blive ubesvaret, indtil operationen er færdig.

I Java er løsningen traditionelt blevet brugt til at lave en baggrundstråd, hvor du kan udføre dette intensive eller langvarige arbejde, men kan ikke klare flere tråde.

Mens du kan oprette ekstra tråde i Kotlin, kan du også bruge coroutines . Coroutines udfører langvarige og intensive opgaver ved at suspendere eksekveringen på et bestemt tidspunkt uden at blokere tråden, og genoptage denne funktion på et senere tidspunkt, muligvis på en anden tråd. Dette giver dig mulighed for at oprette ikke-blokerende asynkron kode, som ser synkron ud og derfor er klar, kortfattet og menneskelig læsbar. Coroutiner er således stabile, så de har en lavere hukommelsesforbrug i forhold til tråde, og de åbner døren for yderligere stilarter af asynkron ikke-blokeringsprogrammering, såsom async / afventning.

Der er ingen kontrollerede undtagelser

Kotlin har ikke kontrolleret undtagelser, så du behøver ikke at fange eller erklære undtagelser.

Uanset om dette er noget, du kan lide at Kotlin, eller gør dig villig til at holde fast ved Java, afhænger det af din mening om markerede undtagelser. Hvis du er syg for at prøve / fange blokke, der klutter op på din Java-kode, vil du opdage, at det fungerer godt Java har kanten over Kotlin.

Indfødt støtte til delegation

Kotlin, i modsætning til Java, understøtter designmønsteret "Sammensætning over arv" via førsteklasses delegation (undertiden kendt som implicit delegation). Delegation er hvor et modtaget objekt delegerer operationer til et andet delegeret objekt, hvilket er et hjælperobjekt med den oprindelige kontekst.

Kotlins klasseafdeling er et alternativ til arv, der gør det muligt at anvende flere arv. I mellemtiden hjælper Kotlins delegerede egenskaber med at forhindre overlapning af kode, for eksempel hvis du skal genbruge den samme kode for flere egenskaber 'getters og settere, så kan du udvinde denne kode til en delegeret ejendom. Ejendomsdelegatet skal definere getValue-operatørfunktionen og eventuelt setValue-operatøren:

 class delegate {operator fun getValue (...) ... ... ...} operatør sjov setValue (...) ... ... ...}} 

Så når du opretter en ejendom, kan du erklære at ejendommen og setterfunktionerne til denne egenskab håndteres af en anden klasse:

 klasse MyClass {var ejendom: String by Delegate ()} 

Dataklasser

Det er ikke usædvanligt, at et projekt har flere klasser, der ikke gør andet end at holde data. I Java vil du finde dig selv at skrive masser af boilerplate-kode til disse klasser, selv om klasserne selv har meget lidt funktionalitet. Normalt skal du definere en konstruktør, felter til at gemme data, getter og setterfunktioner for hvert felt plus hashCode (), equalals () og toString () funktioner.

I Kotlin, hvis du indeholder 'data'-søgeordet i din klassetekst, så ønsker kompilatoren at udføre alt dette arbejde for dig, herunder at generere alle nødvendige getters og settere:

 dataklasse Dato (var måned: String, var dag: Int) 

Smart casts

I Java skal du ofte kontrollere og derefter kaste et objekt i situationer hvor det allerede er klart, at objektet kan kastes.

Kotlins smarte casts kan håndtere disse overflødige casts til dig, så du behøver ikke at rote med dem. For eksempel ved kompilatoren at følgende cast er sikkert:

 hvis (hej er streng) {printString (hej)} 

Støtte til konstruktører

I modsætning til Java kan en Kotlin-klasse have en primærkonstruktør og en eller flere sekundære konstruktører, som du opretter ved at inkludere dem i din klassedeklaration:

 klasse MainActivity constructor (firstName: String) {} 

Ingen støtte til implicitte udvidelser af konverteringer

Kotlin understøtter ikke implicitte konverteringer for tal, så mindre typer er ikke implicit konverteret til større typer. Java har støtte til implicitte konverteringer. I Kotlin, hvis du vil tildele en værdi af typen til en int-variabel, skal du foretage en eksplicit konvertering.

Annotationsbehandlingsbiblioteker med Kotlin

Kotlin understøtter alle eksisterende Java-rammer og biblioteker, herunder avancerede rammer, der er afhængige af annotationsbehandling, selv om nogle Java-biblioteker allerede leverer Kotlin-udvidelser, som f.eks. RxKotlin.

Kotlin-annotationsbehandlingsværktøjet, og derefter tilføjes det til dit Kotlin-projekt, er lidt anderledes end Kotlin-annotationsbehandlingsværktøjet. kapt) i stedet for annotationProcessor. For eksempel:

 // Anvend plugin // indsæt plugin: 'kotlin-kapt' // Tilføj de relaterede afhængigheder ved hjælp af kapt-konfigurationen // afhængigheder {kapt "com.google.dagger: dagger-compiler: $ dagger-version" .... .. ...} 

Udskiftelighed med Java

Kotlin eller Java for Android udvikling, skal du være opmærksom på, at der er en tredje mulighed: brug begge dele . På trods af alle forskellene mellem de to sprog er Java og Kotlin 100% interoperable. Du kan kalde Kotlin-kode fra Java, og du kan ringe til Java-kode fra Kotlin, så det er muligt at have Kotlin- og Java-klasser side om side i det samme projekt, og alt vil stadig kompilere.

Kotlin ind i et eksisterende projekt, men du foretrækker måske at bruge begge sprog permanent. For eksempel er der visse funktioner, som du måske foretrækker at skrive i Kotlin, og visse funktioner, der gør det nemmere at skrive i Java. Da Kotlin og Java både kompilerer til bytecode, vil dine slutbrugere ikke kunne fortælle, hvor din Java-kode slutter, og Kotlin-koden begynder, så der er ingen grund til, at du ikke kan frigive et program, der indeholder Java og Kotlin kode.

Kotlin for dig selv, så længe du har Android Studio 3.0 Preview eller højere installeret, er der et par ord, som du kan komme i gang:

  • Opret et nyt Android Studio-projekt. Den nemmeste metode er at oprette et nyt projekt, og vælg afkrydsningsfeltet Inkluder Kotlin support fra projektguiden.

  • Tilføj en Kotlin klasse til et eksisterende bibliotek. Kontrol-klik på den pågældende mappe, og vælg derefter 'Filer> Ny> Kotlin-fil / klasse.' Android Studio vil vise et banner Kotlin; Klik på linket 'Konfigurer' og følg instruktionerne på skærmen.

  • Konverter eksisterende Java-filer til Kotlin. Du kan køre en Java-fil gennem Kotlin-konverteringen ved at klikke på filen og vælge 'Kode> Konverter Java-fil til Kotlin-fil.'

Indpakning

Kotlin til Java, men der er et par områder, hvor Java har overhånden. Sandsynligvis vil Kotlin vs Java-debatten ikke afvikle når som helst snart, hvor begge har deres egen fortjeneste. Så skal du skifte til Kotlin, eller føler du, at Java stadig er den bedste mulighed for Android-udvikling? Lad os vide i kommentarerne!

Læs næste: En introduktion til Java-syntaks til Android-udvikling

Anbefalet

  • En Galaxy Note 7 eksploderede ikke i et barns hænder
    nyheder

    En Galaxy Note 7 eksploderede ikke i et barns hænder

  • Android-myndighed denne uge - 29. marts 2015
    nyheder

    Android-myndighed denne uge - 29. marts 2015

  • T-Mobile begynder at sælge Galaxy Note og myTouch-telefonerne i dag
    nyheder

    T-Mobile begynder at sælge Galaxy Note og myTouch-telefonerne i dag

  • Google ønsker at lære dig om AI og maskinindlæring gratis
    nyheder

    Google ønsker at lære dig om AI og maskinindlæring gratis

  • Er du okay med Excel, men vil blive mester?  Her er de 4 kurser du har brug for
    nyheder

    Er du okay med Excel, men vil blive mester? Her er de 4 kurser du har brug for

  • Denne app lader dig køre Windows-programmer på din Chromebook
    nyheder

    Denne app lader dig køre Windows-programmer på din Chromebook

Populære Indlæg 2022

  • Meizu tablet med Flyme 3.0 OS koncept vist ud gennem fan-made video
    nyheder

    Meizu tablet med Flyme 3.0 OS koncept vist ud gennem fan-made video

  • Bedste mellemstore android-smartphones til efteråret 2012 sæson
    funktioner

    Bedste mellemstore android-smartphones til efteråret 2012 sæson

  • Kinas Zopo lancerer 5,7-tommers quad-core Android-smartphone i midten af ​​december
    nyheder

    Kinas Zopo lancerer 5,7-tommers quad-core Android-smartphone i midten af ​​december

  • BlackBerry 10 taget for 10 minutters tidlige tur, er det en trussel mod Android? (Video)

  • Smartphone-forsendelser falder globalt 3%, ZTE's forsendelser falder med halvdelen

  • OPPO lancerer F5 i Indien med AI tech til bedre selfies (Opdatering: nu på salg)

Interessante Artikler 2022

  • Mød AT & T Pantech Flex: en budget LTE-kompatibel smartphone for kun $ 50 på en kontrakt

  • Moto E vs Moto G

  • Reader's Choice Smartphone of the Year - Stem og vind!

  • LeEco kunne angiveligt ikke betale sine medarbejdere til tiden i sidste måned

  • Samsungs Exynos er nu branchens fjerde største processor mærke

Redaktørens Valg

nyheder

Motorola CLIQ Android 2.1 opdatering forsinket

  • Folk elsker HTC Butterfly så meget, at virksomheden skal øge forsendelserne

  • Bedste ZTE ZMax 2 tilfælde

  • Er Samsung ret til at flytte væk fra Qualcomm?

logo

  • LG annoncerer F70 og F90 mid-range telefoner på Mobile World Congress

    LG annoncerer F70 og F90 mid-range telefoner på Mobile World Congress

    nyheder
  • Samsung Galaxy S III Specifikationer Lækket, Mind-shaking funktioner opført

    Samsung Galaxy S III Specifikationer Lækket, Mind-shaking funktioner opført

    nyheder
  • Lenovo lancerer sit nye udvalg af fitness trackers i Indien

    Lenovo lancerer sit nye udvalg af fitness trackers i Indien

    nyheder
  • Svære at bryde op: Samsung fortsætter med at levere LCD-skærme til Apple

    Svære at bryde op: Samsung fortsætter med at levere LCD-skærme til Apple

    May 19,2022
  • San Fran Google Play Indie Games Festival 24. september

    San Fran Google Play Indie Games Festival 24. september

    May 19,2022
  • 8. september Lancering til Motorola DROID Bionic Final og bekræftet

    8. september Lancering til Motorola DROID Bionic Final og bekræftet

    May 19,2022
android udvikling © Copyright 2022. All rights reserved.