next generation javaalt.java-forum-stuttgart.de/jfs/2012/folien/a1ersatzvortrag.pdf · next...
Post on 16-Oct-2020
3 Views
Preview:
TRANSCRIPT
Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick
Autor: dogmadic : http://www.sxc.hu/photo/436457
http://www.sxc.hu/photo/36128
Disclaimer
Next Generation JVM Languages 2 |
Java
Übersicht & Entwicklung JVM Sprachen
Next Generation JVM Languages 3 |
Inzwischen über 50 verschiedene Sprachen auf der JVM…
[...] programming by larger groups of people or by smaller groups over
longer time periods [...] result in large, and hence complicated, programs
[...] place emphasis on partitioning work into modules with precisely-
specified interactions.
http://en.wikipedia.org/wiki/Programming_in_the_large_and_programming_in_the_small
sprachen für den Unternehmenseinsatz
–
–
Next Generation JVM Languages 4 |
Übersicht & Entwicklung JVM Sprachen
Next Generation JVM Languages 5 |
JVM Sprachen im Überblick (Historie)
Next Generation JVM Languages 6 |
Next Generation JVM Languages 7 |
Beginning Buzz-Word Bingoing….
http://www.sxc.hu/photo/377913
Von Lambdas und „1. Klasse“-Rechnen
Next Generation JVM Languages 8 |
Next Generation JVM Languages 9 |
http://www.flickr.com/photos/tonino62/2295302323/ .
Scala im Portrait
Next Generation JVM Languages 10 |
l
–
Scala im Portrait
Next Generation JVM Languages 11 |
l
–
l
–
–
Traits & Mixins
trait Similarity {
def isSimilar(x: Any): Boolean
def isNotSimilar(x: Any): Boolean = !isSimilar(x)
}
Next Generation JVM Languages 12 |
Extension Methods
l
l
Next Generation JVM Languages 13 |
Scala & Ko-/Kontravarianz
Next Generation JVM Languages 14 | http://www.sxc.hu/photo/330223
TL;DR Too long; didn‘t read
Scala im Portrait
Next Generation JVM Languages 15 |
l
–
l
–
–
l
–
–
Next Generation JVM Languages 16 |
Pattern Matching = Instanceof++
Next Generation JVM Languages 17 |
Scala Hello World
Next Generation JVM Languages 18 |
package examples
/** Quick sort, functional style */
object sort1 {
def sort(a: List[Int]): List[Int] = {
if (a.length < 2)
a
else {
val pivot = a(a.length / 2)
sort(a.filter(_ < pivot)) :::
a.filter(_ == pivot) :::
sort(a.filter(_ > pivot))
}
}
def main(args: Array[String]) {
val xs = List(6, 2, 8, 5, 1)
println(xs)
println(sort(xs))
}
}
Erfahrungen
l–
–
–
l–
–
l–
–
l
Next Generation JVM Languages 19 |
JVM Sprachen im Überblick (Features)
Next Generation JVM Languages 20 |
Scala Summary
l
–
–
l
l
–
–
l
Next Generation JVM Languages 21 |
Next Generation JVM Languages 22 | http://www.sxc.hu/photo/366158
Fantom
Fantom : Portabilität
l
l
–
–
–
Next Generation JVM Languages 23 |
„one portable system, graphics, and widget library
that just works everywhere”
Fantom im Portrait
l
–
–
l
–
–
l
–
–
–
–
Next Generation JVM Languages 24 |
Fantom : Quadratur der Kreise
l
l
l
obj.methode()
obj->methode()
l
l
Next Generation JVM Languages 25 |
Fantom : Multi-Threading
–
–
–
Next Generation JVM Languages 26 |
Fantom : Elegante APIs und Sprache
–
–
–
–
–
–
–
–
Next Generation JVM Languages 27 |
Fantom Hello World (Webapp)
Next Generation JVM Languages 28 |
using util
using web
using wisp
class WebHello : AbstractMain
{
@Opt { help = "http port" }
Int port := 8080
override Int run()
{
wisp := WispService
{
it.port = this.port
it.root = HelloMod()
}
return runServices([wisp])
}
}
const class HelloMod : WebMod
{
override Void onGet()
{
res.headers["Content-Type"] =
"text/plain; charset=utf-8"
res.out.print("hello world #4")
}
}
Fantom: Summary
l–
–
–
l
l–
–
–
Next Generation JVM Languages 29 |
JVM Sprachen im Überblick (Features)
Next Generation JVM Languages 30 |
Next Generation JVM Languages 31 |
http://bit.ly/LKM5YG
Ceylon im Portrait
–
–
–
–
–
Next Generation JVM Languages 32 |
„Ceylon’s goal is to design the language that Java would have been
if its designers had been able to predict the future.”
Ceylon: Code Example
Next Generation JVM Languages 33 |
doc "A component"
shared abstract class Component() {
OpenList<Callable<Void,Event>> observers =
OpenList<Callable<Void,Event>>();
shared void addObserver(void observe(Event event)) {
observers.append(observe);
}
shared void fire(Event event) {
for (void observe(Event event) in observers) {
observe(event);
}
}
}
…bisschen Spannendes hat Ceylon aber schon…
l
l
l
Next Generation JVM Languages 34 | http://www.sxc.hu/photo/732192
Nullables
Next Generation JVM Languages 35 |
Von Typen mit und ohne Charakter
Next Generation JVM Languages 36 |
Ceylon: Summary
l
l
–
–
–
–
–
–
Next Generation JVM Languages 37 |
JVM Sprachen im Überblick (Features)
Next Generation JVM Languages 38 |
Next Generation JVM Languages 39 | http://www.sxc.hu/photo/1339625
Kotlin im Portrait
l
–
–
–
–
–
Next Generation JVM Languages 40 |
“General-purpose language intended for industrial use”
Kotlin = Java++ bzw. Skala--
Kotlin Motivation & Hintergrund
l
–
–
–
–
Next Generation JVM Languages 41 |
“Although we’ve developed support for several JVM-targeted programming languages,
we are still writing all of our IntelliJ-based IDEs almost entirely in Java.
We want to become more productive by switching to a more expressive language.”
Next Generation JVM Languages 42 |
Kotlin Sprach-Features
l
l
l
l
l
l
l
l
l
Next Generation JVM Languages 43 |
Kotlin: Online Demo
Next Generation JVM Languages 44 |
Kotlin Summary:
l
l
l
l
l
l
Next Generation JVM Languages 45 |
JVM Sprachen im Überblick (Features)
Next Generation JVM Languages 46 |
Resumee
Next Generation JVM Languages 47 | http://www.sxc.hu/photo/1022369
JVM Sprachen im Überblick (Features)
Next Generation JVM Languages 48 |
JVM Sprachen im Überblick (Projekt)
Next Generation JVM Languages 49 |
Next Generation JVM Languages 50 |
Resumée
Resumée
l
l–
–
Next Generation JVM Languages 51 |
Next Generation JVM Languages 52 | Autor: woodleywonderworks
http://www.flickr.com/photos/wwworks/4759535950/
Weiterführende Information
Benjamin.Schmid@exxcellent.de
Scala: http://www.scala-lang.org/
Ceylon: http://ceylon-lang.org/
Kotlin: http://blog.jetbrains.com/kotlin/
Kotlin Demo: http://kotlin-demo.jetbrains.com/
Fantom vs. Kotlin http://fantom.org/sidewalk/topic/1581
Gosu: http://gosu-lang.org/
Search for a better Java:
http://blog.joda.org/2011/07/kotlin-and-search-for-
better-java_9066.html
top related