SlideShare a Scribd company logo
Copyright © 2017 Russel Winder 1
The Case for Kotlin and Ceylon
Russel Winder
@russel_winder
russel@winder.org.uk
https://www.russel.org.uk
Copyright © 2017 Russel Winder 2
Java is stagnant,
thankfully we have Kotlin and Ceylon
Russel Winder
@russel_winder
russel@winder.org.uk
https://www.russel.org.uk
Copyright © 2017 Russel Winder 3
The Case for Kotlin and Ceylon
Russel Winder
@russel_winder
russel@winder.org.uk
https://www.russel.org.uk
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
Copyright © 2017 Russel Winder 5
The “Defence” Advocate
Appears to be missing. :-)
The audience will have to substitute.
Copyright © 2017 Russel Winder 6
The Jury
That’s you the audience.
Copyright © 2017 Russel Winder 7
Prologue
Copyright © 2017 Russel Winder 8
An outline case presented,
much, much more detail is available.
Copyright © 2017 Russel Winder 9
Introduction
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.
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, …
Copyright © 2017 Russel Winder 12
Some Philosophy
Copyright © 2017 Russel Winder 13
Is Change Good?
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.
Copyright © 2017 Russel Winder 15
Assembly languages
Procedural languages
Functional languages
Object-oriented languages
?
Logic languages
Machine code
Copyright © 2017 Russel Winder 16
Backward compatibility is the
enemy of progress.
Copyright © 2017 Russel Winder 17
Backward compatibility is the
excuse of the lazy to avoid work.
Copyright © 2017 Russel Winder 18
Backward compatibility is the
way applications become
outdated and broken.
Copyright © 2017 Russel Winder 19
Is backward compatibility the
biggest threat to Java?
Copyright © 2017 Russel Winder 20
Moving On
Copyright © 2017 Russel Winder 21
Distinguish Java the language from
JVM and Java Platform.
Copyright © 2017 Russel Winder 22
If Java will not change…
Copyright © 2017 Russel Winder 23
Assembly languages
Procedural languages
Functional languages
Object-oriented languages
?
Logic languages
Machine code
Copyright © 2017 Russel Winder 24
Scala, touted as a replacement for Java,
incorporates functional programming into an
object oriented language.
However…
Copyright © 2017 Russel Winder 25
Many took to Scala, but
many found it unsatisfactory.
Kotlin and Ceylon are two of the results.
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.
Copyright © 2017 Russel Winder 27
Both Kotlin and Ceylon
Can compile to JVM or JavaScript.
Copyright © 2017 Russel Winder 28
Both Kotlin and Ceylon are
languages of the 2010s.
Copyright © 2017 Russel Winder 29
Hello World has to be done
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(final String[] args) {
System.out.println("Hello World.");
}
}
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.
Copyright © 2017 Russel Winder 32
Factorial is required
Copyright © 2017 Russel Winder 33
Code
Copyright © 2017 Russel Winder 34
Let’s look at anagrams
Or word count
Copyright © 2017 Russel Winder 35
Code
Copyright © 2017 Russel Winder 36
Some Further Thoughts
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.
Copyright © 2017 Russel Winder 38
Language evolution by replacement.
Copyright © 2017 Russel Winder 39
Kotlin and Ceylon represent two
possible futures on the JVM.
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.
Copyright © 2017 Russel Winder 41
Both Kotlin and Ceylon run on Android.
Copyright © 2017 Russel Winder 42
A Challenge to You
Try all this in Java.
Copyright © 2017 Russel Winder 43
The Case for Kotlin and Ceylon
Russel Winder
@russel_winder
russel@winder.org.uk
https://www.russel.org.uk

More Related Content

PDF
On the Architectures of Microservices: the next layer
PDF
Fast Python? Don't Bother
PDF
Making Python computations fast
PDF
Making Computations Execute Very Quickly
PPTX
AWS Cloud + Container Security Webinar
PDF
KubeCon EU 2016: Scaling Open edX with Kubernetes
PDF
OpenStack Ottawa Q3 Meetup September 26th 2017
PDF
InfluxCloudi craft container orchestrator
On the Architectures of Microservices: the next layer
Fast Python? Don't Bother
Making Python computations fast
Making Computations Execute Very Quickly
AWS Cloud + Container Security Webinar
KubeCon EU 2016: Scaling Open edX with Kubernetes
OpenStack Ottawa Q3 Meetup September 26th 2017
InfluxCloudi craft container orchestrator

What's hot (7)

PDF
WSO2 Virtual Hackathon Big Data in the Cloud Case Study
PDF
How to Use the TICK Stack, CoreOS, & Docker to Make Your SaaS Offering Better
PDF
Post quantum cryptography in vault (hashi talks 2020)
PPT
Getting Started with OpenStack from Hong Kong Summit Session November 5
PDF
UK IPv6 Council Update
KEY
Agile new context
PDF
GitOps (& Flux) for Helm Users with Scott Rigby
WSO2 Virtual Hackathon Big Data in the Cloud Case Study
How to Use the TICK Stack, CoreOS, & Docker to Make Your SaaS Offering Better
Post quantum cryptography in vault (hashi talks 2020)
Getting Started with OpenStack from Hong Kong Summit Session November 5
UK IPv6 Council Update
Agile new context
GitOps (& Flux) for Helm Users with Scott Rigby
Ad

Similar to The Case for Kotlin and Ceylon (20)

PDF
MySQL InnoDB Cluster and Group Replication - OSI 2017 Bangalore
PDF
On Concurrency and Parallelism in the JVMverse
PDF
Java is dead, long live Scala, Kotlin, Ceylon, etc.
PPTX
There's More to Docker than the Container: The Docker Platform - Kendrick Col...
PDF
Java is dead, long live Scala Kotlin Ceylon etc.
PDF
Java is Dead, Long Live Ceylon, Kotlin, etc
PDF
What Is React | ReactJS Tutorial for Beginners | ReactJS Training | Edureka
PPTX
Using MySQL Containers
PPT
LNUG: Having Your Node.js Cake and Eating It Too
PDF
MySQL Document Store - when SQL & NoSQL live together... in peace!
PDF
20171104 hk-py con-mysql-documentstore_v1
PPT
Google does containers: Hello Kubernetes - Steve Wong and Vladimir Vivien - D...
PPTX
Webinar: End-to-End CI/CD with GitLab and DC/OS
PPTX
Continous Delivery and Continous Integration at IKERLAN
PPTX
Zero to flow
PPTX
Storage for containers and cloud-native deployments - Rancher Online Meetup -...
PDF
The Open Sourcing of Infrastructure
PPTX
Large Scale Cassandra Made Better in Containers - Chris Duchesne and Aaron Sp...
PPTX
Oracle Code Online: Building a Serverless State Service for the Cloud
PPTX
How to build Sdk? Best practices
MySQL InnoDB Cluster and Group Replication - OSI 2017 Bangalore
On Concurrency and Parallelism in the JVMverse
Java is dead, long live Scala, Kotlin, Ceylon, etc.
There's More to Docker than the Container: The Docker Platform - Kendrick Col...
Java is dead, long live Scala Kotlin Ceylon etc.
Java is Dead, Long Live Ceylon, Kotlin, etc
What Is React | ReactJS Tutorial for Beginners | ReactJS Training | Edureka
Using MySQL Containers
LNUG: Having Your Node.js Cake and Eating It Too
MySQL Document Store - when SQL & NoSQL live together... in peace!
20171104 hk-py con-mysql-documentstore_v1
Google does containers: Hello Kubernetes - Steve Wong and Vladimir Vivien - D...
Webinar: End-to-End CI/CD with GitLab and DC/OS
Continous Delivery and Continous Integration at IKERLAN
Zero to flow
Storage for containers and cloud-native deployments - Rancher Online Meetup -...
The Open Sourcing of Infrastructure
Large Scale Cassandra Made Better in Containers - Chris Duchesne and Aaron Sp...
Oracle Code Online: Building a Serverless State Service for the Cloud
How to build Sdk? Best practices
Ad

More from Russel Winder (20)

PDF
Tales from the Workshops
PDF
GPars Remoting
PDF
GPars 2014
PDF
Spocktacular testing
PDF
Spocktacular Testing
PDF
Is Groovy static or dynamic
PDF
Dataflow: the concurrency/parallelism architecture you need
PDF
Are Go and D threats to Python
PDF
Is Groovy as fast as Java
PDF
Who needs C++ when you have D and Go
PDF
Java 8: a New Beginning
PDF
Why Go is an important programming language
ODP
GPars: Groovy Parallelism for Java
PDF
GroovyFX: or how to program JavaFX easily
PDF
Switch to Python 3…now…immediately
PDF
GPars Workshop
PDF
Given Groovy Who Needs Java
PDF
Testing: Python, Java, Groovy, etc.
PDF
Why Groovy When Java 8 or Scala, or…
PDF
Closures: The Next "Big Thing" In Java
Tales from the Workshops
GPars Remoting
GPars 2014
Spocktacular testing
Spocktacular Testing
Is Groovy static or dynamic
Dataflow: the concurrency/parallelism architecture you need
Are Go and D threats to Python
Is Groovy as fast as Java
Who needs C++ when you have D and Go
Java 8: a New Beginning
Why Go is an important programming language
GPars: Groovy Parallelism for Java
GroovyFX: or how to program JavaFX easily
Switch to Python 3…now…immediately
GPars Workshop
Given Groovy Who Needs Java
Testing: Python, Java, Groovy, etc.
Why Groovy When Java 8 or Scala, or…
Closures: The Next "Big Thing" In Java

Recently uploaded (20)

PPTX
Chapter 5: Probability Theory and Statistics
PDF
WOOl fibre morphology and structure.pdf for textiles
PDF
Getting Started with Data Integration: FME Form 101
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Hindi spoken digit analysis for native and non-native speakers
PDF
MIND Revenue Release Quarter 2 2025 Press Release
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Web App vs Mobile App What Should You Build First.pdf
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
Building Integrated photovoltaic BIPV_UPV.pdf
PDF
DP Operators-handbook-extract for the Mautical Institute
PDF
Encapsulation theory and applications.pdf
PDF
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
PPTX
A Presentation on Artificial Intelligence
PDF
A novel scalable deep ensemble learning framework for big data classification...
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
Hybrid model detection and classification of lung cancer
PDF
gpt5_lecture_notes_comprehensive_20250812015547.pdf
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
Chapter 5: Probability Theory and Statistics
WOOl fibre morphology and structure.pdf for textiles
Getting Started with Data Integration: FME Form 101
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Hindi spoken digit analysis for native and non-native speakers
MIND Revenue Release Quarter 2 2025 Press Release
Encapsulation_ Review paper, used for researhc scholars
Web App vs Mobile App What Should You Build First.pdf
Group 1 Presentation -Planning and Decision Making .pptx
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Building Integrated photovoltaic BIPV_UPV.pdf
DP Operators-handbook-extract for the Mautical Institute
Encapsulation theory and applications.pdf
Transform Your ITIL® 4 & ITSM Strategy with AI in 2025.pdf
A Presentation on Artificial Intelligence
A novel scalable deep ensemble learning framework for big data classification...
SOPHOS-XG Firewall Administrator PPT.pptx
Hybrid model detection and classification of lung cancer
gpt5_lecture_notes_comprehensive_20250812015547.pdf
Univ-Connecticut-ChatGPT-Presentaion.pdf

The Case for Kotlin and Ceylon

  • 1. Copyright © 2017 Russel Winder 1 The Case for Kotlin and Ceylon 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 and Ceylon Russel Winder @russel_winder russel@winder.org.uk https://www.russel.org.uk
  • 3. Copyright © 2017 Russel Winder 3 The Case for Kotlin and Ceylon 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 Prologue
  • 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(final 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 A Challenge to You Try all this in Java.
  • 43. Copyright © 2017 Russel Winder 43 The Case for Kotlin and Ceylon Russel Winder @russel_winder russel@winder.org.uk https://www.russel.org.uk