Moderne Programmiersprachen für die Java-Plattform
Was ist die Java-Plattform?                                                                   6. Dezemberwww.mwea.de   Mod...
Was ist die Java-Plattform?                                                         Extremely      Enterprise-ready       ...
Trends?              Plattformen entwickeln                           sich stetig weiter!                                 ...
Entwicklung der .NET-Plattform (Microsoft)                        2004: .NET 2.0                        2006: .NET 3.0    ...
Entwicklung der Java-Plattform                                      2004: Java 5                                      2006...
Die Sprache „Java“ hat einige Probleme             „It’s not all      rainbows and unicorns        in the land of Java“   ...
Abwärtskompatibilität stört Weiterentwicklung               Sprachen können sich              aber nicht stetig sinnvoll  ...
Sprachen-Vielfalt in .NET ganz normal                                                    C              C++               ...
Sprachen-Vielfalt in Java ein Unding                                       Java                        Java               ...
Was ist die Java-Plattform?                                                                   6. Dezemberwww.mwea.de   Mod...
Was ist die Java-Plattform?                Java Runtime Environment (JVM + Java Standard Libraries)       => JVM Bytecode ...
Was ist die Java-Plattform?              Ahead-of-time compiled                                     Ahead-of-time compiled...
Sprachen für die Java-Plattform             240+ Weitere:     http://tinyurl.com/3ql5m98                                  ...
Sprachen für die Java-Plattform bei uns vor einiger Zeit*                                                                 ...
"Escape from the Java prison!"                                                                   6. Dezemberwww.mwea.de   ...
Was ist die "Key Message"?                                                                   6. Dezemberwww.mwea.de   Mode...
Key Message Zu Java gibt es gute Ergänzungen für die JVM!                                                                 ...
Key Message Zu Java gibt es gute Ergänzungen für die JVM! Die zusätzlichen Sprachen schaffen „Business Value“!            ...
Key Message Zu Java gibt es gute Ergänzungen für die JVM! Die zusätzlichen Sprachen schaffen „Business Value“! Entwickler ...
Agenda    1.  Reduzierung des Aufwands    2.  Erhöhung der Flexibilität    3.  Reduzierung der Komplexität    4.  Reduzier...
Agenda    1.  Reduzierung des Aufwands    2.  Erhöhung der Flexibilität                                                   ...
Agenda    1.  Reduzierung des Aufwands    2.  Erhöhung der Flexibilität    3.  Reduzierung der Komplexität    4.  Reduzier...
Agenda    1.  Reduzierung des Aufwands    2.  Erhöhung der Flexibilität                                                   ...
Lines of Code (Java)        employees.sort (        new Comparator{        public int compare(Object emp1, Object emp2){  ...
Lines of Code (Scala)        employees.sort (                                                                      employe...
Lines of Code (Scala)                                                                   employees.sort (_.age > _.age)    ...
Lines of Code     (Making Java Groovy, Kenneth A. Kousen)     <books>        <book isbn="…">          <title>Groovy in Act...
Lines of Code     (Making Java Groovy, Kenneth A. Kousen)     <books>        <book isbn="…">          <title>Groovy in Act...
Lines of Code (Java)     (Making Java Groovy, Kenneth A. Kousen)                                                          ...
Lines of Code (Groovy)     (Making Java Groovy, Kenneth A. Kousen)     <books>        <book isbn="…">          <title>Groo...
Viel mehr APIs und Sprachfeatures                        Pattern                                        Immutable         ...
Agenda    1.  Reduzierung des Aufwands    2.  Erhöhung der Flexibilität                                                   ...
Erhöhung der Flexibilität                      Modularisierung                                                            ...
Modularisierung                            http://www.artima.com/scalazine/articles/package_objects.html                  ...
Erhöhung der Flexibilität                                              Scripting                                          ...
Scripting                  Skript von der              Kommandozeile ausführen                                            ...
Scripting          Verhalten einer Anwendung       dynamisch zur Laufzeit verändern                                       ...
Scripting          Verhalten einer Anwendung       dynamisch zur Laufzeit verändern              JSR 233 Scripting for the...
Scripting          Verhalten einer Anwendung       dynamisch zur Laufzeit verändern                    Achtung:       Viel...
Erhöhung der Flexibilität                    Build-Management                                                             ...
Build-Management          Was macht ein Build-Tool?                                                                   6. D...
Build-Tools im Einsatz                                                                    Ant                             ...
Build-Tools im Einsatz                                                                    Ant    Gradle                   ...
Build-Tools im Einsatz                                                                    Ant    Gradle                   ...
Build-Tools im Einsatz                                                                    Ant    Gradle                   ...
Build-Tools im Einsatz    Weitere Vorteile    (z.B. Scripting)                                                            ...
Erhöhung der Flexibilität                    Meta-Programming                                                             ...
Meta-Programming (Runtime )              // Java Code              public class ABC() {                  public static ABC...
Meta-Programming (Runtime )              // Ein bißchen (Groovy-) Zauberei:              Class.metaClass.factory = { Objec...
Meta-Programming (Runtime )              // Ein bißchen (Groovy-) Zauberei:              Class.metaClass.factory = { Objec...
Meta-Programming (Runtime )                            (Praxisbeispiel: Finder in Grails)                                 ...
Meta-Programming-Ersatz in Scala: Implicit Conversions                                                                   6...
Meta-Programming-Ersatz in Scala: Implicit Conversions                      Achtung: Mit Bedacht einsetzen!               ...
Meta-Programming (Compiletime)      @Immutable // Die Implementierung ist nicht trivial!      class Customer {       Strin...
Agenda    1.  Reduzierung des Aufwands    2.  Erhöhung der Flexibilität                                                   ...
Reduzierung der Komplexität                                                                   6. Dezemberwww.mwea.de   Mod...
Wo gibt es hohe Komplexität?                Concurrency /              Multicore Processing                               ...
Concurrency                    Aktuelle Situation?                                                                   6. De...
Aktuelle Situation     „The  Gigahertz     Race   is over!“                                                               ...
Die Antwort der Industrie                                                                   Multicore                     ...
Die Antwort der Industrie     „ ... das Ergebnis unserer Studie zeigt,     dass sich die Unternehmen stärker mit     der M...
Concurrency                                Das Problem?                                                                   ...
Das Problem              Process                 A                                                                      Sh...
Das Problem      Thread-API        Deadlocks        Race Conditions        Exceptions                                  ...
Das Problem      Thread-API        Deadlocks        Race Conditions        Exceptions          „Threads themselves are ...
Reduzierung der Komplexität                                             Lösung?                                           ...
Meistens versuchte Lösung                                                                   6. Dezemberwww.mwea.de   Moder...
Gute Bücher, aber Thread-API bleibt sehr komplex!                                                                   6. Dez...
Reduzierung der Komplexität                          Bessere Lösung?                                                      ...
Bessere Lösung                      „Share Nothing!“                                                                   6. ...
Viel bessere Lösung          „Communicate            by passing            immutable            Messages“                 ...
Viel bessere Lösung       Konzepte von   funktionale Sprachen          „Communicate            by passing            immut...
Umsetzung                                         Actors                                                                  ...
Actors ...     ... gibt es schon         viele Jahre.                                                                   6....
Actors                  http://www.infoq.com/presentations/Actor-based-Programming (Jamie Ridgway)                        ...
Actors ...              ... sind impliziter Bestandteil                 von modernen Sprachen                   wie Groovy...
Actors in Scala         val chatRoom = actor {              while (true) {                  receive {                     ...
Actors in Scala         val chatRoom = actor {              while (true) {                  receive {                     ...
Actors in Scala mit Akka                                                                   6. Dezemberwww.mwea.de   Modern...
Actors in Groovy mit GPars (Groovy Parallel Systems)                                         „Give Actors an OO facade“   ...
Concurrency mit Clojure (rein funktional) „Clojure does not replace the Java thread system,  rather it works with it. [But...
Reduzierung der Komplexität                                        Domain                                        Specific ...
Domain Specific Languages (DSL)     A [internal] DSL is a programming language that mimics the terms,     idioms, and expr...
Interne DSL in Test-Frameworks                                                                   6. Dezemberwww.mwea.de   ...
ScalaTest (Scala)   Welcher Code ist klarer / sprechender?                                                                ...
ScalaTest (Scala)   Welcher Code ist klarer / sprechender?   Java:                     assertTrue(map.containsKey(‘a’));  ...
ScalaTest (Scala)   Welcher Code ist klarer / sprechender?   Java:                     assertTrue(map.containsKey(‘a’));  ...
Beispiel für eine interne Scala-DSL                                                                      Baysick DSL      ...
Reduzierung der Komplexität              Höheres          Abstraktionslevel                                               ...
Agenda    1.  Reduzierung des Aufwands    2.  Erhöhung der Flexibilität                                                   ...
Reduzierung der Heterogenität                                                                     Install-                ...
Reduzierung der Heterogenität                                                     Quellcode                             Dy...
Agenda    1.  Reduzierung des Aufwands    2.  Erhöhung der Flexibilität                                                   ...
Schaffung von Innovation                                                                   6. Dezemberwww.mwea.de   Modern...
Schaffung von Innovation                                                                   Neue                           ...
Schaffung von Innovation                                                                     Neue                         ...
Schaffung von Innovation                                                                     Neue                         ...
Marketing      “Mehr als 80 Prozent der IT-Fachkräfte in Deutschland      können sich vorstellen, ihren Arbeitgeber zu wec...
Marketing  "Es wird sich eine Zweiklassengesellschaft  unter den Hochschulabgängern herausbilden.“                        ...
Fazit "Business Value"               Aufwand              reduzieren                                               Komplex...
Fazit "Business Value"               Aufwand                                                                       Komplex...
Agenda    1.  Reduzierung des Aufwands    2.  Erhöhung der Flexibilität    3.  Reduzierung der Komplexität    4.  Reduzier...
Sprachen für die Java-Plattform            240+ Weitere:    http://tinyurl.com/3ql5m98                                    ...
Auswahl von Sprachen                                      <Exkurs>                                                        ...
Exkurs: Typisierung                                                                           Dynamisch                   ...
Exkurs: Objektorientierte vs. funktionale Programmierung                                            Scala in Depth, Joshua...
Auswahl von Sprachen                                      </Exkurs>                                                       ...
Sprachen für die Java-Plattform               Welche Sprache(n)              sollen wir auswählen?                        ...
Sprachen für die Java-Plattform            240+ Weitere:    http://tinyurl.com/3ql5m98                                    ...
Sprachen für die Java-Plattform                                          Reifegrad?                                       ...
Reifegrad?            240+ Weitere:    http://tinyurl.com/3ql5m98                                                         ...
Reifegrad?            240+ Weitere:    http://tinyurl.com/3ql5m98                                                         ...
Sprachen für die Java-Plattform                               Verbreitung?                                                ...
Verbreitung?            240+ Weitere:    http://tinyurl.com/3ql5m98                                                       ...
Verbreitung?            240+ Weitere:    http://tinyurl.com/3ql5m98                                                       ...
Sprachen für die Java-Plattform              Plattform-Integration?                                                       ...
Syntax-Alignment?     import java.util.*; // Java     Date today = new Date(); // Java                                    ...
Syntax-Alignment?     import java.util.*; // Java     Date today = new Date(); // Java     today = new Date() // Groovy   ...
Syntax-Alignment?     import java.util.*; // Java     Date today = new Date(); // Java     today = new Date() // Groovy   ...
Syntax-Alignment?     import java.util.*; // Java     Date today = new Date(); // Java     today = new Date() // Groovy   ...
Syntax-Alignment?     import java.util.*; // Java     Date today = new Date(); // Java     today = new Date() // Groovy   ...
Guter IDE-Support: Der Klammern-Generator ???     (import (java.util Date)) ; Clojure (def today (new Date)) ;     Clojure...
Seamless Integration?                                                            Java              „Andere“               ...
Seamless Integration? (Groovy)     public class Article {            private String name;            private String price;...
Seamless Integration? (Groovy)     public class Article {                                             public class Article...
Seamless Integration?                                                            Java                  Groovy             ...
Seamless Integration? (Scala) => Bytecode != Bytecode     Usually, it just works ...                                      ...
Seamless Integration? (Scala) => Bytecode != Bytecode   Implicit Conversions                                              ...
Seamless Integration?                                                            Java              „Andere“               ...
Seamless Integration?              Java EE Integration?                                                                   ...
Plattform-Integration                                                                   http://java.dzone.com/articles/bas...
Plattform-Integration?                               „Andere“                             „Andere“        Feature Rich    ...
Plattform-Integration?                               „Andere“                             „Andere“                        ...
Plattform-Integration?                               „Andere“ Scala                             „Andere“                  ...
Sprachen für die Java-Plattform            240+ Weitere:    http://tinyurl.com/3ql5m98                                    ...
Sprachen für die Java-Plattform            240+ Weitere:    http://tinyurl.com/3ql5m98                                    ...
Fazit "Auswahl von Sprachen"       „Java Friendly“ und „Feature Rich“       muss die auserwählte Sprache sein             ...
Fazit "Auswahl von Sprachen"                      Noch ein Satz zu den „besseren“ Java‘s:                                 ...
Fazit "Auswahl von Sprachen"                                                                   6. Dezemberwww.mwea.de   Mo...
Fazit "Auswahl von Sprachen"                                                                   6. Dezemberwww.mwea.de   Mo...
Agenda    1.  Reduzierung des Aufwands    2.  Erhöhung der Flexibilität    3.  Reduzierung der Komplexität    4.  Reduzier...
Wieso neue Sprachen? Java passt doch?                                                            IT                       ...
Wieso neue Sprachen? Java passt doch?    Cloud Computing wird der Kunde fordern...                                        ...
Wieso neue Sprachen? Java passt doch?    Cloud Computing wird der Kunde fordern...              NoSQL werden die Anforderu...
Wieso neue Sprachen? Java passt doch?    Cloud Computing wird der Kunde fordern...              NoSQL werden die Anforderu...
Vorurteile              Einarbeitungsaufwand?               Kunde überzeugen?                                             ...
Vorurteile              Einarbeitungsaufwand?               Kunde überzeugen?     „Dont let yourself be fooled!“          ...
Nachteile              Tatsächliche Probleme                                                                    6. Dezembe...
Nachteile von neuen Sprachen      -  Mächtiger != Einfacher => Wissen, wie und was man von      einer Sprache lernen und e...
Bytecode != Bytecode                                                                   Java + Groovy = Gut                ...
Bytecode != Bytecode                                                        Beispiel JRuby + Scala: www.codecommit.com/blo...
Nachteile speziell von dynamischen Sprachen      -  Meta-Programming, DSLs, etc.          => Was passiert hier eigentlich?...
IDEs (noch) nicht auf "Java-Niveau"                                                                   6. Dezemberwww.mwea....
IDEs (noch) nicht auf "Java-Niveau"                                                                   6. Dezemberwww.mwea....
Agenda    1.  Reduzierung des Aufwands    2.  Erhöhung der Flexibilität    3.  Reduzierung der Komplexität    4.  Reduzier...
"Getting Started bei MWEA"         Von nichts kommt nichts!                                                               ...
"Getting Started bei MWEA"                Bücher                                                              Einarbeitung...
"Getting Started bei MWEA"                                                                      Rückblick auf bereits     ...
Fazit „Lessons learned“                                                                   6. Dezemberwww.mwea.de   Moderne...
Agenda                                        1.       Reduzierung des Aufwands                                        2. ...
Ist die "Key-Message" angekommen?                                                                   6. Dezemberwww.mwea.de...
Key Message Zu Java gibt es gute Ergänzungen für die JVM! Die zusätzlichen Sprachen schaffen „Business Value“! Entwickler ...
Ist die "Key-Message" angekommen?                                                                   6. Dezemberwww.mwea.de...
Buchempfehlungen                                                                   6. Dezemberwww.mwea.de   Moderne Progra...
Vielen Dank für Eure Aufmerksamkeit... Fragen?   Kontakt              Kai Wähner                          MaibornWolff et ...
Upcoming SlideShare
Loading in...5
×

[GER] Lessons learned: Modern JVM Languages besides Java

1,123

Published on

Lessons learned: Using modern JVM languages besides Java. Shows business value, but also disadvantages.

Published in: Technology, News & Politics
1 Comment
2 Likes
Statistics
Notes
  • it is a very interesting presentation, but why is it in dinglish?
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
1,123
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
1
Likes
2
Embeds 0
No embeds

No notes for slide

[GER] Lessons learned: Modern JVM Languages besides Java

  1. 1. Moderne Programmiersprachen für die Java-Plattform
  2. 2. Was ist die Java-Plattform? 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  3. 3. Was ist die Java-Plattform? Extremely Enterprise-ready Stable Highly Customizable (e.g. GC- / Heap-Settings) Extremely Fast Major Platforms Terrific So many awesome Projects Community (Apache, Spring, Eclipse, ...) 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  4. 4. Trends? Plattformen entwickeln sich stetig weiter! 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  5. 5. Entwicklung der .NET-Plattform (Microsoft) 2004: .NET 2.0 2006: .NET 3.0 2007: .NET 3.5 2010: .NET 4.0 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  6. 6. Entwicklung der Java-Plattform 2004: Java 5 2006: Java 6 5 Jahre nichts 2011: Java 7 2013: Java 8 ??? 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  7. 7. Die Sprache „Java“ hat einige Probleme „It’s not all rainbows and unicorns in the land of Java“ http://batsov.com/Java/Groovy/2011/05/06/jvm-langs-groovy.html 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  8. 8. Abwärtskompatibilität stört Weiterentwicklung Sprachen können sich aber nicht stetig sinnvoll weiterentwickeln! 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  9. 9. Sprachen-Vielfalt in .NET ganz normal C C++ C# F# .NET Silverlight Scala 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  10. 10. Sprachen-Vielfalt in Java ein Unding Java Java Java Java Java Java 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  11. 11. Was ist die Java-Plattform? 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  12. 12. Was ist die Java-Plattform? Java Runtime Environment (JVM + Java Standard Libraries) => JVM Bytecode -> VM-specific internal representation -> Native machine code 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  13. 13. Was ist die Java-Plattform? Ahead-of-time compiled Ahead-of-time compiled Java Bytecode (.class) Scala Bytecode (.class) Java Runtime Environment (JVM + Java Standard Libraries) => JVM Bytecode -> VM-specific internal representation -> Native machine code Interpreted or Just-in-time compiled Groovy Bytecode Ahead-of-time compiled (In-memory) Groovy Bytecode (.class) Groovy Script Code 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  14. 14. Sprachen für die Java-Plattform 240+ Weitere: http://tinyurl.com/3ql5m98 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  15. 15. Sprachen für die Java-Plattform bei uns vor einiger Zeit* * Manchmal „aus Versehen“ auch andere im Einsatz 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  16. 16. "Escape from the Java prison!" 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  17. 17. Was ist die "Key Message"? 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  18. 18. Key Message Zu Java gibt es gute Ergänzungen für die JVM! 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  19. 19. Key Message Zu Java gibt es gute Ergänzungen für die JVM! Die zusätzlichen Sprachen schaffen „Business Value“! 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  20. 20. Key Message Zu Java gibt es gute Ergänzungen für die JVM! Die zusätzlichen Sprachen schaffen „Business Value“! Entwickler und Entscheider sollten sich dafür interessieren! 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  21. 21. Agenda 1.  Reduzierung des Aufwands 2.  Erhöhung der Flexibilität 3.  Reduzierung der Komplexität 4.  Reduzierung der Heterogenität 5.  Schaffung von Innovation 6.  Auswahl von Sprachen 7.  Probleme 8.  Getting Started 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  22. 22. Agenda 1.  Reduzierung des Aufwands 2.  Erhöhung der Flexibilität Business 3.  Reduzierung der Komplexität Value 4.  Reduzierung der Heterogenität 5.  Schaffung von Innovation 6.  Auswahl von Sprachen 7.  Probleme 8.  Getting Started 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  23. 23. Agenda 1.  Reduzierung des Aufwands 2.  Erhöhung der Flexibilität 3.  Reduzierung der Komplexität 4.  Reduzierung der Heterogenität 5.  Schaffung von Innovation 6.  Auswahl von Sprachen 7.  Probleme Lessons 8.  Getting Started learned 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  24. 24. Agenda 1.  Reduzierung des Aufwands 2.  Erhöhung der Flexibilität Business 3.  Reduzierung der Komplexität Value 4.  Reduzierung der Heterogenität 5.  Schaffung von Innovation 6.  Auswahl von Sprachen 7.  Probleme 8.  Getting Started 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  25. 25. Lines of Code (Java) employees.sort ( new Comparator{ public int compare(Object emp1, Object emp2){ int emp1Age = ( (Employee) emp1).getAge(); int emp2Age = ( (Employee) emp2).getAge(); if( emp1Age > emp2Age ) return 1; else if( emp1Age < emp2Age ) return -1; else return 0; } Java 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  26. 26. Lines of Code (Scala) employees.sort ( employees.sort (_.age > _.age) new Comparator{ public int compare(Object emp1, Object emp2){ int emp1Age = ( (Employee) emp1).getAge(); int emp2Age = ( (Employee) emp2).getAge(); if( emp1Age > emp2Age ) return 1; else if( emp1Age < emp2Age ) return -1; else return 0; } Java Scala 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  27. 27. Lines of Code (Scala) employees.sort (_.age > _.age) Scala API: Java Scala 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  28. 28. Lines of Code (Making Java Groovy, Kenneth A. Kousen) <books> <book isbn="…"> <title>Groovy in Action</title> <author>Dierk Koenig</author> <author>Paul King</author> … </book> <book isbn="…"> <title>Grails in Action</title> <author>Glen Smith</author> <author>Peter Ledbrook</author> </book> ... </books> 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  29. 29. Lines of Code (Making Java Groovy, Kenneth A. Kousen) <books> <book isbn="…"> <title>Groovy in Action</title> <author>Dierk Koenig</author> <author>Paul King</author> … </book> <book isbn="…"> <title>Grails in Action</title> <author>Glen Smith</author> <author>Peter Ledbrook</author> </book> ... </books> Aufgabe: Gib den Titel des zweiten Buchs aus! 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  30. 30. Lines of Code (Java) (Making Java Groovy, Kenneth A. Kousen) DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); <books> Document doc = null; <book isbn="…"> <title>Groovy in Action</title> try {DocumentBuilder b = factory.newDocumentBuilder(); <author>Dierk Koenig</author> doc = b.parse("src/jag/xml/books.xml"); <author>Paul King</author> } catch (Exception e) { // Parser, SAX, IO … </book> e.printStackTrace();} <book isbn="…"> if (doc == null) return; <title>Grails in Action</title> NodeList titles = doc.getElementsByTagName("title"); <author>Glen Smith</author> <author>Peter Ledbrook</author> Element titleNode = (Element) titles.item(1); </book> String title = titleNode.getFirstChild().getNodeValue(); ... </books> System.out.println("The second title is " + title); Aufgabe: Gib den Titel des zweiten Buchs aus! 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  31. 31. Lines of Code (Groovy) (Making Java Groovy, Kenneth A. Kousen) <books> <book isbn="…"> <title>Groovy in Action</title> <author>Dierk Koenig</author> root = new XmlSlurper().parse(books.xml) <author>Paul King</author> println root.book[1].title … </book> <book isbn="…"> <title>Grails in Action</title> <author>Glen Smith</author> <author>Peter Ledbrook</author> </book> ... </books> Aufgabe: Gib den Titel des zweiten Buchs aus! 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  32. 32. Viel mehr APIs und Sprachfeatures Pattern Immutable Matching Objects Implicit SQL / XML Conversions Integration Traits Weitere ... Collection Closures .map / .fold 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  33. 33. Agenda 1.  Reduzierung des Aufwands 2.  Erhöhung der Flexibilität Business 3.  Reduzierung der Komplexität Value 4.  Reduzierung der Heterogenität 5.  Schaffung von Innovation 6.  Auswahl von Sprachen 7.  Probleme 8.  Getting Started 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  34. 34. Erhöhung der Flexibilität Modularisierung 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  35. 35. Modularisierung http://www.artima.com/scalazine/articles/package_objects.html 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  36. 36. Erhöhung der Flexibilität Scripting 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  37. 37. Scripting Skript von der Kommandozeile ausführen 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  38. 38. Scripting Verhalten einer Anwendung dynamisch zur Laufzeit verändern 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  39. 39. Scripting Verhalten einer Anwendung dynamisch zur Laufzeit verändern JSR 233 Scripting for the Java Platform groovy.util.Eval groovy.lang.GroovyShell 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  40. 40. Scripting Verhalten einer Anwendung dynamisch zur Laufzeit verändern Achtung: Viele Anwendungen benötigen es nicht! 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  41. 41. Erhöhung der Flexibilität Build-Management 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  42. 42. Build-Management Was macht ein Build-Tool? 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  43. 43. Build-Tools im Einsatz Ant vs. Maven 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  44. 44. Build-Tools im Einsatz Ant Gradle vs. Maven 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  45. 45. Build-Tools im Einsatz Ant Gradle vs. Maven 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  46. 46. Build-Tools im Einsatz Ant Gradle vs. Maven 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  47. 47. Build-Tools im Einsatz Weitere Vorteile (z.B. Scripting) Ant Gradle vs. Maven 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  48. 48. Erhöhung der Flexibilität Meta-Programming 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  49. 49. Meta-Programming (Runtime ) // Java Code public class ABC() { public static ABC factory() { return new ABC(); } public static void main(String[] args) { assert(new ABC() == factory()); } } 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  50. 50. Meta-Programming (Runtime ) // Ein bißchen (Groovy-) Zauberei: Class.metaClass.factory = { Object[] args -> delegate.metaClass.invokeConstructor(*args) } 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  51. 51. Meta-Programming (Runtime ) // Ein bißchen (Groovy-) Zauberei: Class.metaClass.factory = { Object[] args -> delegate.metaClass.invokeConstructor(*args) } // Java-Klassen haben nun eine „factory()“-Methode: assert new HashMap() == HashMap. factory () assert new Integer(42) == Integer. factory (42) assert new Dimension(2, 3) == Dimension. factory (2, 3) 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  52. 52. Meta-Programming (Runtime ) (Praxisbeispiel: Finder in Grails) 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  53. 53. Meta-Programming-Ersatz in Scala: Implicit Conversions 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  54. 54. Meta-Programming-Ersatz in Scala: Implicit Conversions Achtung: Mit Bedacht einsetzen! 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  55. 55. Meta-Programming (Compiletime) @Immutable // Die Implementierung ist nicht trivial! class Customer { String first, last } def c = new Customer(first:‘Kai‘, last:‘Wähner‘) c.first = ‚Otto‘ // throws ReadOnlyPropertyException Abstract Syntax Tree (AST) Transformations 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  56. 56. Agenda 1.  Reduzierung des Aufwands 2.  Erhöhung der Flexibilität Business 3.  Reduzierung der Komplexität Value 4.  Reduzierung der Heterogenität 5.  Schaffung von Innovation 6.  Auswahl von Sprachen 7.  Probleme 8.  Getting Started 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  57. 57. Reduzierung der Komplexität 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  58. 58. Wo gibt es hohe Komplexität? Concurrency / Multicore Processing 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  59. 59. Concurrency Aktuelle Situation? 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  60. 60. Aktuelle Situation „The Gigahertz Race is over!“ 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  61. 61. Die Antwort der Industrie Multicore CPUs 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  62. 62. Die Antwort der Industrie „ ... das Ergebnis unserer Studie zeigt, dass sich die Unternehmen stärker mit der Multicore-Thematik befassen sollten.“ Fraunhofer Institut, 2010 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  63. 63. Concurrency Das Problem? 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  64. 64. Das Problem Process A Shared Memory Process B 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  65. 65. Das Problem Thread-API   Deadlocks   Race Conditions   Exceptions 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  66. 66. Das Problem Thread-API   Deadlocks   Race Conditions   Exceptions „Threads themselves are not the main problem, the shared memory model is the real problem!“ 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  67. 67. Reduzierung der Komplexität Lösung? 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  68. 68. Meistens versuchte Lösung 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  69. 69. Gute Bücher, aber Thread-API bleibt sehr komplex! 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  70. 70. Reduzierung der Komplexität Bessere Lösung? 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  71. 71. Bessere Lösung „Share Nothing!“ 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  72. 72. Viel bessere Lösung „Communicate by passing immutable Messages“ 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  73. 73. Viel bessere Lösung Konzepte von funktionale Sprachen „Communicate by passing immutable Messages“ 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  74. 74. Umsetzung Actors 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  75. 75. Actors ... ... gibt es schon viele Jahre. 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  76. 76. Actors http://www.infoq.com/presentations/Actor-based-Programming (Jamie Ridgway) 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  77. 77. Actors ... ... sind impliziter Bestandteil von modernen Sprachen wie Groovy und Scala! 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  78. 78. Actors in Scala val chatRoom = actor { while (true) { receive { case Subscribe(user) => // do something case Unsubscribe(user) => // do something case UserPost(user, post) => // do something }}} // send a asynchronous message to the Actor: chatRoom ! Subscribe(User("Bob")) Keine Thread-API, Locks, Synchronisierung (und dadurch auch geringere Gefahr für Deadlocks oder Race Conditions) 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  79. 79. Actors in Scala val chatRoom = actor { while (true) { receive { case Subscribe(user) => // do something case Unsubscribe(user) => // do something case UserPost(user, post) => // do something }}} // send a asynchronous message to the Actor: chatRoom ! Subscribe(User("Bob")) Aber Achtung: Anderes Programmiermodell (und damit neue Konzepte, Denkweisen, APIs) 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  80. 80. Actors in Scala mit Akka 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  81. 81. Actors in Groovy mit GPars (Groovy Parallel Systems) „Give Actors an OO facade“ @ActiveObject class Decryptor { @ActiveMethod // asynchronous => return a Future object def decrypt(String encryptedText) { return encryptedText.reverse() } @ActiveMethod def decrypt(Integer encryptedNumber) { return -1*encryptedNumber + 142 } } final Decryptor decryptor = new Decryptor() def part1 = decryptor.decrypt( noitcA ni yvoorG) def part2 = decryptor.decrypt(140) print part1.get() // == Groovy in Action print part2.get() // == 2 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  82. 82. Concurrency mit Clojure (rein funktional) „Clojure does not replace the Java thread system, rather it works with it. [But there are] no locks! “ http://clojure.org/concurrent_programming 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  83. 83. Reduzierung der Komplexität Domain Specific Languages (DSL) 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  84. 84. Domain Specific Languages (DSL) A [internal] DSL is a programming language that mimics the terms, idioms, and expressions used among experts in the targeted domain. Code written in a DSL reads like structured prose for the domain. Ideally, a domain expert with little experience in programming can read, understand, and validate this code. Sometimes, a domain expert might be able to write DSL code, even if he isn’t a professional programmer. http://ofps.oreilly.com/titles/9780596155957/DomainSpecificLanguages.html 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  85. 85. Interne DSL in Test-Frameworks 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  86. 86. ScalaTest (Scala) Welcher Code ist klarer / sprechender? 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  87. 87. ScalaTest (Scala) Welcher Code ist klarer / sprechender? Java: assertTrue(map.containsKey(‘a’)); 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  88. 88. ScalaTest (Scala) Welcher Code ist klarer / sprechender? Java: assertTrue(map.containsKey(‘a’)); Scala: map should contain key ‘a’ 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  89. 89. Beispiel für eine interne Scala-DSL Baysick DSL (simuliert BASIC) http://blog.fogus.me/2009/03/26/ baysick-a-scala-dsl-implementing-basic/ 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  90. 90. Reduzierung der Komplexität Höheres Abstraktionslevel Sprechender, klarer, kürzer Nichts komplett neues, sondern „Added Value“ Anpassbarkeit („mix in traits“) 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  91. 91. Agenda 1.  Reduzierung des Aufwands 2.  Erhöhung der Flexibilität Business 3.  Reduzierung der Komplexität Value 4.  Reduzierung der Heterogenität 5.  Schaffung von Innovation 6.  Auswahl von Sprachen 7.  Probleme 8.  Getting Started 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  92. 92. Reduzierung der Heterogenität Install- Quell-code Skript (Java) (Shell) Dynamisches Datenbank-Skript Build (JRuby) (XML) 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  93. 93. Reduzierung der Heterogenität Quellcode Dynamisches Datenbank-Skript Install-Skript Build (Groovy) 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  94. 94. Agenda 1.  Reduzierung des Aufwands 2.  Erhöhung der Flexibilität Business 3.  Reduzierung der Komplexität Value 4.  Reduzierung der Heterogenität 5.  Schaffung von Innovation 6.  Auswahl von Sprachen 7.  Probleme 8.  Getting Started 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  95. 95. Schaffung von Innovation 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  96. 96. Schaffung von Innovation Neue Technologien Konzepte Lösungen 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  97. 97. Schaffung von Innovation Neue Technologien Konzepte Lösungen Marketing Artikel, Blogs, Vorträge 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  98. 98. Schaffung von Innovation Neue Technologien Konzepte Lösungen Neue Projekte Marketing Consulting, Coaching, Entwicklung Artikel, Blogs, Vorträge 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  99. 99. Marketing “Mehr als 80 Prozent der IT-Fachkräfte in Deutschland können sich vorstellen, ihren Arbeitgeber zu wechseln.“ IT-Szene München (Sept 2011) „Follow the Leader“ 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  100. 100. Marketing "Es wird sich eine Zweiklassengesellschaft unter den Hochschulabgängern herausbilden.“ manager magazin 04/2011 „War for Talents“ 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  101. 101. Fazit "Business Value" Aufwand reduzieren Komplexität reduzieren Flexibilität erhöhen Schaffung von Heterogenität Innovation reduzieren 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  102. 102. Fazit "Business Value" Aufwand Komplexität reduzieren reduzieren Flexibilität erhöhen Schaffung von Heterogenität Innovation reduzieren 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  103. 103. Agenda 1.  Reduzierung des Aufwands 2.  Erhöhung der Flexibilität 3.  Reduzierung der Komplexität 4.  Reduzierung der Heterogenität 5.  Schaffung von Innovation 6.  Auswahl von Sprachen 7.  Probleme Lessons 8.  Getting Started learned 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  104. 104. Sprachen für die Java-Plattform 240+ Weitere: http://tinyurl.com/3ql5m98 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  105. 105. Auswahl von Sprachen <Exkurs> 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  106. 106. Exkurs: Typisierung Dynamisch getypte Komplexität Sprache Statisch getypte Sprache Mächtigkeit 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  107. 107. Exkurs: Objektorientierte vs. funktionale Programmierung Scala in Depth, Joshua D. Suereth 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  108. 108. Auswahl von Sprachen </Exkurs> 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  109. 109. Sprachen für die Java-Plattform Welche Sprache(n) sollen wir auswählen? 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  110. 110. Sprachen für die Java-Plattform 240+ Weitere: http://tinyurl.com/3ql5m98 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  111. 111. Sprachen für die Java-Plattform Reifegrad? 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  112. 112. Reifegrad? 240+ Weitere: http://tinyurl.com/3ql5m98 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  113. 113. Reifegrad? 240+ Weitere: http://tinyurl.com/3ql5m98 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  114. 114. Sprachen für die Java-Plattform Verbreitung? 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  115. 115. Verbreitung? 240+ Weitere: http://tinyurl.com/3ql5m98 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  116. 116. Verbreitung? 240+ Weitere: http://tinyurl.com/3ql5m98 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  117. 117. Sprachen für die Java-Plattform Plattform-Integration? 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  118. 118. Syntax-Alignment? import java.util.*; // Java Date today = new Date(); // Java 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  119. 119. Syntax-Alignment? import java.util.*; // Java Date today = new Date(); // Java today = new Date() // Groovy 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  120. 120. Syntax-Alignment? import java.util.*; // Java Date today = new Date(); // Java today = new Date() // Groovy import java.util._ // Scala var today = new Date // Scala 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  121. 121. Syntax-Alignment? import java.util.*; // Java Date today = new Date(); // Java today = new Date() // Groovy import java.util._ // Scala var today = new Date // Scala java_import ‘java.util.Date # JRuby today = Date.new # JRuby 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  122. 122. Syntax-Alignment? import java.util.*; // Java Date today = new Date(); // Java today = new Date() // Groovy import java.util._ // Scala var today = new Date // Scala java_import ‘java.util.Date # JRuby today = Date.new # JRuby (import (java.util Date)) ; Clojure (def today (new Date)) ; Clojure (def today (Date.)) ; Clojure alternative 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  123. 123. Guter IDE-Support: Der Klammern-Generator ??? (import (java.util Date)) ; Clojure (def today (new Date)) ; Clojure (def today (Date.)) ; Clojure alternative 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  124. 124. Seamless Integration? Java „Andere“ „Andere“ 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  125. 125. Seamless Integration? (Groovy) public class Article {     private String name;     private String price;     public Article(String name, String price) {         this.name = name;         this.price = price;     } class Article {     public String getName() {     String name         return name;     String price     } }     public void setName(String name) {         this.name = name;     }     public String getPrice() {         return price;     }     public void setPrice(String price) {         this.price = price;     } } Java Groovy 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  126. 126. Seamless Integration? (Groovy) public class Article { public class Article {     private String name;     private String name;     private String price;     private String price;     public Article(String name, String price) {     public Article(String name, String price) {         this.name = name;         this.name = name;         this.price = price;         this.price = price;     }     }     public String getName() {     public String getName() {         return name;         return name;     }     }     public void setName(String name) {     public void setName(String name) {         this.name = name;         this.name = name;     }     }     public String getPrice() {     public String getPrice() {         return price;         return price;     }     }     public void setPrice(String price) {     public void setPrice(String price) {         this.price = price;         this.price = price;     }     } } } Java Groovy 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  127. 127. Seamless Integration? Java Groovy „Andere“ 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  128. 128. Seamless Integration? (Scala) => Bytecode != Bytecode Usually, it just works ... ... if not, define a Java Interface. 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  129. 129. Seamless Integration? (Scala) => Bytecode != Bytecode Implicit Conversions Inexpressible vs. Language Object Identity / Equality Features Objects vs. Primitives Uniform Access Principle Java Bytecode Analysis 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  130. 130. Seamless Integration? Java „Andere“ „Scala“ 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  131. 131. Seamless Integration? Java EE Integration? 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  132. 132. Plattform-Integration http://java.dzone.com/articles/basic-mdb-scala-sbt-and-jee-6 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  133. 133. Plattform-Integration? „Andere“ „Andere“ Feature Rich „Andere“ „Andere“ Java Friendly 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  134. 134. Plattform-Integration? „Andere“ „Andere“ Groovy Feature Rich „Andere“ „Andere“ Java Friendly 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  135. 135. Plattform-Integration? „Andere“ Scala „Andere“ Groovy Feature Rich „Andere“ „Andere“ Java Friendly 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  136. 136. Sprachen für die Java-Plattform 240+ Weitere: http://tinyurl.com/3ql5m98 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  137. 137. Sprachen für die Java-Plattform 240+ Weitere: http://tinyurl.com/3ql5m98 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  138. 138. Fazit "Auswahl von Sprachen" „Java Friendly“ und „Feature Rich“ muss die auserwählte Sprache sein (Andere JVM-Sprachen nur, wenn wirklich benötigt) 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  139. 139. Fazit "Auswahl von Sprachen" Noch ein Satz zu den „besseren“ Java‘s: 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  140. 140. Fazit "Auswahl von Sprachen" 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  141. 141. Fazit "Auswahl von Sprachen" 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  142. 142. Agenda 1.  Reduzierung des Aufwands 2.  Erhöhung der Flexibilität 3.  Reduzierung der Komplexität 4.  Reduzierung der Heterogenität 5.  Schaffung von Innovation 6.  Auswahl von Sprachen 7.  Probleme Lessons 8.  Getting Started learned 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  143. 143. Wieso neue Sprachen? Java passt doch? IT vs. Politik 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  144. 144. Wieso neue Sprachen? Java passt doch? Cloud Computing wird der Kunde fordern... 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  145. 145. Wieso neue Sprachen? Java passt doch? Cloud Computing wird der Kunde fordern... NoSQL werden die Anforderungen unumgänglich machen... 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  146. 146. Wieso neue Sprachen? Java passt doch? Cloud Computing wird der Kunde fordern... NoSQL werden die Anforderungen unumgänglich machen... ... aber moderne JVM-Sprachen werden wohl nie gefordert werden  6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  147. 147. Vorurteile Einarbeitungsaufwand? Kunde überzeugen? 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  148. 148. Vorurteile Einarbeitungsaufwand? Kunde überzeugen? „Dont let yourself be fooled!“ 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  149. 149. Nachteile Tatsächliche Probleme 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  150. 150. Nachteile von neuen Sprachen -  Mächtiger != Einfacher => Wissen, wie und was man von einer Sprache lernen und einsetzen muss -  Nicht nur neue Sprache, sondern (für Java- bzw. OO- Entwickler) neue Konzepte (Funktional, Actors, ...) -  Funktional vs. OO vs. Mischmasch => „the Java way“ is not the good way -  Debugging der tollen Sprachfeatures (Closures, Implicit Conversions, ...) -  Kosten „Produktlebenszyklus“ (weniger Skills verfügbar, Schulungen, Wartung) -  Bytecode != Bytecode 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  151. 151. Bytecode != Bytecode Java + Groovy = Gut Java + Scala = Ok Non-Java + Non-Java = ??? 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  152. 152. Bytecode != Bytecode Beispiel JRuby + Scala: www.codecommit.com/blog/ruby/integrating-scala-into-jruby 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  153. 153. Nachteile speziell von dynamischen Sprachen -  Meta-Programming, DSLs, etc. => Was passiert hier eigentlich? -  Exceptions erst zur Laufzeit => Run-time type errors -  Schlechtere Lesbarkeit -  Refactoring? Wartbarkeit? (CRs etc.) 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  154. 154. IDEs (noch) nicht auf "Java-Niveau" 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  155. 155. IDEs (noch) nicht auf "Java-Niveau" 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  156. 156. Agenda 1.  Reduzierung des Aufwands 2.  Erhöhung der Flexibilität 3.  Reduzierung der Komplexität 4.  Reduzierung der Heterogenität 5.  Schaffung von Innovation 6.  Auswahl von Sprachen 7.  Probleme Lessons 8.  Getting Started learned 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  157. 157. "Getting Started bei MWEA" Von nichts kommt nichts! 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  158. 158. "Getting Started bei MWEA" Bücher Einarbeitung Workshops (Technorunde) Weiterbildungs- budget 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  159. 159. "Getting Started bei MWEA" Rückblick auf bereits Interne umgesetzte Projekte Projekte Einsatz Testing Bereits bei Planung von neuen Projekten berücksichtigen Marketingkanäle nutzen 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  160. 160. Fazit „Lessons learned“ 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  161. 161. Agenda 1.  Reduzierung des Aufwands 2.  Erhöhung der Flexibilität 3.  Reduzierung der Komplexität 4.  Reduzierung der Heterogenität 5.  Schaffung von Innovation 6.  Auswahl von Sprachen 7.  Probleme 8.  Getting Started 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  162. 162. Ist die "Key-Message" angekommen? 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  163. 163. Key Message Zu Java gibt es gute Ergänzungen für die JVM! Die zusätzlichen Sprachen schaffen „Business Value“! Entwickler und Entscheider sollten sich dafür interessieren! 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  164. 164. Ist die "Key-Message" angekommen? 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  165. 165. Buchempfehlungen 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011
  166. 166. Vielen Dank für Eure Aufmerksamkeit... Fragen? Kontakt Kai Wähner MaibornWolff et al GmbH Mobil +49 151 544 277 88 IT-Consultant Theresienhöhe 13 Email kai.waehner@mwea.de D-80339 München Twitter @KaiWaehner 6. Dezemberwww.mwea.de Moderne Programmiersprachen für die Java-Plattform 2011

×