{"id":37092,"date":"2021-03-29T14:44:00","date_gmt":"2021-03-29T14:44:00","guid":{"rendered":"https:\/\/sinchcomdev.local\/blog\/kotlin-para-desenvolvimento-backend\/"},"modified":"2025-02-27T13:01:01","modified_gmt":"2025-02-27T13:01:01","slug":"kotlin-para-desenvolvimento-backend","status":"publish","type":"blog","link":"https:\/\/sinch.com\/pt\/blog\/kotlin-para-desenvolvimento-backend\/","title":{"rendered":"Kotlin Para Desenvolvimento Backend"},"content":{"rendered":"\n<p><strong>12 minutos para ler<\/strong><\/p>\n\n\n\n<p> Voc\u00ea provavelmente j\u00e1 ouviu falar em Kotlin, a nova linguagem oficial para desenvolvimento Android que promete ser moderna e interoper\u00e1vel com Java. Mas voc\u00ea sabia que Kotlin tamb\u00e9m \u00e9 uma \u00f3tima linguagem para utilizar no desenvolvimento backend? Neste artigo O Wellington Felix, do time de Desenvolvimento da Sinch, mostrou alguns dos principais recursos que fazem Kotlin brilhar no desenvolvimento de aplica\u00e7\u00f5es backend. Confira! <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Um pouco da hist\u00f3ria e do estado de Kotlin<\/strong><\/h2>\n\n\n\n<p> Kotlin foi criado pela Jetbrains, a empresa por tr\u00e1s de produtos como a IntelliJ IDEA e o PyCharm, e teve sua primeira vers\u00e3o est\u00e1vel em 2016. A Jetbrains utilizava bastante Java na \u00e9poca para desenvolver seus produtos e queria uma linguagem mais expressiva e menos verbosa. Por isso, Kotlin teve como principais objetivos dar mais produtividade ao desenvolvedor e garantir f\u00e1cil interoperabilidade com Java. Em 2017, o Google anunciou Kotlin como uma linguagem oficial de desenvolvimento Android. Foi tamb\u00e9m em 2017 que a Pivotal anunciou suporte oficial a Kotlin para o Spring Framework 5.0, o que acabou popularizando bastante a linguagem para desenvolvimento backend. Em 2018, no survey anual do Stackoverflow Kotlin ficou em 2\u00b0 lugar como a linguagem mais amada por desenvolvedores e em 4\u00b0 como a mais popular entre quem pretende aprender uma nova linguagem. Tamb\u00e9m em 2018, uma outra pesquisa, desta vez conduzida pela Jetbrains, mostrou que dos mais de mil desenvolvedores Kotlin participantes, 41% utilizava a linguagem para desenvolvimento web backend. Isso mostra que existe um crescente interesse da comunidade no que Kotlin pode oferecer para desenvolvedores backend. A seguir, vou detalhar algumas das raz\u00f5es que acredito que fazem Kotlin uma \u00f3tima linguagem para desenvolvimento <em>server-side<\/em>. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Kotlin \u00e9 uma linguagem segura<\/strong><\/h2>\n\n\n\n<p> Kotlin \u00e9 uma linguagem <em>null-safe. <\/em>Isso significa que o sistema de tipos tamb\u00e9m d\u00e1 informa\u00e7\u00f5es ao compilador sobre a possibilidade de um valor referenciado ser nulo. Isso \u00e9 um problema j\u00e1 conhecido em diversas linguagens em que uma tentativa de acesso a uma refer\u00eancia nula gera um erro de <em>Runtime<\/em>. No caso de Java, a conhecida <strong>NullPointerException<\/strong>. Tony Hoare, o criador da refer\u00eancia nula, chegou a dizer em uma confer\u00eancia em 2009 que esse era o seu \u201cerro de um bilh\u00e3o de d\u00f3lares\u201d devido \u00e0 \u201cin\u00famera quantidade de erros, vulnerabilidades, e falhas de sistemas [\u2026] nos \u00faltimos quarenta anos\u201d. Kotlin, resolve este problema fazendo uma distin\u00e7\u00e3o clara do que pode ser e do que n\u00e3o pode ser nulo: uma vari\u00e1vel contendo um texto que tem o tipo <em>String?<\/em> sinaliza ao compilador que a vari\u00e1vel pode conter null e for\u00e7a um tratamento especial onde necess\u00e1rio. <\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td> 1<\/td><td><code>val message: Message? = extractMessage(messageWrapper) val userName = message?.user?.name<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p> Exemplo de como Kotlin lida com valores nulos No exemplo acima precisamos utilizar o operador <em>?. <\/em>para acessar os campos que podem ser nulos, e caso algum deles seja, a express\u00e3o toda ser\u00e1 resolvida para <em>null<\/em>. Isso acaba com praticamente todos os casos de NullPointerException tornando seu c\u00f3digo menos propenso a esse tipo de erro. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>F\u00e1cil interoperabilidade com Java<\/strong><\/h2>\n\n\n\n<p> Para quem j\u00e1 possui projetos escritos em Java, \u00e9 poss\u00edvel aproveitar uma <em>codebase <\/em>existente e fazer o c\u00f3digo Kotlin viver lado a lado com o c\u00f3digo Java! Isso \u00e9 \u00f3timo pois SDKs, bibliotecas e servi\u00e7os internos podem ser aproveitados sem muita dificuldade. Al\u00e9m disso, Kotlin reaproveita o \u00f3timo ecossistema de bibliotecas e framework j\u00e1 dispon\u00edveis para Java tornando ainda mais f\u00e1cil a ado\u00e7\u00e3o da linguagem. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Mais produtividade<\/strong><\/h2>\n\n\n\n<p> Em Kotlin, diversas constru\u00e7\u00f5es podem ser escritas em poucas linhas de c\u00f3digo, dando ao desenvolvedor mais expressividade e produtividade. Um exemplo disso s\u00e3o as <em>data classes<\/em>: <\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td> 1 2 3 4 5 6 7 8 9<\/td><td><code>data <\/code><code>class<\/code><code>Message(val text: String,&amp;lt;\/p&amp;gt;<\/code><code>&amp;lt;!-- \/wp:paragraph --&amp;gt;<\/code><code>&amp;lt;!-- wp:paragraph --&amp;gt;<\/code><code>&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;val phone: String,&amp;lt;\/p&amp;gt;<\/code><code>&amp;lt;!-- \/wp:paragraph --&amp;gt;<\/code><code>&amp;lt;!-- wp:paragraph --&amp;gt;<\/code><code>&amp;lt;p&amp;gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;val createdAt: Long = Instant.now().toEpochMilli())<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p> Exemplo de uma data class em Kotlin com argumentos <em>default<\/em> Em Java, para criar uma classe modelo, tamb\u00e9m conhecida como POJO ou Bean, seria necess\u00e1rio escrever ou gerar c\u00f3digo para definir <em>getters<\/em>, <em>setters<\/em>, <em>toString<\/em>, <em>equals<\/em>, <em>copy<\/em>\u2026 Ou utilizar uma biblioteca como <em>Lombok. <\/em>Com <em>data classes <\/em>o compilador de Kotlin gera tudo isso e ainda nos permite economizar tempo e linhas de c\u00f3digo. Perceba tamb\u00e9m que nessa <em>data class <\/em>estamos utilizando outro recurso de Kotlin que nos d\u00e1 bastante produtividade que s\u00e3o os argumentos <em>default.<\/em> Ao inv\u00e9s de criar diversos <em>overloads <\/em>de m\u00e9todos ou construtores de classes, \u00e9 poss\u00edvel definir um valor padr\u00e3o para determinados argumentos reduzindo significativamente a quantidade de c\u00f3digo necess\u00e1rio. Outro recurso da linguagem bastante interessante s\u00e3o as <em>extension functions<\/em> que permitem estender a funcionalidade de classes existentes sem a necessidade de heran\u00e7a de uma forma bem simples, eliminando a necessidade de classes utilit\u00e1rias: <\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33<\/td><td><code>fun BigDecimal.formatToBRL(): String {&amp;lt;\/p&amp;gt;<\/code><code>&amp;lt;!-- \/wp:paragraph --&amp;gt;<\/code><code>&amp;lt;!-- wp:paragraph --&amp;gt;<\/code><code>&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;val brazilianFormat = DecimalFormat&amp;lt;\/p&amp;gt;<\/code><code>&amp;lt;!-- \/wp:paragraph --&amp;gt;<\/code><code>&amp;lt;!-- wp:paragraph --&amp;gt;<\/code><code>&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;.getCurrencyInstance(Locale(<\/code><code>\"pt\"<\/code><code>, <\/code><code>\"br\"<\/code><code>))&amp;lt;\/p&amp;gt;<\/code><code>&amp;lt;!-- \/wp:paragraph --&amp;gt;<\/code><code>&amp;lt;!-- wp:paragraph --&amp;gt;<\/code><code>&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;<\/code><code>return<\/code><code>brazilianFormat.format(<\/code><code>this<\/code><code>)&amp;lt;\/p&amp;gt;<\/code><code>&amp;lt;!-- \/wp:paragraph --&amp;gt;<\/code><code>&amp;lt;!-- wp:paragraph --&amp;gt;<\/code><code>&amp;lt;p&amp;gt;}&amp;lt;\/p&amp;gt;<\/code><code>&amp;lt;!-- \/wp:paragraph --&amp;gt;<\/code><code>&amp;lt;!-- wp:paragraph --&amp;gt;<\/code><code>&amp;lt;p&amp;gt;fun main(args: Array&amp;amp;lt;String&amp;amp;gt;) {&amp;lt;\/p&amp;gt;<\/code><code>&amp;lt;!-- \/wp:paragraph --&amp;gt;<\/code><code>&amp;lt;!-- wp:paragraph --&amp;gt;<\/code><code>&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;val amount = BigDecimal(<\/code><code>144.42<\/code><code>)&amp;lt;\/p&amp;gt;<\/code><code>&amp;lt;!-- \/wp:paragraph --&amp;gt;<\/code><code>&amp;lt;!-- wp:paragraph --&amp;gt;<\/code><code>&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;println(amount.formatToBRL()) <\/code><code>\/\/ R$ 144,42&amp;lt;\/p&amp;gt;<\/code><code>&amp;lt;!-- \/wp:paragraph --&amp;gt;<\/code><code>&amp;lt;!-- wp:paragraph --&amp;gt;<\/code><code>&amp;lt;p&amp;gt;}<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p> Com a <em>extension function <\/em>acima, todo BigDecimal tamb\u00e9m ter\u00e1 o m\u00e9todo formatToBRL() Roman Elizarov, l\u00edder do time de desenvolvimento das bibliotecas de Kotlin, escreveu \u00f3timos artigos no Medium e tamb\u00e9m sobre <em>Extension-oriented design<\/em> e como <em>extension<\/em><em>functions <\/em>v\u00e3o al\u00e9m de uma conveni\u00eancia que a linguagem nos d\u00e1 \u2013 podem ser usadas para tornar mais claro o comportamento de interfaces, por exemplo. Vale a pena dar uma olhada!<em><\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Coroutines<\/strong><\/h2>\n\n\n\n<p> Com coroutines \u00e9 poss\u00edvel escrever c\u00f3digo ass\u00edncrono e n\u00e3o-bloqueante de forma simples e imperativa. Coroutines funcionam como Threads em Java, mas s\u00e3o muito mais leves. Como consequ\u00eancia, \u00e9 poss\u00edvel disparar milhares de coroutines ao mesmo tempo sem se preocupar com o esgotamento de recursos. Isso \u00e9 \u00f3timo porque \u00e9 muito comum lidar com concorr\u00eancia e execu\u00e7\u00f5es ass\u00edncronas no backend, e a boa not\u00edcia \u00e9 que frameworks como Spring est\u00e3o come\u00e7ando a dar suporte a coroutines! <\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><tbody><tr><td> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25<\/td><td><code>coRouter {&amp;lt;\/p&amp;gt;<\/code><code>&amp;lt;!-- \/wp:paragraph --&amp;gt;<\/code><code>&amp;lt;!-- wp:paragraph --&amp;gt;<\/code><code>&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;GET(<\/code><code>\"\/customers\/{id}\"<\/code><code>) { req -&amp;amp;gt;&amp;lt;\/p&amp;gt;<\/code><code>&amp;lt;!-- \/wp:paragraph --&amp;gt;<\/code><code>&amp;lt;!-- wp:paragraph --&amp;gt;<\/code><code>&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;val body = repository.findById(req.pathVariable(<\/code><code>\"id\"<\/code><code>))&amp;lt;\/p&amp;gt;<\/code><code>&amp;lt;!-- \/wp:paragraph --&amp;gt;<\/code><code>&amp;lt;!-- wp:paragraph --&amp;gt;<\/code><code>&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;?: <\/code><code>throw<\/code><code>IllegalArgumentException(<\/code><code>\"Customer not found\"<\/code><code>)&amp;lt;\/p&amp;gt;<\/code><code>&amp;lt;!-- \/wp:paragraph --&amp;gt;<\/code><code>&amp;lt;!-- wp:paragraph --&amp;gt;<\/code><code>&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;ServerResponse.ok().bodyAndAwait(body)&amp;lt;\/p&amp;gt;<\/code><code>&amp;lt;!-- \/wp:paragraph --&amp;gt;<\/code><code>&amp;lt;!-- wp:paragraph --&amp;gt;<\/code><code>&amp;lt;p&amp;gt;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;}&amp;lt;\/p&amp;gt;<\/code><code>&amp;lt;!-- \/wp:paragraph --&amp;gt;<\/code><code>&amp;lt;!-- wp:paragraph --&amp;gt;<\/code><code>&amp;lt;p&amp;gt; }<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p><em>coRouter<\/em> \u00e9 uma coroutine definida pelo Spring Framework O Spring Framework na sua pr\u00f3xima vers\u00e3o 5.2 dar\u00e1 suporte a coroutines. Um exemplo \u00e9 o <em>coRouter<\/em>, que dispara uma coroutine para cada requisi\u00e7\u00e3o recebida em um endpoint da aplica\u00e7\u00e3o. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Desvantagens<\/strong><\/h2>\n\n\n\n<p> Algumas desvantagens podem surgir na hora escolher Kotlin como linguagem para backend. Uma delas pode ser a escolha de framework que pode ser um pouco limitada. Como j\u00e1 mencionado, o Spring est\u00e1 come\u00e7ando a dar suporte oficial a Kotlin e \u00e9 um \u00f3timo framework e j\u00e1 bastante utilizado, entretanto ainda n\u00e3o tira tanto proveito dos recursos oferecidos pela linguagem, mas isso deve mudar nas pr\u00f3ximas releases do Spring Framework. Uma outra op\u00e7\u00e3o \u00e9 utilizar o Ktor, um framework open-source para desenvolver aplica\u00e7\u00f5es backend criado pela Jetbrains, e que tira bom proveito de constru\u00e7\u00f5es mais idiom\u00e1ticas de Kotlin como DSLs. Por isso, as op\u00e7\u00f5es ainda podem ser um pouco limitadas, e frameworks mais novos podem n\u00e3o ser t\u00e3o completos quanto se espera. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Conclus\u00e3o<\/strong><\/h2>\n\n\n\n<p> Kotlin est\u00e1 amadurecendo e crescendo muito rapidamente, como se pode perceber pela receptividade que a comunidade est\u00e1 dando a linguagem e tamb\u00e9m pelo engajamento no suporte a Kotlin em grandes projetos como o Spring, que s\u00f3 mostra que Kotlin realmente traz algo para os desenvolvedores. Por isso, se voc\u00ea ou seu time j\u00e1 trabalham com Java, Kotlin pode ser uma \u00f3tima linguagem para resolver alguns dos problemas encontrados no dia-a-dia quando se programa em Java, e ainda se integra facilmente ao seu ecossistema Java. Mesmo para quem n\u00e3o utiliza Java, Kotlin pode ainda ser uma \u00f3tima op\u00e7\u00e3o j\u00e1 que o Spring Framework \u00e9 bastante maduro e popular. <\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"sobre-o-autor\">Sobre o autor<\/h3>\n\n\n\n<p> Wellington Felix Estudante de Ci\u00eancia da Computa\u00e7\u00e3o pela UFPE, tem interesse nas \u00e1reas de Engenharia de Software e Programa\u00e7\u00e3o Funcional. Faz est\u00e1gio no time de Messaging da Sinch desenvolvendo com Kotlin e Java.<\/p>\n","protected":false},"author":39,"featured_media":37093,"menu_order":0,"template":"","meta":{"_acf_changed":false,"footnotes":""},"tags":[],"blog_category":[],"class_list":["post-37092","blog","type-blog","status-publish","has-post-thumbnail","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kotlin Para Desenvolvimento Backend<\/title>\n<meta name=\"description\" content=\"Saiba mais sobre a linguagem Kotlin e entenda os seus benef\u00edcios para o desenvolvimento backend. Clique e Confira!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/sinch.com\/pt\/blog\/kotlin-para-desenvolvimento-backend\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kotlin Para Desenvolvimento Backend\" \/>\n<meta property=\"og:description\" content=\"Saiba mais sobre a linguagem Kotlin e entenda os seus benef\u00edcios para o desenvolvimento backend. Clique e Confira!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/sinch.com\/pt\/blog\/kotlin-para-desenvolvimento-backend\/\" \/>\n<meta property=\"og:site_name\" content=\"Sinch\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/wearesinch\/\" \/>\n<meta property=\"article:modified_time\" content=\"2025-02-27T13:01:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/sinch.com\/wp-content\/uploads\/2024\/08\/true-agency-o4UhdLv5jbQ-unsplash-780x450-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"780\" \/>\n\t<meta property=\"og:image:height\" content=\"450\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@WeAreSinch\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data1\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/sinch.com\\\/pt\\\/blog\\\/kotlin-para-desenvolvimento-backend\\\/\",\"url\":\"https:\\\/\\\/sinch.com\\\/pt\\\/blog\\\/kotlin-para-desenvolvimento-backend\\\/\",\"name\":\"Kotlin Para Desenvolvimento Backend\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/pt\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/pt\\\/blog\\\/kotlin-para-desenvolvimento-backend\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/pt\\\/blog\\\/kotlin-para-desenvolvimento-backend\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/sinch.com\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/true-agency-o4UhdLv5jbQ-unsplash-780x450-1.jpg\",\"datePublished\":\"2021-03-29T14:44:00+00:00\",\"dateModified\":\"2025-02-27T13:01:01+00:00\",\"description\":\"Saiba mais sobre a linguagem Kotlin e entenda os seus benef\u00edcios para o desenvolvimento backend. Clique e Confira!\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/pt\\\/blog\\\/kotlin-para-desenvolvimento-backend\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/sinch.com\\\/pt\\\/blog\\\/kotlin-para-desenvolvimento-backend\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/sinch.com\\\/pt\\\/blog\\\/kotlin-para-desenvolvimento-backend\\\/#primaryimage\",\"url\":\"https:\\\/\\\/sinch.com\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/true-agency-o4UhdLv5jbQ-unsplash-780x450-1.jpg\",\"contentUrl\":\"https:\\\/\\\/sinch.com\\\/wp-content\\\/uploads\\\/2024\\\/08\\\/true-agency-o4UhdLv5jbQ-unsplash-780x450-1.jpg\",\"width\":780,\"height\":450},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/sinch.com\\\/pt\\\/blog\\\/kotlin-para-desenvolvimento-backend\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/sinch.com\\\/pt\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https:\\\/\\\/sinch.com\\\/pt\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Kotlin Para Desenvolvimento Backend\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/sinch.com\\\/pt\\\/#website\",\"url\":\"https:\\\/\\\/sinch.com\\\/pt\\\/\",\"name\":\"Sinch\",\"description\":\"SMS Messaging, Voice, Email, Video &amp; Verification APIs | Sinch\",\"publisher\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/pt\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/sinch.com\\\/pt\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/sinch.com\\\/pt\\\/#organization\",\"name\":\"Sinch\",\"url\":\"https:\\\/\\\/sinch.com\\\/pt\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/sinch.com\\\/pt\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/sinch.com\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/Thumbnail-Logo-Honey.png\",\"contentUrl\":\"https:\\\/\\\/sinch.com\\\/wp-content\\\/uploads\\\/2024\\\/09\\\/Thumbnail-Logo-Honey.png\",\"width\":800,\"height\":496,\"caption\":\"Sinch\"},\"image\":{\"@id\":\"https:\\\/\\\/sinch.com\\\/pt\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/wearesinch\\\/\",\"https:\\\/\\\/x.com\\\/WeAreSinch\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/sinch\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCZZ2u_B2afTxA0v-xcgfsaw\",\"https:\\\/\\\/www.instagram.com\\\/wearesinch\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kotlin Para Desenvolvimento Backend","description":"Saiba mais sobre a linguagem Kotlin e entenda os seus benef\u00edcios para o desenvolvimento backend. Clique e Confira!","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:\/\/sinch.com\/pt\/blog\/kotlin-para-desenvolvimento-backend\/","og_locale":"pt_BR","og_type":"article","og_title":"Kotlin Para Desenvolvimento Backend","og_description":"Saiba mais sobre a linguagem Kotlin e entenda os seus benef\u00edcios para o desenvolvimento backend. Clique e Confira!","og_url":"https:\/\/sinch.com\/pt\/blog\/kotlin-para-desenvolvimento-backend\/","og_site_name":"Sinch","article_publisher":"https:\/\/www.facebook.com\/wearesinch\/","article_modified_time":"2025-02-27T13:01:01+00:00","og_image":[{"width":780,"height":450,"url":"https:\/\/sinch.com\/wp-content\/uploads\/2024\/08\/true-agency-o4UhdLv5jbQ-unsplash-780x450-1.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_site":"@WeAreSinch","twitter_misc":{"Est. tempo de leitura":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/sinch.com\/pt\/blog\/kotlin-para-desenvolvimento-backend\/","url":"https:\/\/sinch.com\/pt\/blog\/kotlin-para-desenvolvimento-backend\/","name":"Kotlin Para Desenvolvimento Backend","isPartOf":{"@id":"https:\/\/sinch.com\/pt\/#website"},"primaryImageOfPage":{"@id":"https:\/\/sinch.com\/pt\/blog\/kotlin-para-desenvolvimento-backend\/#primaryimage"},"image":{"@id":"https:\/\/sinch.com\/pt\/blog\/kotlin-para-desenvolvimento-backend\/#primaryimage"},"thumbnailUrl":"https:\/\/sinch.com\/wp-content\/uploads\/2024\/08\/true-agency-o4UhdLv5jbQ-unsplash-780x450-1.jpg","datePublished":"2021-03-29T14:44:00+00:00","dateModified":"2025-02-27T13:01:01+00:00","description":"Saiba mais sobre a linguagem Kotlin e entenda os seus benef\u00edcios para o desenvolvimento backend. Clique e Confira!","breadcrumb":{"@id":"https:\/\/sinch.com\/pt\/blog\/kotlin-para-desenvolvimento-backend\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/sinch.com\/pt\/blog\/kotlin-para-desenvolvimento-backend\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/sinch.com\/pt\/blog\/kotlin-para-desenvolvimento-backend\/#primaryimage","url":"https:\/\/sinch.com\/wp-content\/uploads\/2024\/08\/true-agency-o4UhdLv5jbQ-unsplash-780x450-1.jpg","contentUrl":"https:\/\/sinch.com\/wp-content\/uploads\/2024\/08\/true-agency-o4UhdLv5jbQ-unsplash-780x450-1.jpg","width":780,"height":450},{"@type":"BreadcrumbList","@id":"https:\/\/sinch.com\/pt\/blog\/kotlin-para-desenvolvimento-backend\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/sinch.com\/pt\/"},{"@type":"ListItem","position":2,"name":"Blog","item":"https:\/\/sinch.com\/pt\/blog\/"},{"@type":"ListItem","position":3,"name":"Kotlin Para Desenvolvimento Backend"}]},{"@type":"WebSite","@id":"https:\/\/sinch.com\/pt\/#website","url":"https:\/\/sinch.com\/pt\/","name":"Sinch","description":"SMS Messaging, Voice, Email, Video &amp; Verification APIs | Sinch","publisher":{"@id":"https:\/\/sinch.com\/pt\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/sinch.com\/pt\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/sinch.com\/pt\/#organization","name":"Sinch","url":"https:\/\/sinch.com\/pt\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/sinch.com\/pt\/#\/schema\/logo\/image\/","url":"https:\/\/sinch.com\/wp-content\/uploads\/2024\/09\/Thumbnail-Logo-Honey.png","contentUrl":"https:\/\/sinch.com\/wp-content\/uploads\/2024\/09\/Thumbnail-Logo-Honey.png","width":800,"height":496,"caption":"Sinch"},"image":{"@id":"https:\/\/sinch.com\/pt\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/wearesinch\/","https:\/\/x.com\/WeAreSinch","https:\/\/www.linkedin.com\/company\/sinch","https:\/\/www.youtube.com\/channel\/UCZZ2u_B2afTxA0v-xcgfsaw","https:\/\/www.instagram.com\/wearesinch\/"]}]}},"_links":{"self":[{"href":"https:\/\/sinch.com\/pt\/wp-json\/wp\/v2\/blog\/37092","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sinch.com\/pt\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/sinch.com\/pt\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/sinch.com\/pt\/wp-json\/wp\/v2\/users\/39"}],"version-history":[{"count":0,"href":"https:\/\/sinch.com\/pt\/wp-json\/wp\/v2\/blog\/37092\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sinch.com\/pt\/wp-json\/wp\/v2\/media\/37093"}],"wp:attachment":[{"href":"https:\/\/sinch.com\/pt\/wp-json\/wp\/v2\/media?parent=37092"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sinch.com\/pt\/wp-json\/wp\/v2\/tags?post=37092"},{"taxonomy":"blog_category","embeddable":true,"href":"https:\/\/sinch.com\/pt\/wp-json\/wp\/v2\/blog_category?post=37092"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}