30
Reif ? Scala für Enterprise-Applikationen Dr. Halil-Cem Gürsoy adesso AG

Reif? Scala für Enterprise-Applikationen

Embed Size (px)

DESCRIPTION

Diese Präsentation gibt eine Antwort auf die Frage, ob man Scala in Enterprise-Anwendungen verwenden kann.

Citation preview

Page 1: Reif? Scala für Enterprise-Applikationen

Reif ?Scala für Enterprise-Applikationen

Dr. Halil-Cem Gürsoyadesso AG

Page 2: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 2

Der Referent

• Insgesamt über 10 Jahre Beratung und Entwicklung rund um Java, davor Entwicklung im Forschungsumfeld

• Senior Software Engineer bei adesso AG, Dortmund• Schwerpunkt EAI und SOA-Projekte im JEE Umfeld,

aber auch klassische JEE-Projekte• Autor und Referent auf Konferenzen

Page 3: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 3

Agenda

• Motivation• Enterprise ?• Sprache und Syntax• Scala-Versionen und Kompatibilität• IDE's, Build-Systeme und Tool Support• Support und Wartung• Fazit

Page 4: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 4

Agenda

• Motivation• Enterprise ?• Sprache und Syntax• Scala-Versionen und Kompatibilität• IDE's, Build-Systeme und Tool Support• Support und Wartung• Fazit

Page 5: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 5

Motivation

• Blog(s) von A. Blewitt

• http://alblue.bandlem.com/2009/08/is-scala-ready-for-enterprise.html

• http://alblue.bandlem.com/2009/10/scala-is-still-not-enterprise-ready.html

• Scala Hype & Fanboyism (?)• Scala zu Akademisch ! ?• Kunden zu empfehlen ?

Page 6: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 6

Kurze Scala Historie

• Scalable Language• Prof. Martin Odersky, EPFL

• Scala 2.9: 05.2011

Pizza(2001)

GJ(-2004)

Scala(2004)

Page 7: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 7

Agenda

• Motivation• Enterprise ?• Sprache und Syntax• Scala-Versionen und Kompatibilität• IDE's, Build-Systeme und Tool Support• Support und Wartung• Fazit

Page 8: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 8

Enterprise – Ein Definitionsversuch

• Definitionen ?

• „A business organization“

• Unternehmen = Enterprise

• A. Blewitt's Definition

• Twitter – kein Enterprise

• Startups – kein Enterprise

• 10^n Mitarbeiter, X Millionen € Umsatz = Enterprise

Page 9: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 9

Enterprise – Eine Definition

„Enterprise“ sind alle Unternehmen und Unternehmungen, von deren Erfolg Menschen

existentiell abhängen

Page 10: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 10

Agenda

• Motivation• Enterprise ?• Sprache und Syntax• Scala-Versionen und Kompatibilität• IDE's, Build-Systeme und Tool Support• Support und Wartung• Fazit

Page 11: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 11

Sprache und Syntax - Lesbarkeit

• Große Freiheitsgrade der Sprache und der Syntax• Source-Lesbarkeit leidet unter Komplexität• „the source is obfuscated by the syntax“

(aus Wikipedia.de)

• Erfahrung notwendig!

def quickSort[A <% Ordered[A]](xs: List[A]): List[A] = xs match { case Nil => xs case y :: ys => ys partition (_ <= y) match { case (l1, l2) => quickSort(l1)

++ (y :: quickSort(l2)) }}

Page 12: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 12

Sprache und Syntax – Beispiel Implicits

• „pixie magic called implicits“• Casten von Typen durch implicits• (Komplexes) Regelwerk, wann welche Implicits

herangezogen werden (Scopes)• Sehr mächtig!• Übersicht in großen Projekten? Vorsicht...• Nachteil?

Page 13: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 13

Sprache und Syntax - Lernkurve

• Flache Lernkurve im Vergleich zu Java oder C#• Weniger gut ausgebildete Entwickler• weniger gute Entwickler als bei Java / C# ?

• „einfache“ Syntax ist auch ein Nachteil von Java!• verleitet zur (Selbst)Überschätzung!

„Ich bin ein Java/Groovy/Python/Ruby-Experte!“

Page 14: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 14

Dokumentation

• Viel Dokumentation (zu viel?)• Viele Beispiele• Inzwischen viele gute Bücher• „akademische Bücher vs. Praxisbücher“

Page 15: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 15

Agenda

• Motivation• Enterprise ?• Sprache und Syntax• Scala-Versionen und Kompatibilität• IDE's, Build-Systeme und Tool Support• Support und Wartung• Fazit

Page 16: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 16

Scala-Versionen und Kompatibilität

• Scala 2.8 nicht binärkompatibel mit 2.7• Scala 2.9 nicht binärkompatibel mit 2.8• Verwendete Frameworks müssen im richtigen

„Binärformat“ vorliegen• Upgrade auf neue Scala-Version?

• update Dependencys

• u.U. update des Sourcecodes

Page 17: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 17

Binärkompatibilität

• Tatsächlich ein Problem?• Wie oft wechseln Projekte die Basis (z.B. JDK)?• Aber:Tool's in einer neuen Version erfordern u.U.

neue Scala-Version• Problem? Auch in Java...

Page 18: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 18

Agenda

• Motivation• Enterprise ?• Sprache und Syntax• Scala-Versionen und Kompatibilität• IDE's, Build-Systeme und Tool Support• Support und Wartung• Fazit

Page 19: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 19

IDE's, Build-Systeme und Tool Support

• Eclipse

• Scala IDE

• Seit Scala IDE 2.x (relativ) OK

• Entscheiden während der Installation: Scala 2.x oder 2.9 ?

• IntelliJ

• Gute Unterstützung out of the Box

• NetBeans

• Gute Unterstützung (?)

• Vim / Emacs

• Sowieso ;-)

Page 20: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 20

Build-Systeme

• Simple Build Tool (sbt)

• In Scala für Scala

• Scala-Versionshandling

• Hudson / Jenkins Plugin

Maven

• Ist möglich...

• gleiche Bugs und Probleme wie bei Java-Projekten

• Gradle

• Scala Plugin

Page 21: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 21

Toolchain und Integration

• Herausforderungen mit sbt

• sbt-Projekt in Eclipse importieren?

• → sbteclipse

• sbt-Projekt in IDEA importieren?

• → Plugin

• Bisher keine Integration von sbt in Eclipse oder IDEA analog

zu Ant oder Maven (m2e)

• Stört?

Page 22: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 22

Tool's und Frameworks

• Fast alle Java Frameworks

• Hibernate / JPA, Log4J, Spring (!) usw. usw.

• Conversions beachten !

• AOP-Frameworks...

• Pure Scala Frameworks

• Wachsende Anzahl, z.B. für Unittests (specs)

• Webframeworks

• Aber immer Abhängigkeit zur Scala-Version

Page 23: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 23

Agenda

• Motivation• Enterprise ?• Sprache und Syntax• Scala-Versionen und Kompatibilität• IDE's, Build-Systeme und Tool Support• Support und Wartung• Fazit

Page 24: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 24

Support und Wartung

• „Wen kann ich denn verklagen?“• Problem in konservativem Projektumfeld• Typisch Deutsch ;-)• Seit 2011: Typesafe

• Von den „Machern“ von Scala und Akka

• Kommerzieller Support für den „Typesafe Stack“

• Scala, Akka, Scala IDE, sbt

Page 25: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 25

Agenda

• Motivation• Enterprise ?• Sprache und Syntax• Scala-Versionen und Kompatibilität• IDE's, Build-Systeme und Tool Support• Support und Wartung• Fazit

Page 26: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 26

Fazit

• Sprache und Syntax • Lernkurve, Verfügbarkeit• Scala-Versionen und Binärkompatibilität• IDE-Integration• Build-Systeme• Tools und Frameworks• Support und Wartung

Page 27: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 27

Fazit

Scala ist Reif für Enterprise!

Page 28: Reif? Scala für Enterprise-Applikationen

Herbstcampus 2011 – Reif? - Scala für Enterprise-Applikationen 28

Page 29: Reif? Scala für Enterprise-Applikationen

Vielen Dank!

Dr. Halil-Cem Gürsoyadesso AG

@hgutwit & http://goo.gl/hljRS

Page 30: Reif? Scala für Enterprise-Applikationen

Wir suchen Sie als

Software Architekt (m/w)

Projektleiter (m/w)

Senior Software Engineer (m/w)

[email protected]