Download PDFOpen PDF in browser

Vetting Anti-patterns in Java to Kotlin Translation

12 pagesPublished: March 13, 2019

Abstract

With Kotlin becoming a viable language replacement for Java, there is a need for translators and data flow analysis libraries to create maintainable and readable source code. Instagram, Uber, and Gradle are only a few of the large corporations that have either switched from Java to Kotlin completely or started to use it in internal tools in order to reduce code base size. Developers have claimed that Kotlin is fun to use in comparison to Java and much of the boilerplate code is reduced. With Java being the main language for the open source organization, PhenoApps, there is a need to support both Java and Kotlin to increase the maintainability of the code. Fortunately, JetBrains has an open-source IDE plugin for translating Java to Kotlin; however, the translation has some fundamental issues which shall be discussed further in this paper. Introducing, j2k, a CLI translation tool which includes various anti-pattern detection for syntactical formatting, performance, and other Android requirements. The new tool introduced within this paper, j2kCLI allows users to directly translate strings of Java code to Kotlin, or entire directories. This facilitates the maintainability of a large open source code base.

Keyphrases: abstract syntax tree, Android, Command Line Interface, Integrated Development Environment, null pointer exception

In: Gordon Lee and Ying Jin (editors). Proceedings of 34th International Conference on Computers and Their Applications, vol 58, pages 191--202

Links:
BibTeX entry
@inproceedings{CATA2019:Vetting_Anti_patterns_in_Java,
  author    = {Chaney Courtney and Mitchell Neilsen},
  title     = {Vetting Anti-patterns in Java to Kotlin Translation},
  booktitle = {Proceedings of 34th International Conference on Computers and Their Applications},
  editor    = {Gordon Lee and Ying Jin},
  series    = {EPiC Series in Computing},
  volume    = {58},
  pages     = {191--202},
  year      = {2019},
  publisher = {EasyChair},
  bibsource = {EasyChair, https://easychair.org},
  issn      = {2398-7340},
  url       = {https://easychair.org/publications/paper/Jdw6},
  doi       = {10.29007/cgwr}}
Download PDFOpen PDF in browser