Picking a JVM Language: which one is right for you?
Venkat Subramaniam [email protected] @venkat_s How it started
Java Simple Powerful JDK Versatile Multi Platform Scalable GC Multithreaded JVM Performance
2 How it started
Simple Java Simpler than C++ Powerful JDK Versatile Multi Platform Scalable GC Multithreaded JVM Performance
3 How it evolved
Java Weakest link Powerful Widely used JDK Versatile Ubiquitous Multi Platform Scalable GC Multithreaded JVM Performance
4 Emergence
Ruby/ Groovy, Rails Scala JRuby, Exodus Clojure Renaissance 2000 2003 Where we’re now
Java Scala Groovy JRuby Clojure Powerful Widely used JDK Versatile Ubiquitous Multi Platform Scalable GC Multithreaded JVM Performance
6 What do these offer?
7 Productivity gain Ease Functional Style
Once we get past the learning curve 8 Typing Static Scala C++ Java
Strong Weak
Groovy
JRuby Perl Clojure Dynamic 9 Essence vs. Ceremony Essence Groovy JRuby Clojure Scala
Java8
Java
Ceremony 10 Functional Style Functional Purity and Style Clojure Scala JRuby Groovy Java8
Java
Non-Functional 11 Concurrency Facilitator Immutable Clojure Scala
JRuby Groovy Java8
Java
Shared Mutable State 12 Metaprogramming Metaprogramming Groovy JRuby Clojure
Scala
Java
Reflection 13 Fluency Fluent Scala JRuby Groovy
Clojure
Java8
Java
Not so fluent 14 How does this matter?
Internal DSL == Metaprogramming + Fluency
Groovy and JRuby shine here
15 What Made Lisp Special Paul Graham’s list 1. Conditionals 2. A function type 3. Recursion 4. Concept of variables 5. Garbage-collection 6. Composed of Expressions 7. A symbol type 8. Notation for tree of symbols
9. Whole Program always available 16 Evaluating Suitability
Sample only, don’t use these numbers literally
17