{"id":13953,"date":"2018-09-17T14:51:09","date_gmt":"2018-09-17T12:51:09","guid":{"rendered":"https:\/\/www.inovex.de\/blog\/?p=13953"},"modified":"2026-03-17T07:59:30","modified_gmt":"2026-03-17T06:59:30","slug":"kotlin-get-rid-of-java-android","status":"publish","type":"post","link":"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/","title":{"rendered":"Kotlin: How to Get Rid of Java in Your Android Application in 5 Easy Steps"},"content":{"rendered":"<p>We all know Kotlin is great, right? There are <a href=\"https:\/\/antonioleiva.com\/reasons-kotlin-android\/\">more<\/a> <a href=\"https:\/\/developer.android.com\/kotlin\/\">than<\/a>\u00a0<a href=\"https:\/\/techbeacon.com\/why-you-should-use-kotlin-android-development\">enough<\/a>\u00a0<a href=\"https:\/\/medium.com\/@eijaz\/6-reasons-why-you-should-learn-android-development-with-kotlin-in-2018-7255febb9250\">posts<\/a>\u00a0about why Kotlin blows Java out of the water. So let&#8217;s skip this part. We also know, our next project will be written in <a href=\"https:\/\/medium.com\/snapp-mobile\/why-starting-a-new-android-project-with-java-is-a-bad-idea-359bffe0bbd6\" target=\"_blank\" rel=\"noopener\">Kotlin<\/a>\u2014 But what about our projects that are in active development? Can we migrate them on the fly?<!--more--><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-13955\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/09\/Screen-Shot-2018-09-12-at-18.06.27.png\" alt=\"\" width=\"530\" height=\"156\" \/><\/p>\n<p>As a project house we want to keep our customers happy\u2013and luckily our customers want us to be happy, too, so it&#8217;s very easy to convince product owners of Kotlin. We\u2019ve seen the difficulties iOS legacy projects written in Objetive-C can cause to our customers first hand, which reinforces our argument: This should not happen to our Android projects.<\/p>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_82_2 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\"><p class=\"ez-toc-title\" style=\"cursor:inherit\"><\/p>\n<\/div><nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/#Some-things-about-code-conversion\" >Some things about code conversion<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/#Disclaimer\" >Disclaimer<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/#Step-1-Test-Code\" >Step 1: Test Code<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/#Step-2-POJO-Classes\" >Step 2: POJO Classes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/#Step-3-Helper-Static-Classes\" >Step 3: Helper \/ Static Classes<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/#Step-4-Business-Logic\" >Step 4: Business Logic<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/#Step-5-The-good-the-better-the-ugly-UI-Code\" >Step 5: The good, the better &amp; the ugly (UI Code)<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/#Butterknife\" >Butterknife?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/#AndroidX\" >AndroidX?<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/#Join-us\" >Join us!<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Some-things-about-code-conversion\"><\/span>Some things about code conversion<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Within Android Studio you can easily convert existing Java code to Kotlin code.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-13956\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/09\/Screen-Shot-2018-09-12-at-18.54.34.png\" alt=\"\" width=\"385\" height=\"37\" \/><\/p>\n<p>While this is neat I made the experience that it&#8217;s better to create a new Kotlin class and paste the Java code to this class, so you have a backup and you&#8217;re also able to compare the converted code with the working Java code. You can easily delete the old code when you&#8217;re happy with the Kotlin code.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-13954\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/09\/kotlinconvert-1024x229.png\" alt=\"\" width=\"528\" height=\"118\" srcset=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/09\/kotlinconvert-1024x229.png 1024w, https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/09\/kotlinconvert-300x67.png 300w, https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/09\/kotlinconvert-768x172.png 768w, https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/09\/kotlinconvert-400x90.png 400w, https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/09\/kotlinconvert-360x81.png 360w, https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/09\/kotlinconvert.png 1062w\" sizes=\"auto, (max-width: 528px) 100vw, 528px\" \/><\/p>\n<p>Please take a look at the converted code for possible flaws, especially within your method parameters, the corresponding calls and further improvements. For example check your code for nullability issues to get rid of\u00a0 <code>!!<\/code> calls.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Disclaimer\"><\/span>Disclaimer<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Depending on the project size and setup the complete process of migrating to Kotlin can take multiple days and should\u2013of course\u2013be done on a seperate branch. UI tests and tests in general will save you some time and will make you feel safe while migrating your project, because you probably will receive a couple of runtime errors. (For example supplying <code>null<\/code> to a <code>String<\/code> field\/parameter will result in a crash)<\/p>\n<p>The migration itself can be an incremental process but at some point you have to aim for <em>100%<\/em>\u00a0. We&#8217;ll get to that in <em>Step 5<\/em>.<\/p>\n<p>Lets do this.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step-1-Test-Code\"><\/span>Step 1: Test Code<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>You can easily start converting code in your Test Projects. It won&#8217;t affect your productive build at all and you can take a first look at the code conversion in Android Studio and get used to the <em>quick tips<\/em> Android Studio will provide you.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step-2-POJO-Classes\"><\/span>Step 2: POJO Classes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>When we&#8217;re happy with our Kotlin test code, we can go ahead and convert existing POJO classes to Kotlin. POJO classes representing your Models shouldn&#8217;t contain much logic, so it&#8217;s very easy to convert them to Kotlin.<\/p>\n<p>We all know the boilerplate code which is needed for a simple POJO class written in Java. We have our fields, getter, setter, constructor(s). But this is not all, you might need to implement <code>toString()<\/code> and\/or <code>equals()<\/code>\u00a0and <code>hashCode()<\/code> in some cases which can result in even more lines of code. With your Kotlin POJO you&#8217;ll aim for something like that:<\/p>\n<pre class=\"lang:default decode:true\">data class Person(val name: String, val age: Int, val email: String, val size: int)<\/pre>\n<p>If you have functions like <code>isOldEnough()<\/code>\u00a0in your POJO, you&#8217;ll be happy to write some <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/extensions.html\">extension methods<\/a>.<\/p>\n<p>Working with an API you should really know your API well. You should know which fields are nullable and which are not. For example, with Java you were able to set your String variable to <code>null<\/code>. With Kotlin, you have to declare your field accordingly, otherwise you&#8217;ll receive a crash during runtime. (<code>String<\/code> vs. <code>String?<\/code>)<\/p>\n<p>You should also take a look at your field names. We experienced an incorrect naming of boolean parameters while converting code.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step-3-Helper-Static-Classes\"><\/span>Step 3: Helper \/ Static Classes<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Classes which hold functionality to keep your code clean should be your next step. Nothing special here, your static functionality should be converted just fine. Even the required annotations like <code>@JvmStatic<\/code> should be there. Your code and build process should work fine by now. Maybe you want to get rid of these classes anyway and replace static functionality with\u00a0<a href=\"https:\/\/kotlinlang.org\/docs\/reference\/extensions.html\">extension methods?<\/a><\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step-4-Business-Logic\"><\/span>Step 4: Business Logic<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Your MVP\/MVVM Classes which contain most of the functionality for your app should be converted next. Keep your tests ready! Dagger should still work and inject your dependencies correctly.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Step-5-The-good-the-better-the-ugly-UI-Code\"><\/span>Step 5: The good, the better &amp; the ugly (UI Code)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>We haven&#8217;t reached our goal of 100% Kotlin yet. Some of our code is still in Java: We still have our Activities, Fragments, Custom Views and probably some <a href=\"https:\/\/github.com\/google\/dagger\">Dagger<\/a>\u00a0code. In most projects we faced multiple, unsolvable issues using Dagger together with Java and Kotlin ( e.g. Annotation Processor vs. <a href=\"https:\/\/kotlinlang.org\/docs\/reference\/kapt.html\">Kotlin Annotationprocessor<\/a>).\u00a0So at this point we have to convert all the missing code \u2013 ending up with a broken build.<\/p>\n<p>While every project is (kind of) individual you probably want to convert the code starting from <em>easy<\/em>\u00a0working your way up to <em>hard<\/em>, so we suggest the following order:<\/p>\n<p>1. Interfaces<\/p>\n<p>2.\u00a0Presenter, Use Cases &amp; Services<\/p>\n<p>3.\u00a0Dagger-related classes (Modules, Provider etc.)<\/p>\n<p>4. Custom Views<\/p>\n<p>5. Activities and Fragments<\/p>\n<p>You will probably run into multiple problems while doing this. Nothing specific\u2014but especially with Dagger things can be difficult.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Butterknife\"><\/span>Butterknife?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>While we&#8217;re on the subject of doing cool things, wouldn&#8217;t it be cool to decrease the APK size a bit? In the olden days\u00a0<a href=\"https:\/\/github.com\/JakeWharton\/butterknife\">ButterKnife<\/a> was very useful and back then every single Android developer should have used it. But with Kotlin we want to get rid of it. Why? Because we have <a href=\"https:\/\/kotlinlang.org\/docs\/tutorials\/android-plugin.html\"><em>kotlin-android-extensions<\/em><\/a> which is a plugin for the Kotlin compiler. It&#8217;s good for two things:<\/p>\n<ol>\n<li>It adds a hidden caching functionality and a field inside each Kotlin Activity\/Fragment which is very small and doesn&#8217;t really increase the size of the APK.<\/li>\n<li>It replaces each synthetic property call with a function call.<\/li>\n<\/ol>\n<p>This works by invoking the caching function whenever a synthetic property is invoked, where the receiver is a Kotlin Activity\/Fragment class that is in module sources.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"AndroidX\"><\/span>AndroidX?<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>With SDK Level 28 (?) the Android Support Library was <em>replaced<\/em> with <a href=\"https:\/\/developer.android.com\/topic\/libraries\/support-library\/androidx-overview\">AndroidX<\/a> and Android Studio can help you to migrate to the new libraries.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-13957\" src=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/09\/Screen-Shot-2018-09-12-at-22.39.35.png\" alt=\"\" width=\"247\" height=\"34\" \/><\/p>\n<p>We didn&#8217;t run into any problems with this\u2014just keep in mind: Your 3rd party libraries have to support AndroidX. When some of your dependencies are abandoned and won&#8217;t receive any updates &#8230; well, fork them or get rid of them.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Join-us\"><\/span>Join us!<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Whether you&#8217;re interested in Android development or mobile development in general, take a look at our current job offers and find what best suits your interests. Join us and implement cutting edge technology in production level projects with our broad selection of customers!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>We all know Kotlin is great, right? There are more than\u00a0enough\u00a0posts\u00a0about why Kotlin blows Java out of the water. So let&#8217;s skip this part. We also know, our next project will be written in Kotlin\u2014 But what about our projects that are in active development? Can we migrate them on the fly?<\/p>\n","protected":false},"author":56,"featured_media":13982,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"ep_exclude_from_search":false,"footnotes":""},"tags":[510],"service":[420,425],"coauthors":[{"id":56,"display_name":"Christopher Jakob","user_nicename":"cjakob"}],"class_list":["post-13953","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","tag-apps-2","service-apps","service-backend"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Kotlin: How to Get Rid of Java in Your Android Application in 5 Easy Steps<\/title>\n<meta name=\"description\" content=\"Migrating apps to a new programming language in mid-development can be a pain in the ass. These 5 steps will help you get through the process of moving your Android application from Java to Kotlin.\" \/>\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.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Kotlin: How to Get Rid of Java in Your Android Application in 5 Easy Steps\" \/>\n<meta property=\"og:description\" content=\"Migrating apps to a new programming language in mid-development can be a pain in the ass. These 5 steps will help you get through the process of moving your Android application from Java to Kotlin.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/\" \/>\n<meta property=\"og:site_name\" content=\"inovex GmbH\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/inovexde\" \/>\n<meta property=\"article:published_time\" content=\"2018-09-17T12:51:09+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-17T06:59:30+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/09\/kotlin-android-apps.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Christopher Jakob\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/09\/kotlin-android-apps-1024x576.png\" \/>\n<meta name=\"twitter:creator\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:site\" content=\"@inovexgmbh\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Christopher Jakob\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\u00a0Minuten\" \/>\n\t<meta name=\"twitter:label3\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data3\" content=\"Christopher Jakob\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kotlin-get-rid-of-java-android\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kotlin-get-rid-of-java-android\\\/\"},\"author\":{\"name\":\"Christopher Jakob\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/c266a0abd8422c5cabc881b84740beba\"},\"headline\":\"Kotlin: How to Get Rid of Java in Your Android Application in 5 Easy Steps\",\"datePublished\":\"2018-09-17T12:51:09+00:00\",\"dateModified\":\"2026-03-17T06:59:30+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kotlin-get-rid-of-java-android\\\/\"},\"wordCount\":1078,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kotlin-get-rid-of-java-android\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2018\\\/09\\\/kotlin-android-apps.png\",\"keywords\":[\"Apps\"],\"articleSection\":[\"Applications\",\"English Content\",\"General\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kotlin-get-rid-of-java-android\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kotlin-get-rid-of-java-android\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kotlin-get-rid-of-java-android\\\/\",\"name\":\"Kotlin: How to Get Rid of Java in Your Android Application in 5 Easy Steps\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kotlin-get-rid-of-java-android\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kotlin-get-rid-of-java-android\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2018\\\/09\\\/kotlin-android-apps.png\",\"datePublished\":\"2018-09-17T12:51:09+00:00\",\"dateModified\":\"2026-03-17T06:59:30+00:00\",\"description\":\"Migrating apps to a new programming language in mid-development can be a pain in the ass. These 5 steps will help you get through the process of moving your Android application from Java to Kotlin.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kotlin-get-rid-of-java-android\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kotlin-get-rid-of-java-android\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kotlin-get-rid-of-java-android\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2018\\\/09\\\/kotlin-android-apps.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2018\\\/09\\\/kotlin-android-apps.png\",\"width\":1280,\"height\":720,\"caption\":\"A phone with the Kotlin logo on screen tipps over the java cup\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/kotlin-get-rid-of-java-android\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Kotlin: How to Get Rid of Java in Your Android Application in 5 Easy Steps\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#website\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"name\":\"inovex GmbH\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#organization\",\"name\":\"inovex GmbH\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"contentUrl\":\"https:\\\/\\\/www.inovex.de\\\/wp-content\\\/uploads\\\/2021\\\/03\\\/inovex-logo-16-9-1.png\",\"width\":1921,\"height\":1081,\"caption\":\"inovex GmbH\"},\"image\":{\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/inovexde\",\"https:\\\/\\\/x.com\\\/inovexgmbh\",\"https:\\\/\\\/www.instagram.com\\\/inovexlife\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/inovex\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UC7r66GT14hROB_RQsQBAQUQ\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/#\\\/schema\\\/person\\\/c266a0abd8422c5cabc881b84740beba\",\"name\":\"Christopher Jakob\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3d0f657dd7efee2b54cd0e7793e61f2eac1b93735fc6614e1c172c5135075e1e?s=96&d=retro&r=g1410dc23bb681b59bd0017eb27d50541\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3d0f657dd7efee2b54cd0e7793e61f2eac1b93735fc6614e1c172c5135075e1e?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/3d0f657dd7efee2b54cd0e7793e61f2eac1b93735fc6614e1c172c5135075e1e?s=96&d=retro&r=g\",\"caption\":\"Christopher Jakob\"},\"url\":\"https:\\\/\\\/www.inovex.de\\\/de\\\/blog\\\/author\\\/cjakob\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Kotlin: How to Get Rid of Java in Your Android Application in 5 Easy Steps","description":"Migrating apps to a new programming language in mid-development can be a pain in the ass. These 5 steps will help you get through the process of moving your Android application from Java to Kotlin.","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.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/","og_locale":"de_DE","og_type":"article","og_title":"Kotlin: How to Get Rid of Java in Your Android Application in 5 Easy Steps","og_description":"Migrating apps to a new programming language in mid-development can be a pain in the ass. These 5 steps will help you get through the process of moving your Android application from Java to Kotlin.","og_url":"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/","og_site_name":"inovex GmbH","article_publisher":"https:\/\/www.facebook.com\/inovexde","article_published_time":"2018-09-17T12:51:09+00:00","article_modified_time":"2026-03-17T06:59:30+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/09\/kotlin-android-apps.png","type":"image\/png"}],"author":"Christopher Jakob","twitter_card":"summary_large_image","twitter_image":"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/09\/kotlin-android-apps-1024x576.png","twitter_creator":"@inovexgmbh","twitter_site":"@inovexgmbh","twitter_misc":{"Verfasst von":"Christopher Jakob","Gesch\u00e4tzte Lesezeit":"5\u00a0Minuten","Written by":"Christopher Jakob"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/#article","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/"},"author":{"name":"Christopher Jakob","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/c266a0abd8422c5cabc881b84740beba"},"headline":"Kotlin: How to Get Rid of Java in Your Android Application in 5 Easy Steps","datePublished":"2018-09-17T12:51:09+00:00","dateModified":"2026-03-17T06:59:30+00:00","mainEntityOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/"},"wordCount":1078,"commentCount":1,"publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/09\/kotlin-android-apps.png","keywords":["Apps"],"articleSection":["Applications","English Content","General"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/","url":"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/","name":"Kotlin: How to Get Rid of Java in Your Android Application in 5 Easy Steps","isPartOf":{"@id":"https:\/\/www.inovex.de\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/#primaryimage"},"image":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/#primaryimage"},"thumbnailUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/09\/kotlin-android-apps.png","datePublished":"2018-09-17T12:51:09+00:00","dateModified":"2026-03-17T06:59:30+00:00","description":"Migrating apps to a new programming language in mid-development can be a pain in the ass. These 5 steps will help you get through the process of moving your Android application from Java to Kotlin.","breadcrumb":{"@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/#primaryimage","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/09\/kotlin-android-apps.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2018\/09\/kotlin-android-apps.png","width":1280,"height":720,"caption":"A phone with the Kotlin logo on screen tipps over the java cup"},{"@type":"BreadcrumbList","@id":"https:\/\/www.inovex.de\/de\/blog\/kotlin-get-rid-of-java-android\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.inovex.de\/de\/"},{"@type":"ListItem","position":2,"name":"Kotlin: How to Get Rid of Java in Your Android Application in 5 Easy Steps"}]},{"@type":"WebSite","@id":"https:\/\/www.inovex.de\/de\/#website","url":"https:\/\/www.inovex.de\/de\/","name":"inovex GmbH","description":"","publisher":{"@id":"https:\/\/www.inovex.de\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.inovex.de\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/www.inovex.de\/de\/#organization","name":"inovex GmbH","url":"https:\/\/www.inovex.de\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/","url":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","contentUrl":"https:\/\/www.inovex.de\/wp-content\/uploads\/2021\/03\/inovex-logo-16-9-1.png","width":1921,"height":1081,"caption":"inovex GmbH"},"image":{"@id":"https:\/\/www.inovex.de\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/inovexde","https:\/\/x.com\/inovexgmbh","https:\/\/www.instagram.com\/inovexlife\/","https:\/\/www.linkedin.com\/company\/inovex","https:\/\/www.youtube.com\/channel\/UC7r66GT14hROB_RQsQBAQUQ"]},{"@type":"Person","@id":"https:\/\/www.inovex.de\/de\/#\/schema\/person\/c266a0abd8422c5cabc881b84740beba","name":"Christopher Jakob","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/3d0f657dd7efee2b54cd0e7793e61f2eac1b93735fc6614e1c172c5135075e1e?s=96&d=retro&r=g1410dc23bb681b59bd0017eb27d50541","url":"https:\/\/secure.gravatar.com\/avatar\/3d0f657dd7efee2b54cd0e7793e61f2eac1b93735fc6614e1c172c5135075e1e?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3d0f657dd7efee2b54cd0e7793e61f2eac1b93735fc6614e1c172c5135075e1e?s=96&d=retro&r=g","caption":"Christopher Jakob"},"url":"https:\/\/www.inovex.de\/de\/blog\/author\/cjakob\/"}]}},"_links":{"self":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/13953","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/users\/56"}],"replies":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/comments?post=13953"}],"version-history":[{"count":2,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/13953\/revisions"}],"predecessor-version":[{"id":66522,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/posts\/13953\/revisions\/66522"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media\/13982"}],"wp:attachment":[{"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/media?parent=13953"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/tags?post=13953"},{"taxonomy":"service","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/service?post=13953"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.inovex.de\/de\/wp-json\/wp\/v2\/coauthors?post=13953"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}