SlideShare a Scribd company logo
1 of 63
Download to read offline
Copyright © 2015 Russel Winder 1
Java is Dead
Long Live Ceylon, Kotlin, etc.
Dr Russel Winder
email: russel@winder.org.uk
twitter: @russel_winder
Web: http://www.russel.org.uk
Copyright © 2015 Russel Winder 2
Java is Dead
Copyright © 2015 Russel Winder 3
Java is Dying
Copyright © 2015 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.
● …
Copyright © 2015 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 been doing great work on this
for a while, but )…
● Have a reasonable module system, cf. Jigsaw vs. OSGi.
● Be a real object-oriented language.
Copyright © 2015 Russel Winder 6
Prognosis: not great
Copyright © 2015 Russel Winder 7
Trust me I'm a doctor.
Copyright © 2015 Russel Winder 8
Alternatives?
Copyright © 2015 Russel Winder 9
Create a new language
● Java is a statically
typed, compiled
language, so create a
new statically typed
compiled language:
● Kotlin, Ceylon
● Scala, Frege
● Fantom
● Gosu
● ?
Copyright © 2015 Russel Winder 10
Gross oversimplifications…
Copyright © 2015 Russel Winder 11
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.
Copyright © 2015 Russel Winder 12
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.
● Runs on Android.
Copyright © 2015 Russel Winder 13
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.
Copyright © 2015 Russel Winder 14
Frege
● Pure functional
language based on
Haskell.
● Completely declarative.
● Strong static type
checking.
Copyright © 2015 Russel Winder 15
Fantom
● Top-level functions.
● Object-oriented.
● Integrated modules
system via pods.
● Targets JVM and CLR.
Copyright © 2015 Russel Winder 16
Gosu
● Top-level functions.
● Object-oriented.
● Scripts.
Copyright © 2015 Russel Winder 17
?
The identity of this statically typed, object-oriented
(with functional bits) language for the JVM will
remain unnamed at this time to preserve an air
of mystery and suspense.
Copyright © 2015 Russel Winder 18
Copyright © 2015 Russel Winder 19
Code!
Copyright © 2015 Russel Winder 20
Copyright © 2015 Russel Winder 21

Copyright © 2015 Russel Winder 22
Copyright © 2015 Russel Winder 23
What is the value of ?
Copyright © 2015 Russel Winder 24
Well that's easy, it's…
Copyright © 2015 Russel Winder 25

Copyright © 2015 Russel Winder 26
Exactly.
Copyright © 2015 Russel Winder 27
It's simples.
Александр Орлов 2009
Copyright © 2015 Russel Winder 28
But is it irrational?
Copyright © 2015 Russel Winder 29
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
Copyright © 2015 Russel Winder 30
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.
Copyright © 2015 Russel Winder 31
Code!
Copyright © 2015 Russel Winder 32
Java
Ceylon
Kotlin
Scala
Frege
Copyright © 2015 Russel Winder 33
Because addition is commutative and
associative, expression can be
decomposed into sums of partial sums.
Copyright © 2015 Russel Winder 34
a + b + c + d + e + f
=
( a + b ) + ( c + d ) + ( e + f )
Copyright © 2015 Russel Winder 35
Scatter Gather—
map reduce
data parallel
Copyright © 2015 Russel Winder 36
Code!
Copyright © 2015 Russel Winder 37
Java
Ceylon
Kotlin
Scala
Copyright © 2015 Russel Winder 38
?
Copyright © 2015 Russel Winder 39
Surprise time…
Copyright © 2015 Russel Winder 40
JVM is a Groovy place
Copyright © 2015 Russel Winder 41
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.
Copyright © 2015 Russel Winder 42
Groovy
A statically typed,
compiled language.
Copyright © 2015 Russel Winder 43
@TypeChecked
@CompileStatic
Copyright © 2015 Russel Winder 44
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.
Copyright © 2015 Russel Winder 45
Code!
Copyright © 2015 Russel Winder 46
Copyright © 2015 Russel Winder 47
Code!
Copyright © 2015 Russel Winder 48
Java is not the future
programming language for
the Java Platform.
Copyright © 2015 Russel Winder 49
Kotlin, Ceylon, Groovy, Scala, Frege, …
are the future of static languages
on the Java Platform.
Copyright © 2015 Russel Winder 50
2014-03-18
Copyright © 2015 Russel Winder 51
Java 8
Released
Copyright © 2015 Russel Winder 52
Java 8 has been the biggest
revolution in Java since 1994.
Bigger than Java 5.
Copyright © 2015 Russel Winder 53
Has Java revived?
Is this a new lease of life?
Copyright © 2015 Russel Winder 54
What's Interesting in Java 8?
● G1 garbage collector.
● Nashorn.
● JavaFX.
● Lambda expressions.
● Default methods in
interfaces (traits).
● Enhanced collections.
● Method references.
Copyright © 2015 Russel Winder 55
G1 garbage collector is now the
standard: no more PermGen.
Copyright © 2015 Russel Winder 56
Nashorn comes as standard:
Server-side JavaScript without Rhino.
Copyright © 2015 Russel Winder 57
JavaFX in the distribution:
you will want to use GroovyFX though.
Use Griffon
Copyright © 2015 Russel Winder 58
Lambda expressions, method references
default methods in interfaces,
associated collections enhancements.
Copyright © 2015 Russel Winder 59
Code!
Copyright © 2015 Russel Winder 60
Java is Dead
Long Live Kotlin, Ceylon, etc.
Russel Winder
email: russel@winder.org.uk
twitter: @russel_winder
Web: http://www.russel.org.uk
Copyright © 2015 Russel Winder 61
Java is Dead
Long Live Java
Russel Winder
email: russel@winder.org.uk
twitter: @russel_winder
Web: http://www.russel.org.uk
Copyright © 2015 Russel Winder 62
Java is Dead
Long Live Groovy
Russel Winder
email: russel@winder.org.uk
twitter: @russel_winder
Web: http://www.russel.org.uk
Copyright © 2015 Russel Winder 63
Java is Dead
Long Live Kotlin, Ceylon, etc.
Russel Winder
email: russel@winder.org.uk
twitter: @russel_winder
Web: http://www.russel.org.uk

More Related Content

What's hot

What's hot (15)

Securing Container Deployments from Build to Ship to Run - August 2017 - Ranc...
Securing Container Deployments from Build to Ship to Run - August 2017 - Ranc...Securing Container Deployments from Build to Ship to Run - August 2017 - Ranc...
Securing Container Deployments from Build to Ship to Run - August 2017 - Ranc...
 
An empirical comparison of dependency issues in open source software packagin...
An empirical comparison of dependency issues in open source software packagin...An empirical comparison of dependency issues in open source software packagin...
An empirical comparison of dependency issues in open source software packagin...
 
The Road to Kubernetes
The Road to KubernetesThe Road to Kubernetes
The Road to Kubernetes
 
Storage for containers and cloud-native deployments - Rancher Online Meetup -...
Storage for containers and cloud-native deployments - Rancher Online Meetup -...Storage for containers and cloud-native deployments - Rancher Online Meetup -...
Storage for containers and cloud-native deployments - Rancher Online Meetup -...
 
More tips and tricks for running containers like a pro - Rancher Online MEetu...
More tips and tricks for running containers like a pro - Rancher Online MEetu...More tips and tricks for running containers like a pro - Rancher Online MEetu...
More tips and tricks for running containers like a pro - Rancher Online MEetu...
 
Игорь Фесенко "Direction of C# as a High-Performance Language"
Игорь Фесенко "Direction of C# as a High-Performance Language"Игорь Фесенко "Direction of C# as a High-Performance Language"
Игорь Фесенко "Direction of C# as a High-Performance Language"
 
PyConIT 2018 Writing and deploying serverless python applications
PyConIT 2018 Writing and deploying serverless python applicationsPyConIT 2018 Writing and deploying serverless python applications
PyConIT 2018 Writing and deploying serverless python applications
 
Introducing Project Longhorn - April 2016 Rancher Online Meetup
Introducing Project Longhorn - April 2016 Rancher Online MeetupIntroducing Project Longhorn - April 2016 Rancher Online Meetup
Introducing Project Longhorn - April 2016 Rancher Online Meetup
 
SDN applications with floodlight
SDN applications with floodlightSDN applications with floodlight
SDN applications with floodlight
 
Processing Terabytes of data every day … and sleeping at night (infiniteConf ...
Processing Terabytes of data every day … and sleeping at night (infiniteConf ...Processing Terabytes of data every day … and sleeping at night (infiniteConf ...
Processing Terabytes of data every day … and sleeping at night (infiniteConf ...
 
Processing TeraBytes of data every day and sleeping at night
Processing TeraBytes of data every day and sleeping at nightProcessing TeraBytes of data every day and sleeping at night
Processing TeraBytes of data every day and sleeping at night
 
Processing TeraBytes of data every day and sleeping at night
Processing TeraBytes of data every day and sleeping at nightProcessing TeraBytes of data every day and sleeping at night
Processing TeraBytes of data every day and sleeping at night
 
Rancher March 2016 Online Meetup Containers-as-a-Service with Rancher 1.0
Rancher March 2016 Online Meetup Containers-as-a-Service with Rancher 1.0Rancher March 2016 Online Meetup Containers-as-a-Service with Rancher 1.0
Rancher March 2016 Online Meetup Containers-as-a-Service with Rancher 1.0
 
Tips, Tricks and Tools for Running Containers Like a Pro - Rancher Labs April...
Tips, Tricks and Tools for Running Containers Like a Pro - Rancher Labs April...Tips, Tricks and Tools for Running Containers Like a Pro - Rancher Labs April...
Tips, Tricks and Tools for Running Containers Like a Pro - Rancher Labs April...
 
Building an Enterprise CaaS with Kubernetes and Rancher 2.0
Building an Enterprise CaaS with Kubernetes and Rancher 2.0Building an Enterprise CaaS with Kubernetes and Rancher 2.0
Building an Enterprise CaaS with Kubernetes and Rancher 2.0
 

Viewers also liked

JavaOne2012: Kotlin: Practical Aspects of JVM Language Implementation
JavaOne2012: Kotlin: Practical Aspects of JVM Language ImplementationJavaOne2012: Kotlin: Practical Aspects of JVM Language Implementation
JavaOne2012: Kotlin: Practical Aspects of JVM Language Implementation
Andrey Breslav
 
The Kotlin Programming Language
The Kotlin Programming LanguageThe Kotlin Programming Language
The Kotlin Programming Language
intelliyole
 
Feel of Kotlin (Berlin JUG 16 Apr 2015)
Feel of Kotlin (Berlin JUG 16 Apr 2015)Feel of Kotlin (Berlin JUG 16 Apr 2015)
Feel of Kotlin (Berlin JUG 16 Apr 2015)
intelliyole
 

Viewers also liked (18)

JavaCro'14 - Is there Kotlin after Java 8 – Ivan Turčinović and Igor Buzatović
JavaCro'14 - Is there Kotlin after Java 8 – Ivan Turčinović and Igor BuzatovićJavaCro'14 - Is there Kotlin after Java 8 – Ivan Turčinović and Igor Buzatović
JavaCro'14 - Is there Kotlin after Java 8 – Ivan Turčinović and Igor Buzatović
 
Kotlin techtalk
Kotlin techtalkKotlin techtalk
Kotlin techtalk
 
Fun with Kotlin
Fun with KotlinFun with Kotlin
Fun with Kotlin
 
Kotlin: A pragmatic language by JetBrains
Kotlin: A pragmatic language by JetBrainsKotlin: A pragmatic language by JetBrains
Kotlin: A pragmatic language by JetBrains
 
Kotlin: Challenges in JVM language design
Kotlin: Challenges in JVM language designKotlin: Challenges in JVM language design
Kotlin: Challenges in JVM language design
 
JavaOne2012: Kotlin: Practical Aspects of JVM Language Implementation
JavaOne2012: Kotlin: Practical Aspects of JVM Language ImplementationJavaOne2012: Kotlin: Practical Aspects of JVM Language Implementation
JavaOne2012: Kotlin: Practical Aspects of JVM Language Implementation
 
Kotlin Developer Starter in Android projects
Kotlin Developer Starter in Android projectsKotlin Developer Starter in Android projects
Kotlin Developer Starter in Android projects
 
Kotlin in action
Kotlin in actionKotlin in action
Kotlin in action
 
Introduction to Kotlin JVM language
Introduction to Kotlin JVM languageIntroduction to Kotlin JVM language
Introduction to Kotlin JVM language
 
The Kotlin Programming Language
The Kotlin Programming LanguageThe Kotlin Programming Language
The Kotlin Programming Language
 
Kotlin, smarter development for the jvm
Kotlin, smarter development for the jvmKotlin, smarter development for the jvm
Kotlin, smarter development for the jvm
 
Feel of Kotlin (Berlin JUG 16 Apr 2015)
Feel of Kotlin (Berlin JUG 16 Apr 2015)Feel of Kotlin (Berlin JUG 16 Apr 2015)
Feel of Kotlin (Berlin JUG 16 Apr 2015)
 
JavaOne 2016 - Kotlin: The Language of The Future For JVM?
JavaOne 2016 - Kotlin: The Language of The Future For JVM?JavaOne 2016 - Kotlin: The Language of The Future For JVM?
JavaOne 2016 - Kotlin: The Language of The Future For JVM?
 
Voxxed Days Belgrade - Spring Boot & Kotlin, a match made in Heaven
Voxxed Days Belgrade - Spring Boot & Kotlin, a match made in HeavenVoxxed Days Belgrade - Spring Boot & Kotlin, a match made in Heaven
Voxxed Days Belgrade - Spring Boot & Kotlin, a match made in Heaven
 
Kotlin Overview
Kotlin OverviewKotlin Overview
Kotlin Overview
 
Coding for Android on steroids with Kotlin
Coding for Android on steroids with KotlinCoding for Android on steroids with Kotlin
Coding for Android on steroids with Kotlin
 
Introduction to Kotlin Language and its application to Android platform
Introduction to Kotlin Language and its application to Android platformIntroduction to Kotlin Language and its application to Android platform
Introduction to Kotlin Language and its application to Android platform
 
Anko - The Ultimate Ninja of Kotlin Libraries?
Anko - The Ultimate Ninja of Kotlin Libraries?Anko - The Ultimate Ninja of Kotlin Libraries?
Anko - The Ultimate Ninja of Kotlin Libraries?
 

Similar to Java is Dead, Long Live Ceylon, Kotlin, etc

Graal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian WimmerGraal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian Wimmer
Thomas Wuerthinger
 
Devoxx%202008%20Tutorial
Devoxx%202008%20TutorialDevoxx%202008%20Tutorial
Devoxx%202008%20Tutorial
tutorialsruby
 

Similar to Java is Dead, Long Live Ceylon, Kotlin, etc (20)

Tales from the Workshops
Tales from the WorkshopsTales from the Workshops
Tales from the Workshops
 
(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?(java2days) Is the Future of Java Cloudy?
(java2days) Is the Future of Java Cloudy?
 
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav TulachJDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
JDD2015: Towards the Fastest (J)VM on the Planet! - Jaroslav Tulach
 
The Case for Kotlin and Ceylon
The Case for Kotlin and CeylonThe Case for Kotlin and Ceylon
The Case for Kotlin and Ceylon
 
Java 8: a New Beginning
Java 8: a New BeginningJava 8: a New Beginning
Java 8: a New Beginning
 
Graal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution PlatformGraal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution Platform
 
Jax keynote
Jax keynoteJax keynote
Jax keynote
 
How and Why GraalVM is quickly becoming relevant for developers (ACEs@home - ...
How and Why GraalVM is quickly becoming relevant for developers (ACEs@home - ...How and Why GraalVM is quickly becoming relevant for developers (ACEs@home - ...
How and Why GraalVM is quickly becoming relevant for developers (ACEs@home - ...
 
Graal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian WimmerGraal Tutorial at CGO 2015 by Christian Wimmer
Graal Tutorial at CGO 2015 by Christian Wimmer
 
QEWD.js: Have your Node.js Cake and Eat It Too
QEWD.js: Have your Node.js Cake and Eat It TooQEWD.js: Have your Node.js Cake and Eat It Too
QEWD.js: Have your Node.js Cake and Eat It Too
 
Java 8 - Gateway Drug or End of Line?
Java 8 - Gateway Drug or End of Line?Java 8 - Gateway Drug or End of Line?
Java 8 - Gateway Drug or End of Line?
 
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světěJaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
Jaroslav Tulach: GraalVM - z vývoje nejrychlejšího virtuálního stroje na světě
 
Reflection Madness - Dr. Heinz Kabutz
Reflection Madness - Dr. Heinz KabutzReflection Madness - Dr. Heinz Kabutz
Reflection Madness - Dr. Heinz Kabutz
 
Polyglot Applications with GraalVM
Polyglot Applications with GraalVMPolyglot Applications with GraalVM
Polyglot Applications with GraalVM
 
Java notes | All Basics |
Java notes | All Basics |Java notes | All Basics |
Java notes | All Basics |
 
Java for C++ programers
Java for C++ programersJava for C++ programers
Java for C++ programers
 
JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...
JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...
JavaCro'15 - Everything a Java EE Developer needs to know about the JavaScrip...
 
Java (1)
Java (1)Java (1)
Java (1)
 
Apache Drill (ver. 0.1, check ver. 0.2)
Apache Drill (ver. 0.1, check ver. 0.2)Apache Drill (ver. 0.1, check ver. 0.2)
Apache Drill (ver. 0.1, check ver. 0.2)
 
Devoxx%202008%20Tutorial
Devoxx%202008%20TutorialDevoxx%202008%20Tutorial
Devoxx%202008%20Tutorial
 

More from Russel Winder

More from Russel Winder (20)

On Concurrency and Parallelism in the JVMverse
On Concurrency and Parallelism in the JVMverseOn Concurrency and Parallelism in the JVMverse
On Concurrency and Parallelism in the JVMverse
 
On the Architectures of Microservices: the next layer
On the Architectures of Microservices: the next layerOn the Architectures of Microservices: the next layer
On the Architectures of Microservices: the next layer
 
Fast Python? Don't Bother
Fast Python? Don't BotherFast Python? Don't Bother
Fast Python? Don't Bother
 
GPars Remoting
GPars RemotingGPars Remoting
GPars Remoting
 
GPars 2014
GPars 2014GPars 2014
GPars 2014
 
Spocktacular testing
Spocktacular testingSpocktacular testing
Spocktacular testing
 
Spocktacular Testing
Spocktacular TestingSpocktacular Testing
Spocktacular Testing
 
Is Groovy static or dynamic
Is Groovy static or dynamicIs Groovy static or dynamic
Is Groovy static or dynamic
 
Dataflow: the concurrency/parallelism architecture you need
Dataflow: the concurrency/parallelism architecture you needDataflow: the concurrency/parallelism architecture you need
Dataflow: the concurrency/parallelism architecture you need
 
Are Go and D threats to Python
Are Go and D threats to PythonAre Go and D threats to Python
Are Go and D threats to Python
 
Is Groovy as fast as Java
Is Groovy as fast as JavaIs Groovy as fast as Java
Is Groovy as fast as Java
 
Who needs C++ when you have D and Go
Who needs C++ when you have D and GoWho needs C++ when you have D and Go
Who needs C++ when you have D and Go
 
Why Go is an important programming language
Why Go is an important programming languageWhy Go is an important programming language
Why Go is an important programming language
 
GPars: Groovy Parallelism for Java
GPars: Groovy Parallelism for JavaGPars: Groovy Parallelism for Java
GPars: Groovy Parallelism for Java
 
GroovyFX: or how to program JavaFX easily
GroovyFX: or how to program JavaFX easily GroovyFX: or how to program JavaFX easily
GroovyFX: or how to program JavaFX easily
 
Switch to Python 3…now…immediately
Switch to Python 3…now…immediatelySwitch to Python 3…now…immediately
Switch to Python 3…now…immediately
 
GPars Workshop
GPars WorkshopGPars Workshop
GPars Workshop
 
Given Groovy Who Needs Java
Given Groovy Who Needs JavaGiven Groovy Who Needs Java
Given Groovy Who Needs Java
 
Testing: Python, Java, Groovy, etc.
Testing: Python, Java, Groovy, etc.Testing: Python, Java, Groovy, etc.
Testing: Python, Java, Groovy, etc.
 
Why Groovy When Java 8 or Scala, or…
Why Groovy When Java 8 or Scala, or…Why Groovy When Java 8 or Scala, or…
Why Groovy When Java 8 or Scala, or…
 

Recently uploaded

CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Recently uploaded (20)

Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 

Java is Dead, Long Live Ceylon, Kotlin, etc

  • 1. Copyright © 2015 Russel Winder 1 Java is Dead Long Live Ceylon, Kotlin, etc. Dr Russel Winder email: russel@winder.org.uk twitter: @russel_winder Web: http://www.russel.org.uk
  • 2. Copyright © 2015 Russel Winder 2 Java is Dead
  • 3. Copyright © 2015 Russel Winder 3 Java is Dying
  • 4. Copyright © 2015 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. Copyright © 2015 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 been doing great work on this for a while, but )… ● Have a reasonable module system, cf. Jigsaw vs. OSGi. ● Be a real object-oriented language.
  • 6. Copyright © 2015 Russel Winder 6 Prognosis: not great
  • 7. Copyright © 2015 Russel Winder 7 Trust me I'm a doctor.
  • 8. Copyright © 2015 Russel Winder 8 Alternatives?
  • 9. Copyright © 2015 Russel Winder 9 Create a new language ● Java is a statically typed, compiled language, so create a new statically typed compiled language: ● Kotlin, Ceylon ● Scala, Frege ● Fantom ● Gosu ● ?
  • 10. Copyright © 2015 Russel Winder 10 Gross oversimplifications…
  • 11. Copyright © 2015 Russel Winder 11 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.
  • 12. Copyright © 2015 Russel Winder 12 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. ● Runs on Android.
  • 13. Copyright © 2015 Russel Winder 13 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.
  • 14. Copyright © 2015 Russel Winder 14 Frege ● Pure functional language based on Haskell. ● Completely declarative. ● Strong static type checking.
  • 15. Copyright © 2015 Russel Winder 15 Fantom ● Top-level functions. ● Object-oriented. ● Integrated modules system via pods. ● Targets JVM and CLR.
  • 16. Copyright © 2015 Russel Winder 16 Gosu ● Top-level functions. ● Object-oriented. ● Scripts.
  • 17. Copyright © 2015 Russel Winder 17 ? The identity of this statically typed, object-oriented (with functional bits) language for the JVM will remain unnamed at this time to preserve an air of mystery and suspense.
  • 18. Copyright © 2015 Russel Winder 18
  • 19. Copyright © 2015 Russel Winder 19 Code!
  • 20. Copyright © 2015 Russel Winder 20
  • 21. Copyright © 2015 Russel Winder 21 
  • 22. Copyright © 2015 Russel Winder 22
  • 23. Copyright © 2015 Russel Winder 23 What is the value of ?
  • 24. Copyright © 2015 Russel Winder 24 Well that's easy, it's…
  • 25. Copyright © 2015 Russel Winder 25 
  • 26. Copyright © 2015 Russel Winder 26 Exactly.
  • 27. Copyright © 2015 Russel Winder 27 It's simples. Александр Орлов 2009
  • 28. Copyright © 2015 Russel Winder 28 But is it irrational?
  • 29. Copyright © 2015 Russel Winder 29 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
  • 30. Copyright © 2015 Russel Winder 30 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.
  • 31. Copyright © 2015 Russel Winder 31 Code!
  • 32. Copyright © 2015 Russel Winder 32 Java Ceylon Kotlin Scala Frege
  • 33. Copyright © 2015 Russel Winder 33 Because addition is commutative and associative, expression can be decomposed into sums of partial sums.
  • 34. Copyright © 2015 Russel Winder 34 a + b + c + d + e + f = ( a + b ) + ( c + d ) + ( e + f )
  • 35. Copyright © 2015 Russel Winder 35 Scatter Gather— map reduce data parallel
  • 36. Copyright © 2015 Russel Winder 36 Code!
  • 37. Copyright © 2015 Russel Winder 37 Java Ceylon Kotlin Scala
  • 38. Copyright © 2015 Russel Winder 38 ?
  • 39. Copyright © 2015 Russel Winder 39 Surprise time…
  • 40. Copyright © 2015 Russel Winder 40 JVM is a Groovy place
  • 41. Copyright © 2015 Russel Winder 41 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.
  • 42. Copyright © 2015 Russel Winder 42 Groovy A statically typed, compiled language.
  • 43. Copyright © 2015 Russel Winder 43 @TypeChecked @CompileStatic
  • 44. Copyright © 2015 Russel Winder 44 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.
  • 45. Copyright © 2015 Russel Winder 45 Code!
  • 46. Copyright © 2015 Russel Winder 46
  • 47. Copyright © 2015 Russel Winder 47 Code!
  • 48. Copyright © 2015 Russel Winder 48 Java is not the future programming language for the Java Platform.
  • 49. Copyright © 2015 Russel Winder 49 Kotlin, Ceylon, Groovy, Scala, Frege, … are the future of static languages on the Java Platform.
  • 50. Copyright © 2015 Russel Winder 50 2014-03-18
  • 51. Copyright © 2015 Russel Winder 51 Java 8 Released
  • 52. Copyright © 2015 Russel Winder 52 Java 8 has been the biggest revolution in Java since 1994. Bigger than Java 5.
  • 53. Copyright © 2015 Russel Winder 53 Has Java revived? Is this a new lease of life?
  • 54. Copyright © 2015 Russel Winder 54 What's Interesting in Java 8? ● G1 garbage collector. ● Nashorn. ● JavaFX. ● Lambda expressions. ● Default methods in interfaces (traits). ● Enhanced collections. ● Method references.
  • 55. Copyright © 2015 Russel Winder 55 G1 garbage collector is now the standard: no more PermGen.
  • 56. Copyright © 2015 Russel Winder 56 Nashorn comes as standard: Server-side JavaScript without Rhino.
  • 57. Copyright © 2015 Russel Winder 57 JavaFX in the distribution: you will want to use GroovyFX though. Use Griffon
  • 58. Copyright © 2015 Russel Winder 58 Lambda expressions, method references default methods in interfaces, associated collections enhancements.
  • 59. Copyright © 2015 Russel Winder 59 Code!
  • 60. Copyright © 2015 Russel Winder 60 Java is Dead Long Live Kotlin, Ceylon, etc. Russel Winder email: russel@winder.org.uk twitter: @russel_winder Web: http://www.russel.org.uk
  • 61. Copyright © 2015 Russel Winder 61 Java is Dead Long Live Java Russel Winder email: russel@winder.org.uk twitter: @russel_winder Web: http://www.russel.org.uk
  • 62. Copyright © 2015 Russel Winder 62 Java is Dead Long Live Groovy Russel Winder email: russel@winder.org.uk twitter: @russel_winder Web: http://www.russel.org.uk
  • 63. Copyright © 2015 Russel Winder 63 Java is Dead Long Live Kotlin, Ceylon, etc. Russel Winder email: russel@winder.org.uk twitter: @russel_winder Web: http://www.russel.org.uk