Als je denkt aan de ontwikkeling van Android, is de kans groot dat er een programmeertaal voor de geest komt: Java.
Hoewel het waar is dat de meeste Android-apps in Java zijn geschreven, is Java niet de jouwe als het gaat om Android-ontwikkeling enkel en alleen keuze.
U kunt Android-apps schrijven in elke taal die kan worden gecompileerd en uitgevoerd op de Java Virtual Machine (JVM), en uw eindgebruikers zullen niet wijzer zijn. En een JVM-compatibele programmeertaal die echt de aandacht van de Android-community trekt, is Kotlin, een statisch getypeerde programmeertaal van JetBrains.
Als je goede dingen over Kotlin gehoord hebt en geïnteresseerd bent om het voor jezelf te proberen, dan ben je op de juiste plek. In deze driedelige serie deel ik alles wat je moet weten om Kotlin voor Android-ontwikkeling te gaan gebruiken.
In deze eerste aflevering zal ik bekijken waarom jij, als Android-ontwikkelaar, misschien zou willen overwegen om in eerste instantie de overstap van Java te maken, en dan zal ik de voor- en nadelen onderzoeken van Kotlin als je Java-vervanging te selecteren. Aan het einde van dit artikel, zult u een goed begrip hebben van wat Kotlin te bieden heeft en zal het weten of het geschikt voor u is.
In deel twee zullen we bekijken hoe u uw Android Studio-installatie kunt instellen om Kotlin te ondersteunen en een eenvoudige Android-app te maken die volledig in Kotlin is geschreven. Met deze basis op zijn plaats, zullen we in de derde aflevering kijken naar hoe je je Android-ontwikkeling kunt opwaarderen, met behulp van meer geavanceerde functies van de Kotlin-taal.
Hoewel Java een van 's werelds meest gebruikte programmeertalen is en vrijwel de officiële taal van Android-ontwikkeling is, zijn er veel redenen waarom Java misschien niet altijd de beste optie zijn voor je Android-projecten.
Het grootste probleem is dat Java geen moderne taal is en hoewel Java 8 een enorme stap vooruit was voor het platform, en veel functies introduceerde waarop ontwikkelaars hadden gewacht (inclusief lambda-functies), ondersteunt Android op het moment van schrijven alleen een subset van Java 8-functies. Het lijkt onwaarschijnlijk dat Android-ontwikkelaars al snel de volledige voordelen van Java 8 zullen plukken, dus voor de nabije toekomst als je Java in je Android-projecten wilt gebruiken, zit je vast met Java 7.
Java als geheel heeft ook een aantal behoorlijk goed gedocumenteerde taalproblemen, waaronder eindeloos proberen
-vangst
blokken, een gebrek aan uitbreidbaarheid, nul-veiligheid (en dat berucht NullPointerException
), om nog te zwijgen van een gebrek aan ondersteuning voor functies voor functionele programmering. Hoewel Java enkele functionele programmeerelementen begint toe te voegen, zoals lambda-expressies en functionele interfaces, is Java in de kern nog steeds een proceduretaal. De syntaxis van Java is ook behoorlijk uitgebreid, vooral in vergelijking met veel moderne programmeertalen.
Dus misschien wilt u overwegen om over te schakelen naar een van de vele moderne programmeertalen die zijn ontworpen om op de JVM te draaien. Hoewel er geen tekort is aan talen die compileren naar Java-bytecode, zijn er een paar factoren die Kotlin onderscheiden van de rest:
Een van de sterkste punten van Kotlin als potentieel alternatief voor Java is de enorme mate van interoperabiliteit tussen Java en Kotlin: je kunt zelfs Java- en Kotlin-code naast elkaar in hetzelfde project hebben staan, en alles zal nog steeds perfect compileren. Hieronder ziet u een voorbeeld van een project dat uit een Java bestaat Activiteit
en een Kotlin-activiteit.
Zodra uw gemengde Kotlin- en Java-project zijn gecompileerd, kunnen gebruikers namelijk niet meer bepalen welke delen van uw project in Java zijn geschreven en welke delen in Kotlin zijn geschreven.
Omdat Kotlin- en Java-klassen naast elkaar kunnen bestaan in hetzelfde project, kun je Kotlin gaan gebruiken zonder iets drastisch te hoeven doen, zoals het omzetten van een heel project in Kotlin of het starten van een nieuw project, zodat je Kotlin kunt uitproberen.
Dankzij dit niveau van interoperabiliteit, als je een project hebt waar je al aan werkt, kun je Kotlin in een klein deel van dat project uitproberen zonder de rest van je codebasis te beïnvloeden. En als u besluit dat u Kotlin wilt blijven gebruiken, kunt u de bestaande Java-code van uw project tegelijkertijd naar Kotlin migreren of de oude Java-code van uw project onaangetast laten en Kotlin alleen gebruiken voor de nieuwe klassen en functies.
Aangezien Kotlin volledig interoperabel is met Java, kunt u ook de meeste Java-bibliotheken en frameworks gebruiken in uw Kotlin-projecten, zelfs geavanceerde frameworks die gebaseerd zijn op annotatie-verwerking.
Kotlin wil een verbetering zijn voor Java, in plaats van een complete herschrijving, dus veel van de vaardigheden die je tijdens je Java-carrière hebt verworven en aangescherpt, moeten nog steeds van toepassing zijn op je Kotlin-projecten.
Kotlin is ook ontworpen om een zachte leercurve te hebben voor Java-ontwikkelaars. Java-ontwikkelaars zouden moeten ontdekken dat de meeste van de Kotlin-syntaxissen vertrouwd aanvoelen; bijvoorbeeld de code die is gebruikt om een nieuwe klasse in Kotlin te maken heel vergelijkbaar met Java:
class MainActivity: AppCompatActivity ()
Kotlin is ook ontworpen om intuïtief en gemakkelijk te lezen te zijn, dus zelfs als u do tegenkomen wat code die drastisch anders is, je zou nog steeds in staat moeten zijn om de essentie te krijgen van wat deze code aan het doen is.
Er zijn momenteel een aantal programmeerparadigma's die op grote schaal worden gebruikt, maar als het gaat om de vraag "welke aanpak de beste is", is er geen eenvoudig antwoord. Elk programmeringsparadigma heeft zijn eigen sterke en zwakke punten, dus hoewel er geen tekort is aan scenario's waarbij functionele programmering een voordeel heeft, zijn er ook veel problemen waar een procedurele aanpak effectiever is.
Dus waarom zou u moeten kiezen tussen functioneel en procedureel? Zoals veel moderne programmeertalen, wil Kotlin u het beste van beide werelden bieden door concepten en elementen te combineren uit zowel procedureel als functioneel programmeren.
Kotlin is ontwikkeld door JetBrains, het bedrijf achter IntelliJ, de IDE waarop Android Studio is gebaseerd. Het is dus geen verrassing dat Android Studio uitstekende ondersteuning biedt voor Kotlin. Nadat u de Kotlin-plug-in hebt geïnstalleerd, maakt Android Studio Kotlin in uw project zo eenvoudig als het openen van een paar menu's.
Nadat u de Kotlin-plug-in voor Android Studio hebt ingesteld, heeft uw IDE geen probleem om de Kotlin-code te begrijpen, samen te stellen en uit te voeren. Android Studio biedt ook foutopsporing, automatische aanvulling, codenavigatie, unit-testen en volledige refactoring-ondersteuning voor Kotlin.
Zodra uw Android Studio-project is geconfigureerd om Kotlin te ondersteunen, kunt u zelfs een volledig Java-bronbestand converteren naar een Kotlin-bestand, met slechts een paar klikken van uw muis.
Als u een Java-klasse en een Kotlin-klasse vergelijkt die dezelfde resultaten opleveren, is de code die in Kotlin wordt geschreven doorgaans veel beknopter en compacter dan die in Java. En zoals elke ontwikkelaar weet, betekent minder code minder fouten!
Met de volgende Java-code wordt bijvoorbeeld een activiteit gemaakt die bestaat uit een zwevende actieknop (FAB) die bij het aanraken een snackbar met het nuttige bericht weergeeft Dit is een snackbar.
public class MainActivity breidt AppCompatActivity uit @Override protected void onCreate (Bundle savedInstanceState) super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); Werkbalk werkbalk = (werkbalk) findViewById (R.id.toolbar); setSupportActionBar (toolbar); FloatingActionButton myfab = (FloatingActionButton) findViewById (R.id.myfab); myfab.setOnClickListener (nieuwe View.OnClickListener () @Override public void onClick (View view) Snackbar.make (bekijk, "This is a snackbar", Snackbar.LENGTH_LONG) .setAction ("Action", null) .show ( ););
Het Kotlin-equivalent bereikt hetzelfde werk in minder code, vooral als het gaat om het creëren van de FAB en het instellen van de onClickListener
:
class MainActivity: AppCompatActivity () override fun onCreate (savedInstanceState: Bundle?) super.onCreate (savedInstanceState) setContentView (R.layout.activity_main) val werkbalk = findViewById (R.id.toolbar) als Toolbar setSupportActionBar (werkbalk) val myfab = findViewById (R.id.myfab) als FloatingActionButton myfab.setOnClickListener view -> Snackbar.make (weergave: "Dit is een snackbar", Snackbar.LENGTH_LONG) .setAction ("Action", null) .show ()
Beide codefragmenten hebben precies dezelfde uitvoer:
Kotlin is vooral goed in het verminderen van de hoeveelheid boilerplate code die je moet schrijven, wat coderen in Kotlin een veel leukere ervaring zou moeten maken, vergeleken met coderen in meer uitgebreide talen zoals Java.
Met name Kotlin Android-uitbreidingen (die we in deel twee zullen onderzoeken) bieden u de mogelijkheid om de verwijzing naar een weergave in een activiteitsbestand te importeren, zodat u vervolgens met de weergave kunt werken alsof deze deel uitmaakt van die activiteit. Dit betekent dat u niet langer elke weergave met behulp van hoeft te identificeren findViewById
, die code kan transformeren zoals:
TextView text = (TextView) findViewById (R.id.myTextView); text.setText ("Hallo wereld");
Tot het veel beknoptere:
myTextView.setText ("Hello World")
Geen enkele programmeertaal is perfect, dus hoewel Kotlin veel te bieden heeft aan Android-ontwikkelaars, zijn er enkele nadelen die je moet onthouden:
De Kotlin standaardbibliotheek en runtime zullen de omvang van uw computer vergroten .apk. Hoewel dit maar ongeveer 800KB is, kan uw extra grote 800KB het mogelijk maken om de app over de rand te laten kantelen en gebruikers te laten nadenken voordat ze uw app downloaden..
Hoewel de beknopte syntax van Kotlin een van de grootste sterke punten van de taal is, kun je in eerste instantie vinden dat sommige Kotlin moeilijk te ontcijferen zijn, simpelweg omdat er zoveel gebeurt in zo'n kleine hoeveelheid code. Java is misschien veel uitgebreider, maar het voordeel is dat alles duidelijk is omschreven, wat betekent dat onbekende Java-code gemakkelijker te ontcijferen is dan onbekende Kotlin.
Als Kotlin's operator overloading gebruikt, kan dit ook leiden tot code die moeilijk leesbaar is.
Kotlin heeft uitstekende ondersteuning in Android Studio, maar het is de moeite waard te onthouden dat Kotlin niet officieel door Google wordt goedgekeurd..
Ook voert de automatisch aanvullen en compilatie van Android Studio de neiging iets langzamer te werken als je met Kotlin werkt, in vergelijking met een puur Java-project.
Omdat Kotlin een relatief nieuwe taal is, is de Kotlin-community nog steeds vrij klein, vooral in vergelijking met de gemeenschap rond meer gevestigde talen zoals Java. als jij do overstappen naar Kotlin, dan heb je misschien niet hetzelfde aantal tutorials, blogposts en gebruikersdocumentatie, en kan je minder community-ondersteuning tegenkomen op plaatsen zoals forums en Stack Overflow. Op het moment van schrijven, op zoek naar Kotlin op Stack Overflow retourneert iets meer dan 4,600 berichten met de tag Kotlin-vergeleken met de maar liefst 1.000.000+ berichten die de bevatten Java label.
In de eerste post van deze driedelige serie hebben we gekeken waarom u misschien wilt overwegen om het Java-gedeelte van uw Android-ontwikkeling over te schakelen naar een van de modernere, JVM-compatibele talen. We hebben ook de unieke voor- en nadelen van Kotlin als potentiële Java-vervanging nader bekeken.
Als je de voor- en nadelen hebt afgewogen en hebt besloten om Kotlin voor de wind te nemen, dan laat ik je in deel twee van deze serie zien hoe je Android Studio gebruikt om een eenvoudige Android-app te maken die volledig in Kotlin is geschreven . We zullen ook kijken naar hoe je Kotlin kunt gebruiken om ervoor te zorgen dat je nooit meer hoeft te schrijven findViewById
nog een keer!
Bekijk in de tussentijd enkele van onze andere zelfstudies over Android-ontwikkeling hier op Envato Tuts+!