{"id":3913,"date":"2022-05-18T10:39:02","date_gmt":"2022-05-18T10:39:02","guid":{"rendered":"http:\/\/the-codest.localhost\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway\/"},"modified":"2026-04-28T14:07:11","modified_gmt":"2026-04-28T14:07:11","slug":"porque-e-que-o-kotlin-e-fantastico-mas-de-qualquer-forma-vai-ficar-com-o-java-1","status":"publish","type":"post","link":"https:\/\/thecodest.co\/pt\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/","title":{"rendered":"Porque \u00e9 que Kotlin \u00e9 fant\u00e1stico, mas vai ficar com Java na mesma"},"content":{"rendered":"<p>Independentemente do grupo a que perten\u00e7a, h\u00e1 uma raz\u00e3o para ficar com <strong><a href=\"https:\/\/thecodest.co\/pt\/blog\/find-the-right-java-developer-now\/\">Java<\/a><\/strong>. E n\u00e3o o estou a culpar. Tem, sem d\u00favida, o ecossistema mais desenvolvido, universal e completo de todo o mundo. <a href=\"https:\/\/thecodest.co\/pt\/dictionary\/what-is-enterprise-hybrid-cloud\/\">empresa<\/a> mundo. A linguagem tem um conjunto de capacidades bem adaptado, algures na zona certa entre demasiado e demasiado pouco. E est\u00e3o a ser adicionadas novas funcionalidades de forma lenta mas constante, mantendo-a actualizada em rela\u00e7\u00e3o \u00e0s novas tend\u00eancias no mundo da programa\u00e7\u00e3o.<\/p>\n\n\n\n<p>Conhece <a href=\"https:\/\/projectlombok.org\">Lombok<\/a> Mas? Se n\u00e3o conhece, recomendo vivamente que experimente. Se gostas, ent\u00e3o tenho algo para ti. Uma l\u00edngua totalmente nova, que pelas suas carater\u00edsticas torna o Lombok obsoleto. Chama-se <b>Kotlin<\/b>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kotlin? Est\u00e1 a falar da linguagem Android?<\/h2>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/pClXBLD.jpg\" alt=\"Bem, sim, mas na verdade n\u00e3o\"\/><\/figure>\n\n\n\n<p>O Kotlin no Android foi aben\u00e7oado pela pr\u00f3pria Google ao ponto de se tornar a linguagem de facto de elei\u00e7\u00e3o para a plataforma. N\u00e3o \u00e9 nisso que me vou focar neste artigo, mas o Android \u00e9 de facto o local onde conheci o Kotlin pela primeira vez.<\/p>\n\n\n\n<p>O meu colega de trabalho estava a desenvolver uma aplica\u00e7\u00e3o para uma <a href=\"https:\/\/thecodest.co\/pt\/dictionary\/why-do-projects-fail\/\">projeto<\/a>por conta pr\u00f3pria. No entanto, os prazos estavam a aproximar-se rapidamente, pelo que fui incumbido de o ajudar a cumpri-los. Deixem-me agora recuar no tempo at\u00e9 esse momento. E... YUCK! Porque \u00e9 que ele est\u00e1 a usar uma linguagem estranha que soa a <a href=\"https:\/\/www.ketchupy.pl\/images\/3\/c\/9\/4\/5\/3c9453c5b720f810c293211d77449d9395f09944-product-front-1.png\">marca de ketchup<\/a>!? Tem um aspeto horr\u00edvel!<\/p>\n\n\n\n<p>Porque \u00e9 que se escreve \"fun\" antes de cada fun\u00e7\u00e3o? Como se eu j\u00e1 n\u00e3o soubesse o que \u00e9. Al\u00e9m disso, j\u00e1 estou a ter <em>divers\u00e3o<\/em> com <strong>Java<\/strong> de qualquer forma. E onde est\u00e1 o tipo de retorno? No fim? Est\u00e1s doido? O que \u00e9 isso, est\u00e1s a atribuir algo a uma fun\u00e7\u00e3o? N\u00e3o faz sentido nenhum! Parece-se tudo com <b>Java com passos extra!<\/b> Espera, onde \u00e9 que est\u00e1 a classe a que este m\u00e9todo pertence? Onde \u00e9 que o escondeste, seu ketchup, <strong>Java<\/strong> desculpa imitadora de uma linguagem de programa\u00e7\u00e3o? Oh, n\u00e3o. Oh n\u00e3o, n\u00e3o o fizeste. ISSO \u00c9 UMA FUN\u00c7\u00c3O GLOBAL? \u00c9 isso, estou farto, vou chamar a pol\u00edcia.<\/p>\n\n\n\n<p>Alerta de spoiler: n\u00e3o chamei a pol\u00edcia. Quer gostasse ou n\u00e3o, tive de ajustar a minha mentalidade centrada em Java para me adaptar a outra linguagem. Mas n\u00e3o ser\u00e1 assim t\u00e3o mau, certo? Continua a ser uma linguagem JVM, \u00e9 apenas uma linguagem diferente <strong>Java<\/strong>. Talvez at\u00e9 com algumas funcionalidades extra fixes? Relutantemente, comecei a trabalhar no projeto.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Java com passos extra<\/h2>\n\n\n\n<p><em>Se Java \u00e9 t\u00e3o bom, porque \u00e9 que n\u00e3o existe Java 2?<\/em> Brincadeiras \u00e0 parte, foi o que pensei para mim mesmo. Vou fingir que o Kotlin \u00e9 o Java 2. Tem uma sintaxe nova e tudo, mas s\u00f3 preciso de aprender o suficiente para terminar o projeto. Enganei-me redondamente.<\/p>\n\n\n\n<p>Depois de a experimentar durante apenas um ou dois dias, apercebi-me rapidamente de que tanto o Kotlin como o <strong>Java<\/strong> n\u00e3o s\u00e3o assim t\u00e3o el\u00e1sticos. Tentar dobr\u00e1-los um contra o outro acaba inevitavelmente com um deles partindo-se ao meio. Tornou-se \u00f3bvio que Kotlin \u00e9 uma coisa por si s\u00f3, e o facto de funcionar numa JVM n\u00e3o significa quase nada do ponto de vista do programador. (Em uma nota lateral, ele tamb\u00e9m pode transpilar para <a href=\"https:\/\/thecodest.co\/pt\/blog\/hire-javascript-developer\/\">JavaScript<\/a>ou ser compilado para um bin\u00e1rio nativo).<\/p>\n\n\n\n<p>Plano B, ent\u00e3o. Na verdade, conhecer a linguagem. Ler os documentos pela primeira vez causa alguns arrepios na espinha de um programador Java experiente. Por exemplo:<br>- contexto global de n\u00edvel superior anteriormente mencionado<br>- par\u00e2metros e tipos de retorno de fun\u00e7\u00f5es especificados no final<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>fun sum(a: Int, b: Int): Int {\n   return a + b\n}<\/code><\/code><\/pre>\n\n\n\n<p>o corpo da fun\u00e7\u00e3o pode ser uma express\u00e3o (utilizando o sinal de igualdade)<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code> fun sum(a: Int, b: Int) = a + b<\/code><\/code><\/pre>\n\n\n\n<p>A declara\u00e7\u00e3o if pode fornecer um resultado<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code> val y = if (x == 1) {\n \"um\"\n } else if (x == 2) {\n \"dois\"\n } else {\n \"outro\"\n }<\/code><\/code><\/pre>\n\n\n\n<p>Ok, s\u00f3 preciso de me habituar a isso. Apenas uma sintaxe diferente. O que mais tem a oferecer, senhor Kotlin?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code> value?.method() \/\/ executar se n\u00e3o for nulo<\/code><\/code><\/pre>\n\n\n\n<p>Oh ok, livrar-se de <code>se (valor == nulo)<\/code>um ponto para ti. Que mais tens?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code>fun check(list: List, alternative: Boolean) = when {\n list is LinkedList -&gt; print(\"linked\")\n alternativa -&gt; print(\"alternativa\")\n list.size &gt; 50 -&gt; print(\"big\")\n else -&gt; print(\"outro\")\n }<\/code><\/code><\/pre>\n\n\n\n<p>Hmm, fixe, pode ser \u00fatil para evitar bloqueios, mas continua a parecer um truque.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code> object SingularObject: Counter() {\n var a = 14\n fun test() = if (a &gt; 10) \"mais\" else \"menos\"\n }<\/code><\/code><\/pre>\n\n\n\n<p>Ok, essa parece realmente \u00fatil, eu gosto! Por outro lado, tamb\u00e9m posso criar um singleton em Java. Talvez n\u00e3o seja t\u00e3o elegante, mas n\u00e3o \u00e9 nada de novo. Tens alguns ases na manga? Tipo, um verdadeiro golpe pesado?<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code> var s: String = null \/\/ n\u00e3o compila, tipo n\u00e3o nulo<\/code><\/code><\/pre>\n\n\n\n<p>Espera... o qu\u00ea?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><a href=\"https:\/\/en.wikipedia.org\/wiki\/Tony_Hoare#Apologies_and_retractions\">O erro de mil milh\u00f5es de d\u00f3lares<\/a><\/h2>\n\n\n\n<p>Imagine uma base de c\u00f3digo, onde n\u00e3o precisa de se preocupar com a seguran\u00e7a de nulos. Imagine ter como certo que cada refer\u00eancia cont\u00e9m de facto algo significativo. Imagine ter a certeza de que todos os problemas relacionados com nulos s\u00e3o resolvidos antecipadamente.<br>N\u00e3o imagine mais. Todas as refer\u00eancias em Kotlin n\u00e3o s\u00e3o anul\u00e1veis por defeito. Se quiser torn\u00e1-las anul\u00e1veis, tem de <u>conscientemente<\/u> tomar essa decis\u00e3o, e <u>explicitamente<\/u> declar\u00e1-lo no <a href=\"https:\/\/thecodest.co\/pt\/dictionary\/what-is-code-refactoring\/\">c\u00f3digo<\/a>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code class=\"\"><code> var s: String? = null\n<\/code><\/code><\/pre>\n\n\n\n<p>Compreendo que, nesta altura, possa estar c\u00e9tico em rela\u00e7\u00e3o a esta ideia. Est\u00e1 habituado a refer\u00eancias anul\u00e1veis. Mant\u00e9m isso na sua cabe\u00e7a enquanto codifica. Aprendeu onde precisa de ter cuidado. Exatamente o que penso. Vindo de <strong>Java<\/strong>No in\u00edcio, pareceu-me estranho, de facto. Tipo, qual \u00e9 o objetivo? N\u00e3o vai fazer desaparecer por magia todos os problemas relacionados. Terei de acrescentar \"?\" em todo o lado, o que me parece uma tarefa \u00e1rdua.<\/p>\n\n\n\n<p>Mas eu decidi mergulhar fundo na l\u00edngua, n\u00e3o foi? Vamos fazer \u00e0 sua maneira, senhor <strong>Kotlin<\/strong>. Comecei a fazer um esfor\u00e7o para eliminar o maior n\u00famero poss\u00edvel de vari\u00e1veis, campos e par\u00e2metros anul\u00e1veis. Passo a passo, aprendi a utilizar as carater\u00edsticas da linguagem que facilitavam a elimina\u00e7\u00e3o de refer\u00eancias anul\u00e1veis, por exemplo, o operador \"?.\" de chamada segura, o operador \"?:\" de elvis, as propriedades delegadas, o m\u00e9todo \"let\", entre outros.<\/p>\n\n\n\n<p>Com o passar do tempo, consegui que algumas classes s\u00f3 contivessem campos e par\u00e2metros de m\u00e9todos n\u00e3o nulos. Basicamente, eu sabia que se uma classe fosse instanciada com sucesso, eu poderia quase esquecer a nulidade nos corpos dos m\u00e9todos. Era uma felicidade. Com o tempo, fui apreciando isso cada vez mais. No entanto, no final das contas, eu n\u00e3o pensava nisso como uma carater\u00edstica matadora, <strong>Java<\/strong> ainda se sentia em casa. At\u00e9 que...<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">O regresso<\/h2>\n\n\n\n<p>O projeto estava a aproximar-se do fim. Comecei a conhecer Kotlin cada vez mais e, com esse conhecimento, o c\u00f3digo tornou-se cada vez mais organizado, leg\u00edvel e conciso. Era poss\u00edvel ver as melhorias a olho nu no hist\u00f3rico de commits. Mas finalmente chegou a altura. Com mem\u00f3rias inesperadamente boas da nova linguagem, era altura de dizer adeus e voltar \u00e0 doce zona de conforto do <strong>Java<\/strong>. Ou assim pensava eu.<\/p>\n\n\n\n<p>Conhece aquela sensa\u00e7\u00e3o de come\u00e7ar a apreciar algo no preciso momento em que se vai embora? Quando n\u00e3o nos apercebemos do quanto dependemos de algo at\u00e9 j\u00e1 n\u00e3o o podermos usar? Este foi o melhor exemplo dessa sensa\u00e7\u00e3o que provavelmente j\u00e1 experimentei na minha vida.<\/p>\n\n\n\n<p>Quando voltei a escrever o c\u00f3digo em <strong>Java<\/strong>Quase fiquei aterrorizado com a falta de algumas funcionalidades. Era como se o meu c\u00e9rebro, subconscientemente, tivesse adaptado erradamente as funcionalidades de Kotlin para Java. Passei por situa\u00e7\u00f5es em que comecei a implementar algo, apenas para perceber que n\u00e3o funcionaria nesta linguagem. Na melhor das hip\u00f3teses, eu poderia escrev\u00ea-lo como Kotlin, mas seria volumoso, ileg\u00edvel e\/ou exigiria muito boilerplate.<\/p>\n\n\n\n<p>A seguran\u00e7a nula foi, obviamente, a carater\u00edstica de que mais senti falta. Mas fiquei surpreendido com a quantidade de coisas mais pequenas que se tornaram naturais para mim: par\u00e2metros nomeados, propriedades em vez de getters e setters, \"==\" como igual e \"===\" como igualdade referencial, \"this\" qualificado, fun\u00e7\u00f5es de extens\u00e3o, par\u00e2metro lambda singular impl\u00edcito, \"_\" para par\u00e2metros lambda n\u00e3o utilizados, <a href=\"https:\/\/thecodest.co\/pt\/blog\/app-data-collection-security-risks-value-and-types-explored\/\">dados<\/a> classes, fun\u00e7\u00f5es de escopo, outras fun\u00e7\u00f5es da stdlib do Kotlin, operadores e muito mais. E a forma como tudo isso se encaixa perfeitamente. Em compara\u00e7\u00e3o, Java parecia... primitivo.<\/p>\n\n\n\n<p>Na verdade, senti-me t\u00e3o mal que comecei a considerar mudar para Kotlin. Teoricamente, \u00e9 totalmente interoper\u00e1vel com Java, basta adicionar suporte a Kotlin a um projeto existente e come\u00e7ar a escrever novas classes. O lado Kotlin sabe como \"falar\" com Java, e o lado Java nem sequer sabe que est\u00e1 a \"falar\" com outra linguagem. E ap\u00f3s a compila\u00e7\u00e3o para bytecode, n\u00e3o faz realmente qualquer diferen\u00e7a para a JVM.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><a href=\"https:\/\/calendly.com\/the-codest-java-consulting\"><img decoding=\"async\" src=\"\/app\/uploads\/2024\/05\/meeting_java_expert.png\" alt=\"Conhe\u00e7a o especialista em Java\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Verifica\u00e7\u00e3o da realidade<\/h2>\n\n\n\n<p>Ent\u00e3o, de que est\u00e3o \u00e0 espera? Se a linguagem \u00e9 t\u00e3o boa como dizem, usem-na! Mas talvez n\u00e3o em projectos existentes, pois sei que deve ser interoper\u00e1vel, mas misturar duas linguagens diferentes desta forma parece-me feio.<\/p>\n\n\n\n<p>Ok, ent\u00e3o para novos m\u00f3dulos - Kotlin \u00e9 isso. Ou ser\u00e1 que n\u00e3o? Est\u00e1 a trabalhar num m\u00f3dulo <a href=\"https:\/\/thecodest.co\/pt\/blog\/how-to-hire-the-best-outsourced-development-team-for-a-scaleup\/\">equipa<\/a>. \u00c9 preciso consult\u00e1-los e convenc\u00ea-los da grandeza desta nova l\u00edngua. O qu\u00ea? Eles n\u00e3o gostam? Parece que n\u00e3o querem esfor\u00e7ar-se para a aprender. Mas n\u00e3o os podes culpar, tamb\u00e9m estavas c\u00e9tico no in\u00edcio.<\/p>\n\n\n\n<p>O gestor de projectos! Sim! Ele certamente compreender\u00e1 o grande valor que Kotlin trar\u00e1 \u00e0 nossa equipa. Oh, a grandeza que vir\u00e1!<br>-N\u00e3o<br>-Espere, porqu\u00ea?<br>-A equipa n\u00e3o o sabe.<br>-Eles v\u00e3o aprender!<br>-N\u00e3o querem aprender.<br>-Pode faz\u00ea-las!<br>-N\u00e3o precisam de aprender.<br>-\u00c9 verdade, mas pensa nas possibilidades!<br>-Sim, e se pensasses primeiro nos problemas?<\/p>\n\n\n\n<p>A lenda diz que existe um projeto. Um projeto que \u00e9 grande e complexo, mas bem escrito em todas as partes. Um projeto, onde todos os programadores est\u00e3o em un\u00edssono sobre as solu\u00e7\u00f5es utilizadas. Onde as novas funcionalidades fluem suavemente dos teclados dos programadores. Onde os bugs s\u00e3o raros e f\u00e1ceis de corrigir.<\/p>\n\n\n\n<p>J\u00e1 viu um projeto como este? Eu n\u00e3o vi. Alguns chegaram perto, mas a maioria deles \u00e9 uma grande confus\u00e3o de c\u00f3digo legado. E se n\u00e3o o s\u00e3o, provavelmente tornar-se-\u00e3o uma a dada altura no futuro. Agora imagine-se a acrescentar outra linguagem \u00e0 mistura. Introduz novas formas de cometer erros. Exige que os programadores saibam o que est\u00e3o a fazer. \u00c9 um risco, para dizer o m\u00ednimo.<\/p>\n\n\n\n<p>Agora, considere tamb\u00e9m <a href=\"https:\/\/thecodest.co\/pt\/blog\/hire-vue-js-developers\/\">criador<\/a> rota\u00e7\u00e3o. As pessoas v\u00e3o e v\u00eam. Vai obrigar cada novo programador a aprender uma linguagem completamente nova? N\u00e3o, isso \u00e9 contraproducente. Vai contratar programadores de Kotlin em primeiro lugar? Boa sorte com isso, contratar um bom programador Java j\u00e1 \u00e9 dif\u00edcil.<\/p>\n\n\n\n<p><a href=\"https:\/\/blog.allegro.tech\/2018\/05\/From-Java-to-Kotlin-and-Back-Again.html\">As pessoas tentaram.<\/a> Tenho de dizer que n\u00e3o concordo com a maioria das alega\u00e7\u00f5es desse artigo. H\u00e1 algumas cr\u00edticas v\u00e1lidas, mas acho que eles n\u00e3o usaram Kotlin o suficiente para realmente entender \"o jeito Kotlin\". Muitos dos comentadores desse artigo parecem pensar da mesma forma.<\/p>\n\n\n\n<p>Mas isso n\u00e3o importa. Aposto que isto tamb\u00e9m aconteceria no seu projeto. \"Experimentei, n\u00e3o gostei\". N\u00e3o os vai obrigar a dedicar mais tempo ao projeto. N\u00e3o os vai obrigar a tentar de novo. N\u00e3o os vai obrigar a dar outra oportunidade. E, de um ponto de vista pr\u00e1tico, eles podem ter raz\u00e3o. <strong>Java<\/strong> \u00e9 t\u00e3o popular, que usar qualquer outra coisa na JVM parece redundante.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Porqu\u00ea ent\u00e3o este artigo?<\/h2>\n\n\n\n<p>Acabaste de gastar uma quantidade consider\u00e1vel de tempo a escrever um artigo que parece n\u00e3o ter um objetivo. Porque \u00e9 que eu havia de tentar aprender uma l\u00edngua, se diz que \u00e9 in\u00fatil?<\/p>\n\n\n\n<p>Bem, eu n\u00e3o acho que seja in\u00fatil. Continuo a achar que Kotlin \u00e9 \u00f3timo. Continuo a querer us\u00e1-lo (e j\u00e1 o fa\u00e7o nos meus projectos privados). Se pudesse, mudava para ele e esquecia as limita\u00e7\u00f5es do Java. Mas a realidade atual diz que n\u00e3o posso. E eu quero tentar mudar isso.<\/p>\n\n\n\n<p>A minha inten\u00e7\u00e3o para si, caro leitor, \u00e9 pelo menos considerar a possibilidade de sair da aconchegante zona de conforto de Java. Porque talvez, apenas talvez, voc\u00ea ame Kotlin tanto quanto eu. E se gostar, ser\u00e1 mais um desenvolvedor conhecedor de Kotlin na <a href=\"https:\/\/thecodest.co\/pt\/dictionary\/what-is-the-size-of-your-potential-reachable-market\/\">mercado<\/a>.<\/p>\n\n\n\n<p><strong>Ler mais:<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/the-best-type-of-projects-for-java\">O melhor tipo de projectos para Java<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/3-common-challenges-of-software-product-development-for-startups\">3 Desafios comuns do desenvolvimento de produtos de software para empresas em fase de arranque<\/a><\/p>\n\n\n\n<p><a href=\"https:\/\/thecodest.co\/blog\/the-right-way-to-find-top-java-developers\">A forma correta de encontrar os melhores programadores Java<\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Se \u00e9 um programador Java, \u00e9 prov\u00e1vel que tenha pelo menos alguma experi\u00eancia com outras linguagens de programa\u00e7\u00e3o.  Alguns de n\u00f3s come\u00e7aram a sua aventura de programa\u00e7\u00e3o com outra linguagem como C\/C++, JavaScript, C#, Python ou talvez mesmo algo como Pascal ou Basic. Alguns, por\u00e9m, come\u00e7aram com Java e nunca prestaram muita aten\u00e7\u00e3o a outras linguagens, lembrando-se desagradavelmente da \u00fanica vez em que precisaram de codificar rapidamente algo no frontend.<\/p>","protected":false},"author":2,"featured_media":3914,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[8],"tags":[],"class_list":["post-3913","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software-development"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Why Kotlin is awesome, but you will stay with Java anyway - The Codest<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thecodest.co\/pt\/blogue\/porque-e-que-o-kotlin-e-fantastico-mas-de-qualquer-forma-vai-ficar-com-o-java-1\/\" \/>\n<meta property=\"og:locale\" content=\"pt_PT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Why Kotlin is awesome, but you will stay with Java anyway\" \/>\n<meta property=\"og:description\" content=\"If you are a Java developer, chances are you have at least some experience with other programming languages. Some of us started their programming adventure with another language like C\/C++, JavaScript, C#, Python or maybe even something like Pascal or Basic. Some, though, started with Java and just never paid too much attention to other languages, unpleasantly remembering the one time when they needed to quickly code something on the frontend side.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thecodest.co\/pt\/blogue\/porque-e-que-o-kotlin-e-fantastico-mas-de-qualquer-forma-vai-ficar-com-o-java-1\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codest\" \/>\n<meta property=\"article:published_time\" content=\"2022-05-18T10:39:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-28T14:07:11+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png\" \/>\n\t<meta property=\"og:image:width\" content=\"960\" \/>\n\t<meta property=\"og:image:height\" content=\"540\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"thecodest\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"thecodest\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minuto\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/\"},\"author\":{\"name\":\"thecodest\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\"},\"headline\":\"Why Kotlin is awesome, but you will stay with Java anyway\",\"datePublished\":\"2022-05-18T10:39:02+00:00\",\"dateModified\":\"2026-04-28T14:07:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/\"},\"wordCount\":1973,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png\",\"articleSection\":[\"Software Development\"],\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/\",\"name\":\"Why Kotlin is awesome, but you will stay with Java anyway - The Codest\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png\",\"datePublished\":\"2022-05-18T10:39:02+00:00\",\"dateModified\":\"2026-04-28T14:07:11+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/#breadcrumb\"},\"inLanguage\":\"pt-PT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/05\\\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png\",\"width\":960,\"height\":540},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/blog\\\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thecodest.co\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Why Kotlin is awesome, but you will stay with Java anyway\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#website\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"name\":\"The Codest\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thecodest.co\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-PT\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#organization\",\"name\":\"The Codest\",\"url\":\"https:\\\/\\\/thecodest.co\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"contentUrl\":\"https:\\\/\\\/thecodest.co\\\/app\\\/uploads\\\/2024\\\/03\\\/thecodest-logo.svg\",\"width\":144,\"height\":36,\"caption\":\"The Codest\"},\"image\":{\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/pl.linkedin.com\\\/company\\\/codest\",\"https:\\\/\\\/clutch.co\\\/profile\\\/codest\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thecodest.co\\\/#\\\/schema\\\/person\\\/7e3fe41dfa4f4e41a7baad4c6e0d4f76\",\"name\":\"thecodest\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-PT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g\",\"caption\":\"thecodest\"},\"url\":\"https:\\\/\\\/thecodest.co\\\/pt\\\/author\\\/thecodest\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Porque \u00e9 que Kotlin \u00e9 espetacular, mas vai ficar com Java na mesma - The Codest","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thecodest.co\/pt\/blogue\/porque-e-que-o-kotlin-e-fantastico-mas-de-qualquer-forma-vai-ficar-com-o-java-1\/","og_locale":"pt_PT","og_type":"article","og_title":"Why Kotlin is awesome, but you will stay with Java anyway","og_description":"If you are a Java developer, chances are you have at least some experience with other programming languages. Some of us started their programming adventure with another language like C\/C++, JavaScript, C#, Python or maybe even something like Pascal or Basic. Some, though, started with Java and just never paid too much attention to other languages, unpleasantly remembering the one time when they needed to quickly code something on the frontend side.","og_url":"https:\/\/thecodest.co\/pt\/blogue\/porque-e-que-o-kotlin-e-fantastico-mas-de-qualquer-forma-vai-ficar-com-o-java-1\/","og_site_name":"The Codest","article_published_time":"2022-05-18T10:39:02+00:00","article_modified_time":"2026-04-28T14:07:11+00:00","og_image":[{"width":960,"height":540,"url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png","type":"image\/png"}],"author":"thecodest","twitter_card":"summary_large_image","twitter_misc":{"Written by":"thecodest","Est. reading time":"1 minuto"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/#article","isPartOf":{"@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/"},"author":{"name":"thecodest","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76"},"headline":"Why Kotlin is awesome, but you will stay with Java anyway","datePublished":"2022-05-18T10:39:02+00:00","dateModified":"2026-04-28T14:07:11+00:00","mainEntityOfPage":{"@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/"},"wordCount":1973,"commentCount":0,"publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"image":{"@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png","articleSection":["Software Development"],"inLanguage":"pt-PT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/","url":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/","name":"Porque \u00e9 que Kotlin \u00e9 espetacular, mas vai ficar com Java na mesma - The Codest","isPartOf":{"@id":"https:\/\/thecodest.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/#primaryimage"},"image":{"@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/#primaryimage"},"thumbnailUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png","datePublished":"2022-05-18T10:39:02+00:00","dateModified":"2026-04-28T14:07:11+00:00","breadcrumb":{"@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/#breadcrumb"},"inLanguage":"pt-PT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/"]}]},{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/#primaryimage","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/05\/why_kotlin_is_awesome-_but_you_will_stay_with_java_anyway.png","width":960,"height":540},{"@type":"BreadcrumbList","@id":"https:\/\/thecodest.co\/blog\/why-kotlin-is-awesome-but-you-will-stay-with-java-anyway-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thecodest.co\/"},{"@type":"ListItem","position":2,"name":"Why Kotlin is awesome, but you will stay with Java anyway"}]},{"@type":"WebSite","@id":"https:\/\/thecodest.co\/#website","url":"https:\/\/thecodest.co\/","name":"The Codest","description":"","publisher":{"@id":"https:\/\/thecodest.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thecodest.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-PT"},{"@type":"Organization","@id":"https:\/\/thecodest.co\/#organization","name":"The Codest","url":"https:\/\/thecodest.co\/","logo":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/","url":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","contentUrl":"https:\/\/thecodest.co\/app\/uploads\/2024\/03\/thecodest-logo.svg","width":144,"height":36,"caption":"The Codest"},"image":{"@id":"https:\/\/thecodest.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/pl.linkedin.com\/company\/codest","https:\/\/clutch.co\/profile\/codest"]},{"@type":"Person","@id":"https:\/\/thecodest.co\/#\/schema\/person\/7e3fe41dfa4f4e41a7baad4c6e0d4f76","name":"thecodest","image":{"@type":"ImageObject","inLanguage":"pt-PT","@id":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5dbfe6a1e8c86e432e8812759e34e6fe82ebac75119ae3237a6c1311fa19caf4?s=96&d=mm&r=g","caption":"thecodest"},"url":"https:\/\/thecodest.co\/pt\/author\/thecodest\/"}]}},"_links":{"self":[{"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/posts\/3913","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/comments?post=3913"}],"version-history":[{"count":8,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/posts\/3913\/revisions"}],"predecessor-version":[{"id":8525,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/posts\/3913\/revisions\/8525"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/media\/3914"}],"wp:attachment":[{"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/media?parent=3913"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/categories?post=3913"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thecodest.co\/pt\/wp-json\/wp\/v2\/tags?post=3913"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}