0
Copyright © 2014 Russel Winder 1
Java is Dead
Long Live Scala, Kotlin, Ceylon,
etc.
Russel Winder
email: russel@winder.org...
Copyright © 2014 Russel Winder 2
Java is Dead
Copyright © 2014 Russel Winder 3
Java is Dying
Copyright © 2014 Russel Winder 4
What are the symptoms?
● Java is seriously verbose.
● Java has poor type inference.
● Jav...
Copyright © 2014 Russel Winder 5
Is there a cure?
● Can Java:
● Be less verbose.
● Have better type inferencing.
● Do conc...
Copyright © 2014 Russel Winder 6
Prognosis: not great
Copyright © 2014 Russel Winder 7
Alternatives?
Copyright © 2014 Russel Winder 8
Create a new language
● Java is a statically
typed, compiled
language, so create a
new st...
Copyright © 2014 Russel Winder 9
Gross oversimplifications…
Copyright © 2014 Russel Winder 10
Scala
● Integrates functional
and object-oriented.
● Very declarative style
of expressio...
Copyright © 2014 Russel Winder 11
Kotlin
● Top-level functions.
● Object-oriented, with
functional elements
● Strong stati...
Copyright © 2014 Russel Winder 12
Ceylon
● Top-level functions.
● Object oriented with
functional features.
● Strong stati...
Copyright © 2014 Russel Winder 13
Fantom
● Top-level functions.
● Object-oriented.
● Integrated modules
system via pods.
●...
Copyright © 2014 Russel Winder 14
?
The identity of this statically typed, object-oriented
(with functional bits) language...
Copyright © 2014 Russel Winder 15
Copyright © 2014 Russel Winder 16
Code!
Copyright © 2014 Russel Winder 17
Copyright © 2014 Russel Winder 18

Copyright © 2014 Russel Winder 19
Copyright © 2014 Russel Winder 20
What is the value of ?
Easy, it's known exactly.
It's .
Obviously.
Copyright © 2014 Russel Winder 21
It's simples
Александр Орлов 2009
Copyright © 2014 Russel Winder 22
Approximating 
● What is it's value represented as a floating
point number?
● We can on...
Copyright © 2014 Russel Winder 23
One possible algorithm
● Use quadrature to estimate the value of the
integral which is t...
Copyright © 2014 Russel Winder 24
Because addition is commutative and
associative, expression can be
decomposed into sums ...
Copyright © 2014 Russel Winder 25
a + b + c + d + e + f
=
( a + b ) + ( c + d ) + ( e + f )
Copyright © 2014 Russel Winder 26
Scatter Gather—
map reduce
data parallel
Copyright © 2014 Russel Winder 27
Code!
Copyright © 2014 Russel Winder 28
Scala
Kotlin
Ceylon
Fantom
Copyright © 2014 Russel Winder 29
?
Copyright © 2014 Russel Winder 30
Surprise time…
Copyright © 2014 Russel Winder 31
JVM is a Groovy place
Copyright © 2014 Russel Winder 32
Groovy
● Top-level functions
● Object-oriented with
functional features.
● Extension met...
Copyright © 2014 Russel Winder 33
Groovy
A statically typed,
compiled language.
Copyright © 2014 Russel Winder 34
@TypeChecked
@CompileStatic
Copyright © 2014 Russel Winder 35
Groovy
● @TypeChecked:
● Traditional dynamic
Groovy but with full
static (compile-time)
...
Copyright © 2014 Russel Winder 36
Code!
Copyright © 2014 Russel Winder 37
Copyright © 2014 Russel Winder 38
Code!
Copyright © 2014 Russel Winder 39
Did I mention invokedynamic?
Copyright © 2014 Russel Winder 40
Code!
Copyright © 2014 Russel Winder 41
Java is Dead!
Copyright © 2014 Russel Winder 42
Groovy
(or Scala, Kotlin, Ceylon, Fantom, )…
is the future of static languages
on the JV...
Copyright © 2014 Russel Winder 43
2014-03-18
Copyright © 2014 Russel Winder 44
Java 8
Released
Copyright © 2014 Russel Winder 45
Java 8 is the biggest revolution
in Java since 1994.
Bigger than Java 5.
Copyright © 2014 Russel Winder 46
Has Java revived?
Is this a new lease of life?
Copyright © 2014 Russel Winder 47
What's Interesting in Java 8?
● G1 garbage collector.
● Nashorn.
● JavaFX.
● Lambda expr...
Copyright © 2014 Russel Winder 48
G1 garbage collector is now the
standard: no more PermGen.
Copyright © 2014 Russel Winder 49
Nashorn comes as standard:
Server-side JavaScript without Rhino.
Copyright © 2014 Russel Winder 50
JavaFX in the distribution:
you will want to use GroovyFX though.
Copyright © 2014 Russel Winder 51
Lambda expressions,
default methods in interfaces,
associated collections enhancements.
Copyright © 2014 Russel Winder 52
Code!
Copyright © 2014 Russel Winder 53
Copyright © 2014 Russel Winder 54
Code!
Copyright © 2014 Russel Winder 55
Java is Dead
Long Live Scala, Kotlin, Ceylon,
etc.
Russel Winder
email: russel@winder.or...
Copyright © 2014 Russel Winder 56
Java is Dead
Long Live Java
Russel Winder
email: russel@winder.org.uk
xmpp: russel@winde...
Copyright © 2014 Russel Winder 57
Java is Dead
Long Live Groovy
Russel Winder
email: russel@winder.org.uk
xmpp: russel@win...
Upcoming SlideShare
Loading in...5
×

Java is dead, long live Scala Kotlin Ceylon etc.

3,345

Published on

Presentation at ACCU 2014 focused on Java 8 and the languages trying to compete against it, include Scala, Kotlin, Ceylon, and Groovy.

Published in: Technology
3 Comments
9 Likes
Statistics
Notes
No Downloads
Views
Total Views
3,345
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
30
Comments
3
Likes
9
Embeds 0
No embeds

No notes for slide

Transcript of "Java is dead, long live Scala Kotlin Ceylon etc."

  1. 1. Copyright © 2014 Russel Winder 1 Java is Dead Long Live Scala, Kotlin, Ceylon, etc. Russel Winder email: russel@winder.org.uk xmpp: russel@winder.org.uk twitter: @russel_winder Web: http://www.russel.org.uk
  2. 2. Copyright © 2014 Russel Winder 2 Java is Dead
  3. 3. Copyright © 2014 Russel Winder 3 Java is Dying
  4. 4. 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. ● …
  5. 5. 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.
  6. 6. Copyright © 2014 Russel Winder 6 Prognosis: not great
  7. 7. Copyright © 2014 Russel Winder 7 Alternatives?
  8. 8. 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 ● ?
  9. 9. Copyright © 2014 Russel Winder 9 Gross oversimplifications…
  10. 10. 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.
  11. 11. 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.
  12. 12. 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.
  13. 13. Copyright © 2014 Russel Winder 13 Fantom ● Top-level functions. ● Object-oriented. ● Integrated modules system via pods. ● Targets JVM and CLR.
  14. 14. Copyright © 2014 Russel Winder 14 ? 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.
  15. 15. Copyright © 2014 Russel Winder 15
  16. 16. Copyright © 2014 Russel Winder 16 Code!
  17. 17. Copyright © 2014 Russel Winder 17
  18. 18. Copyright © 2014 Russel Winder 18 
  19. 19. Copyright © 2014 Russel Winder 19
  20. 20. Copyright © 2014 Russel Winder 20 What is the value of ? Easy, it's known exactly. It's . Obviously.
  21. 21. Copyright © 2014 Russel Winder 21 It's simples Александр Орлов 2009
  22. 22. Copyright © 2014 Russel Winder 22 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
  23. 23. Copyright © 2014 Russel Winder 23 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.
  24. 24. Copyright © 2014 Russel Winder 24 Because addition is commutative and associative, expression can be decomposed into sums of partial sums.
  25. 25. Copyright © 2014 Russel Winder 25 a + b + c + d + e + f = ( a + b ) + ( c + d ) + ( e + f )
  26. 26. Copyright © 2014 Russel Winder 26 Scatter Gather— map reduce data parallel
  27. 27. Copyright © 2014 Russel Winder 27 Code!
  28. 28. Copyright © 2014 Russel Winder 28 Scala Kotlin Ceylon Fantom
  29. 29. Copyright © 2014 Russel Winder 29 ?
  30. 30. Copyright © 2014 Russel Winder 30 Surprise time…
  31. 31. Copyright © 2014 Russel Winder 31 JVM is a Groovy place
  32. 32. Copyright © 2014 Russel Winder 32 Groovy ● Top-level functions ● Object-oriented with functional features. ● Extension methods. ● Compiles to JVM bytes codes or JavaScript (cf. GrooScript) ● A dynamic language with a run time meta-object protocol.
  33. 33. Copyright © 2014 Russel Winder 33 Groovy A statically typed, compiled language.
  34. 34. Copyright © 2014 Russel Winder 34 @TypeChecked @CompileStatic
  35. 35. Copyright © 2014 Russel Winder 35 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.
  36. 36. Copyright © 2014 Russel Winder 36 Code!
  37. 37. Copyright © 2014 Russel Winder 37
  38. 38. Copyright © 2014 Russel Winder 38 Code!
  39. 39. Copyright © 2014 Russel Winder 39 Did I mention invokedynamic?
  40. 40. Copyright © 2014 Russel Winder 40 Code!
  41. 41. Copyright © 2014 Russel Winder 41 Java is Dead!
  42. 42. Copyright © 2014 Russel Winder 42 Groovy (or Scala, Kotlin, Ceylon, Fantom, )… is the future of static languages on the JVM.
  43. 43. Copyright © 2014 Russel Winder 43 2014-03-18
  44. 44. Copyright © 2014 Russel Winder 44 Java 8 Released
  45. 45. Copyright © 2014 Russel Winder 45 Java 8 is the biggest revolution in Java since 1994. Bigger than Java 5.
  46. 46. Copyright © 2014 Russel Winder 46 Has Java revived? Is this a new lease of life?
  47. 47. Copyright © 2014 Russel Winder 47 What's Interesting in Java 8? ● G1 garbage collector. ● Nashorn. ● JavaFX. ● Lambda expressions. ● Default methods in interfaces (traits). ● Enhanced collections.
  48. 48. Copyright © 2014 Russel Winder 48 G1 garbage collector is now the standard: no more PermGen.
  49. 49. Copyright © 2014 Russel Winder 49 Nashorn comes as standard: Server-side JavaScript without Rhino.
  50. 50. Copyright © 2014 Russel Winder 50 JavaFX in the distribution: you will want to use GroovyFX though.
  51. 51. Copyright © 2014 Russel Winder 51 Lambda expressions, default methods in interfaces, associated collections enhancements.
  52. 52. Copyright © 2014 Russel Winder 52 Code!
  53. 53. Copyright © 2014 Russel Winder 53
  54. 54. Copyright © 2014 Russel Winder 54 Code!
  55. 55. Copyright © 2014 Russel Winder 55 Java is Dead Long Live Scala, Kotlin, Ceylon, etc. Russel Winder email: russel@winder.org.uk xmpp: russel@winder.org.uk twitter: @russel_winder Web: http://www.russel.org.uk
  56. 56. Copyright © 2014 Russel Winder 56 Java is Dead Long Live Java Russel Winder email: russel@winder.org.uk xmpp: russel@winder.org.uk twitter: @russel_winder Web: http://www.russel.org.uk
  57. 57. Copyright © 2014 Russel Winder 57 Java is Dead Long Live Groovy Russel Winder email: russel@winder.org.uk xmpp: russel@winder.org.uk twitter: @russel_winder Web: http://www.russel.org.uk
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×