Kotlin vs Java: quina diferència hi ha entre els dos?

Autora: John Stephens
Data De La Creació: 24 Gener 2021
Data D’Actualització: 1 Juliol 2024
Anonim
Kotlin vs Java: quina diferència hi ha entre els dos? - Aplicacions
Kotlin vs Java: quina diferència hi ha entre els dos? - Aplicacions

Content


És possible que Java sigui el primer llenguatge de programació que pensi quan penses en Android, però no ho fas tenir per utilitzar Java per al desenvolupament d’Android. De fet, Kotlin ara és Googlepreferitidioma oficial per a Android!

Per obtenir més informació sobre Java, feu un curs d’introducció gratuït al programa Java a l’aplicatiu Android.

Avui en dia, Android Studio s’envia amb el suport de Kotlin integrat, de manera que crear un projecte Android que entengui el codi Kotlin és tan fàcil com seleccionar una casella de verificació a l’assistent de creació de projectes d’Android Studio. El suport ha augmentat massa per a l'opció fins al punt que aquesta decisió es basa principalment en les preferències.

Però, si feu el canvi de Java a Kotlin, què esteu guanyant exactament? Quines característiques té Kotlin, que Java no, i viceversa?


En aquest article, veurem totes les diferències principals entre Kotlin i Java.

Kotlin vs Java, el mètode posterior ofereix un codi més succint, sense findViewByIds

Si compareu una classe Kotlin i una classe Java que realitzen el mateix treball, la classe Kotlin generalment serà molt més concisa, però hi ha una àrea en particular, on Kotlin pot reduir greument la quantitat de codi de placa de caldera que heu d'escriure: findViewByIds.

Les extensions Android de Kotlin us permeten importar una referència a una vista al fitxer d'Activitat, moment en què podreu treballar amb aquesta vista com si formés part de l'activitat. El resultat? Mai no haureu d’escriure un altre mètode findViewById!

Abans de poder fer servir aquestes extensions, haureu d’afegir un complement addicional al fitxer build.gradle a nivell de mòdul (apliqueu el complement: "kotlin-android-extensions"), però després esteu preparat per importar vistes, per exemple si el fitxer Activity_main.xml contenia un TextView amb l'ID textView, haureu d'afegir el següent a la vostra activitat:


importa kotlinx.android.synthetic.main.activity_main.textView

A continuació, podeu accedir a aquest TextView amb només el seu ID:

textView.setText ("Hola món")

Això és molt més succinta que l'equivalent a Java:

TextView text = (TextView) findViewById (R.id.textView); text.setText ("Hola món");

De manera predeterminada, Kotlin és segur

NullPointerExceptions són una enorme font de frustració per als desenvolupadors de Java. Java us permet assignar nul a qualsevol variable, però si proveu d’utilitzar una referència d’objecte que tingui un valor nul, feu la vostra cerca per trobar una NullPointerException!

També llegiu: Kotiln per a introducció a Android

A Kotlin, tots els tipus no són nul·lables (no poden contenir un valor nul) per defecte. Si intenteu assignar o retornar nul al vostre codi Kotlin, fallarà en el temps de compilació, de manera que cap de les següents línies es compilarà:

nom val: Cadena = null

Fun getName (): String = null

Si tu de veritat voleu assignar un valor nul a una variable de Kotlin, haureu de marcar explícitament aquesta variable com a nul·la, afegint un signe d'interrogació després del tipus:

número de valor: Int? = nul

Això fa que sigui gairebé impossible trobar NullPointerExceptions a Kotlin, de fet, si es troba amb aquesta excepció, és probable que sigui perquè heu demanat explícitament a Kotlin que en llanci una, o NullPointerException prové del codi Java extern.

Funcions d'extensió

Kotlin ofereix als desenvolupadors la possibilitat d’estendre una classe amb una nova funcionalitat, la qual cosa és ideal si hi ha una classe que sempre senties que faltava un mètode important.

Aquestes "funcions d'extensió" no estan disponibles a Java, tot i que estan disponibles en altres llenguatges de programació que podeu utilitzar per al desenvolupament d'Android, com ara C #.

Llegiu següent: Tutorial Java per a principiants

Creeu una funció d'extensió prefixant el nom de la classe que voleu estendre (com ara "Cadena") al nom de la funció que creeu ("styleString"), per exemple:

fun String.styleString (): String {// Estilitzar la cadena i després tornar-la //}

Podeu trucar a aquesta funció a les instàncies de la classe estesa, mitjançant el. notació, com si formés part d'aquesta classe:

myString.styleString ()

Les coroutines són ciutadans de primera classe

Sempre que inicieu una operació de llarga durada, com ara E / S de xarxa o treball intensiu en CPU, el fil de trucada es bloqueja fins que finalitzi l'operació. Com que Android és un filet de manera predeterminada, tan aviat com bloquegeu el fil principal, la interfície d'usuari de la vostra aplicació es congelarà, i no respondrà fins que finalitzi l'operació.

A Java, la solució ha estat tradicionalment crear un fil de fons on puguis realitzar aquest treball intensiu o de llarga durada, però gestionar diversos fils pot comportar un codi complex i propens a errors i crear un fil nou és una operació costosa.

Tot i que podeu crear fils addicionals a Kotlin, també podeu utilitzar coroutines. Les coroutines realitzen tasques intenses i de llarga durada en suspendre l'execució en un determinat punt sense bloquejar el fil i, a continuació, reprendre aquesta funció en un punt posterior, possiblement en un altre fil. Això us permet crear un codi asíncron que no bloquegi aspecte sincrònica i, per tant, és més clara, concisa i llegible per humans. Les coroutines també són apilades, de manera que tenen un ús més baix de la memòria en comparació amb els fils i obren la porta a estils addicionals de programació asincrònica que no bloquegi, com ara async / wait.

No hi ha excepcions comprovades

Kotlin no té verificades excepcions, per la qual cosa no és necessari capturar ni declarar cap excepció.

Si això és una cosa que us atreu a Kotlin o us fa voler seguir amb Java dependrà de la vostra opinió d’excepcions marcades, ja que es tracta d’una característica que divideix la comunitat de desenvolupadors. Si estàs malalt de provar / atrapar blocs que encobren el teu codi Java, et quedarà satisfet amb aquesta omissió, però si trobeu que les excepcions marcades us animen a pensar en la recuperació d’errors i, en última instància, us impulsarà cap a la creació més robusta. aleshores, és més probable que ho veieu com una àrea on Java té la vora de Kotlin.

Suport original a la delegació

Kotlin, a diferència de Java, admet el patró de disseny de "composició per herència", mitjançant delegació de primera classe (de vegades coneguda com a delegació implícita). La delegació és on un objecte receptor delega les operacions a un segon objecte delegat, que és un objecte ajudant amb el context original.

La delegació de classe de Kotlin és una alternativa a l'herència que permet l'ús de l'herència múltiple. Mentrestant, les propietats delegades de Kotlin ajuden a evitar la duplicació del codi, per exemple, si necessiteu reutilitzar el mateix codi per a getters i setters de diverses propietats, podeu extreure aquest codi en una propietat delegada. El delegat de propietat ha de definir la funció d’operador getValue i, opcionalment, l’operador setValue:

class Delegate {operator fun getValue (...) ... ... ...} operator set setValue (...) ... ... ...}}

Aleshores, quan creeu una propietat, podeu declarar que una altra classe la gestionen les funcions getter i setter per a aquesta propietat:

class MyClass {var property: Cadena per delegat ()}

Classes de dades

No és rar que un projecte tingui diverses classes que no facin més que contenir dades. A Java, trobareu que escriviu molts codis de placa de caldera per a aquestes classes, tot i que les mateixes classes tenen molt poca funcionalitat. Normalment, haureu de definir un constructor, camps per emmagatzemar les funcions de dades, getter i setter per a cada camp, a més de les funcions hashCode (), iguals () i toString ().

A Kotlin, si inclou la paraula clau "dades" en la definició de la classe, el compilador realitzarà tot aquest treball per a vosaltres, inclòs la generació de tots els getters i setters necessaris:

classe de dades Data (var mes: Cadena, dia var: Int)

Repartiments intel·ligents

A Java, sovint heu de comprovar el tipus i, a continuació, emetre un objecte en situacions en què ja està clar que l'objecte pot ser llançat.

Els càlculs intel·ligents de Kotlin poden fer servir aquests repartiments redundants, de manera que no haureu de publicar cap declaració si ja ho heu comprovat amb l'operador "és" de Kotlin. Per exemple, el compilador sap que el repartiment següent és segur:

if (hola és la cadena) {printString (hola)}

Suport per a constructors

A diferència de Java, una classe de Kotlin pot tenir un constructor primari i un o més constructors secundaris, que creeu inclosos a la declaració de classe:

class Constructor principal d'Activitat (primer nom: cadena) {}

No és compatible amb les conversions d’ampliació implícita

Kotlin no admet conversions d’ampliació implícita dels números, de manera que els tipus més petits no es converteixen implícitament en tipus més grans. A Kotlin, si voleu assignar un valor de byte de tipus a una variable Int, haureu de realitzar una conversió explícita, mentre que Java té suport per a les conversions implícites.

Biblioteques de processament d'anotacions amb Kotlin

Kotlin admet tots els marcs i biblioteques de Java existents, inclosos els frameworks avançats que es basen en el processament de les anotacions, tot i que algunes biblioteques Java ja ofereixen extensions de Kotlin, com RxKotlin.

Si voleu utilitzar una biblioteca Java que es basa en el processament d’anotacions, l’afegir-la al vostre projecte Kotlin és lleugerament diferent, ja que haureu d’especificar la dependència mitjançant la kotlin-kapt i, a continuació, utilitzeu l’eina de processament de l’anotació de Kotlin (kapt) en lloc d’anotationProcessor. Per exemple:

// Aplica el complement // applia el complement: kotlin-kapt // Afegiu les respectives dependències mitjançant la configuració kapt // dependències {kapt "com.google.dagger: dagger-compilador: $ dagger-version" ... ...}

Intercambiabilitat amb Java

En debatre si voleu utilitzar Kotlin o Java per al desenvolupament d'Android, heu de tenir en compte que hi ha una tercera opció: Feu servir tots dos. Malgrat totes les diferències entre els dos idiomes, Java i Kotlin són interoperables al 100%. Podeu trucar al codi Kotlin des de Java i podeu trucar al codi Java des de Kotlin, de manera que és possible tenir classes de Kotlin i Java al costat del mateix projecte i tot es compilarà.

Aquesta flexibilitat per moure’s entre els dos idiomes és útil quan comenceu amb Kotlin, ja que us permet introduir Kotlin a un projecte existent de manera incremental, però també podeu preferir utilitzar els dos idiomes de manera permanent. Per exemple, pot haver-hi certes funcions que preferiu escriure a Kotlin i algunes funcions que trobeu més fàcils d’escriure en Java. Com que Kotlin i Java computen amb bytecode, els usuaris finals no podran saber on finalitza el codi Java i el codi Kotlin comença, així que no hi ha cap raó per la qual no podeu publicar una aplicació que consti de Java. i Codi de Kotlin.

Si voleu provar Kotlin per vosaltres mateixos, sempre que tingueu Android Studio 3.0 Preview o una instal·lació superior, hi ha algunes maneres de començar:

  • Crea un nou projecte d’Android Studio. El mètode més senzill és crear un projecte nou i seleccionar la casella de selecció "Inclou suport per a Kotlin" a l'assistent de creació de projectes.

  • Afegiu una classe Kotlin a un directori existent. Feu clic amb el botó de control al directori en qüestió i, a continuació, seleccioneu "Fitxer> Nou> Fitxer / classe Kotlin." L'Android Studio mostrarà un banner que us demanarà que configureu el vostre projecte per donar-hi suport a Kotlin; feu clic a l'enllaç "Configura" i seguiu les instruccions que apareixen a la pantalla.

  • Converteix els fitxers Java existents a Kotlin. Podeu executar qualsevol fitxer Java mitjançant un convertidor de Kotlin, fent clic amb el botó Control al fitxer i seleccionant "Codi> Converteix fitxer Java en fitxer Kotlin."

Embalatge

Com podeu veure, hi ha moltes raons per preferir Kotlin per Java, però hi ha un parell d’àmbits en què Java té la mà superior. Potser més notablement: en aquest moment molts desenvolupadors d'Android són més familiars amb Java. És probable que el debat Kotlin i Java no s’acabin de resoldre en cap moment, amb els dos que tenen els seus mèrits. Voleu canviar a Kotlin o creieu que Java continua sent la millor opció per al desenvolupament d'Android?

Llegiu següent: Una introducció a la sintaxi Java per al desenvolupament d’Android

El buc inígnia aequible - també conegut com a aain inígnia - ón avui la ràbia. Ofereixen epecificacion de gamma alta i un preu aequible, però falten algune caracterí...

Alcatel i el tranportita prepagat Cricket Wirele han anunciat l’Alcatel Onyx, l’últim telèfon intel·ligent per aportar pantalle alte i càmere dual a le mae concient del preupot....

La Nostra Elecció