The purpose of Mastering Kotlin is to teach you how to leverage software designs and concepts which have made Java the most dominant Enterprise programming language. Finally, you will gain an ...understanding of implementing practical design patterns and best practices to help you master the Kotlin language.
A Legacy system can be defined as a system that significantly resists modification and evolution. According to the literature, there are two main strategies to migrate a legacy system: (a) to replace ...the legacy system by a new one, (b) to incrementally migrate parts from the legacy system to the new one. Incremental migration allows developers to better control the risks that may occur during the migration process. However, this strategy is more complex because it requires decomposition of the legacy system into different parts, e.g. a set of files, and to define the order of migration of them along the migration process. To our knowledge, there is no approach to support developers on those activities.
This paper presents an approach, named MigrationExp, to support incremental language migrations of applications from one source language to another target language. MigrationExp recommends the files that should be migrated first in a particular migration iteration. As a novelty, our approach relies on a ranking model learned, using a learning-to-rank algorithm, from migrations made by developers.
We validate our approach in the context of the migrations of Android apps, from Java to Kotlin, a new official language for Android. We train our model using migrations of Java code to Kotlin written by developers on open-source applications.
The results show that, on the task of proposing files to migrate, our approach outperforms a previous migration strategy proposed by Google, in terms of its ability to accurately predict empirically observed migration orders.
Since most Android applications are written in Java, we conclude that approaches to support developers such as MigrationExp may significantly impact the development of Android applications.
This paper will discuss cross-platform programming using the Kotlin language as an example. About what are the native ways of connecting dependencies to platforms of the Apple family and which of ...them are available in Kotlin Multiplatform. Looking at the Kotlin integration with the Cocoapods dependency manager and its drawbacks. Also I will offer my implementation for integrating Swift package dependencies in Kotlin.
Currently, the majority of apps running on mobile devices are Android apps developed in Java. However, developers can now write Android applications using a new programming language: Kotlin, which ...Google adopted in 2017 as an official programming language for developing Android apps. Since then, Android developers have been able to: a) start writing Android applications from scratch using Kotlin, b) evolve their existing Android applications written in Java by adding Kotlin code (possible thanks to the interoperability between the two languages), or c) migrate their Android apps from Java to Kotlin. This paper aims to study this last case. We conducted a qualitative study to find out why Android developers have migrated Java code to Kotlin and to bring together their experiences about the process, in order to identify the main difficulties they have faced. To execute the study, we first identified commits from open-source Android projects that have migrated Java code to Kotlin. Then, we emailed the developers that wrote those migrations. We thus obtained information from 98 developers who had migrated code from Java to Kotlin. This paper presents the main reasons identified by the study for performing the migration. We found that developers migrated Java code to Kotlin in order to access programming language features (e.g., extension functions, lambdas, smart casts) that are not available with Java for Android development, and to obtain safer code (i.e., avoid null-pointer exceptions). We also identified research directions that the research community could focus on in order to help developers to improve the experience of migrating their Java applications to Kotlin.
•Measured δ13C signatures for n-alkanes, hopanes, C29 sterane, pristane, and phytane.•Green algal C29 sterane δ13C closely matched δ13CTOC.•Large (∼10‰) variations in δ13CTOC between sites attributed ...to environmental changes.•Late Ediacaran epicontinental sea environments on Baltica had high regional heterogeneity.
Compound-specific carbon isotope ratios (CSIA) were measured for a suite of lipid biomarker compounds extracted from immature, late Ediacaran sedimentary rocks from drill cores sampled across Baltica. Using a newly developed picomolar‐scale CSIA (pico‐CSIA) method, we measured carbon isotope compositions of the abundant n-alkanes and hopanes, as well as C29 sterane, pristane, and phytane. Total organic carbon (TOC) of the Kotlin Regional Horizon in Baltica (Saint Petersburg area, Utkina Zavod drill core), from a low-salinity coastal environment, is consistently enriched in 13C by up to 10‰, compared to that for Redkino and Kotlin marine rocks from other locations in Baltica. This 13C enrichment is also recorded by the n-alkanes, hopanes, phytane, and C29 sterane. In all locations, the δ13C values of the C29 sterane are within 2‰ of the bacterial hopane δ13C values and within 0.7‰ of δ13CTOC, suggesting that the abundant hopanes within these sediments could be derived from RuBisCO Calvin-Benson-Bassham pathway-utilizing organisms, as well as from bacterial heterotrophs. Since δ13Clipid signature tracks δ13CTOC values for the Kotlin Regional Horizon samples from Utkina Zavod location, the significant 13C enrichments in this interval reflect either the δ13C composition of DIC used for autotrophy or a muted magnitude of carbon isotope fractionation during lipid biosynthesis, but are not due to enhanced preservation of organic compounds and geopolymers derived from 13C-enriched biochemicals. Pico-CSIA and biomarker data provide evidence for both regional environmental heterogeneity and secular changes in carbon cycling during deposition of sediments of the Kotlin and Redkino Regional Horizon intervals.
Context
During the last years, developers of mobile applications have the possibility to use new paradigms and tools for developing mobile applications. For instance, since 2017, Android developers ...have the official support to write Android applications using Kotlin language. Kotlin is programming language fully interoperable with Java that combines object-oriented and functional features.
Objective
The goal of this paper is twofold. First, it aims to study the degree of adoption of Kotlin language on the development of open-source Android applications and to measure the amount of Kotlin code inside those applications. Secondly, it aims to measure the quality of Android applications that are written using Kotlin and to compare it with the quality of Android applications written using Java.
Method
We first defined a method to detect Kotlin applications from a dataset of open-source Android applications. Then, we analyzed those applications to detect instances of code smells and computed an estimation of the quality of the applications. Finally, we studied how the introduction of Kotlin code impacts on the quality of an Android application.
Results
Our experiment found that 11.26% of applications from a dataset with 2,167 open-source applications have been written (partially or fully) using Kotlin language. We found that the introduction of Kotlin code increases the quality, in terms of the presence of 10 different code smells studied, 4 object-oriented and 6 Android, of the majority of the Android applications initially written in Java.
Günümüzde nüfus yoğunluğu her geçen gün hızla artmakta ve buna bağlı olarak şehirlerdeki araçların sayısı da artış göstermektedir. Bu nedenle park yeri bulmak sürücüler için oldukça zorlu bir hal ...almıştır. Sürücülerin park yeri bulmak için trafikte kalması hem trafiği daha da sıkıştırmakta hem de gereksiz yakıt masrafına sebep olmaktadır. Bu çalışmada kullanıcıların kolayca park yeri bulabilecekleri ve boş park yerleri içerisinden seçim yapabilecekleri bir uygulama geliştirilmiştir. Sokakta bulunan kameralardan, güvenlik için yerleştirilmiş kameralardan ya da uydu görüntülerinden bu çalışma için yararlanılabilir. Elde edilen görüntüler işlenerek araçların park edebileceği yerler tespit edilmekte ve kullanıcıya boş olanların bilgisi iletilmektedir. Ardından kullanıcıya boş park yerlerinden kendisine uygun olanı seçme ve o noktaya yol tarifi alma imkânı sağlanmaktadır. Görüntünün işlenmesi ile boş park yerlerinin tespiti için iki yöntemden yararlanılmıştır. Bu yöntemlerden ilki arka plan silme algoritmaları kullanılarak, ikincisi ise Haar cascade sınıflandırıcısı kullanılarak araçların tespit edilmesidir. Bu tespitlerin yapılmasının ardından park yerlerinin dolu veya boş olduğu bilgisi elde edilmektedir. Mobil uygulama, Kotlin yazılım dili ile Android Studio platformu kullanılarak geliştirilmiştir.
•A well preserved late Ediacaran microfossil assemblage is recovered.•In a taxonomic overview, over 30 taxa are described and clearly illustrated.•Material from this area of the palaeocontinent ...Baltica are shown for the first time.•Differences between this assemblage and assemblages from older Ediacaran deposits show large changes in the microorganism community.
Precambrian organic-walled microfossils are not only a source for studying evolution but also increasingly associated with stratigraphic correlation, based on key fossils and assemblage composition. For this reason, two drill cores from north-eastern Estonia have been studied for their content and stratigraphic distribution of organic-walled microfossils (OWM), analysing samples from the Precambrian Gdov, Kotlin, and Voronka formations. The recovered assemblages are generally well-preserved and diverse consisting of abundant sphaeromorphs, such as Leiosphaeridia spp. and Pterospermopsimorpha spp., filamentous cyanobacteria, e.g. Cephalonyx geminatus and Palaeolyngbya catenata, and different types of cellular/colonial aggregates. In contrast, acanthomorphic acritarchs are rare with only a few unidentified examples present. The presence of taxa such as Pomoria rhomboidalis and Primoflagella speciosa in combination with the absence of large acanthomorphs suggests a late Ediacaran age of the studied samples. All in all, 38 species within 22 different genera are described herein, as are 9 taxa of unknown taxonomic affiliation. Another 11 taxa are briefly mentioned and depicted in order to provide for a better overview of the diversity of the assemblage. The stratigraphic distribution of the recognized taxa and assemblages can provide a powerful tool for correlation on the East European Platform as well as between Baltica and other palaeogeographic regions during the Ediacaran.
Despite the substantial progress in compiler testing, research endeavors have mainly focused on detecting compiler crashes and subtle miscompilations caused by bugs in the implementation of compiler ...optimizations. Surprisingly, this growing body of work neglects other compiler components, most notably the front-end. In statically-typed programming languages with rich and expressive type systems and modern features, such as type inference or a mix of object-oriented with functional programming features, the process of static typing in compiler front-ends is complicated by a high-density of bugs. Such bugs can lead to the acceptance of incorrect programs (breaking code portability or the type system's soundness), the rejection of correct (e.g. well-typed) programs, and the reporting of misleading errors and warnings.
We conduct, what is to the best of our knowledge, the first empirical study for understanding and characterizing typing-related compiler bugs. To do so, we manually study 320 typing-related bugs (along with their fixes and test cases) that are randomly sampled from four mainstream JVM languages, namely Java, Scala, Kotlin, and Groovy. We evaluate each bug in terms of several aspects, including their symptom, root cause, bug fix's size, and the characteristics of the bug-revealing test cases. Some representative observations indicate that: (1) more than half of the typing-related bugs manifest as unexpected compile-time errors: the buggy compiler wrongly rejects semantically correct programs, (2) the majority of typing-related bugs lie in the implementations of the underlying type systems and in other core components related to operations on types, (3) parametric polymorphism is the most pervasive feature in the corresponding test cases, (4) one third of typing-related bugs are triggered by non-compilable programs.
We believe that our study opens up a new research direction by driving future researchers to build appropriate methods and techniques for a more holistic testing of compilers.