Papers
Topics
Authors
Recent
Gemini 2.5 Flash
Gemini 2.5 Flash
129 tokens/sec
GPT-4o
28 tokens/sec
Gemini 2.5 Pro Pro
42 tokens/sec
o3 Pro
4 tokens/sec
GPT-4.1 Pro
38 tokens/sec
DeepSeek R1 via Azure Pro
28 tokens/sec
2000 character limit reached

Cross-Language Dependencies: An Empirical Study of Kotlin-Java (2405.04602v2)

Published 7 May 2024 in cs.SE

Abstract: Background: Since Google introduced Kotlin as an official programming language for developing Android apps in 2017, Kotlin has gained widespread adoption in Android development. The inter-operability of Java and Kotlin's design nature allows them to coexist and interact with each other smoothly within a project. Aims: However, there is limited research on how Java and Kotlin interact with each other in real-world projects and what challenges are faced during these interactions. The answers to these questions are key to understanding these kinds of cross-language software systems. Methods: In this paper, we implemented a tool named DependEx-tractor, which can extract 11 kinds of Kotlin-Java dependencies, and conducted an empirical study of 23 Kotlin-Java real-world projects with 3,227 Java and 8,630 Kotlin source files. Results: Our findings revealed that Java and Kotlin frequently interact with each other in these cross-language projects, with access and call dependency types being the most dominant. Compared to files interacting with other files in the same language, Java/Kotlin source files, which participate in the cross-language interactions, undergo more commits. Additionally, among all Kotlin-Java problematic interactions, we identified seven common mistakes, along with their fixing strategies. Conclusions: The findings of this study can help developers understand and address the challenges in Kotlin-Java projects.

Definition Search Book Streamline Icon: https://streamlinehq.com
References (27)
  1. [n. d.]. Depends. https://github.com/multilang-depends/depends/
  2. [n. d.]. DV8. https://archdia.com/
  3. [n. d.]. Kotlin-Java Interop Guide from Android. https://developer.android.com/kotlin/interop/
  4. [n. d.]. Structure101. https://structure101.com/
  5. [n. d.]. Understand. https://scitools.com/
  6. [n. d.]. YouTrack-kt-39635. https://youtrack.jetbrains.com/issue/KT-39635/UnsupportedOperationException-with-list-casted-to-MutableList#focus=Comments-27-4275157.0-0
  7. Effectiveness of Kotlin vs. Java in android app development tasks. Information and Software Technology 127 (2020), 106374.
  8. A comparative study: java vs kotlin programming in android application development. International Journal of Advanced Research in Computer Science 9, 3 (2018), 41–45.
  9. Coding in-depth semistructured interviews: Problems of unitization and intercoder reliability and agreement. Sociological Methods & Research 42, 3 (2013), 294–320.
  10. Investigating the impact of multiple dependency structures on software defects. In Proceedings of the 41st IEEE/ACM International Conference on Software Engineering (ICSE). IEEE, 584–595.
  11. Rosa Filgueira and Daniel Garijo. 2022. Inspect4py: A knowledge extraction framework for python code repositories. In Proceedings of the 19th International Conference on Mining Software Repositories (MSR). IEEE, 232–236.
  12. Are you still smelling it? A comparative study between Java and Kotlin language. In Proceedings of the 7th Brazilian Symposium on Software Components, Architectures, and Reuse (SBCARS). IEEE, 23–32.
  13. ENRE: a tool framework for extensible eNtity relation extraction. In Proceedings of the 41st IEEE/ACM International Conference on Software Engineering: Companion (ICSE-Companion). IEEE, 67–70.
  14. PyAnalyzer: An Effective and Practical Approach for Dependency Extraction from Python Code. In Proceedings of the 46th IEEE/ACM International Conference on Software Engineering (ICSE). ACM, 1–12.
  15. Pragmatic evidence of cross-language link detection: A systematic literature review. Journal of Systems and Software (2023), 111825.
  16. PolyCruise: A cross-language dynamic information flow analysis. In Proceedings of the 31st USENIX Security Symposium (USENIX Security). USENIX, 2513–2530.
  17. Understanding bugs in multi-language deep learning frameworks. In Proceedings of the 31st IEEE/ACM International Conference on Program Comprehension (ICPC). IEEE, 328–338.
  18. Understanding Resolution of Multi-Language Bugs: An Empirical Study on Apache Projects. In Proceedings of the 17th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM). IEEE, 1–11.
  19. Matias Martinez and Bruno Gois Mateus. 2021. Why did developers migrate android applications from java to kotlin? IEEE Transactions on Software Engineering 48, 11 (2021), 4521–4534.
  20. Bruno Gois Mateus and Matias Martinez. 2020. On the adoption, usage and evolution of Kotlin features in Android development. In Proceedings of the 14th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement (ESEM). ACM, 1–12.
  21. On multi-language software development, cross-language links and accompanying tools: a survey of professional software developers. Journal of Software Engineering Research and Development 5 (2017), 1–33.
  22. Architecture Anti-patterns: Automatically Detectable Violations of Design Principles. IEEE Transactions on Software Engineering 47, 5 (2019), 1008–1028.
  23. Automatic extraction of code dependency in virtual reality software. In Proceedings of the 29th IEEE/ACM International Conference on Program Comprehension (ICPC). IEEE, 381–385.
  24. Performance Study of Kotlin and Java Programs with Bytecode Analysis. Journal of Information Processing 32 (2024), 380–395.
  25. A language-independent approach to the extraction of dependencies between source code entities. Information and Software Technology 56, 10 (2014), 1268–1288.
  26. Federico Tomassetti and Marco Torchiano. 2014. An empirical assessment of polyglot-ism in GitHub. In Proceedings of the 18th International Conference on Evaluation and Assessment in Software Engineering (EASE). ACM, 1–4.
  27. Detecting the Locations and Predicting the Costs of Compound Architectural Debts. IEEE Transactions on Software Engineering 48, 9 (2022), 3686–3715.

Summary

We haven't generated a summary for this paper yet.