{"id":98,"date":"2019-11-28T13:35:00","date_gmt":"2019-11-28T12:35:00","guid":{"rendered":"https:\/\/www.codemotion.com\/magazine\/kotlin-loves-react\/"},"modified":"2020-06-12T14:00:27","modified_gmt":"2020-06-12T12:00:27","slug":"kotlin-loves-react","status":"publish","type":"post","link":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/","title":{"rendered":"Kotlin loves React"},"content":{"rendered":"<p>In the beginning were the webmasters, who knew about PHP and JavaScript. Then front-end and back-end tribes, and each followed their own path, differentiating and specialising. Finally, new <span id=\"urn:enhancement-9506399e\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/programming_languages\">programming languages<\/span> \u200b\u200band frameworks arrived, with the promise to write concise and expressive code, in safe mode.<\/p>\n<p>Among the <span id=\"urn:enhancement-10ae1cc0\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/technology\">technologies<\/span> that have emerged in recent years are, in particular, <span id=\"urn:enhancement-acc2b50\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/kotlin_programming_language\">Kotlin<\/span> and React. Developed internally by Jetbrains and Facebook respectively, released open-source and adopted by big companies all over the world, the two projects were born with similar purposes &#8211; offer a language \/ framework that allows to develop with more simplicity &#8211; and initially they were placed at the antipodes of the computer science rainbow. <span id=\"urn:enhancement-1de36d46\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/kotlin_programming_language\">Kotlin<\/span>, born to be an alternative to <span id=\"urn:enhancement-24a90f9f\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java_software_platform\">Java<\/span>, wants to be an industrial-strength object-oriented language; React extends the <span id=\"urn:enhancement-924dc7b9\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> standard features to build user interfaces (within both browser and mobile OSs).<\/p>\n<p>Two incompatible worlds? Not at all, two complementary worlds that, thanks to <span id=\"urn:enhancement-b94d7229\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/kotlin_programming_language\">Kotlin<\/span>&#8216;s multi-platform peculiarities, are co-existing as a practical and winning solution to write both (web-based) front-ends and back-ends using one language.<\/p>\n<h2>A valid alternative on server side<\/h2>\n<p>At <a href=\"https:\/\/milan2018.codemotionworld.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Codemotion Milan 2018<\/a>, <a href=\"https:\/\/milan2018.codemotionworld.com\/speaker\/210\/\" target=\"_blank\" rel=\"noopener noreferrer\">Davide Cerbo<\/a> has introduced the advantages of using <span id=\"urn:enhancement-9e7cc93b\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/kotlin_programming_language\">Kotlin<\/span> for the realization of full-<span id=\"urn:enhancement-393bcd8a\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/stack_abstract_data_type\">stack<\/span> <span id=\"urn:enhancement-1fb9a3bb\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/project\">projects<\/span>, showing how effective, in particular, is the current <span id=\"urn:enhancement-955f247d\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/kotlin_programming_language\">Kotlin<\/span>-React combination.<\/p>\n<p><span id=\"urn:enhancement-d0846148\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/kotlin_programming_language\">Kotlin<\/span> is a modern language for modern multi-platform applications. It is characterised in particular by the concise syntax and to be easily adopted by those who already know <span id=\"urn:enhancement-24b8ff85\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java\">Java<\/span> (it is not by chance that it runs on the JVM), but at the same time to offer some interesting solutions to carry out more solid <span id=\"urn:enhancement-84473c09\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/project\">projects<\/span>. An example is the distinction between nullable and non-nullable data types and the obligation to use &#8220;null-safe&#8221; operators for nullable objects.<\/p>\n<p>It is a language particularly suited for server side programming. Due to its JVM-based nature, it allows gradually migrating large codebases from <span id=\"urn:enhancement-c4cd697c\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/java\">Java<\/span> to <span id=\"urn:enhancement-3a9a34c7\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/kotlin_programming_language\">Kotlin<\/span>, relying on existing frameworks such as Spring or Java EE <span id=\"urn:enhancement-e9838faf\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/hypertext_transfer_protocol\">Http<\/span> servlets.<\/p>\n<p>Recently, however, it has added the ability of transpilling the <span id=\"urn:enhancement-69c03b7b\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/kotlin_programming_language\">Kotlin<\/span> code into <span id=\"urn:enhancement-ea6a1f7c\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span>, in particular client-side <span id=\"urn:enhancement-b54ff75b\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span>.<\/p>\n<h2>Modern web with Kotlin and React<\/h2>\n<p><span id=\"urn:enhancement-212ec12a\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/kotlin_programming_language\">Kotlin<\/span>\u2019s attention to the <span id=\"urn:enhancement-f5720603\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> world and in particular client-side <span id=\"urn:enhancement-c58a223f\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> on browsers, manifests itself on several fronts. For example, in the DSL to build <span id=\"urn:enhancement-eb845fba\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/html\">HTML<\/span> in the DOM and in its ability to generate <span id=\"urn:enhancement-7f49c513\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> that is compatible with the Asynchronous Module Definition (AMD), the CommonJS and the Universal Model Definition (UMD).<\/p>\n<p><script src=\"https:\/\/gist.github.com\/elleuca\/39af234da50d38c66d5f1b1830146c52.js\"><\/script><\/p>\n<p>Not only. It is also possible to include and extend existing <span id=\"urn:enhancement-330f8181\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> libraries as they were <span id=\"urn:enhancement-2025d\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/kotlin_programming_language\">Kotlin<\/span> <span id=\"urn:enhancement-e648e348\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/class_computer_programming\">classes<\/span>.<\/p>\n<p><script src=\"https:\/\/gist.github.com\/elleuca\/994af4a3f2295d5592c627b6e4772d3d.js\"><\/script><\/p>\n<p>For a modern <span id=\"urn:enhancement-da4bf3af\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/web_application\">web application<\/span> you need a modern framework and React is the most obvious choice for the <span id=\"urn:enhancement-d1fff2f2\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/kotlin_programming_language\">Kotlin<\/span> world. There are several <span id=\"urn:enhancement-4a1bff0f\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/kotlin_programming_language\">Kotlin<\/span> wrappers to common <span id=\"urn:enhancement-f0cccaf4\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JS<\/span> and React libraries such as React itself, <span id=\"urn:enhancement-e9bdef8d\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">Mocha<\/span> and Redux.<\/p>\n<p>Of course, there are some subtle differences writing React code in <span id=\"urn:enhancement-5a1f948d\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/kotlin_programming_language\">Kotlin<\/span> compared to <span id=\"urn:enhancement-5d5c0ffb\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span>. For <span id=\"urn:enhancement-bfae448c\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/instance_computer_science\">instance<\/span>, being a strictly-typed language, type annotations for props are not optional.<\/p>\n<p><script src=\"https:\/\/gist.github.com\/elleuca\/6903e96b3b64b1f6d882c0244f2c9ff5.js\"><\/script><\/p>\n<p>Surely interesting, as highlighted by Davide Cerbo in his talk, is the possibility of &#8220;reusing&#8221; the same <span id=\"urn:enhancement-fc38b638\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/class_computer_programming\">classes<\/span> and <span id=\"urn:enhancement-34ed249f\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/method_computer_programming\">methods<\/span> in the front-end and in the back-end, with the certainty of having the same behaviour in both cases. Of course, the actual code will run, for <span id=\"urn:enhancement-82e612df\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/instance_computer_science\">instance<\/span>, over JVM on server side and inside the browser\u2019s <span id=\"urn:enhancement-aced1a09\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> engine on client side.<\/p>\n<p>Do not forget, however, that <span id=\"urn:enhancement-79337dad\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> code is transpilled from original <span id=\"urn:enhancement-43203849\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/kotlin_programming_language\">Kotlin<\/span> code and that, in some respects, <span id=\"urn:enhancement-33b5f1ca\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/kotlin_programming_language\">Kotlin<\/span> is very far from how <span id=\"urn:enhancement-15a768f4\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> works. In particular, it should not be overlooked that, while <span id=\"urn:enhancement-f0e5557c\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/kotlin_programming_language\">Kotlin<\/span> is a static typed language, <span id=\"urn:enhancement-aa5f5214\" class=\"textannotation disambiguated wl-creative-work\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/javascript\">JavaScript<\/span> is dynamic-typed. This entails particular attention in using certain advanced <span id=\"urn:enhancement-48fcf693\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/constructor_object-oriented_programming\">constructs<\/span>.<\/p>\n<p>The path of <span id=\"urn:enhancement-d74fb4aa\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/kotlin_programming_language\">Kotlin<\/span> and React has just begun, but it\u2019s already promising for multi-platform and full-<span id=\"urn:enhancement-849ee811\" class=\"textannotation disambiguated wl-thing\" itemid=\"http:\/\/data.wordlift.io\/wl01770\/entity\/stack_abstract_data_type\">stack<\/span> development situations.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the beginning were the webmasters, who knew about PHP and JavaScript. Then front-end and back-end tribes, and each followed their own path, differentiating and specialising. Finally, new programming languages \u200b\u200band frameworks arrived, with the promise to write concise and expressive code, in safe mode. Among the technologies that have emerged in recent years are,&#8230; <a class=\"more-link\" href=\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/\">Read more<\/a><\/p>\n","protected":false},"author":64,"featured_media":99,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","_uag_custom_page_level_css":"","_genesis_hide_title":false,"_genesis_hide_breadcrumbs":false,"_genesis_hide_singular_image":false,"_genesis_hide_footer_widgets":false,"_genesis_custom_body_class":"","_genesis_custom_post_class":"","_genesis_layout":"","footnotes":""},"categories":[33],"tags":[59,22,55,54],"collections":[],"class_list":{"0":"post-98","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-mobile-dev","8":"tag-android","9":"tag-codemotion-milan","10":"tag-kotlin","11":"tag-react","12":"entry"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.9 (Yoast SEO v26.9) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Kotlin loves React - Codemotion Magazine<\/title>\n<meta name=\"description\" content=\"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kotlin loves React\" \/>\n<meta property=\"og:description\" content=\"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/\" \/>\n<meta property=\"og:site_name\" content=\"Codemotion Magazine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Codemotion.Italy\/\" \/>\n<meta property=\"article:published_time\" content=\"2019-11-28T12:35:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-06-12T12:00:27+00:00\" \/>\n<meta name=\"author\" content=\"Codemotion\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:site\" content=\"@CodemotionIT\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Codemotion\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/\"},\"author\":{\"name\":\"Codemotion\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/201bb98b02412383686cced7521b861c\"},\"headline\":\"Kotlin loves React\",\"datePublished\":\"2019-11-28T12:35:00+00:00\",\"dateModified\":\"2020-06-12T12:00:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/\"},\"wordCount\":625,\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1.jpg\",\"keywords\":[\"Android\",\"Codemotion Milan\",\"Kotlin\",\"React\"],\"articleSection\":[\"Mobile Developer\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/\",\"name\":\"Kotlin loves React - Codemotion Magazine\",\"isPartOf\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1.jpg\",\"datePublished\":\"2019-11-28T12:35:00+00:00\",\"dateModified\":\"2020-06-12T12:00:27+00:00\",\"description\":\"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/#primaryimage\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1.jpg\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1.jpg\",\"width\":637,\"height\":283},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Frontend\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Mobile Developer\",\"item\":\"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Kotlin loves React\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#website\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"name\":\"Codemotion Magazine\",\"description\":\"We code the future. Together\",\"publisher\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#organization\",\"name\":\"Codemotion\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png\",\"width\":225,\"height\":225,\"caption\":\"Codemotion\"},\"image\":{\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Codemotion.Italy\/\",\"https:\/\/x.com\/CodemotionIT\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/201bb98b02412383686cced7521b861c\",\"name\":\"Codemotion\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/cropped-codemotionlogo-150x150.png\",\"contentUrl\":\"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/cropped-codemotionlogo-150x150.png\",\"caption\":\"Codemotion\"},\"description\":\"Articles wirtten by the Codemotion staff. Tech news, inspiration, latest treends in software development and more.\",\"sameAs\":[\"https:\/\/x.com\/CodemotionIT\"],\"url\":\"https:\/\/www.codemotion.com\/magazine\/author\/codemotion-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Kotlin loves React - Codemotion Magazine","description":"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.","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:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/","og_locale":"en_US","og_type":"article","og_title":"Kotlin loves React","og_description":"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.","og_url":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/","og_site_name":"Codemotion Magazine","article_publisher":"https:\/\/www.facebook.com\/Codemotion.Italy\/","article_published_time":"2019-11-28T12:35:00+00:00","article_modified_time":"2020-06-12T12:00:27+00:00","author":"Codemotion","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1.jpg","twitter_creator":"@CodemotionIT","twitter_site":"@CodemotionIT","twitter_misc":{"Written by":"Codemotion","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/#article","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/"},"author":{"name":"Codemotion","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/201bb98b02412383686cced7521b861c"},"headline":"Kotlin loves React","datePublished":"2019-11-28T12:35:00+00:00","dateModified":"2020-06-12T12:00:27+00:00","mainEntityOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/"},"wordCount":625,"publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1.jpg","keywords":["Android","Codemotion Milan","Kotlin","React"],"articleSection":["Mobile Developer"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/","url":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/","name":"Kotlin loves React - Codemotion Magazine","isPartOf":{"@id":"https:\/\/www.codemotion.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/#primaryimage"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/#primaryimage"},"thumbnailUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1.jpg","datePublished":"2019-11-28T12:35:00+00:00","dateModified":"2020-06-12T12:00:27+00:00","description":"Codemotion and Facebook organized the Tech Leadership Training boot camp, heres a personal reportage from one of our attendees.","breadcrumb":{"@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/#primaryimage","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1.jpg","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1.jpg","width":637,"height":283},{"@type":"BreadcrumbList","@id":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/kotlin-loves-react\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.codemotion.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Frontend","item":"https:\/\/www.codemotion.com\/magazine\/frontend\/"},{"@type":"ListItem","position":3,"name":"Mobile Developer","item":"https:\/\/www.codemotion.com\/magazine\/frontend\/mobile-dev\/"},{"@type":"ListItem","position":4,"name":"Kotlin loves React"}]},{"@type":"WebSite","@id":"https:\/\/www.codemotion.com\/magazine\/#website","url":"https:\/\/www.codemotion.com\/magazine\/","name":"Codemotion Magazine","description":"We code the future. Together","publisher":{"@id":"https:\/\/www.codemotion.com\/magazine\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.codemotion.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.codemotion.com\/magazine\/#organization","name":"Codemotion","url":"https:\/\/www.codemotion.com\/magazine\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/codemotionlogo.png","width":225,"height":225,"caption":"Codemotion"},"image":{"@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Codemotion.Italy\/","https:\/\/x.com\/CodemotionIT"]},{"@type":"Person","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/201bb98b02412383686cced7521b861c","name":"Codemotion","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.codemotion.com\/magazine\/#\/schema\/person\/image\/","url":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/cropped-codemotionlogo-150x150.png","contentUrl":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/11\/cropped-codemotionlogo-150x150.png","caption":"Codemotion"},"description":"Articles wirtten by the Codemotion staff. Tech news, inspiration, latest treends in software development and more.","sameAs":["https:\/\/x.com\/CodemotionIT"],"url":"https:\/\/www.codemotion.com\/magazine\/author\/codemotion-2\/"}]}},"featured_image_src":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1-600x283.jpg","featured_image_src_square":"https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1-600x283.jpg","author_info":{"display_name":"Codemotion","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/codemotion-2\/"},"uagb_featured_image_src":{"full":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1.jpg",637,283,false],"thumbnail":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1-150x150.jpg",150,150,true],"medium":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1-300x133.jpg",300,133,true],"medium_large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1.jpg",637,283,false],"large":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1.jpg",637,283,false],"1536x1536":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1.jpg",637,283,false],"2048x2048":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1.jpg",637,283,false],"small-home-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1.jpg",100,44,false],"sidebar-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1-180x128.jpg",180,128,true],"genesis-singular-images":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1.jpg",637,283,false],"archive-featured":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1-400x225.jpg",400,225,true],"gb-block-post-grid-landscape":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1-600x283.jpg",600,283,true],"gb-block-post-grid-square":["https:\/\/www.codemotion.com\/magazine\/wp-content\/uploads\/2019\/06\/kotlin-react-bkk-300-1-638-1-600x283.jpg",600,283,true]},"uagb_author_info":{"display_name":"Codemotion","author_link":"https:\/\/www.codemotion.com\/magazine\/author\/codemotion-2\/"},"uagb_comment_info":0,"uagb_excerpt":"In the beginning were the webmasters, who knew about PHP and JavaScript. Then front-end and back-end tribes, and each followed their own path, differentiating and specialising. Finally, new programming languages \u200b\u200band frameworks arrived, with the promise to write concise and expressive code, in safe mode. Among the technologies that have emerged in recent years are,&#8230;&hellip;","lang":"en","_links":{"self":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/98","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/users\/64"}],"replies":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/comments?post=98"}],"version-history":[{"count":2,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/98\/revisions"}],"predecessor-version":[{"id":5494,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/posts\/98\/revisions\/5494"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media\/99"}],"wp:attachment":[{"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/media?parent=98"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/categories?post=98"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/tags?post=98"},{"taxonomy":"collections","embeddable":true,"href":"https:\/\/www.codemotion.com\/magazine\/wp-json\/wp\/v2\/collections?post=98"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}