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

Java is dead, long live Scala, Kotlin, Ceylon, etc.

Java is dead, long live Scala, Kotlin, Ceylon, etc.

Slides from my /dev/winter 2015 session.

Russel Winder

January 24, 2015
Tweet

More Decks by Russel Winder

Other Decks in Technology

Transcript

  1. Copyright © 2014 Russel Winder 1 Java is Dead Long

    Live Scala, Kotlin, Ceylon, etc. Russel Winder email: [email protected] twitter: @russel_winder Web: http://www.russel.org.uk
  2. Copyright © 2014 Russel Winder 4 What are the symptoms?

    • Java is seriously verbose. • Java has poor type inference. • Java has only low-level support for concurrency and parallelism. • Java generates a dependency hell . “ ” • Java is a 1990s imperative language that isn't really object-oriented. • …
  3. Copyright © 2014 Russel Winder 5 Is there a cure?

    • Can Java: • Be less verbose. • Have better type inferencing. • Do concurrency and parallelism better. (Doug Lea, Brian Goetz and others have actually been doing this for a while.) • Have a reasonable module system, cf. Jigsaw vs. OSGi. • Be a real object-oriented language.
  4. Copyright © 2014 Russel Winder 8 Create a new language

    • Java is a statically typed, compiled language, so create a new statically typed compiled language: • Scala • Kotlin • Ceylon • Fantom • Gosu • ?
  5. Copyright © 2014 Russel Winder 10 Scala • Integrates functional

    and object-oriented. • Very declarative style of expression. • Strong support for data parallelism. Also Akka for actors and such-like. • Strong static type checking with inferencing and reified generic type parameters.
  6. Copyright © 2014 Russel Winder 11 Kotlin • Top-level functions.

    • Object-oriented, with functional elements • Strong static type checking with inferencing. • Has modules. • Allows extension methods. • Compiles to JavaScript or JVM to support end-to-end Web applications development.
  7. Copyright © 2014 Russel Winder 12 Ceylon • Top-level functions.

    • Object oriented with functional features. • Strong static typing with inference. • Explicit module system. • JavaScript and JVM backends so as to be end-to-end for Web applications development.
  8. Copyright © 2014 Russel Winder 13 Fantom • Top-level functions.

    • Object-oriented. • Integrated modules system via pods. • Targets JVM and CLR.
  9. Copyright © 2014 Russel Winder 15 ? The identity of

    this statically typed, object-oriented (with functional bits) language for the JVM will remain unnamed at this time to preserve the air of mystery and suspense.
  10. Copyright © 2014 Russel Winder 26 Approximating  • What

    is it's value represented as a floating point number? • We can only obtain an approximation. • A plethora of possible algorithms to choose from, a popular one is to employ the following integral equation. π 4 =∫ 0 1 1 1+x2 dx
  11. Copyright © 2014 Russel Winder 27 One possible algorithm •

    Use quadrature to estimate the value of the integral which is the area under the curve. – π= 4 n ∑ i=1 n 1 1+( i−0.5 n ) 2 With n = 3 not much to do, but potentially lots of error. Use n = 107 or n = 109? Embarrassingly parallel.
  12. Copyright © 2014 Russel Winder 28 Because addition is commutative

    and associative, expression can be decomposed into sums of partial sums.
  13. Copyright © 2014 Russel Winder 29 a + b +

    c + d + e + f = ( a + b ) + ( c + d ) + ( e + f )
  14. Copyright © 2014 Russel Winder 36 Groovy • Top-level functions.

    • Object-oriented with functional features. • Extension methods. • Compiles to JVM bytes codes or JavaScript, cf. GrooScript. • Runs on Android. • Scripts. • A dynamic language with a run time meta-object protocol.
  15. Copyright © 2014 Russel Winder 39 Groovy • @TypeChecked: •

    Traditional dynamic Groovy but with full static (compile-time) type checking. • @CompileStatic: • Full static typechecked, compilation to bytecode at compile time. • No dynamic meta- object protocol.
  16. Copyright © 2014 Russel Winder 46 Groovy (or Scala, Kotlin,

    Ceylon, Fantom, ) … is the future of static languages on the JVM.
  17. Copyright © 2014 Russel Winder 49 Java 8 is the

    biggest revolution in Java since 1994. Bigger than Java 5.
  18. Copyright © 2014 Russel Winder 51 What's Interesting in Java

    8? • G1 garbage collector. • Nashorn. • JavaFX. • Lambda expressions. • Default methods in interfaces (traits). • Enhanced collections. • Method references.
  19. Copyright © 2014 Russel Winder 55 Lambda expressions, default methods

    in interfaces, associated collections enhancements.
  20. Copyright © 2014 Russel Winder 59 Java is Dead Long

    Live Scala, Kotlin, Ceylon, etc. Russel Winder email: [email protected] twitter: @russel_winder Web: http://www.russel.org.uk
  21. Copyright © 2014 Russel Winder 60 Java is Dead Long

    Live Java Russel Winder email: [email protected] twitter: @russel_winder Web: http://www.russel.org.uk
  22. Copyright © 2014 Russel Winder 61 Java is Dead Long

    Live Groovy Russel Winder email: [email protected] twitter: @russel_winder Web: http://www.russel.org.uk