{"id":5003,"date":"2018-09-18T12:17:56","date_gmt":"2018-09-18T11:17:56","guid":{"rendered":"https:\/\/www.discoverpassenger.com\/?p=5003"},"modified":"2018-09-18T12:17:56","modified_gmt":"2018-09-18T11:17:56","slug":"from-java-to-kotlin-the-joys-of-new-code","status":"publish","type":"post","link":"https:\/\/www.masabi.com\/it\/news\/from-java-to-kotlin-the-joys-of-new-code\/","title":{"rendered":"In depth: From Java to Kotlin\u200a-\u200athe joys of new code"},"content":{"rendered":"<div class=\"block-core-quote\">\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p>Originally posted on our &#8216;Base&#8217; Medium account. <br>In September 2019, <a href=\"https:\/\/medium.com\/@mrtmqy\/going-all-in-4c20d902fe2a\">Base became Passenger<\/a>.<\/p><\/blockquote>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\"><strong>At Base, we prefer not to stand still. We\u2019re constantly experimenting and exploring, finding the right tools for the right job. That\u2019s why we got so excited when Google announced official support for Kotlin. We\u2019ve been using it extensively since, finding ways to better support and drive our transport solution Passenger. Find out how, and why, below.<\/strong><\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">There are few worse sins in the world of technology than standing still and staring down at your feet. The industry innovates fast\u200a\u2014\u200athose responsible for a product must be aware of what\u2019s coming to prevent either falling behind the pack or plunging down otherwise avoidable pitfalls.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">That\u2019s why we keep pace at Base (heh). It\u2019s also why, ever since official <a href=\"https:\/\/kotlinlang.org\/\" rel=\"noreferrer noopener\" target=\"_blank\">Kotlin<\/a> support was announced at <a href=\"https:\/\/www.youtube.com\/watch?v=d8ALcQiuPWs\" rel=\"noreferrer noopener\" target=\"_blank\">Google IO in 2017<\/a>, we\u2019ve been looking at ways we can make use of this fantastic new language\u200a\u2014\u200aparticularly so in the codebases of our transport solution <a href=\"https:\/\/www.discoverpassenger.com\/\" rel=\"noreferrer noopener\" target=\"_blank\">Passenger<\/a>.<\/p>\n<\/div>\n\n<div class=\"block-core-image\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn-images-1.medium.com\/max\/1600\/1*EC9RwuEFjXvqcPddpXRlbQ.jpeg\" alt=\"\"\/><figcaption>Our Android Engineer Callum hard at work on&nbsp;Kotlin<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\"><strong>What is Kotlin?<\/strong><\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">Kotlin is a statically typed programming language that runs on the Java virtual machine and also can be compiled to JavaScript source code or use the LLVM compiler infrastructure. It was created by Jetbrains (also the guys who created IntelliJ\u200a\u2014\u200athe IDE that Android Studio is based on) back in 2011.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">Prior to 2017, Kotlin had no official support for Android development. I\u2019ve always tried to steer away from things that are not officially supported, as you just never know where that particular technology or library will go. It could be that the language\/library is dead after a few months\u200a\u2014\u200amonths during which you\u2019ve invested hundreds of wasted hours into the code.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">Thankfully, Google saw the light and announced official support for Kotlin in 2017, even going so far as to create a foundation with Jetbrains to support the programming language. That meant we could dive right in\u2026<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\"><strong>What makes Kotlin so good?<\/strong><\/p>\n<\/div>\n\n<div class=\"block-core-image\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn-images-1.medium.com\/max\/1600\/1*wYpaRUbMX0STlqBo2h7iHg.png\" alt=\"\"\/><figcaption>Kotlin code size reduction<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">Since Android first became a thing, the primary development language used has been Java. Java is pretty good as the syntax is easy to understand and you can write your code once and deploy to many different environments. This versatility is one of the many reasons why Android has <a href=\"https:\/\/www.theverge.com\/2017\/5\/17\/15654454\/android-reaches-2-billion-monthly-active-users\" rel=\"noreferrer noopener\" target=\"_blank\">become so successful<\/a>.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">But, as always, there remain drawbacks. For one, Java is a privately owned and patented language by Oracle, who went through a very <a href=\"https:\/\/en.wikipedia.org\/wiki\/Oracle_America,_Inc._v._Google,_Inc.\" rel=\"noreferrer noopener\" target=\"_blank\">lengthy and expensive lawsuit with Google<\/a> over disputes on uses of Java APIs.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">Another, more technical drawback with Java is that is an old language, and being an older language means it sometimes lags behind others in adding new features like lambda support.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">With Kotlin, you get the best of both worlds. Not only can you write Kotlin alongside your Java code (making it easy to convert existing codebases) but it comes with all the bells and whistles of a modern language, which developers have grown accustomed to with languages such as JavaScript (ES6), Swift, Rust, Go and so on.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">Some other useful features of Kotlin include\u2026<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\"><strong><em>\u2026reducing code size<\/em><\/strong>.Compared to Java, the code written in Kotlin is at least 40% smaller, just due to the removal of boilerplate code provided in Kotlin, such as <a href=\"http:\/\/kotlinlang.org\/docs\/reference\/properties.html#getters-and-setters\" rel=\"noreferrer noopener\" target=\"_blank\">automatic getter\/setters for variables<\/a>\u2026<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">\u2026<strong><em>the <\/em><\/strong><a href=\"https:\/\/kotlinlang.org\/docs\/tutorials\/android-plugin.html\" rel=\"noreferrer noopener\" target=\"_blank\"><strong><em>Kotlin extensions plugin<\/em><\/strong><\/a>, which allows us to directly reference views in our layout without having to make direct calls via the framework\u2026<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">\u2026being able to <strong><em>pass <\/em><\/strong><a href=\"http:\/\/kotlinlang.org\/docs\/reference\/lambdas.html\" rel=\"noreferrer noopener\" target=\"_blank\"><strong><em>lambdas<\/em><\/strong><\/a><strong><em> as variables<\/em><\/strong>, which means we no longer have to create \u201clistener\u201d interfaces and anonymous object classes\u2026<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">\u2026and my favourite feature, <strong><em>the non-nullability and safety of the code<\/em><\/strong>. Typically in Java, variables can be null (which means they have no value). This is the number one cause of crashes in probably every app on Google Play. With Kotlin, however, everything is non-null by default, which means things <em>have<\/em>to be set, else it just won\u2019t compile (unless its marked as <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/properties.html#late-initialized-properties-and-variables\" rel=\"noreferrer noopener\" target=\"_blank\">lateinit<\/a>). This forces the developer to ensure that things that could be null are properly handled with solutions like the <a href=\"http:\/\/kotlinlang.org\/docs\/reference\/null-safety.html#elvis-operator\" rel=\"noreferrer noopener\" target=\"_blank\">Elvis Operator<\/a>. This also allows us to do cool things that reduce the number of \u201cif not null\u201d checks, which further reduces boilerplate and amount of code written. All that time adds up to enough time for at least a few more trips down to the pub a year!<\/p>\n<\/div>\n\n<div class=\"block-core-image\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn-images-1.medium.com\/max\/1600\/1*3NDq1Sp9Q4Q2xGmJdwZSZA.png\" alt=\"\"\/><figcaption>Lambdas as variables, no more anonymous listeners<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\"><strong>How are we utilising Kotlin in our codebase?<\/strong><\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">The codebase we use for Passenger is pretty big. The software is built on 13 different framework libraries, each packed with countless features. It\u2019s not realistic for any development company (unless they have unlimited time and resources) to immediately re-write their entire codebase into a new language, However, it is very possible to slowly convert existing code, alongside writing new code in the language\u200a\u2014\u200awhich is exactly what we\u2019re doing.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">Many iOS developers know the pain of converting their old Objective-C code into Swift; the interoperability was OK but not perfect. With Kotlin, there is very little (that I have experienced at least) pain with interoperability, which makes writing new features super-easy to do. So far, every recent feature in Passenger, such as the new Disruption module, the new Live Buses feature, and the new Favourites section, have all been written in Kotlin, while bug fixes for existing features have remained in Java.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">Eventually, the plan is to have re-written all the features and code into Kotlin, but naturally that will take time. As ever, it makes sense to start small and build up the refactors as and when it is appropriate without disrupting the user experience and final quality of the product we release.<\/p>\n<\/div>\n\n<div class=\"block-core-paragraph\">\n<p class=\"wp-block-paragraph\">But that\u2019s what we do at Base. We follow new technologies, we adopt them where it makes sense, and we work out to use them in a way that reaps great benefits with minimum disruption. That sense of exploration and experimentation is part and parcel of what we do\u200a\u2014\u200aand why we love it.<\/p>\n<\/div>\n\n<div class=\"block-core-image\">\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/cdn-images-1.medium.com\/max\/1600\/1*LpteuZhUJLd5giwRSUifVQ.png\" alt=\"\"\/><figcaption>Simplified conditions in&nbsp;Kotlin<\/figcaption><\/figure>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Originally posted on our &#8216;Base&#8217; Medium account. In September 2019, Base became Passenger. At Base, we prefer not to stand still. We\u2019re constantly experimenting and exploring, finding the right tools for the right job. That\u2019s why we got so excited when Google announced official support for Kotlin. We\u2019ve been using it extensively since, finding ways [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":12758,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[21],"tags":[],"class_list":["post-5003","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-making-passenger","making-passenger"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>In depth: From Java to Kotlin\u200a-\u200athe joys of new code - Masabi<\/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:\/\/www.masabi.com\/it\/news\/from-java-to-kotlin-the-joys-of-new-code\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"In depth: From Java to Kotlin\u200a-\u200athe joys of new code - Masabi\" \/>\n<meta property=\"og:description\" content=\"Originally posted on our &#8216;Base&#8217; Medium account. In September 2019, Base became Passenger. At Base, we prefer not to stand still. We\u2019re constantly experimenting and exploring, finding the right tools for the right job. That\u2019s why we got so excited when Google announced official support for Kotlin. We\u2019ve been using it extensively since, finding ways [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.masabi.com\/it\/news\/from-java-to-kotlin-the-joys-of-new-code\/\" \/>\n<meta property=\"og:site_name\" content=\"Masabi\" \/>\n<meta property=\"article:published_time\" content=\"2018-09-18T11:17:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/1_EC9RwuEFjXvqcPddpXRlbQ.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1080\" \/>\n\t<meta property=\"og:image:height\" content=\"810\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"TomQuay\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"TomQuay\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/from-java-to-kotlin-the-joys-of-new-code\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/from-java-to-kotlin-the-joys-of-new-code\\\/\"},\"author\":{\"name\":\"TomQuay\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/#\\\/schema\\\/person\\\/7f9321d16421f5dd31179aec75bd022d\"},\"headline\":\"In depth: From Java to Kotlin\u200a-\u200athe joys of new code\",\"datePublished\":\"2018-09-18T11:17:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/from-java-to-kotlin-the-joys-of-new-code\\\/\"},\"wordCount\":1023,\"image\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/from-java-to-kotlin-the-joys-of-new-code\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.masabi.com\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/1_EC9RwuEFjXvqcPddpXRlbQ.jpeg\",\"articleSection\":[\"Making Passenger\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/from-java-to-kotlin-the-joys-of-new-code\\\/\",\"url\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/from-java-to-kotlin-the-joys-of-new-code\\\/\",\"name\":\"In depth: From Java to Kotlin\u200a-\u200athe joys of new code - Masabi\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/from-java-to-kotlin-the-joys-of-new-code\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/from-java-to-kotlin-the-joys-of-new-code\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.masabi.com\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/1_EC9RwuEFjXvqcPddpXRlbQ.jpeg\",\"datePublished\":\"2018-09-18T11:17:56+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/#\\\/schema\\\/person\\\/7f9321d16421f5dd31179aec75bd022d\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/from-java-to-kotlin-the-joys-of-new-code\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/from-java-to-kotlin-the-joys-of-new-code\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/from-java-to-kotlin-the-joys-of-new-code\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.masabi.com\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/1_EC9RwuEFjXvqcPddpXRlbQ.jpeg\",\"contentUrl\":\"https:\\\/\\\/www.masabi.com\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/1_EC9RwuEFjXvqcPddpXRlbQ.jpeg\",\"width\":1080,\"height\":810},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/news\\\/from-java-to-kotlin-the-joys-of-new-code\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"In depth: From Java to Kotlin\u200a-\u200athe joys of new code\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/#website\",\"url\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/\",\"name\":\"Masabi\",\"description\":\"Making shared transport the first choice\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.masabi.com\\\/it\\\/#\\\/schema\\\/person\\\/7f9321d16421f5dd31179aec75bd022d\",\"name\":\"TomQuay\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/670e69485b65f2c5a6ee3fb9d0e3ed3163fb4107b7ab9ade42394576b7d42571?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/670e69485b65f2c5a6ee3fb9d0e3ed3163fb4107b7ab9ade42394576b7d42571?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/670e69485b65f2c5a6ee3fb9d0e3ed3163fb4107b7ab9ade42394576b7d42571?s=96&d=mm&r=g\",\"caption\":\"TomQuay\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"In depth: From Java to Kotlin\u200a-\u200athe joys of new code - Masabi","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.masabi.com\/it\/news\/from-java-to-kotlin-the-joys-of-new-code\/","og_locale":"it_IT","og_type":"article","og_title":"In depth: From Java to Kotlin\u200a-\u200athe joys of new code - Masabi","og_description":"Originally posted on our &#8216;Base&#8217; Medium account. In September 2019, Base became Passenger. At Base, we prefer not to stand still. We\u2019re constantly experimenting and exploring, finding the right tools for the right job. That\u2019s why we got so excited when Google announced official support for Kotlin. We\u2019ve been using it extensively since, finding ways [&hellip;]","og_url":"https:\/\/www.masabi.com\/it\/news\/from-java-to-kotlin-the-joys-of-new-code\/","og_site_name":"Masabi","article_published_time":"2018-09-18T11:17:56+00:00","og_image":[{"width":1080,"height":810,"url":"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/1_EC9RwuEFjXvqcPddpXRlbQ.jpeg","type":"image\/jpeg"}],"author":"TomQuay","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"TomQuay","Tempo di lettura stimato":"5 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.masabi.com\/it\/news\/from-java-to-kotlin-the-joys-of-new-code\/#article","isPartOf":{"@id":"https:\/\/www.masabi.com\/it\/news\/from-java-to-kotlin-the-joys-of-new-code\/"},"author":{"name":"TomQuay","@id":"https:\/\/www.masabi.com\/it\/#\/schema\/person\/7f9321d16421f5dd31179aec75bd022d"},"headline":"In depth: From Java to Kotlin\u200a-\u200athe joys of new code","datePublished":"2018-09-18T11:17:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.masabi.com\/it\/news\/from-java-to-kotlin-the-joys-of-new-code\/"},"wordCount":1023,"image":{"@id":"https:\/\/www.masabi.com\/it\/news\/from-java-to-kotlin-the-joys-of-new-code\/#primaryimage"},"thumbnailUrl":"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/1_EC9RwuEFjXvqcPddpXRlbQ.jpeg","articleSection":["Making Passenger"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/www.masabi.com\/it\/news\/from-java-to-kotlin-the-joys-of-new-code\/","url":"https:\/\/www.masabi.com\/it\/news\/from-java-to-kotlin-the-joys-of-new-code\/","name":"In depth: From Java to Kotlin\u200a-\u200athe joys of new code - Masabi","isPartOf":{"@id":"https:\/\/www.masabi.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.masabi.com\/it\/news\/from-java-to-kotlin-the-joys-of-new-code\/#primaryimage"},"image":{"@id":"https:\/\/www.masabi.com\/it\/news\/from-java-to-kotlin-the-joys-of-new-code\/#primaryimage"},"thumbnailUrl":"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/1_EC9RwuEFjXvqcPddpXRlbQ.jpeg","datePublished":"2018-09-18T11:17:56+00:00","author":{"@id":"https:\/\/www.masabi.com\/it\/#\/schema\/person\/7f9321d16421f5dd31179aec75bd022d"},"breadcrumb":{"@id":"https:\/\/www.masabi.com\/it\/news\/from-java-to-kotlin-the-joys-of-new-code\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.masabi.com\/it\/news\/from-java-to-kotlin-the-joys-of-new-code\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.masabi.com\/it\/news\/from-java-to-kotlin-the-joys-of-new-code\/#primaryimage","url":"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/1_EC9RwuEFjXvqcPddpXRlbQ.jpeg","contentUrl":"https:\/\/www.masabi.com\/wp-content\/uploads\/2019\/09\/1_EC9RwuEFjXvqcPddpXRlbQ.jpeg","width":1080,"height":810},{"@type":"BreadcrumbList","@id":"https:\/\/www.masabi.com\/it\/news\/from-java-to-kotlin-the-joys-of-new-code\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.masabi.com\/it\/"},{"@type":"ListItem","position":2,"name":"In depth: From Java to Kotlin\u200a-\u200athe joys of new code"}]},{"@type":"WebSite","@id":"https:\/\/www.masabi.com\/it\/#website","url":"https:\/\/www.masabi.com\/it\/","name":"Masabi","description":"Making shared transport the first choice","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.masabi.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/www.masabi.com\/it\/#\/schema\/person\/7f9321d16421f5dd31179aec75bd022d","name":"TomQuay","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/670e69485b65f2c5a6ee3fb9d0e3ed3163fb4107b7ab9ade42394576b7d42571?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/670e69485b65f2c5a6ee3fb9d0e3ed3163fb4107b7ab9ade42394576b7d42571?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/670e69485b65f2c5a6ee3fb9d0e3ed3163fb4107b7ab9ade42394576b7d42571?s=96&d=mm&r=g","caption":"TomQuay"}}]}},"_links":{"self":[{"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/posts\/5003","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/comments?post=5003"}],"version-history":[{"count":0,"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/posts\/5003\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/media\/12758"}],"wp:attachment":[{"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/media?parent=5003"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/categories?post=5003"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.masabi.com\/it\/wp-json\/wp\/v2\/tags?post=5003"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}