Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Kotlin: Where We Stand & What's Next (K-Night)

Kotlin: Where We Stand & What's Next (K-Night)

Andrey Breslav

May 18, 2016
Tweet

Other Decks in Programming

Transcript

  1. 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
  2. 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
  3. You are not alone •  Lively community – Slack, Forums, StackOverflow

    – 100+ OSS contributors •  Responsive Team – Regular bugfix updates – Frequent EAP builds
  4. KEEP •  Kotlin Evolu\on & Enhancement Process – Proposals from JB

    and Community – Feedback – Discussions •  h_ps://github.com/Kotlin/KEEP
  5. 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
  6. 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
  7. 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
  8. 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)
  9. 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
  10. 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) { ... }
  11. 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() }
  12. async/await fun loadImage(url: URL) = async { val bytes =

    await(loadBytes(url)) bytesToImage(bytes) } Suspension point Asynchronous computa\on
  13. 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
  14. Corou\nes: Example fun loadImage(url: URL) = async { val bytes

    = await(loadBytes(url)) bytesToImage(bytes) } Library Func\ons, not keywords!
  15. 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