Ċ import Ġlink . kotlin . scripts . Article Ċ import Ġlink . kotlin . scripts . Link Type .* Ċ import Ġlink . kotlin . scripts . model . Language Codes .* Ċ import Ġjava . time . LocalDate Ċ Ċ // Ġlanguage = Markdown Ċ val Ġbody Ġ= Ġ""" Ċ We Ġhave Ġbeen Ġusing ĠKotlin Ġin Ġthe Ġ[ D rip Stat ]( https :// d rip stat . com ) Ġbackend Ġsince ĠKotlin 's Ġ 1 . 0 Ġrelease Ġusing Ġthe ĠKotlin ĠInt ellij Ġplugin . ĠHere Ġis Ġa Ġsummary Ġof Ġour Ġexperiences Ġas Ġof ĠKotlin Ġ 1 . 0 . 3 . Ċ Ċ ### ĠThe ĠGood Ċ Ċ At Ġthe Ġlanguage Ġlevel , ĠKotlin Ġseems Ġto Ġbe Ġexcellent . Ċ Ċ ** 1 Ġ- ĠSe am less ĠJava Ġinter op ** Ċ Ċ Kotlin Ġn ails Ġthe ĠJava Ġinter op Ġat Ġthe Ġlanguage Ġlevel . ĠIt Ġis Ġcompletely Ġse am less . ĠThis Ġwas Ġthe Ġreason Ġwhy Ġwe Ġwere Ġcomfort able Ġintro ducing ĠKotlin Ġin Ġour Ġcodebase Ġin Ġthe Ġfirst Ġplace . Ċ Ċ ** 2 Ġ- ĠLess Ġverbosity ** Ċ Ċ Kotlin Ġcode Ġis Ġmuch Ġless Ġverbose Ġthan ĠJava Ġcode . ĠThis Ġmakes Ġit Ġmore Ġp leasing Ġto Ġboth Ġread Ġand Ġwrite . Ċ Ċ ** 3 Ġ- ĠNull Ġchecks ** Ċ Ċ Kotlin Ġen forces Ġnull Ġchecks Ġat Ġthe Ġlanguage Ġlevel . ĠWhen Ġyou Ġinteract Ġwith ĠJava Ġcode , Ġit Ġeven Ġextends Ġthat Ġto Ġthe Ġruntime Ġlevel . ĠThis Ġhas Ġresulted Ġin Ġcatch ing Ġsome Ġbugs Ġpretty Ġearly Ġand Ġalso Ġmore Ġrobust Ġcode . Ċ Ċ ### ĠWhat Ġcan Ġbe Ġimproved Ċ Ċ ** 1 Ġ- ĠL ack Ġof Ġ` parallel Stream ()` ** Ċ Ċ Kotlin 's Ġcollection Ġapi Ġhave Ġno Ġequivalent Ġto ĠJava 's Ġ` parallel Stream ()`. ĠThis Ġis Ġde arly Ġmissed . Ċ Ċ ** 2 Ġ- ĠCannot Ġsubclass ĠData Ġclasses ** Ċ Ċ This Ġis Ġsomething Ġthat Ġwe Ġfeel Ġthe Ġneed Ġfor Ġmore Ġand Ġmore Ġas Ġour Ġcodebase Ġg rows . ĠIt Ġseems Ġto Ġbe Ġplanned Ġfor ĠKotlin Ġ 1 . 1 Ġbut Ġdoesnt Ġexist Ġas Ġof Ġtoday . Ċ Ċ ** 3 Ġ- ĠType Ġinference Ġon Ġmethod Ġreturn Ġvalues ** Ċ Ċ While Ġtype Ġinference Ġeverywhere Ġelse Ġresults Ġin Ġmore Ġconcise Ġcode , Ġon Ġmethod Ġreturn Ġvalues , Ġit Ġ[ results Ġin Ġan Ġactual Ġloss Ġof Ġinformation ]( http :// blog . d rip stat . com / type - inference - in - java - j ep - 2 8 6 - can - be - dis astro us /). ĠYou Ġcannot Ġtell Ġthe Ġtype Ġof Ġthe Ġvariable Ġunless Ġyou Ġlook Ġat Ġthe Ġcalled Ġmethod 's Ġsignature , Ġand Ġthe ĠIDE Ġplugin Ġcurrently Ġdoesn 't Ġshow Ġthe Ġtype . ĠWhile ĠKotlin Ġdoes Ġallow Ġspecifying Ġthe Ġvariable Ġtype , Ġit Ġresults Ġin Ġmuch Ġmore Ġverbosity Ġthan ĠJava . Ċ Ċ ### ĠWh ats ĠBroken Ċ Ċ We Ġhave Ġfound Ġthat Ġthe ĠInt ellij Ġplugin Ġfor ĠKotlin Ġis Ġextremely Ġbug gy Ġand Ġvery Ġfar Ġbehind ĠJava . Ċ Ċ ** 1 Ġ- ĠEditor Ġcrashes ** Ċ Ċ This Ġis Ġsuch Ġa Ġhuge Ġissue Ġsince Ġ 1 . 0 . 3 Ġthat Ġwe Ġcannot Ġwrite Ġany Ġmore ĠKotlin Ġcode . ĠThe Ġeditor Ġfrequently Ġstops Ġdoing Ġsyntax Ġhighlighting , Ġcode Ġcompletion Ġetc . ĠThe Ġonly Ġre med y Ġwhen Ġthis Ġhappens Ġis Ġto Ġrestart Ġthe Ġentire ĠIDE . Ċ Ċ [ KT - 1 3 1 9 9 ]( https :// yout rack . jetbrains . com / issue / KT - 1 3 1 9 9 ) Ċ Ċ ** 2 Ġ- ĠIn accur ate ĠCall ĠH ierarchy Ġview ** Ċ Ċ The ĠCall ĠH ierarchy Ġview Ġfrequently Ġdoesn 't Ġshow Ġall Ġcalls Ġto Ġa Ġmethod Ġif Ġthat Ġmethod Ġis Ġused Ġacross Ġboth ĠJava Ġand ĠKotlin . ĠThis Ġis Ġan Ġextremely Ġserious Ġbug . ĠEnt ire Ġtechnical Ġdecisions Ġcan Ġbe Ġbased Ġon Ġwhether Ġa Ġpiece Ġof Ġcode Ġis Ġused Ġin Ġa Ġcertain Ġlocation . ĠThe Ġfact Ġthat Ġthe ĠCall ĠH ierarchy Ġview Ġshows Ġincomplete Ġinformation Ġhas Ġa Ġhuge Ġimpact . Ċ Ċ [ KT - 1 2 3 9 8 ]( https :// yout rack . jetbrains . com / issue / KT - 1 2 3 9 8 ) Ċ Ċ ** 3 Ġ- ĠFl aky Ġgradle Ġintegration ** Ċ Ċ The ĠKotlin ĠGradle Ġintegration Ġhas Ġbeen Ġpretty Ġflaky Ġin Ġthe Ġpast . ĠIt Ġalmost Ġfeels Ġlike Ġevery Ġnew Ġrelease Ġof Ġeither ĠGradle Ġor ĠKotlin Ġbreaks Ġit . ĠWe Ġare Ġalmost Ġaf raid Ġof Ġupgrading Ġeither Ġdue Ġto Ġthis . Ċ Ċ [ KT - 1 3 1 7 9 ]( https :// yout rack . jetbrains . com / issue / KT - 1 3 1 7 9 ) Ġ[ KT - 1 2 7 7 1 ]( https :// yout rack . jetbrains . com / issue / KT - 1 2 7 7 1 ) Ċ Ċ ** 4 Ġ- ĠC ant Ġsee Ġinferred Ġvariable Ġtype ** Ċ Ċ For Ġa Ġlanguage Ġthat Ġuses Ġtype Ġinference Ġso Ġheav ily , Ġyou Ġwould Ġexpect Ġthe ĠIDE Ġto Ġhave Ġtop - not ch Ġsupport Ġfor Ġshowing Ġthe Ġtype Ġof Ġvariables . ĠHowever , Ġthis Ġis Ġbroken Ġin Ġthe ĠKotlin ĠInt ellij Ġplugin . Ċ Ċ It Ġis Ġalso Ġsur prising Ġthat ĠInt ellij Ġforces Ġyou Ġto Ġpress Ġa Ġkeyboard Ġshortcut Ġeach Ġtime Ġto Ġbring Ġthis Ġup , Ġinstead Ġof Ġshowing Ġthe Ġvariable Ġtype Ġconstant ly Ġin Ġa Ġfixed Ġlocation Ġlike Ġthe Ġstatus Ġbar . Ċ Ċ [ KT - 1 0 0 9 5 ]( https :// yout rack . jetbrains . com / issue / KT - 1 0 0 9 5 ) Ċ Ċ ** 5 Ġ- ĠRefactor ings ** Ċ Ċ While Ġit Ġdoes Ġhave Ġvery Ġbasic Ġmove Ġclass , Ġrename Ġclass , Ġrename Ġmethod Ġrefactor ings , Ġthe Ġvast Ġmajority Ġof Ġrefactor ings Ġfrom ĠJava Ġare Ġsimply Ġnot Ġpresent . ĠEven Ġthe Ġrename Ġrefactoring Ġis Ġextremely Ġlimited . Ċ Ċ [ KT - 1 3 0 8 2 ]( https :// yout rack . jetbrains . com / issue / KT - 1 3 0 8 2 ) Ġ[ KT - 2 6 1 5 ]( https :// yout rack . jetbrains . com / issue / KT - 2 6 1 5 ) Ċ Ċ ** 6 Ġ- ĠNo ĠPost fix Ġcompletion , ĠDuplicate ĠDetection ** Ċ Ċ Post fix Ġcompletion Ġand ĠDuplicate Ġdetection Ġcome Ġto Ġmind Ġas Ġsome Ġof Ġthe Ġmany Ġfeatures Ġwe Ġhave Ġcome Ġto Ġrely Ġon Ġand Ġfrequently Ġuse Ġin Ġthe ĠJava Ġeditor , Ġthat Ġare Ġsimply Ġnot Ġpresent . Ċ Ċ [ KT - 4 7 1 0 ]( https :// yout rack . jetbrains . com / issue / KT - 4 7 1 0 ) Ċ Ċ ### ĠCon clusion Ċ Ċ Kotlin Ġseemed Ġto Ġpromise Ġa Ġbetter ĠJava , Ġwithout Ġcomp romise s . ĠIt Ġdoes Ġachieve Ġthat Ġat Ġthe Ġlanguage Ġlevel . ĠHowever , Ġa Ġbig Ġpart Ġof Ġusing ĠJava Ġis ĠJet brains ' Ġown Ġexcellent ĠJava Ġtool ing . ĠHere Ġthe ĠKotlin Ġplugin Ġhas Ġa Ġlot Ġof Ġwork Ġto Ġdo Ġto Ġcatch Ġup Ġwith Ġwhat ĠJet brains Ġhas Ġbuilt Ġover Ġ 1 5 Ġyears Ġfor ĠJava . Ċ Ċ """ Ċ Ċ Article ( ĊĠ Ġtitle Ġ= Ġ" Kotlin Ġin ĠProduction Ġ- ĠWhat Ġworks , ĠWh ats Ġbroken ", ĊĠ Ġurl Ġ= Ġ" http :// blog . d rip stat . com / kotlin - in - production - the - good - the - bad - and - the - ug ly - 2 /", ĊĠ Ġcategories Ġ= ĠlistOf ( ĊĠĠĠ Ġ" Kotlin " ĊĠ Ġ), ĊĠ Ġtype Ġ= Ġarticle , ĊĠ Ġlang Ġ= ĠEN , ĊĠ Ġauthor Ġ= Ġ" D rip Stat ", ĊĠ Ġdate Ġ= ĠLocalDate . of ( 2 0 1 6 , Ġ 9 , Ġ 2 4 ), ĊĠ Ġbody Ġ= Ġbody Ċ ) Ċ