[GER] Lessons learned: Modern JVM Languages besides Java

1,326
-1

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,326
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

×