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

Keep the JVM – Ditch Java

Keep the JVM – Ditch Java

My JAXLondon 2017 session slidedeck. Do note that I draw on the slides live and this is not recorded on the deck, you have to see a video to get the full experience. Sadly this session was not recorded.

Also I use a lot of code not on the slides (where it says "code" I dropped out to shell and editor), the code used was the Ceylon and Kotlin versions of Factorial from https://github.com/russel/Factorial

Ca04455902d1b207348b6d406432718f?s=128

Russel Winder

October 11, 2017
Tweet

More Decks by Russel Winder

Other Decks in Technology

Transcript

  1. Copyright © 2017 Russel Winder 1 Keep the JVM –

    Ditch Java Russel Winder @russel_winder russel@winder.org.uk https://www.russel.org.uk
  2. Copyright © 2017 Russel Winder 2 Java is stagnant, thankfully

    we have Kotlin, Ceylon,… Russel Winder @russel_winder russel@winder.org.uk https://www.russel.org.uk
  3. Copyright © 2017 Russel Winder 3 Keep the JVM –

    Ditch Java Russel Winder @russel_winder russel@winder.org.uk https://www.russel.org.uk
  4. Copyright © 2017 Russel Winder 4 The “Prosecution” Advocate •

    Ex theoretical physicist • Ex UNIX systems programmer • Ex academic: – Parallel programming – Software development and programming – HCI, UI, UX • Ex Company director • Ex Independent consultant • Ex analyst • Ex author • Ex expert witness • Ex trainer Russel Winder
  5. Copyright © 2017 Russel Winder 5 The “Defence” Advocate Appears

    to be missing. :-) The audience will have to substitute.
  6. Copyright © 2017 Russel Winder 6 The Jury That’s you

    the audience.
  7. Copyright © 2017 Russel Winder 7 Preface

  8. Copyright © 2017 Russel Winder 8 An outline case presented,

    much, much more detail is available.
  9. Copyright © 2017 Russel Winder 9 Introduction

  10. Copyright © 2017 Russel Winder 10 Java is… • …an

    “old” programming language steeped in “imperative” and “object oriented” history. • …a programming language, evolving very slowly. • …not really keeping up with modern programming ideas and techniques.
  11. Copyright © 2017 Russel Winder 11 The Java Platform is…

    • …a mature and extensive hardware-independent platform. • …evolving very, very slowly. • …a platform for many programming languages: – Java, Scala, Kotlin, Ceylon, Frege, Groovy, Fantom, Gosu, … – Groovy, Clojure, JRuby, Jython, Golo, …
  12. Copyright © 2017 Russel Winder 12 Some Philosophy

  13. Copyright © 2017 Russel Winder 13 Is Change Good?

  14. Copyright © 2017 Russel Winder 14 Is Change Good? •

    Change threatens backward compatibility, backward compatibility is determined to be sacrosanct, ergo no. • Change enables new knowledge, new techniques, new tools, ergo yes.
  15. Copyright © 2017 Russel Winder 15 Assembly languages Procedural languages

    Functional languages Object-oriented languages ? Logic languages Machine code
  16. Copyright © 2017 Russel Winder 16 Backward compatibility is the

    enemy of progress.
  17. Copyright © 2017 Russel Winder 17 Backward compatibility is the

    excuse of the lazy to avoid work.
  18. Copyright © 2017 Russel Winder 18 Backward compatibility is the

    way applications become outdated and broken.
  19. Copyright © 2017 Russel Winder 19 Is backward compatibility the

    biggest threat to Java?
  20. Copyright © 2017 Russel Winder 20 Moving On

  21. Copyright © 2017 Russel Winder 21 Distinguish Java the language

    from JVM and Java Platform.
  22. Copyright © 2017 Russel Winder 22 If Java will not

    change…
  23. Copyright © 2017 Russel Winder 23 Assembly languages Procedural languages

    Functional languages Object-oriented languages ? Logic languages Machine code
  24. Copyright © 2017 Russel Winder 24 Scala, touted as a

    replacement for Java, incorporates functional programming into an object oriented language. However…
  25. Copyright © 2017 Russel Winder 25 Many took to Scala,

    but many found it unsatisfactory. Kotlin and Ceylon are two of the results.
  26. Copyright © 2017 Russel Winder 26 The Two Languages •

    Kotlin – Interwork with Java allowing incremental change of codebase. – Influenced by Java, Groovy, Scala. – Superior type system to Java. • Ceylon – Replace Java but use the Java Platform. – Module based from the outset. – Far superior type system to Java.
  27. Copyright © 2017 Russel Winder 27 Both Kotlin and Ceylon

    Can compile to JVM or JavaScript.
  28. Copyright © 2017 Russel Winder 28 Both Kotlin and Ceylon

    are languages of the 2010s.
  29. Copyright © 2017 Russel Winder 29 Hello World has to

    be done
  30. Copyright © 2017 Russel Winder 30 /** * The Hello

    World program in Kotlin. * * @author Russel Winder */ fun main(args:Array<String>) { println("Hello World.") } "The Hello World program in Ceylon." by("Russel Winder") shared void run() { print("Hello World."); } Top level functions. /** * The Hello World program in Java * * @author Russel Winder */ public class HelloWorld_Java { public static void main(fnal String[] args) { System.out.println("Hello World."); } }
  31. Copyright © 2017 Russel Winder 31 Doing everything with classes

    and packages as in Java (and Scala) seen as too restrictive. Adding top level functions, etc. seen as right, make the compiler do the work of creating classes for the JVM.
  32. Copyright © 2017 Russel Winder 32 Factorial is required

  33. Copyright © 2017 Russel Winder 33 Code

  34. Copyright © 2017 Russel Winder 34 Let’s look at anagrams

    Or word count
  35. Copyright © 2017 Russel Winder 35 Code

  36. Copyright © 2017 Russel Winder 36 Some Further Thoughts

  37. Copyright © 2017 Russel Winder 37 Operator overloading was deemed

    too hard for programmers to cope with by the inventors of Java. Most JVM languages since have put it back, one way or another.
  38. Copyright © 2017 Russel Winder 38 Language evolution by replacement.

  39. Copyright © 2017 Russel Winder 39 Kotlin and Ceylon represent

    two possible futures on the JVM.
  40. Copyright © 2017 Russel Winder 40 Headlines • Kotlin: –

    More declarative than Java. – Less code. – Mixed language codebase. – More expressive than Java. • Ceylon: – More declarative than Java. – Modules. – Far better type system than Java. – More expressive than Java.
  41. Copyright © 2017 Russel Winder 41 Both Kotlin and Ceylon

    run on Android.
  42. Copyright © 2017 Russel Winder 42 Both Kotlin and Ceylon

    target JVM or JS.
  43. Copyright © 2017 Russel Winder 43 A Challenge to You

    Try all this in Java.
  44. Copyright © 2017 Russel Winder 44 Keep the JVM –

    Ditch Java Russel Winder @russel_winder russel@winder.org.uk https://www.russel.org.uk
  45. Copyright © 2017 Russel Winder 45 The JVM is dead,

    Long live the GraalVM