Amarengo

Articles and news

Kotlin vs. Scala (vs. Java)

sedan kotlins ankomst och mognad står JVM-baserade språk inför en ganska utmaning, särskilt Scala. Du måste ha hört mycket om Kotlin nu, särskilt de förmåner och godis som det ger till Java-tabellen. Men sedan finns det Scala, ett kraftfullt och koncist Java-alternativ. Scala vs Kotlin? Vilken är bättre? Eller kanske är det Kotlin vs Java eller Java vs Scala?

Scala och Kotlin syftar till att förbättra Java på sina egna olika sätt.

till de av er som planerar att flytta från Java till antingen Kotlin eller Scala (kan inte föreställa mig det tvärtom), jag ska måla ett ”vad är vad” scenario så att du kan bestämma dig bättre för dig själv.

Låt oss titta på Kotlin först.

Kotlin

Kotlin utvecklades av JetBrains och nådde marknaden i Februari. 2012 som ett open source-språk. Hittills har Kotlin haft två släppta versioner, med Kotlin 1.2 som den mest stabila versionen, släppt Nov. 28, 2017.

språket växte i popularitet på Android på grund av dess perfekta kompatibilitet med Java 6, som främst är den nuvarande versionen av Java på Android. Inte bara det, Kotlin erbjuder vissa funktioner som bara finns i Java 8 och är därför inte tillgängliga för Android-utvecklare på Java 6.

i garderoben full av ’allt som är bra med Kotlin’ innebär de två mest framträdande egenskaperna hos Kotlin sömlös och felfri interoperabilitet med Java. Du kan ringa Java-kod från Kotlin och vice versa utan några hicka eller rynkar, för att inte tala om den inbyggda null-säkerhetsfunktionen. Att inte se en NullPointerException är varje Android-programmerares dröm.

Android app utveckling är helt omvandlas till en lycksalig, icke-NPE erfarenhet. Om du vill ha lite detaljer om hur nollsäkerheten fungerar, kolla in den här.

det är också en av de ’varför’ för Google anta Kotlin på Android som ett officiellt språk som stöds.

bortsett från det, ta en titt på några av de styrkor som Kotlin har att erbjuda.

styrkor

funktionell programmeringsmetod + OOP-stil

varje Java-konkurrent måste vara ett FP-språk. Kotlin saknar lite på de högre typerna och typsäkerheten, men det erbjuder ändå alla funktioner i ett OOP-stilspråk med en FP-strategi.

funktioner med högre ordning

bekvämligheten med funktioner med högre ordning är mycket välbevarad i Kotlin. Om du inte är medveten är högre ordningsfunktioner sådana funktioner som tar en funktion som argument och returtyp. Låsfunktionen är ett av de mest klassiska exemplen på högre ordning:

fun <T> lock(lock: Lock, body: () - > T): T { lock.lock() try { return body() } finally { lock.unlock() }}

koncis, ren och Verbose fritt uttryck

Detta är min favorit del. Java är bra, men standardkod det gör du skriver är bara frustrerande och felbenägen. Kodning i Kotlin är mycket kort, kortfattad och till den punkten. Få jobbet gjort med färre rader kod än i Java. Ju mindre du måste skriva, desto mindre gör du fel och utsätter dig för buggar. Alla vet det, eller hur?

ett sätt Kotlin minskar mängden kod är genom att begränsa användningen av findViewById.

Kotlin tillåter vyer som ska nås från layout XML, precis som du skulle egenskaper. Istället för att använda findViewById varje gång behöver du bara följa det här exemplet.

Tänk dig att du har en textvy definierad i XML-layouten som så:

<TextView android:id="@+id/welcomeMessage" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="Hello World!"/>

för att komma åt det behöver du bara gå till din huvudaktivitet och skriva:

override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) welcomeMessage.text = "Hello Kotlin!"}

uppbackad av JetBrains och Google

även om Kotlin är ett yngre språk än Scala, har det stöd från två stora företag: den formidabla Google och den fantastiska JetBrains, som ansvarar för många andra IDE, inklusive IntelliJ IDE för Android. Så det råder ingen tvekan om bra verktygsstöd där. Till alla människor som tänkte på Kotlin som en trend, kunde du inte ha mer fel.

Kotlin är redan på Android och det är definitivt här för att stanna, växa och utvecklas.

svagheter

men med styrka kommer också en viss svaghet.

svagare mönstermatchning

mönstermatchning är inte stark i Kotlin. Det stöder inte fullt ut det.

om du ville göra saker som…

person match { case Person("bobby", age) => case _ =>}

…det skulle vara ett nej. Men det är ingen frowner. Du kan fortfarande göra ett ganska fint mönstermatchningsjobb genom att intelligent använda when-klausulen. Men vi vet alla att intelligens tar lite mer ansträngning och färdigheter än din genomsnittliga Joe.

Extra Runtime Size

om dina applikationer redan är långa kan den extra runtime-storleken på 800KB vara ett problem för dig. Du kan uppleva ett minskande antal nedladdningar på grund av den större storleken på ett program.

Initial läsbarhet av kod

ingenting är någonsin allt bra. Med det korta tillvägagångssättet som Kotlin erbjuder finns det ett litet problem. Med så mycket som händer i så lite kod, det blir lite svårt att läsa och förstå först. Det kan till och med kännas överväldigande för en nybörjare.

brist på officiellt stöd

även om Google har gått ihop med JetBrains för att erbjuda stöd för Kotlin, är det viktigt att veta att Google inte stöder det. Även när du använder Kotlin i Android sker autokorrigeringen långsammare än för Java.

mindre Support Community

som jag redan nämnde är Kotlin yngre än Scala och, naturligtvis, Java.

eftersom Kotlin är yngre än Scala har den färre bibliotek, blogginlägg och handledning.

online support community är ganska liten. Bristen på blogginlägg, handledning och användardokumentation kan bli ett problem för dig, men som trender antyder kan detta fyllas upp snart fler och fler människor och företag antar Kotlin.

innan du bestämmer dig, låt oss hoppa över till Scala.

Scala

Scala dök upp för allmänheten år 2004. Utvecklat av Martin Odersky släpptes Scala på Java-plattformen som ett allmänt programmeringsspråk. Namnet Scala är inte något nyckfullt begrepp, det är en förkortning av ”skalbar”: ett språk som är skalbart enligt användarnas behov.

som släpptes 2004 gav säkert Scala fördelen att mogna mer över tiden och ta strålkastaren från Kotlin.

Scala har några vanliga funktioner med Kotlin som kortfattad kod, högre ordningsfunktioner, FP-funktionalitet med OOP-stil och interoperabilitet med Java (men inte lika bra som Kotlin). Annat än det, här är vad Scala handlar om.

styrkor

Fullt stöd för mönstermatchning, makron och högre typer

mönstermatchning i Scala är inget skämt. Scala använder match-uttalandet för detta ändamål, vilket är en kraftfull version av Java: s switch-uttalande. Det gör att du kan matcha på alla typer av data, listor, och även dina egna typer. Om du inte redan har provat det, föreslår jag att du leker med det lite.

Skriv en gång, kör överallt

Scala är lite komplex, men den har en mycket flexibel kodsyntax. Den skickliga användningen av funktionella programmeringsfunktioner gör koden utbyggbar och hierarkisk till den allra bästa nivån.

större gemenskapsstöd

Scala har varit här i mer än ett decennium. Eftersom det är ett kraftfullt Java-alternativ har det en enorm supportgemenskap. Vi pratar om YouTube-handledning, blogginlägg, forum och låt oss inte glömma den officiella supporten och användardokumentationen. Allt du befinner dig kämpar med, Du kan ganska mycket hitta svaret på det.

Operatörsöverbelastning

Scala begränsar dig inte från överbelastningsoperatörer. Du kan spela med operatörsfunktioner och definiera gränslöst. Men du måste vara försiktig med den här funktionen. Ändå, om du kan göra det rätt, kommer din kodläsbarhet att öka. Om inte, kan du sluta göra din kod svår att förstå.

svagheter

långsam sammanställning

allt handlar om hastighet i kodningsvärlden. Ett långsamt program är en stor avstängning. När det gäller projekt av industrikvalitet förvandlas Scala ’ s kompileringstid till minuter jämfört med Kotlin, som försöker kompilera så snabbt som Java, vilket är på några sekunder.

binär sammanställning är utmanande

Scala är inte binär kompatibel med några versioner. Låt oss säga att du sammanställt med Scala 2.1. Samma kommer inte att kompilera med Scala 2.11.

det kan vara ingenting, eller det kan vara din största mardröm om du måste arbeta över olika versioner och uppdatera dem. Särskilt om du har projekt i produktionsskala.

mindre effektiv i hanteringen av Null säkerhet

Scala försöker en bra syn på att hantera null säkerhet, men det är bara inte lika effektiv. Scala-ekvivalenten för null-säkerhet är alternativnyckelordet. Med hjälp av detta finns det en stor chans att du kan få en NPE vid bakdörren.

Takeaway

Scala och Kotlin är i ganska dragkamp. Scala har kanten över Kotlin på vissa sätt, men Kotlin är lika formidabel i andra. De viktigaste skillnaderna-där de två språken skiljer sig — är att Kotlin är mer som en bättre version av Java, medan Scala är en helt annan typ av Java, så att säga.

medan Scala har lite inlärningskurva, erbjuder det oöverträffat stöd för avancerad funktionell programmering. Kotlin, å andra sidan, är super lätt att lära sig och roligt att koda in.

men betyder det att något är fel med Java? Jag menar varför byta från Java i första hand?

jag ska berätta varför

Java är gammal. Riktigt gammal. Typ, Farfar Gammal. Och medan populär, dess popularitet fungerar faktiskt mot det. Java-användning finns överallt, vilket gör det omöjligt för lag som använder Java att ändra sina grunder, även om de vet att Java också står inför mycket teknisk kritik.

oavsett storhet har Java för mycket redundans och lång standardkod. Kotlin och Scala råkar bara vara bättre på vad Java var avsedd för.

slutsats

att välja språk beror främst på vilken användning du behöver det för. Scala är en bra passform för projekt med behov av en blandning av funktionella och OOP-stil programmeringsspråk. För platser där du behöver hantera stora mängder data eller komplex modellering beroende på matematik, skulle Scala vara bäst.

men om du bara ville att Java skulle vara mindre frustrerande — men fortfarande vara Java — så finns det inget bättre än Kotlin där ute. Använda Kotlin för Android app utveckling kommer att vara det bästa som någonsin hänt dig. Kotlin är som en Java-kusin med bättre utseende och som inte pratar gibberish. Så välj klokt och må kodkraften vara med dig.

Lämna ett svar

Din e-postadress kommer inte publiceras.