Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Kotlin: Where We Stand & What's Next (K-Night)
Search
Andrey Breslav
May 18, 2016
Programming
5
22k
Kotlin: Where We Stand & What's Next (K-Night)
Andrey Breslav
May 18, 2016
Tweet
Share
Other Decks in Programming
See All in Programming
CSC307 Lecture 08
javiergs
PRO
0
670
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
660
AtCoder Conference 2025
shindannin
0
1.1k
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
230
Data-Centric Kaggle
isax1015
2
780
ノイジーネイバー問題を解決する 公平なキューイング
occhi
0
110
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
4k
CSC307 Lecture 01
javiergs
PRO
0
690
SourceGeneratorのススメ
htkym
0
200
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
5
800
HTTPプロトコル正しく理解していますか? 〜かわいい猫と共に学ぼう。ฅ^•ω•^ฅ ニャ〜
hekuchan
2
690
Featured
See All Featured
New Earth Scene 8
popppiees
1
1.5k
Design in an AI World
tapps
0
150
Building Adaptive Systems
keathley
44
2.9k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1k
Speed Design
sergeychernyshev
33
1.5k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
70
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
240
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.3k
Thoughts on Productivity
jonyablonski
74
5k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
130
Transcript
Where We Stand & What’s Next Andrey Breslav
Learning materials • kotlinlang.org – Language Reference – API Reference
– Tutorials – Talk Videos • try.kotlinlang.org – Mini-IDE in your browser – Kotlin Koans • Kotlin EDU Plug-in • + books, and much more
Where We Stand • Kotlin 1.0 released in Feb, 2016
– 1.0.1 in March – 1.0.2 in May – 1.0.3 in the summer • 1.1 is feature-driven – EAP will start this summer
Others like it (and so will you J)
You are not alone • Lively community – Slack, Forums, StackOverflow
– 100+ OSS contributors • Responsive Team – Regular bugfix updates – Frequent EAP builds
KEEP • Kotlin Evolu\on & Enhancement Process – Proposals from JB
and Community – Feedback – Discussions • h_ps://github.com/Kotlin/KEEP
OUR PLANS
Lines of Development • 1.0.X — incremental updates – Bugfixes,
Performance – Tooling – Source Compa7bility*: Full • 1.1 — language release – Language features – Source Compa7bility*: Backward * modulo bugfixes
Tooling Plans: 1.0.X • Incremental compila\on in Gradle • Spring
Support in the IDE • Reducing the Standard Library Size • Android Lint Checks • Jack&Jill Support
New Targets • Java 8/9 – Generate default methods in
interfaces – Support new collec\on APIs (Streams etc) • JavaScript – Run\me modules (amd, umd, common.js, …) – Common toolchains (npm, browserify, gulp, ...) • Na\ve – iOS – Embedded – Server-side
Scrip\ng: example.kts #!/usr/bin/kotlin <define dependencies> import java.io.* for (file in
File(“.”).listFiles()) println(file.name)
Type Aliases typealias Int32 = Int typealias Predicate<T> = (T)
-> Boolean • Not a “newtype” – Int can be assigned to Int32 and vice versa – Value types will cover the newtype use case (later)
Bound Method References val p: Predicate<String> = “foo”::equals // behaves
as { x -> “foo”.equals(x) } val c: KClass<Foo> = x.foo()::class • Kotlin 1.0 only supports Type::foo/Type::class
Enhancements for Proper\es • Local delegated proper\es – fun foo()
{ val lazyBar by lazy { ... } while (...) { if (...) { lazyBar.doBaz() ... } • Inline proper\es – val foo: Foo inline get() = ... inline set(v) { ... }
Hierarchies for Data Classes data class User(val name: String, val
age: Int) – equals()/hashCode()/toString() – copy() • val newUser = someUser.copy(name = “Jane Doe”) – componentN() • val (name, age) = someUser • sealed class C() { data class Example(…) : C() }
Destructuring in Lambdas myMap.forEach { (k, v) -> println(“$k =>
$v”) } Map.Entry<K, V> destructured
None
async/await fun loadImage(url: URL) = async { val bytes =
await(loadBytes(url)) bytesToImage(bytes) } Suspension point Asynchronous computa\on
Corou\nes • Covers async/await/yield, and much more • Maximum flexibility
– Support for virtually all exis\ng asynchronous APIs – Language is not bound to a given Task framework
Corou\nes: Example fun loadImage(url: URL) = async { val bytes
= await(loadBytes(url)) bytesToImage(bytes) } Library Func\ons, not keywords!
Conclusion • Come take part in KEEP
None
And One More Thing…
Images used • h_p://i.huffpost.com/gen/1307774/thumbs/o-PAGATI-PER-VIAGGIARE-facebook.jpg • h_ps://vanuatudaily.files.wordpress.com/2012/10/no-school-today-in-vanuatu.jpg • h_p://laubach.extapps.alphaplus.ca/pluginfile.php/2535/course/summary/learning%20materials.JPG • h_p://images.clipartpanda.com/knight-shield-clipart-Chrisdesign_weapon_shield.png
• h_p://pngimg.com/upload/hammer_PNG3884.png • h_ps://upload.wikimedia.org/wikipedia/en/thumb/4/42/Expedia_logo.svg/1024px-Expedia_logo.svg.png • h_p://fontmeme.com/images/Basecamp-Logo.jpg • h_ps://web-assets.domo.com/blog/wp-content/uploads/2015/03/connector-square-logo.png • h_p://info.clearpathsg.com/hs-fs/hub/154661/file-34316289-png/images/pivotal-logo1-resized-600.png • h_ps://upload.wikimedia.org/wikipedia/commons/thumb/0/0c/Neulix_2014_logo.svg/1280px-Neulix_2014_logo.svg.png • h_ps://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Google_2015_logo.svg/1000px-Google_2015_logo.svg.png • h_ps://s3.amazonaws.com/\tlepages.leanpub.com/kotlin-for-android-developers/hero?1457531118 • h_ps://images.manning.com/255/340/resize/book/8/9b10436-7580-436b-85f2-0e6d17405ee6/Jemerov-Kotlin-MEAP-HI.png • h_p://www.garfsblog.uso99.com/wp-content/uploads/2014/04/people-joining-add.jpg • h_p://www.geotronix.co.id/wp-content/uploads/2016/01/Support2.png • h_p://www.sheffieldextensions.co.uk/wp-content/uploads/2014/09/blueprints-rolled.jpg • h_p://www.babybedding.com/images/collec\ons/solid-white-cradle-bedding_large.jpg