Submit Search
Upload
Java is dead, long live Scala, Kotlin, Ceylon, etc.
•
0 likes
•
2,450 views
Russel Winder
Follow
/dev/winter 2015 session slides.
Read less
Read more
Technology
Report
Share
Report
Share
1 of 61
Download now
Download to read offline
Recommended
Java is Dead, Long Live Ceylon, Kotlin, etc
Java is Dead, Long Live Ceylon, Kotlin, etc
Russel Winder
Java is dead, long live Scala Kotlin Ceylon etc.
Java is dead, long live Scala Kotlin Ceylon etc.
Russel Winder
Making Python computations fast
Making Python computations fast
Russel Winder
The Case for Kotlin and Ceylon
The Case for Kotlin and Ceylon
Russel Winder
On the Architectures of Microservices: the next layer
On the Architectures of Microservices: the next layer
Russel Winder
Canary deployment with Traefik and K3S
Canary deployment with Traefik and K3S
Jakub Hajek
K8s from Zero to ~Hero~ Seasoned Beginner
K8s from Zero to ~Hero~ Seasoned Beginner
Kristof Jozsa
Rancher master class globalized edge workloads with k3s
Rancher master class globalized edge workloads with k3s
Joseph Marhee
Recommended
Java is Dead, Long Live Ceylon, Kotlin, etc
Java is Dead, Long Live Ceylon, Kotlin, etc
Russel Winder
Java is dead, long live Scala Kotlin Ceylon etc.
Java is dead, long live Scala Kotlin Ceylon etc.
Russel Winder
Making Python computations fast
Making Python computations fast
Russel Winder
The Case for Kotlin and Ceylon
The Case for Kotlin and Ceylon
Russel Winder
On the Architectures of Microservices: the next layer
On the Architectures of Microservices: the next layer
Russel Winder
Canary deployment with Traefik and K3S
Canary deployment with Traefik and K3S
Jakub Hajek
K8s from Zero to ~Hero~ Seasoned Beginner
K8s from Zero to ~Hero~ Seasoned Beginner
Kristof Jozsa
Rancher master class globalized edge workloads with k3s
Rancher master class globalized edge workloads with k3s
Joseph Marhee
Docker Introduction
Docker Introduction
Carlos Badenes-Olmedo
Fast Python? Don't Bother
Fast Python? Don't Bother
Russel Winder
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
dotCloud
Timed Text At Netflix
Timed Text At Netflix
Rohit Puri
Clean Infrastructure as Code
Clean Infrastructure as Code
QAware GmbH
Eclipse Modeling Guided Tour - Acceleo Query Language (AQL)
Eclipse Modeling Guided Tour - Acceleo Query Language (AQL)
Cédric Brun
NetflixOSS Meetup season 3 episode 1
NetflixOSS Meetup season 3 episode 1
Ruslan Meshenberg
Declarative Import with Magento 2 Import Framework (M2IF)
Declarative Import with Magento 2 Import Framework (M2IF)
Tim Wagner
Efficient DevOps Tooling with Java and GraalVM
Efficient DevOps Tooling with Java and GraalVM
QAware GmbH
The Road to Kubernetes
The Road to Kubernetes
Deniz Zoeteman
Securing Container Deployments from Build to Ship to Run - August 2017 - Ranc...
Securing Container Deployments from Build to Ship to Run - August 2017 - Ranc...
Shannon Williams
A basic overview of Containers
A basic overview of Containers
Divakar Sharma
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...
Shannon Williams
Swift on the Server
Swift on the Server
Dev_Events
PyConIT 2018 Writing and deploying serverless python applications
PyConIT 2018 Writing and deploying serverless python applications
Cesar Cardenas Desales
Storage for containers and cloud-native deployments - Rancher Online Meetup -...
Storage for containers and cloud-native deployments - Rancher Online Meetup -...
Shannon Williams
Introducing Project Longhorn - April 2016 Rancher Online Meetup
Introducing Project Longhorn - April 2016 Rancher Online Meetup
Shannon Williams
Игорь Фесенко "Direction of C# as a High-Performance Language"
Игорь Фесенко "Direction of C# as a High-Performance Language"
Fwdays
Processing TeraBytes of data every day and sleeping at night
Processing TeraBytes of data every day and sleeping at night
Luciano Mammino
DevOps from the Provider Perspective
DevOps from the Provider Perspective
Pat Patterson
Jax keynote
Jax keynote
Marcus Lagergren
Reflection Madness - Dr. Heinz Kabutz
Reflection Madness - Dr. Heinz Kabutz
JAXLondon2014
More Related Content
What's hot
Docker Introduction
Docker Introduction
Carlos Badenes-Olmedo
Fast Python? Don't Bother
Fast Python? Don't Bother
Russel Winder
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
dotCloud
Timed Text At Netflix
Timed Text At Netflix
Rohit Puri
Clean Infrastructure as Code
Clean Infrastructure as Code
QAware GmbH
Eclipse Modeling Guided Tour - Acceleo Query Language (AQL)
Eclipse Modeling Guided Tour - Acceleo Query Language (AQL)
Cédric Brun
NetflixOSS Meetup season 3 episode 1
NetflixOSS Meetup season 3 episode 1
Ruslan Meshenberg
Declarative Import with Magento 2 Import Framework (M2IF)
Declarative Import with Magento 2 Import Framework (M2IF)
Tim Wagner
Efficient DevOps Tooling with Java and GraalVM
Efficient DevOps Tooling with Java and GraalVM
QAware GmbH
The Road to Kubernetes
The Road to Kubernetes
Deniz Zoeteman
Securing Container Deployments from Build to Ship to Run - August 2017 - Ranc...
Securing Container Deployments from Build to Ship to Run - August 2017 - Ranc...
Shannon Williams
A basic overview of Containers
A basic overview of Containers
Divakar Sharma
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...
Shannon Williams
Swift on the Server
Swift on the Server
Dev_Events
PyConIT 2018 Writing and deploying serverless python applications
PyConIT 2018 Writing and deploying serverless python applications
Cesar Cardenas Desales
Storage for containers and cloud-native deployments - Rancher Online Meetup -...
Storage for containers and cloud-native deployments - Rancher Online Meetup -...
Shannon Williams
Introducing Project Longhorn - April 2016 Rancher Online Meetup
Introducing Project Longhorn - April 2016 Rancher Online Meetup
Shannon Williams
Игорь Фесенко "Direction of C# as a High-Performance Language"
Игорь Фесенко "Direction of C# as a High-Performance Language"
Fwdays
Processing TeraBytes of data every day and sleeping at night
Processing TeraBytes of data every day and sleeping at night
Luciano Mammino
DevOps from the Provider Perspective
DevOps from the Provider Perspective
Pat Patterson
What's hot
(20)
Docker Introduction
Docker Introduction
Fast Python? Don't Bother
Fast Python? Don't Bother
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Lightweight Virtualization with Linux Containers and Docker | YaC 2013
Timed Text At Netflix
Timed Text At Netflix
Clean Infrastructure as Code
Clean Infrastructure as Code
Eclipse Modeling Guided Tour - Acceleo Query Language (AQL)
Eclipse Modeling Guided Tour - Acceleo Query Language (AQL)
NetflixOSS Meetup season 3 episode 1
NetflixOSS Meetup season 3 episode 1
Declarative Import with Magento 2 Import Framework (M2IF)
Declarative Import with Magento 2 Import Framework (M2IF)
Efficient DevOps Tooling with Java and GraalVM
Efficient DevOps Tooling with Java and GraalVM
The Road to Kubernetes
The Road to Kubernetes
Securing Container Deployments from Build to Ship to Run - August 2017 - Ranc...
Securing Container Deployments from Build to Ship to Run - August 2017 - Ranc...
A basic overview of Containers
A basic overview of Containers
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...
Swift on the Server
Swift on the Server
PyConIT 2018 Writing and deploying serverless python applications
PyConIT 2018 Writing and deploying serverless python applications
Storage for containers and cloud-native deployments - Rancher Online Meetup -...
Storage for containers and cloud-native deployments - Rancher Online Meetup -...
Introducing Project Longhorn - April 2016 Rancher Online Meetup
Introducing Project Longhorn - April 2016 Rancher Online Meetup
Игорь Фесенко "Direction of C# as a High-Performance Language"
Игорь Фесенко "Direction of C# as a High-Performance Language"
Processing TeraBytes of data every day and sleeping at night
Processing TeraBytes of data every day and sleeping at night
DevOps from the Provider Perspective
DevOps from the Provider Perspective
Similar to Java is dead, long live Scala, Kotlin, Ceylon, etc.
Jax keynote
Jax keynote
Marcus Lagergren
Reflection Madness - Dr. Heinz Kabutz
Reflection Madness - Dr. Heinz Kabutz
JAXLondon2014
Java Tutorial to Learn Java Programming
Java Tutorial to Learn Java Programming
business Corporate
QEWD.js: Have your Node.js Cake and Eat It Too
QEWD.js: Have your Node.js Cake and Eat It Too
Rob Tweed
Graal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution Platform
Thomas Wuerthinger
Introduction to Java Programming
Introduction to Java Programming
Ravi Kant Sahu
Java for C++ programers
Java for C++ programers
Salahaddin University-Erbil
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...
HUJAK - Hrvatska udruga Java korisnika / Croatian Java User Association
JRuby in a Java World
JRuby in a Java World
Mark Menard
Polyglot Applications with GraalVM
Polyglot Applications with GraalVM
jexp
Java 8: a New Beginning
Java 8: a New Beginning
Russel Winder
Dataflow, the Forgotten Way - Russel Winder
Dataflow, the Forgotten Way - Russel Winder
ploibl
Dataflow, the Forgotten Way - Russel Winder
Dataflow, the Forgotten Way - Russel Winder
JAXLondon2014
Core java programming tutorial - Brainsmartlabs
Core java programming tutorial - Brainsmartlabs
brainsmartlabsedu
L1 basics
L1 basics
teach4uin
Tales from the Workshops
Tales from the Workshops
Russel Winder
Devoxx%202008%20Tutorial
Devoxx%202008%20Tutorial
tutorialsruby
Devoxx%202008%20Tutorial
Devoxx%202008%20Tutorial
tutorialsruby
Java (1)
Java (1)
Samraiz Tejani
Chapter-1 Introduction.pptx
Chapter-1 Introduction.pptx
SumanBhandari40
Similar to Java is dead, long live Scala, Kotlin, Ceylon, etc.
(20)
Jax keynote
Jax keynote
Reflection Madness - Dr. Heinz Kabutz
Reflection Madness - Dr. Heinz Kabutz
Java Tutorial to Learn Java Programming
Java Tutorial to Learn Java Programming
QEWD.js: Have your Node.js Cake and Eat It Too
QEWD.js: Have your Node.js Cake and Eat It Too
Graal VM: Multi-Language Execution Platform
Graal VM: Multi-Language Execution Platform
Introduction to Java Programming
Introduction to Java Programming
Java 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...
JRuby in a Java World
JRuby in a Java World
Polyglot Applications with GraalVM
Polyglot Applications with GraalVM
Java 8: a New Beginning
Java 8: a New Beginning
Dataflow, the Forgotten Way - Russel Winder
Dataflow, the Forgotten Way - Russel Winder
Dataflow, the Forgotten Way - Russel Winder
Dataflow, the Forgotten Way - Russel Winder
Core java programming tutorial - Brainsmartlabs
Core java programming tutorial - Brainsmartlabs
L1 basics
L1 basics
Tales from the Workshops
Tales from the Workshops
Devoxx%202008%20Tutorial
Devoxx%202008%20Tutorial
Devoxx%202008%20Tutorial
Devoxx%202008%20Tutorial
Java (1)
Java (1)
Chapter-1 Introduction.pptx
Chapter-1 Introduction.pptx
More from Russel Winder
On Concurrency and Parallelism in the JVMverse
On Concurrency and Parallelism in the JVMverse
Russel Winder
Making Computations Execute Very Quickly
Making Computations Execute Very Quickly
Russel Winder
GPars Remoting
GPars Remoting
Russel Winder
GPars 2014
GPars 2014
Russel Winder
Spocktacular testing
Spocktacular testing
Russel Winder
Spocktacular Testing
Spocktacular Testing
Russel Winder
Is Groovy static or dynamic
Is Groovy static or dynamic
Russel Winder
Dataflow: the concurrency/parallelism architecture you need
Dataflow: the concurrency/parallelism architecture you need
Russel Winder
Are Go and D threats to Python
Are Go and D threats to Python
Russel Winder
Is Groovy as fast as Java
Is Groovy as fast as Java
Russel Winder
Who needs C++ when you have D and Go
Who needs C++ when you have D and Go
Russel Winder
Why Go is an important programming language
Why Go is an important programming language
Russel Winder
GPars: Groovy Parallelism for Java
GPars: Groovy Parallelism for Java
Russel Winder
GroovyFX: or how to program JavaFX easily
GroovyFX: or how to program JavaFX easily
Russel Winder
Switch to Python 3…now…immediately
Switch to Python 3…now…immediately
Russel Winder
GPars Workshop
GPars Workshop
Russel Winder
Given Groovy Who Needs Java
Given Groovy Who Needs Java
Russel Winder
Testing: Python, Java, Groovy, etc.
Testing: Python, Java, Groovy, etc.
Russel Winder
Why Groovy When Java 8 or Scala, or…
Why Groovy When Java 8 or Scala, or…
Russel Winder
Closures: The Next "Big Thing" In Java
Closures: The Next "Big Thing" In Java
Russel Winder
More from Russel Winder
(20)
On Concurrency and Parallelism in the JVMverse
On Concurrency and Parallelism in the JVMverse
Making Computations Execute Very Quickly
Making Computations Execute Very Quickly
GPars Remoting
GPars Remoting
GPars 2014
GPars 2014
Spocktacular testing
Spocktacular testing
Spocktacular Testing
Spocktacular Testing
Is Groovy static or dynamic
Is Groovy static or dynamic
Dataflow: 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 Python
Is 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 Go
Why Go is an important programming language
Why Go is an important programming language
GPars: Groovy Parallelism for Java
GPars: Groovy Parallelism for Java
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…immediately
GPars Workshop
GPars Workshop
Given Groovy Who Needs Java
Given Groovy Who Needs Java
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…
Closures: The Next "Big Thing" In Java
Closures: The Next "Big Thing" In Java
Recently uploaded
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
Enterprise Knowledge
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
RTylerCroy
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
Khem
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
The Digital Insurer
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
ThousandEyes
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
Safe Software
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
wesley chun
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
naman860154
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
The Digital Insurer
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Maria Levchenko
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Puma Security, LLC
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
Enterprise Knowledge
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Delhi Call girls
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
UK Journal
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
naman860154
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
sudhanshuwaghmare1
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Miguel Araújo
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
HampshireHUG
Recently uploaded
(20)
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
🐬 The future of MySQL is Postgres 🐘
🐬 The future of MySQL is Postgres 🐘
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
How to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
Java is dead, long live Scala, Kotlin, Ceylon, etc.
1.
Copyright © 2014
Russel Winder 1 Java is Dead Long Live Scala, Kotlin, Ceylon, etc. Russel Winder email: russel@winder.org.uk twitter: @russel_winder Web: http://www.russel.org.uk
2.
Copyright © 2014
Russel Winder 2 Java is Dead
3.
Copyright © 2014
Russel Winder 3 Java is Dying
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.
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.
Copyright © 2014
Russel Winder 6 Prognosis: not great
7.
Copyright © 2014
Russel Winder 7 Alternatives?
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 ● Gosu ● ?
9.
Copyright © 2014
Russel Winder 9 Gross oversimplifications…
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.
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.
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.
Copyright © 2014
Russel Winder 13 Fantom ● Top-level functions. ● Object-oriented. ● Integrated modules system via pods. ● Targets JVM and CLR.
14.
Copyright © 2014
Russel Winder 14 Gosu ● Top-level functions. ● Object-oriented. ● Scripts.
15.
Copyright © 2014
Russel Winder 15 ? 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.
16.
Copyright © 2014
Russel Winder 16
17.
Copyright © 2014
Russel Winder 17 Code!
18.
Copyright © 2014
Russel Winder 18
19.
Copyright © 2014
Russel Winder 19
20.
Copyright © 2014
Russel Winder 20
21.
Copyright © 2014
Russel Winder 21 What is the value of ?
22.
Copyright © 2014
Russel Winder 22 Well that's easy, it's…
23.
Copyright © 2014
Russel Winder 23
24.
Copyright © 2014
Russel Winder 24 Obviously.
25.
Copyright © 2014
Russel Winder 25 It's simples Александр Орлов 2009
26.
Copyright © 2014
Russel Winder 26 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
27.
Copyright © 2014
Russel Winder 27 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.
28.
Copyright © 2014
Russel Winder 28 Because addition is commutative and associative, expression can be decomposed into sums of partial sums.
29.
Copyright © 2014
Russel Winder 29 a + b + c + d + e + f = ( a + b ) + ( c + d ) + ( e + f )
30.
Copyright © 2014
Russel Winder 30 Scatter Gather— map reduce data parallel
31.
Copyright © 2014
Russel Winder 31 Code!
32.
Copyright © 2014
Russel Winder 32 Scala Kotlin Ceylon
33.
Copyright © 2014
Russel Winder 33 ?
34.
Copyright © 2014
Russel Winder 34 Surprise time…
35.
Copyright © 2014
Russel Winder 35 JVM is a Groovy place
36.
Copyright © 2014
Russel Winder 36 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.
37.
Copyright © 2014
Russel Winder 37 Groovy A statically typed, compiled language.
38.
Copyright © 2014
Russel Winder 38 @TypeChecked @CompileStatic
39.
Copyright © 2014
Russel Winder 39 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.
40.
Copyright © 2014
Russel Winder 40 Code!
41.
Copyright © 2014
Russel Winder 41
42.
Copyright © 2014
Russel Winder 42 Code!
43.
Copyright © 2014
Russel Winder 43 Did I mention invokedynamic?
44.
Copyright © 2014
Russel Winder 44 Code!
45.
Copyright © 2014
Russel Winder 45 Java is Dead!
46.
Copyright © 2014
Russel Winder 46 Groovy (or Scala, Kotlin, Ceylon, Fantom, )… is the future of static languages on the JVM.
47.
Copyright © 2014
Russel Winder 47 2014-03-18
48.
Copyright © 2014
Russel Winder 48 Java 8 Released
49.
Copyright © 2014
Russel Winder 49 Java 8 is the biggest revolution in Java since 1994. Bigger than Java 5.
50.
Copyright © 2014
Russel Winder 50 Has Java revived? Is this a new lease of life?
51.
Copyright © 2014
Russel Winder 51 What's Interesting in Java 8? ● G1 garbage collector. ● Nashorn. ● JavaFX. ● Lambda expressions. ● Default methods in interfaces (traits). ● Enhanced collections. ● Method references.
52.
Copyright © 2014
Russel Winder 52 G1 garbage collector is now the standard: no more PermGen.
53.
Copyright © 2014
Russel Winder 53 Nashorn comes as standard: Server-side JavaScript without Rhino.
54.
Copyright © 2014
Russel Winder 54 JavaFX in the distribution: you will want to use GroovyFX though.
55.
Copyright © 2014
Russel Winder 55 Lambda expressions, default methods in interfaces, associated collections enhancements.
56.
Copyright © 2014
Russel Winder 56 Code!
57.
Copyright © 2014
Russel Winder 57
58.
Copyright © 2014
Russel Winder 58 Code!
59.
Copyright © 2014
Russel Winder 59 Java is Dead Long Live Scala, Kotlin, Ceylon, etc. Russel Winder email: russel@winder.org.uk twitter: @russel_winder Web: http://www.russel.org.uk
60.
Copyright © 2014
Russel Winder 60 Java is Dead Long Live Java Russel Winder email: russel@winder.org.uk twitter: @russel_winder Web: http://www.russel.org.uk
61.
Copyright © 2014
Russel Winder 61 Java is Dead Long Live Groovy Russel Winder email: russel@winder.org.uk twitter: @russel_winder Web: http://www.russel.org.uk
Download now