KotlinConf Keynote Recap
November 6, 2017
Today is a great day for the Kotlin community. KotlinConf, the inaugural Kotlin conference, opens today, and we’re really impressed that around 1200 attendees from all over the world have joined us in San Francisco. During the conference keynote, Andrey Breslav, the lead designer of Kotlin, has announced a few major developments around Kotlin, and now we’re sharing the news with everyone else.
Kotlin 1.2 RC
The compiler now rejects binaries compiled with earlier pre-release versions of Kotlin 1.2; you’ll need to recompile them with this release. Code compiled with Kotlin 1.0.x or 1.1.x is, of course, fully compatible with this release of the compiler.
Even though coroutines are still labeled as an experimental feature, we’d like to clarify the exact meaning of this status. Coroutines are fully ready to be used in production, we’re using them in our own development, and we’re not aware of any major issues with the implementation. The reason why we keep the experimental status is that it gives us the ability to iterate on the design. Note that, even if we do make changes to the API, the current API will remain supported, even though it will be marked as deprecated, and we will provide the necessary migration tools. According to our current plans, the experimental status of coroutines will be removed in Kotlin 1.3.
Now is the time when
we ask for your help. Even though we’ve done a lot
of testing of this release internally and with other teams at
JetBrains, the real world is far more varied than what we have
access to. Therefore, please — give Kotlin 1.2 RC a try on your own
projects, and let us know if you run into any issues. Your help is
essential in ensuring a smooth final release.
Kotlin/Native iOS Support
The next big news we’ve announced is support for iOS development with Kotlin/Native, released as part of Kotlin/Native 0.4. This support is still in its early days, but it’s there, and it’s a major step on our path of enabling Kotlin development on all platforms.
To show what’s possible, we wrote two apps and published them to the App Store:
Both of the sample apps are open-source, and you can use them as a template to build your own cross-platform mobile apps in pure Kotlin.
Kotlin/Native IDE Support
Of course, you need
an IDE to be productive with any language, and starting today,
Kotlin/Native has IDE support too.
To try the plugin, install CLion 2017.3 EAP and search for “Kotlin/Native” in the JetBrains plugins list.
In the coming days, we will publish a separate blog post with more details on the plugin and its features. And of course, the CLion plugin is only one step in our story for Kotlin IDE support; stay tuned for further announcements next year!
Server-side development is also a key part of our multiplatform story. And now we’re announcing our own take on this part: the 0.9 release of Ktor, an awesome asynchronous coroutine-based Web framework built from the ground up in Kotlin.
Ktor is already being used in a number of projects both inside JetBrains and in the community, and now we’re confident that it’s a solid foundation for building very high-performance Web applications. Check out the quick start guides at ktor.io, try it out and let us know what you think so we can make it even better for 1.0 release.
Creating Modern Web Apps with React and Kotlin
To get started, run
Multiplatform Projects Demo
To show how all of the pieces in our multiplatform story fit together, we’ve built an app using all the latest bits of our technology stack: the KotlinConf app. It consists of the following components:
The backend, browser app and Android app share code using the Kotlin multiplatform project technology. For asynchronous programming, all components use coroutines. For exchanging the data between the server and the client, we use the brand new kotlinx.serialization library.
You’ll find the source code of the app a treasure trove of techniques that you will also be able to use in your own work.
With all the buzz around Kotlin, there will be more and more people interested in learning the language. To make this easier, we’ve released a new version of the EduTools plugin, allowing to learn Kotlin by solving interactive exercises in your favorite IDE. The new version adds support for Android Studio (previously only IntelliJ IDEA was supported), and includes new UI for building your own courses.
As for the future evolution of the language, our main goal at this time is to enable better and broader code reuse between the platforms supported by Kotlin. We plan to extend the set of libraries available on all platforms with the same API to include I/O, networking, serialization, date handling and more.
In the compiler, our main focus for 1.3 will remain on internal changes, and not on externally visible language features. The internal changes will enable better performance, improved type inference, generation of more efficient code for all target platforms, as well as the much better responsiveness of the IDE plugins. We hope we’ll still be able to sweeten the release with some nice new language features, but we’re not making any promises at this time.