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
Front-end application development, Symfony-style(s)
dunglas
2
1.9k
Changed Rules: Architectures with Lightweight Stores
manfredsteyer
PRO
0
220
Elm Form Validation
bkuhlmann
0
500
What We Can Learn From OSS
inouehi
0
400
Rubyでたのしむクリエイティブコーディング/Enjoy Creative coding with Ruby
chobishiba
1
160
Java 22 Overview
kishida
1
160
プールにゆこう
irof
2
120
SpringBoot+MyBatisで例外が出たときどこを見るか
syukai
0
110
Site Reliability Engineering for GMO
pyama86
6
880
本格ローグライク制作にEbitengineを選んでみた
nagainaganawa
0
290
try! Swift Tokyo 2024 参加報告 / try! Swift Tokyo 2024 Report
hironytic
0
170
9年開発を牽引して見えてきた、共通化すべきものと個別でつくるもの ~プログラム言語~
shinout
1
640
Featured
See All Featured
Navigating Team Friction
lara
177
13k
What’s in a name? Adding method to the madness
productmarketing
PRO
15
2.6k
YesSQL, Process and Tooling at Scale
rocio
162
13k
How GitHub (no longer) Works
holman
304
140k
Thoughts on Productivity
jonyablonski
57
3.8k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
16k
What's new in Ruby 2.0
geeforr
336
31k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
Stop Working from a Prison Cell
hatefulcrawdad
265
19k
Build your cross-platform service in a week with App Engine
jlugia
224
17k
A designer walks into a library…
pauljervisheath
199
23k
Infographics Made Easy
chrislema
237
18k
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