Watch Instil's Garth and Matt's interview with Sync NI's Niamh Campbell here.
Written by Instil's Head of Learning, Garth Gilmour
This was Instil's second year attending the official Kotlin conference run by JetBrains. We sponsored, exhibited and delivered a pre-conference workshop on Kotlin Native. As in previous years the conference was booked out, with 1700 developers attending. Here's what we thought...
The Big Picture
KotlinConf 2019 was a very different conference than the previous year, which reflects some deep and significant changes in the community. With 20/20 hindsight I believe KotlinConf 2018 marked Kotlin's awkward adolescence. There were a wide range of talks from a diverse set of presenters, but still some underlying uncertainty about Kotlin's ultimate purpose and importance.
Was it a supplement to Java or a replacement?
Could it take off on the server side?
Would maintainers of large frameworks adopt Kotlin as a first class citizen?
Would Kotlin specific frameworks like Ktor become the way of the future or just a flash in the pan?
Would coroutines catch on?
Could Kotlin JS become credible on the browser?
What about Kotlin Native? Might it actually become a thing?
All these questions were floating in the air in Amsterdam, but were answered before or during the Copenhagen event. Google had already formally endorsed Kotlin as the way forward for Android, and were demonstrating Kotlin specific libraries like JetPack Compose at their (very impressive) booth. Pivotal had very strongly lined up behind Kotlin, with a range of DSLs for configuring every aspect of Spring Boot - Sebastian Deleuze gave an in-depth talk on this.
RELATED: Programming in English
Kotlin Native and Multiplatform were very much in evidence in workshops and hands on labs (including our own), but more importantly through projects that were showcased in talks or being worked on by the delegates themselves. Conversely there didn't seem to be any insecurity regarding a need to fit in with the existing JVM platform, but instead a lot of appetite for pushing Kotlin into new domains. Although not solely Kotlin related the announcement of Space was another sign of this confidence. And yes, everyone is now using coroutines.
I don't think most attendees were expecting this. A lot of us (myself included) were anticipating some crowd-pleasing new language features and bold promises about future aspirations. What we got instead in the Keynote was a vision of Kotlin as a grown up language, which has completed an incubation period on the JVM and was now ready to take on and unify other platforms and devices. The overarching themes were consolidation, expansion and improving developer happiness. I was pleasantly surprised to see Andrey Breslav go full Cobra Commander at the end, declaring that the ultimate goal was “one tool, to solve your problems, on every platform”.
The Gory Details (Kotlin Language)
A new version of the language (1.4) is in the offing. There will be a single new language feature (functional interfaces) to make FP code more explicit and provide better interop with Java 8 (and above). The big news is within the underlying tooling. There will be a new compiler, which has a modular architecture and integrates the JVM, Native and JS backends. The different backends now share code, a common KLIB output format and a Compiler API. That API is not yet released, although that hasn't stopped collaborators like Facebook starting to use it!
There was an awful lot of love for the non-JVM versions of Kotlin. The set of core libraries available across all platforms is being extended, for example to include IO and an Http Client. The JS compiler has been improved to emit much smaller output and easily import TypeScript libraries. Plus the continuing evolution of WebAssembly is being tracked, presumably in anticipation of the glorious day when we can ditch JavaScript for good!
A popular announcement was the ability to run and debug Kotlin iOS applications in Android Studio. This does not fully eliminate the need for XCode but is a significant step towards it. As mentioned above multi-platform modules were the official 'shiny thing' of the conference, with lots of developers beguiled by the prospect of simplifying the marshalling of value types across architectural layers. For companies like Instil the ability to do away with Swift teams and work under a single language and IDE has a lot of commercial value.
If you want more details about these updates check out this article by Svetlana Isakova.
The Gory Details (Everything Else)
As mentioned above, there was a lot of coverage of using Spring Boot with Kotlin and building cross platform mobile applications. Android JetPack was covered in detail, both via presentations and at the Google booth. New trends in the industry, like GraalVM and Machine Learning also got covered. As an educator and fan of the framework it was great to hear Liz Keogh talking about using the TornadoFX DSL to build UIs, demonstrate BDD and teach programming concepts.
But the big announcement of the conference was the new Space product, which aims to integrate all the tools that software teams use to share information. This includes project planning, Git hosting, code reviews, merge requests, continuous integration, chats, blogs, project planning and scheduling meetings. Naturally the product is written in Kotlin (showcasing the multiplatform features) and can be extended/automated via Kotlin DSLs and plugins.
JetBrains' grand goal with Space is not simply to create new versions of existing tools. Instead they aim to add value by unifying all the workflows developers currently participate in via unrelated applications (e.g. reviewing code on GitHub and blogging on Medium). Time will tell if the benefits from unifying these workflows are enough to tempt teams away from existing products and services.
(c)KotlinConf'19
The Event Itself
It cannot be denied that Bella Center is a stunning venue for conferences. Huge, purpose built and conveniently located beside Copenhagen airport it has everything an organiser could ask for. The food in the adjoining hotel was exceptional - I especially liked the Danish custom of including blue cheese with breakfast! The victuals during the conference were almost as good, topped up with regular infusions of mixed nuts and fruit.
There was a multi-platform Kotlin app to enable delegates to find and rate the talks, which were all live streamed and will be published to YouTube. The Speaker's Dinner was in Teaterkælderen, where staff serenaded the patrons between courses and kept the 'hospitality' flowing freely. All in all, a first class event.
Conclusions
This was an excellent conference, which also served as a 'coming of age party' for Kotlin and opened a new chapter in JetBrains' history. If the expectations raised this year are met then KotlinConf 2020 will see copious case studies of full-stack Kotlin applications, with Android, iOS and Browser based clients all written in Kotlin and no duplication of shared types. A standardised, unified compiler API could also open the door to a new generation of developer tools, originating from JetBrains, other vendors and the open-source community. I definitely aim to have a go myself!
To learn more about Instil's '12 days of Kotlin' Christmas campaign, visit kotlindays.com where Instil are sharing 12 pieces of Kotlin content from 1-12 December 2019. In addition, they are offering you and your team a chance to win a Kotlin course worth £3000! (t&cs) apply.