digitallanguagecode100733785orig

What's new in Kotlin 1.2? Code reuse, for starters

Version 1.2 of the statically typed Kotlin language, will offer an experimental feature enabling reuse of code across platforms, as well as compatibility with the Java 9 module system. The beta of Kotlin 1.2 is now available for download.

Kotlin’s experimental multiplatform projects capability lets developers reuse code between supported target platforms: JVM and JavaScript initially, and later native. Code to be shared between platforms is placed in a common module; platform-dependent parts are put in platform-specific modules. During compilation, code is produced for both the common and platform-specific parts.

Developers can express dependencies of common code on platform-specific parts via expected and actual declarations. This declaration specifies an API, while an actual declaration is either platform-specific to the API or a type alias that refers to an existing implementation of the API in an external library. The standard library, meanwhile, features the kotlin.math package for performing mathematical operations in cross-platform code.

The kotlin.math package also now offers better precision for math polyfills for JavaScript.

Kotlin 1.2’s standard library is compatible with newly introduced Java 9 module system, which forbids split packages (multiple .jar files declaring classes in the same package). In Kotlin 1.2, the kotlin-stdlib-jdk7 and kotlin-stdlib-jdk8 artifacts replace the old kotlin-stdlib-jre7 and kotlin-stdlib-jre8.

Also to support Java 9, Kotlin 1.2 also removes the deprecated declarations in the kotlin.reflect package from the kotlin-reflect library. Developers need to switch to using the declarations in the kotlin.reflect.full package, which debuted in Kotlin 1.1.

Type inference improvements in Kotlin 1.2 include enabling the compiler to use information from type casts in type inference. If a developer calls a generic method that returns a type parameter, such as T, and casts the return value to a specific type, such as Foo, the compiler now understands that T for this call needs to be bound to the type Foo. This is especially important for Android developers, for the Kotlin compiler to correctly analyze findViewById calls in Android API Level 26. Also, the compiler now has an option to treat all warnings as errors.

Kotlin 1.2 also has these enhancements:

  • It now supports array literals in annotations, simplifying coding.
  • It uses a more consistent syntax.
  • The new reflection API lets developers check whether a lateinit variable has been initialized.
  • The lateinit modifier now can be used on top-level properties and local variables.

Kotlin had its origins as a language for the JVM but has since been expanded to compile to JavaScript as well. The language received a boost this spring when Google endorsed it as a mechanism for building Android mobile applications, alongside Java itself. 

IDG Insider

PREVIOUS ARTICLE

« Forza Motorsport 7 PC impressions: A solid lightweight racing sim sullied by loot boxes

NEXT ARTICLE

What Groove users need to do now that Microsoft is killing Groove Music Pass »
author_image
IDG News Service

The IDG News Service is the world's leading daily source of global IT news, commentary and editorial resources. The News Service distributes content to IDG's more than 300 IT publications in more than 60 countries.

  • Mail

Recommended for You

Trump hits partial pause on Huawei ban, but 5G concerns persist

Phil Muncaster reports on China and beyond

FinancialForce profits from PSA investment

Martin Veitch's inside track on today’s tech trends

Future-proofing the Middle East

Keri Allan looks at the latest trends and technologies

Poll

Do you think your smartphone is making you a workaholic?