99
Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick Autor: dogmadic : http://www.sxc.hu/photo/436457 http://www.sxc.hu/photo/36128

Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Next Generation Java Ceylon, Kotlin, Scala & Fantom im Überblick

Autor: dogmadic : http://www.sxc.hu/photo/436457

http://www.sxc.hu/photo/36128

Page 2: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Disclaimer

Next Generation JVM Languages 2 |

Java

Page 3: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Überblick

Next Generation JVM Languages 3 |

3.

Page 4: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Überblick

Next Generation JVM Languages 4 |

3.

Page 5: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Ist Java das neue Cobol?

Next Generation JVM Languages 5 | http://www.sxc.hu/photo/1389360

Page 6: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Ein BLick auf die .NET Plattform

l

l

l

Next Generation JVM Languages 6 |

Page 7: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

The JVM at a glance

l

l

l

Next Generation JVM Languages 7 |

Page 8: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Das Java- Universum

Next Generation JVM Languages 8 |

Page 9: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

3.

Überblick

Next Generation JVM Languages 9 |

Page 10: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Warum neue JVM Sprachen?

Next Generation JVM Languages 10 |

Page 11: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Next Generation JVM Languages 11 |

Beginning Buzz-Word Bingo….

http://www.sxc.hu/photo/377913

Page 12: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Warum neue JVM Sprachen?

Next Generation JVM Languages 12 |

Page 13: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Von Lambdas und „1. Klasse“-Rechnen

Next Generation JVM Languages 13 |

Page 14: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Imperativ vs. Funktional: Beispiel #1 Quicksort

Next Generation JVM Languages 14 |

public void quicksort(int array[]) {

quicksort(array, 0, array.length - 1);

}

public void quicksort(int array[], int start, int end){

int i = start;

int k = end;

if (end - start >= 1) {

int pivot = array[start];

while (k > i) {

while (array[i] <= pivot && i <= end && k > i) i++;

while (array[k] > pivot && k >= start && k >= i) k--;

if (k > i) swap(array, i, k);

}

swap(array, start, k);

quicksort(array, start, k - 1);

quicksort(array, k + 1, end);

} else {

return;

}

}

public void swap(int array[], int index1, int index2) {

int temp = array[index1];

array[index1] = array[index2];

array[index2] = temp;

}

Page 15: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

public void quicksort(int array[]) {

quicksort(array, 0, array.length - 1);

}

public void quicksort(int array[], int start, int end){

int i = start;

int k = end;

if (end - start >= 1) {

int pivot = array[start];

while (k > i) {

while (array[i] <= pivot && i <= end && k > i) i++;

while (array[k] > pivot && k >= start && k >= i) k--;

if (k > i) swap(array, i, k);

}

swap(array, start, k);

quicksort(array, start, k - 1);

quicksort(array, k + 1, end);

} else {

return;

}

}

public void swap(int array[], int index1, int index2) {

int temp = array[index1];

array[index1] = array[index2];

array[index2] = temp;

}

Imperativ vs. Funktional: Beispiel #1 Quicksort

Next Generation JVM Languages 15 |

Page 16: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Imperativ vs. Funktional: Beispiel #2

Next Generation JVM Languages 16 |

int sum = 0;

for (int i = 0; i < 150; i++)

{

if (i % 5 != 0)

sum += i;

}

int sum = Enumerable.Range(0, 150).Where(i => i % 5 != 0).Sum();

f1( f2( f3( f4())))

Page 17: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Objektorientierte vs. Funktionale Programmierung

Next Generation JVM Languages 17 |

OOP

Sammlung von Objekten

Zustandsbehaftet

Iterativ

Imperativer Ablauf

F P

Sammlung von Funktionen

Zustandlos & Unveränderlich

Rekursiv

Auswertung: Lazy

Page 18: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Warum neue JVM Sprachen?

Next Generation JVM Languages 18 |

Page 19: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Dynamic Typing

Next Generation JVM Languages 19 | Practically Groovy: Building, parsing, and slurping XML

http://www.ibm.com/developerworks/java/library/j-pg05199/

Parsen und

Auflisten der Daten

Page 20: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

import org.xml.sax.SAXException;

import org.w3c.dom.*;

import javax.xml.parsers.*;

import java.io.IOException;

public class ParseXml {

public static void main(String[] args) {

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

try {

DocumentBuilder db = dbf.newDocumentBuilder();

Document doc = db.parse("src/languages.xml");

//print the "type" attribute

Element langs = doc.getDocumentElement();

System.out.println("type = " + langs.getAttribute("type"));

//print the "language" elements

NodeList list = langs.getElementsByTagName("language");

for(int i = 0 ; i < list.getLength();i++) {

Element language = (Element) list.item(i);

System.out.println(language.getTextContent());

}

}catch(ParserConfigurationException pce) {

pce.printStackTrace();

}catch(SAXException se) {

se.printStackTrace();

}catch(IOException ioe) {

ioe.printStackTrace();

}

}

}

Dynamic Typing

Next Generation JVM Languages 20 | Practically Groovy: Building, parsing, and slurping XML

http://www.ibm.com/developerworks/java/library/j-pg05199/

Parsen und

Auflisten der

Daten

Page 21: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

def langs = new XmlParser().parse("languages.xml")

println "type = ${langs.attribute("type")}"

langs.language.each{

println it.text()

}

Dynamic Typing

Next Generation JVM Languages 21 | Practically Groovy: Building, parsing, and slurping XML

http://www.ibm.com/developerworks/java/library/j-pg05199/

Parsen und

Auflisten der

Daten

Page 22: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Warum neue JVM Sprachen?

Next Generation JVM Languages 22 |

Page 23: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

List<String> languages = new LinkedList<String>();

languages.add("Java");

languages.add("Ruby");

languages.add("Python");

languages.add("Perl");

Schlankere Syntax : Listen befüllen

Next Generation JVM Languages 23 | Practically Groovy: Building, parsing, and slurping XML

http://www.ibm.com/developerworks/java/library/j-pg05199/

stuff = []

stuff << "Java", "Ruby", "Python"

Page 24: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Class Circle

private Coordinate center, float radius;

public void setCenter(Coordinate center){

this.center = center;

}

public Coordinate getCenter(){

return center;

}

public void setRadius(float radius){

this.radius = radius;

}

public Coordinate getRadius(){

return radius;

}

}

Schlankere Syntax : Getter/Setter

Next Generation JVM Languages 24 | Practically Groovy: Building, parsing, and slurping XML

http://www.ibm.com/developerworks/java/library/j-pg05199/

class Circle

attr_accessor :center, :radius

end

Page 25: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Warum neue JVM Sprachen?

Next Generation JVM Languages 25 |

Page 26: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Warum neue JVM Sprachen?

Next Generation JVM Languages 26 |

Page 27: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

java.lang.NullPointerException at com.sun.tools.javac.comp.Check.checkCompatibleConcretes(Check.java:1141)

at com.sun.tools.javac.comp.Check.checkCompatibleSupertypes(Check.java:1495)

at com.sun.tools.javac.comp.Attr.attribClassBody(Attr.java:2451)

at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:2406)

at com.sun.tools.javac.comp.Attr.attribClass(Attr.java:2355)

at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:444)

at com.sun.tools.javac.main.Main.compile(Main.java:592)

at com.sun.tools.javac.main.Main.compile(Main.java:544)

at com.sun.tools.javac.Main.compile(Main.java:67)

at com.sun.tools.javac.Main.main(Main.java:52)

Next Generation JVM Languages 27 |

Page 28: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Die Null zügeln

l

l

Next Generation JVM Languages 28 |

Page 29: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Warum neue JVM Sprachen?

Next Generation JVM Languages 29 |

Page 30: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Domain Specific Languages

l

Next Generation JVM Languages 30 |

Page 31: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Warum neue JVM Sprachen?

Next Generation JVM Languages 31 |

Page 32: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Warum neue JVM Sprachen?

Next Generation JVM Languages 32 |

Page 33: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Next Generation JVM Languages 33 |

Page 34: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Alternativen zur Threads & Co.

l

l

Next Generation JVM Languages 34 | http://www.sxc.hu/photo/515995

Page 35: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Warum neue JVM Sprachen?

Next Generation JVM Languages 35 |

Page 36: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Warum neue JVM Sprachen?

Next Generation JVM Languages 36 |

Page 37: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Scripting

l

l

Next Generation JVM Languages 37 |

Page 38: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Warum neue JVM Sprachen?

Next Generation JVM Languages 38 |

Page 39: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Meta-Programmierung

l

l

l

Next Generation JVM Languages 39 |

Programmen, die sich oder andere P. als Daten behandeln und verändert.

Page 40: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Warum neue JVM Sprachen?

Next Generation JVM Languages 40 |

Page 41: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Dynamic & Weak Typing

l

l

Next Generation JVM Languages 41 |

“A programming language is said to be dynamically typed when the majority

of its type checking is performed at run-time as opposed to at compile-time.

In dynamic typing values have types, but variables do not […]” https://en.wikipedia.org/wiki/Dynamic_typing#Dynamic_typing

[…] strong typing when it specifies one or more restrictions on how operations

involving values of different data types can be intermixed.

Weak typing means that a language implicitly converts (or casts) types when used. https://en.wikipedia.org/wiki/Dynamic_typing#Dynamic_typing

Page 42: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Warum neue JVM Sprachen?

Next Generation JVM Languages 42 |

Page 43: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Überblick

Next Generation JVM Languages 43 |

3.

Page 44: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Auszug neuer JVM Sprachen

Next Generation JVM Languages 44 |

Inzwischen über 50-250 verschiedene Sprachen auf der JVM…

Page 45: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Anforderungen für den Industriellen Einsatz

Next Generation JVM Languages 45 |

Page 46: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

[...] 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 im industriellen Einsatz

Next Generation JVM Languages 46 |

Page 47: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Auszug neuer JVM Sprachen

Next Generation JVM Languages 47 |

Page 48: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Übersicht & Entwicklung JVM Sprachen

Next Generation JVM Languages 48 |

Page 49: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Statisch-typisierte JVM Sprachen im Überblick

Next Generation JVM Languages 49 |

Page 50: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Next Generation JVM Languages 50 |

http://www.flickr.com/photos/tonino62/2295302323/ .

Page 51: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Scala im Portrait

Next Generation JVM Languages 51 |

l

Page 52: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Scala im Portrait

Next Generation JVM Languages 52 |

l

l

Page 53: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Traits & Mixins

trait Similarity {

def isSimilar(x: Any): Boolean

def isNotSimilar(x: Any): Boolean = !isSimilar(x)

}

Next Generation JVM Languages 53 |

Page 54: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Extension Methods

l

l

Next Generation JVM Languages 54 |

Page 55: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Scala & Ko-/Kontravarianz

Next Generation JVM Languages 55 | http://www.sxc.hu/photo/330223

TL;DR Too long; didn‘t read

Page 56: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Scala im Portrait

Next Generation JVM Languages 56 |

l

l

l

Page 57: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Scala - Implicit Conversion

Next Generation JVM Languages 57 |

object MainClass {

def main(args: Array[String]) {

val b : B = new A()

}

}

object A {

implicit def aToB(a: A) : B = {

new B()

}

}

Page 58: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Next Generation JVM Languages 58 |

Page 59: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Pattern Matching = Switch/Instanceof++

Next Generation JVM Languages 59 |

Page 60: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Beherrschbarkeit?

Next Generation JVM Languages 60 |

http://bit.ly/LP2Spb

Page 61: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Erfahrungen

l–

l–

Next Generation JVM Languages 61 |

Page 62: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Erfahrungen

l–

l–

Next Generation JVM Languages 62 |

Page 63: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

JVM Sprachen im Überblick (Features)

Next Generation JVM Languages 63 |

Page 64: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Scala Summary

l–

l

l––

Next Generation JVM Languages 64 |

Page 65: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Next Generation JVM Languages 65 | http://www.sxc.hu/photo/366158

Fantom

Page 66: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Fantom : Portabilität

l

l

Next Generation JVM Languages 66 |

„one portable system, graphics, and widget library

that just works everywhere”

Page 67: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Fantom im Portrait

l

l

l

Next Generation JVM Languages 67 |

Page 68: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Fantom : Quadratur der Kreise

l

l

l

obj.methode()

obj->methode()

l

l

Next Generation JVM Languages 68 |

Page 69: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Fantom : Multi-Threading

Next Generation JVM Languages 69 |

Page 70: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Fantom : Elegante APIs und Sprache

Next Generation JVM Languages 70 |

Page 71: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Fantom Hello World (Webapp)

Next Generation JVM Languages 71 |

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")

}

}

Page 72: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Fantom: Summary

l–

l

l–

Next Generation JVM Languages 72 |

Page 73: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

JVM Sprachen im Überblick (Features)

Next Generation JVM Languages 73 |

Page 74: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Next Generation JVM Languages 74 |

http://bit.ly/LKM5YG

Page 75: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Ceylon im Portrait

Next Generation JVM Languages 75 |

„Ceylon’s goal is to design the language that Java would have been

if its designers had been able to predict the future.”

Page 76: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Ceylon: Code Example

Next Generation JVM Languages 76 |

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);

}

}

}

Page 77: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

…bisschen Spannendes hat Ceylon aber schon…

l

l

l

Next Generation JVM Languages 77 | http://www.sxc.hu/photo/732192

Page 78: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Nullables

Next Generation JVM Languages 78 |

Page 79: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Von Typen mit und ohne Charakter

Next Generation JVM Languages 79 |

Page 80: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Ceylon: Summary

l

l

Next Generation JVM Languages 80 |

Page 81: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

JVM Sprachen im Überblick (Features)

Next Generation JVM Languages 81 |

Page 82: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Next Generation JVM Languages 82 | http://www.sxc.hu/photo/1339625

Page 83: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Kotlin im Portrait

l

Next Generation JVM Languages 83 |

“General-purpose language intended for industrial use”

Kotlin = Java++ bzw. Scala--

Page 84: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Kotlin Motivation & Hintergrund

l

Next Generation JVM Languages 84 |

“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.”

Page 85: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Next Generation JVM Languages 85 |

Page 86: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Kotlin Sprach-Features

Next Generation JVM Languages 86 |

Page 87: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Kotlin Sprach-Features

l

l

Next Generation JVM Languages 87 |

interface Collection<E> ... {

void addAll(Collection<? extends E> items);

}

abstract class Source<out T> {

fun nextT() : T

}

fun fill(dest : Array<in String>, value : String) {

// ...

}

Page 88: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Kotlin Sprach-Features

l

l

l

l

l

l

l

Next Generation JVM Languages 88 |

Page 89: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Kotlin: Online Demo

Next Generation JVM Languages 89 |

Page 90: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Kotlin Summary:

l

l

l

l

l

l

Next Generation JVM Languages 90 |

Page 91: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

JVM Sprachen im Überblick (Features)

Next Generation JVM Languages 91 |

Page 92: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

3.

Überblick

Next Generation JVM Languages 92 |

Page 93: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Blick über den Tellerrand

Next Generation JVM Languages 93 | http://www.sxc.hu/photo/1167119/

Page 94: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Resumee

Next Generation JVM Languages 94 | http://www.sxc.hu/photo/1022369

Page 95: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Anforderungen für den Industriellen Einsatz

Next Generation JVM Languages 95 |

Page 96: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Wertung JVM Sprachen für den Industrie-Einsatz

Next Generation JVM Languages 96 |

Page 97: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Resumée

l

l

l

l

–l

l

l

Next Generation JVM Languages 97 |

Page 98: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Next Generation JVM Languages 98 |

Resumée

Page 99: Next Generation Java - eXXcellent solutions · 2015-02-10 · Ein BLick auf die .NET Plattform l l – – l – – – – – 6 | Next Generation JVM Languages

Next Generation JVM Languages 99 | Autor: woodleywonderworks

http://www.flickr.com/photos/wwworks/4759535950/

Weiterführende Information

[email protected]

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