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
21k
Kotlin: Where We Stand & What's Next (K-Night)
Andrey Breslav
May 18, 2016
Tweet
Share
Other Decks in Programming
See All in Programming
メルカリ ハロ アプリの技術スタック
atsumo
2
790
Iteratorでページネーションを実現する
sonatard
3
710
モジュラモノリス、その前に / Modular monolith, before that
euglena1215
6
690
XP2024 っていう国際会議に行ってきたよの記
bonotake
4
230
Unlocking Python's Core Magic
leew
0
130
tsconfig.jsonの最近の新機能 ファイルパス編
uhyo
6
1.7k
Pythonによるイベントソーシングへの挑戦と現状に対する考察 / Challenging Event Sourcing with Python and Reflections on the Current State
nrslib
3
1.2k
pytest プラグインを開発して DRY に自動テストを書こう
inuatsu
2
260
Real-time message handling and notifications with API Platform and Symfony
alli83
1
110
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
9
1.2k
Kubernetes上でOracle_Databaseの運用を楽にするOraOperatorの紹介
nnaka2992
0
150
実務未経験からいち早く戦力化するための新人エンジニア育成術 ~ 具体的な方法と育成する側の心得 ~
juri_matsuda
0
110
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
243
11k
Fashionably flexible responsive web design (full day workshop)
malarkey
404
65k
Being A Developer After 40
akosma
84
590k
Learning to Love Humans: Emotional Interface Design
aarron
272
40k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
131
32k
Designing for humans not robots
tammielis
249
25k
The Language of Interfaces
destraynor
154
24k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
280
13k
From Idea to $5000 a Month in 5 Months
shpigford
381
46k
ParisWeb 2013: Learning to Love: Crash Course in Emotional UX Design
dotmariusz
110
6.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Unsuck your backbone
ammeep
668
57k
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