SlideShare ist ein Scribd-Unternehmen logo
1 von 34
Downloaden Sie, um offline zu lesen
Scala für Enterprise-Applikationen
Eine Bestandsaufnahme


Dr. Halil-Cem Gürsoy
adesso AG


Twitter: @hgutwit
G+: http://goo.gl/hljRS




25.11.11
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




25.11.11   2   Scala für Enterprise-Applikationen
Agenda


►   Motivation

►   Enterprise ?

►   Sprache und Syntax

►   Scala-Versionen und Kompatibilität

►   IDE's, Build-Systeme und Tool Support

►   Support und Wartung

►   Fazit


25.11.11   3   Scala für Enterprise-Applikationen
Agenda


►   Motivation

►   Enterprise ?

►   Sprache und Syntax

►   Scala-Versionen und Kompatibilität

►   IDE's, Build-Systeme und Tool Support

►   Support und Wartung

►   Fazit


25.11.11   4   Scala für Enterprise-Applikationen
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 ?
►   Scalable Language
►   Prof. Martin Odersky, EPFL


           Pizza
               (2001)

                                                         GJ
                                                        (-2004)



                                                                  Scala
                                                                  (2004)




►   Scala 2.9: 05.2011




25.11.11   6       Scala für Enterprise-Applikationen
Agenda


►   Motivation

►   Enterprise ?

►   Sprache und Syntax

►   Scala-Versionen und Kompatibilität

►   IDE's, Build-Systeme und Tool Support

►   Support und Wartung

►   Fazit


25.11.11   7   Scala für Enterprise-Applikationen
Enterprise


►   Definitionen ?
    > „A business organization“

    > Unternehmen = Enterprise

►   A. Blewitt's Definition
    > Twitter – Nach seiner Definition kein Enterprise (!)

    > Startups – auch kein Enterprise, da zu klein und unbedeutend

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




25.11.11   8   Scala für Enterprise-Applikationen
Ein Definitions-Versuch




                              „Enterprise“ sind alle
                                   Unternehmen und
                   Unternehmungen, von deren
                   Erfolg Menschen existentiell
                                               abhängen



25.11.11   9   Scala für Enterprise-Applikationen
Agenda


►   Motivation

►   Enterprise ?

►   Sprache und Syntax

►   Scala-Versionen und Kompatibilität

►   IDE's, Build-Systeme und Tool Support

►   Support und Wartung

►   Fazit


25.11.11   10   Scala für Enterprise-Applikationen
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“

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


(aus Wikipedia.de)


►   Erfahrung notwendig!



25.11.11   11   Scala für Enterprise-Applikationen
Sprache und Syntax - Implicits


►   „pixie magic called implicits“

►   Casten von Typen durch Implicits

►   (Komplexes) Regelwerk, wann welche Implicits herangezogen werden
    (Scopes)

►   Sehr mächtiges Feature!

►   Übersicht in großen Projekten?

►   Sind Implicits ein Nachteil?




25.11.11   12   Scala für Enterprise-Applikationen
Traits und mehr...


►   Traits
    > Zwischen Java-Interfaces und Klassen

    > Ermöglicht „Mehrfachvererbung“

    > Mächtiges Feature

►   Einige ausgewählte Vorteile
    > Alles ist ein Objekt

    > Auch Funktionen sind Objekte (FP!)

    > Native XML-Unterstützung

    > Actors


25.11.11     13   Scala für Enterprise-Applikationen
Sprache - Dokumentation


►   Viel Dokumentation (zu viel?)

►   Viele Beispiele

►   Inzwischen viele gute Bücher

►   „akademische Bücher vs. Praxisbücher“




25.11.11   14   Scala für Enterprise-Applikationen
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!“


25.11.11   15   Scala für Enterprise-Applikationen
Scala zu komplex


►   Grundsätzliche Frage

►   Ist die Syntax von Scala und die Sprachkonstrukte zu komplex?

►   Was trauen Sie Ihren Entwicklern zu?



►   Sind Ihre Entwickler Enterprise-Ready?




25.11.11   16   Scala für Enterprise-Applikationen
Agenda


►   Motivation

►   Enterprise ?

►   Sprache und Syntax

►   Scala-Versionen und Kompatibilität

►   IDE's, Build-Systeme und Tool Support

►   Support und Wartung

►   Fazit


25.11.11   17   Scala für Enterprise-Applikationen
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




25.11.11   18   Scala für Enterprise-Applikationen
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

►   Ist Binärkompatibilität tatsächlich ein Problem?

►   Wie ist es in Java?




25.11.11   19   Scala für Enterprise-Applikationen
Agenda


►   Motivation

►   Enterprise ?

►   Sprache und Syntax

►   Scala-Versionen und Kompatibilität

►   IDE's, Build-Systeme und Tool Support

►   Support und Wartung

►   Fazit


25.11.11   20   Scala für Enterprise-Applikationen
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 ?

    > Teil des Typesafe-Stacks




25.11.11   21   Scala für Enterprise-Applikationen
Scala IDE in Action




25.11.11   22   Scala für Enterprise-Applikationen
Weitere IDE's


►   IntelliJ
    > Gute Unterstützung out of the Box

►   NetBeans
    > Gute Unterstützung (?)

►   Vim / Emacs
    > Sowieso ;-)




25.11.11   23   Scala für Enterprise-Applikationen
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



25.11.11   24   Scala für Enterprise-Applikationen
Beispiel für sbt-Konfiguration

name := "MyScalaProj"
version := "0.1"
organization := "de.adesso.hgu"
javacOptions ++= Seq("-source", "1.6", "-target", "1.6")
scalacOptions += "-deprecation"
scalaVersion := "2.8.1"
libraryDependencies += "org.mockito" % "mockito-all" % "1.8.5" %
"test"
libraryDependencies                  += "org.scala-tools.testing" %% "specs" %
"1.6.7"
libraryDependencies                  += "org.scala-tools.testing" %% "scalacheck" %
"1.8"




25.11.11   25   Scala für Enterprise-Applikationen
Scala-Toolchain


►   Herausforderungen mit sbt
    > sbt-Projekt in Eclipse importieren mit sbt-plugin sbteclipse

    > sbt-Projekt in IDEA importieren sbt-Plugin vorhanden

    > Bisher keine Integration von sbt in Eclipse oder IDEA analog zu Ant

           oder Maven (m2e)

    > Dadurch größere Roundtrips

►   sbteclipse
    > Wird aktiv entwickelt




25.11.11     26   Scala für Enterprise-Applikationen
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



25.11.11   27   Scala für Enterprise-Applikationen
Agenda


►   Motivation

►   Enterprise ?

►   Sprache und Syntax

►   Scala-Versionen und Kompatibilität

►   IDE's, Build-Systeme und Tool Support

►   Support und Wartung

►   Fazit


25.11.11   28   Scala für Enterprise-Applikationen
Support und Toolchain


►   „Wen kann ich im Notfall 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




25.11.11   29   Scala für Enterprise-Applikationen
Agenda


►   Motivation

►   Enterprise ?

►   Sprache und Syntax

►   Scala-Versionen und Kompatibilität

►   IDE's, Build-Systeme und Tool Support

►   Support und Wartung

►   Fazit


25.11.11   30   Scala für Enterprise-Applikationen
Fazit


►   Sprache und Syntax

►   Lernkurve, Verfügbarkeit

►   Scala-Versionen und Binärkompatibilität

►   IDE-Integration

►   Build-Systeme

►   Tools und Frameworks

►   Support und Wartung




25.11.11   31   Scala für Enterprise-Applikationen
Fazit




                Scala ist Reif für Enterprise!




25.11.11   32   Scala für Enterprise-Applikationen
25.11.11   33   Scala für Enterprise-Applikationen
Danke für Ihre Aufmerksamkeit!




25.11.11   34   Scala für Enterprise-Applikationen

Weitere ähnliche Inhalte

Andere mochten auch (20)

Pc Hardware Ueberblick 2012
Pc Hardware Ueberblick 2012Pc Hardware Ueberblick 2012
Pc Hardware Ueberblick 2012
 
Lernzielkontrolle kugel
Lernzielkontrolle kugelLernzielkontrolle kugel
Lernzielkontrolle kugel
 
Was ist glaube? - What is faith?
Was ist glaube? - What is faith?Was ist glaube? - What is faith?
Was ist glaube? - What is faith?
 
Erfolg nach Rolf Berth
Erfolg nach Rolf BerthErfolg nach Rolf Berth
Erfolg nach Rolf Berth
 
Jugendkriminalität in frankfurt
Jugendkriminalität in frankfurtJugendkriminalität in frankfurt
Jugendkriminalität in frankfurt
 
IFC Ebert Tagung Instandhaltung 2015
IFC Ebert Tagung Instandhaltung 2015IFC Ebert Tagung Instandhaltung 2015
IFC Ebert Tagung Instandhaltung 2015
 
SOCIAL-WORLD Folder Deutschland
SOCIAL-WORLD Folder DeutschlandSOCIAL-WORLD Folder Deutschland
SOCIAL-WORLD Folder Deutschland
 
Converter suhu
Converter suhuConverter suhu
Converter suhu
 
FMK2012: Filemaker im Dauereinsatz von Marcin Pankowski
FMK2012: Filemaker im Dauereinsatz von Marcin PankowskiFMK2012: Filemaker im Dauereinsatz von Marcin Pankowski
FMK2012: Filemaker im Dauereinsatz von Marcin Pankowski
 
Middelburg Winter 2010
Middelburg Winter 2010Middelburg Winter 2010
Middelburg Winter 2010
 
Lernstand8
Lernstand8Lernstand8
Lernstand8
 
Rocio
RocioRocio
Rocio
 
Free englishgrammar
Free englishgrammarFree englishgrammar
Free englishgrammar
 
Fasching2013
Fasching2013Fasching2013
Fasching2013
 
Social Media - Wo Deine Leser schon auf Dich warten
Social Media - Wo Deine Leser schon auf Dich wartenSocial Media - Wo Deine Leser schon auf Dich warten
Social Media - Wo Deine Leser schon auf Dich warten
 
Psalmen 8 Malbuch
Psalmen 8 MalbuchPsalmen 8 Malbuch
Psalmen 8 Malbuch
 
Blizzard bossland 2
Blizzard bossland 2Blizzard bossland 2
Blizzard bossland 2
 
Pitch deck
Pitch deckPitch deck
Pitch deck
 
Finanzkrise
FinanzkriseFinanzkrise
Finanzkrise
 
Julieta
JulietaJulieta
Julieta
 

Ähnlich wie Scala 4 Enterprise

Scala und Lift
Scala und LiftScala und Lift
Scala und Liftadesso AG
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Torsten Kleiber
 
Nigh Session Scala
Nigh Session ScalaNigh Session Scala
Nigh Session Scalaadesso AG
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatengeKarin Patenge
 
Ansible für Entwickler: Konfigurationsmanagement nicht nur für Ops
Ansible für Entwickler: Konfigurationsmanagement nicht nur für OpsAnsible für Entwickler: Konfigurationsmanagement nicht nur für Ops
Ansible für Entwickler: Konfigurationsmanagement nicht nur für OpsQAware GmbH
 
Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)Niels de Bruijn
 
Webinar - ABAP Development Tools
Webinar - ABAP Development ToolsWebinar - ABAP Development Tools
Webinar - ABAP Development ToolsCadaxo GmbH
 
Kennst du ein Unternehmen, dass erfolgreich die QS outtasked hat?“
Kennst du einUnternehmen, dass erfolgreichdie QS outtasked hat?“Kennst du einUnternehmen, dass erfolgreichdie QS outtasked hat?“
Kennst du ein Unternehmen, dass erfolgreich die QS outtasked hat?“hpaustria
 
Ü̈ber Ant und Maven zu SBT und Gradle
Ü̈ber Ant und Maven zu SBT und GradleÜ̈ber Ant und Maven zu SBT und Gradle
Ü̈ber Ant und Maven zu SBT und Gradleadesso AG
 
Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Thorsten Kamann
 
BASTA Spring 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOps
BASTA Spring 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOpsBASTA Spring 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOps
BASTA Spring 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOpsMarc Müller
 
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatengeKarin Patenge
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerSteven Grzbielok
 
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...Lukas Eder
 
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...Marc Müller
 
Oracle Database 12c Release 2
Oracle Database 12c Release 2 Oracle Database 12c Release 2
Oracle Database 12c Release 2 oraclebudb
 
Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2Ulrike Schwinn
 

Ähnlich wie Scala 4 Enterprise (20)

Scala und Lift
Scala und LiftScala und Lift
Scala und Lift
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020
 
Nigh Session Scala
Nigh Session ScalaNigh Session Scala
Nigh Session Scala
 
Scala
ScalaScala
Scala
 
DOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best PracticeDOAG 2010: ADF Faces RC Best Practice
DOAG 2010: ADF Faces RC Best Practice
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
 
Ansible für Entwickler: Konfigurationsmanagement nicht nur für Ops
Ansible für Entwickler: Konfigurationsmanagement nicht nur für OpsAnsible für Entwickler: Konfigurationsmanagement nicht nur für Ops
Ansible für Entwickler: Konfigurationsmanagement nicht nur für Ops
 
Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)Anwendungsmodernisierung mit Oracle Application Express (APEX)
Anwendungsmodernisierung mit Oracle Application Express (APEX)
 
Webinar - ABAP Development Tools
Webinar - ABAP Development ToolsWebinar - ABAP Development Tools
Webinar - ABAP Development Tools
 
Kennst du ein Unternehmen, dass erfolgreich die QS outtasked hat?“
Kennst du einUnternehmen, dass erfolgreichdie QS outtasked hat?“Kennst du einUnternehmen, dass erfolgreichdie QS outtasked hat?“
Kennst du ein Unternehmen, dass erfolgreich die QS outtasked hat?“
 
Ü̈ber Ant und Maven zu SBT und Gradle
Ü̈ber Ant und Maven zu SBT und GradleÜ̈ber Ant und Maven zu SBT und Gradle
Ü̈ber Ant und Maven zu SBT und Gradle
 
Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?Maven2 - Die nächste Generation des Buildmanagements?
Maven2 - Die nächste Generation des Buildmanagements?
 
BASTA Spring 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOps
BASTA Spring 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOpsBASTA Spring 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOps
BASTA Spring 2022 - Top 10 Best-Practices für YAML-Pipelines in Azure DevOps
 
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
20171121_DOAGKonferenz_JSON_OracleNoSQL_KPatenge
 
Boost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with DockerBoost your APEX Deployment and Provisioning with Docker
Boost your APEX Deployment and Provisioning with Docker
 
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
iJUG Java Aktuell [Februar 2015] Lukas Eder - jOOQ - ein alternativer Weg mit...
 
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
OC|Webcast: Oracle Lizenzierung - Lizenznews 2021
 
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
BASTA Spring 2016: Test- und Releaseumgebungen der nächsten Generation mit TF...
 
Oracle Database 12c Release 2
Oracle Database 12c Release 2 Oracle Database 12c Release 2
Oracle Database 12c Release 2
 
Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2
 

Mehr von adesso AG

SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)adesso AG
 
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPSNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPadesso AG
 
Mythos High Performance Teams
Mythos High Performance TeamsMythos High Performance Teams
Mythos High Performance Teamsadesso AG
 
A Business-Critical SharePoint Solution From adesso AG
A Business-CriticalSharePoint SolutionFrom adesso AGA Business-CriticalSharePoint SolutionFrom adesso AG
A Business-Critical SharePoint Solution From adesso AGadesso AG
 
Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!adesso AG
 
Continuous Delivery praktisch
Continuous Delivery praktischContinuous Delivery praktisch
Continuous Delivery praktischadesso AG
 
Agilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous DeliveryAgilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous Deliveryadesso AG
 
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?adesso AG
 
Getriebene Anwendungslandschaften
Getriebene AnwendungslandschaftenGetriebene Anwendungslandschaften
Getriebene Anwendungslandschaftenadesso AG
 
Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013adesso AG
 
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)adesso AG
 
OOP 2013 NoSQL Suche
OOP 2013 NoSQL SucheOOP 2013 NoSQL Suche
OOP 2013 NoSQL Sucheadesso AG
 
NoSQL in der Cloud - Why?
NoSQL in der Cloud -  Why?NoSQL in der Cloud -  Why?
NoSQL in der Cloud - Why?adesso AG
 
Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.adesso AG
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDIadesso AG
 
Zehn Hinweise für Architekten
Zehn Hinweise für ArchitektenZehn Hinweise für Architekten
Zehn Hinweise für Architektenadesso AG
 
Agile Praktiken
Agile PraktikenAgile Praktiken
Agile Praktikenadesso AG
 
Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS adesso AG
 
Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5adesso AG
 
CloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App EngineCloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App Engineadesso AG
 

Mehr von adesso AG (20)

SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP (Kurzversion)
 
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMPSNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
SNMP Applied - Sicheres Anwendungs-Monitoring mit SNMP
 
Mythos High Performance Teams
Mythos High Performance TeamsMythos High Performance Teams
Mythos High Performance Teams
 
A Business-Critical SharePoint Solution From adesso AG
A Business-CriticalSharePoint SolutionFrom adesso AGA Business-CriticalSharePoint SolutionFrom adesso AG
A Business-Critical SharePoint Solution From adesso AG
 
Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!Was Sie über NoSQL Datenbanken wissen sollten!
Was Sie über NoSQL Datenbanken wissen sollten!
 
Continuous Delivery praktisch
Continuous Delivery praktischContinuous Delivery praktisch
Continuous Delivery praktisch
 
Agilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous DeliveryAgilität, Snapshots und Continuous Delivery
Agilität, Snapshots und Continuous Delivery
 
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
Wozu Portlets – reichen HTML5 und Rest nicht aus für moderne Portale?
 
Getriebene Anwendungslandschaften
Getriebene AnwendungslandschaftenGetriebene Anwendungslandschaften
Getriebene Anwendungslandschaften
 
Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013Google App Engine JAX PaaS Parade 2013
Google App Engine JAX PaaS Parade 2013
 
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
Wartbare Web-Anwendungen mit Knockout.js und Model-View-ViewModel (MVVM)
 
OOP 2013 NoSQL Suche
OOP 2013 NoSQL SucheOOP 2013 NoSQL Suche
OOP 2013 NoSQL Suche
 
NoSQL in der Cloud - Why?
NoSQL in der Cloud -  Why?NoSQL in der Cloud -  Why?
NoSQL in der Cloud - Why?
 
Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.Lean web architecture mit jsf 2.0, cdi & co.
Lean web architecture mit jsf 2.0, cdi & co.
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
 
Zehn Hinweise für Architekten
Zehn Hinweise für ArchitektenZehn Hinweise für Architekten
Zehn Hinweise für Architekten
 
Agile Praktiken
Agile PraktikenAgile Praktiken
Agile Praktiken
 
Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS Java und Cloud - nicht nur mit PaaS
Java und Cloud - nicht nur mit PaaS
 
Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5Neue EBusiness Perspektiven durch HTML5
Neue EBusiness Perspektiven durch HTML5
 
CloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App EngineCloudConf2011 Introduction to Google App Engine
CloudConf2011 Introduction to Google App Engine
 

Scala 4 Enterprise

  • 1. Scala für Enterprise-Applikationen Eine Bestandsaufnahme Dr. Halil-Cem Gürsoy adesso AG Twitter: @hgutwit G+: http://goo.gl/hljRS 25.11.11
  • 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 25.11.11 2 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 25.11.11 3 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 25.11.11 4 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 ?
  • 6. Scalable Language ► Prof. Martin Odersky, EPFL Pizza (2001) GJ (-2004) Scala (2004) ► Scala 2.9: 05.2011 25.11.11 6 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 25.11.11 7 Scala für Enterprise-Applikationen
  • 8. Enterprise ► Definitionen ? > „A business organization“ > Unternehmen = Enterprise ► A. Blewitt's Definition > Twitter – Nach seiner Definition kein Enterprise (!) > Startups – auch kein Enterprise, da zu klein und unbedeutend > 10^n Mitarbeiter, X Millionen € Umsatz = Enterprise 25.11.11 8 Scala für Enterprise-Applikationen
  • 9. Ein Definitions-Versuch „Enterprise“ sind alle Unternehmen und Unternehmungen, von deren Erfolg Menschen existentiell abhängen 25.11.11 9 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 25.11.11 10 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“ 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)) } } (aus Wikipedia.de) ► Erfahrung notwendig! 25.11.11 11 Scala für Enterprise-Applikationen
  • 12. Sprache und Syntax - Implicits ► „pixie magic called implicits“ ► Casten von Typen durch Implicits ► (Komplexes) Regelwerk, wann welche Implicits herangezogen werden (Scopes) ► Sehr mächtiges Feature! ► Übersicht in großen Projekten? ► Sind Implicits ein Nachteil? 25.11.11 12 Scala für Enterprise-Applikationen
  • 13. Traits und mehr... ► Traits > Zwischen Java-Interfaces und Klassen > Ermöglicht „Mehrfachvererbung“ > Mächtiges Feature ► Einige ausgewählte Vorteile > Alles ist ein Objekt > Auch Funktionen sind Objekte (FP!) > Native XML-Unterstützung > Actors 25.11.11 13 Scala für Enterprise-Applikationen
  • 14. Sprache - Dokumentation ► Viel Dokumentation (zu viel?) ► Viele Beispiele ► Inzwischen viele gute Bücher ► „akademische Bücher vs. Praxisbücher“ 25.11.11 14 Scala für Enterprise-Applikationen
  • 15. 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!“ 25.11.11 15 Scala für Enterprise-Applikationen
  • 16. Scala zu komplex ► Grundsätzliche Frage ► Ist die Syntax von Scala und die Sprachkonstrukte zu komplex? ► Was trauen Sie Ihren Entwicklern zu? ► Sind Ihre Entwickler Enterprise-Ready? 25.11.11 16 Scala für Enterprise-Applikationen
  • 17. Agenda ► Motivation ► Enterprise ? ► Sprache und Syntax ► Scala-Versionen und Kompatibilität ► IDE's, Build-Systeme und Tool Support ► Support und Wartung ► Fazit 25.11.11 17 Scala für Enterprise-Applikationen
  • 18. 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 25.11.11 18 Scala für Enterprise-Applikationen
  • 19. 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 ► Ist Binärkompatibilität tatsächlich ein Problem? ► Wie ist es in Java? 25.11.11 19 Scala für Enterprise-Applikationen
  • 20. Agenda ► Motivation ► Enterprise ? ► Sprache und Syntax ► Scala-Versionen und Kompatibilität ► IDE's, Build-Systeme und Tool Support ► Support und Wartung ► Fazit 25.11.11 20 Scala für Enterprise-Applikationen
  • 21. 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 ? > Teil des Typesafe-Stacks 25.11.11 21 Scala für Enterprise-Applikationen
  • 22. Scala IDE in Action 25.11.11 22 Scala für Enterprise-Applikationen
  • 23. Weitere IDE's ► IntelliJ > Gute Unterstützung out of the Box ► NetBeans > Gute Unterstützung (?) ► Vim / Emacs > Sowieso ;-) 25.11.11 23 Scala für Enterprise-Applikationen
  • 24. 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 25.11.11 24 Scala für Enterprise-Applikationen
  • 25. Beispiel für sbt-Konfiguration name := "MyScalaProj" version := "0.1" organization := "de.adesso.hgu" javacOptions ++= Seq("-source", "1.6", "-target", "1.6") scalacOptions += "-deprecation" scalaVersion := "2.8.1" libraryDependencies += "org.mockito" % "mockito-all" % "1.8.5" % "test" libraryDependencies += "org.scala-tools.testing" %% "specs" % "1.6.7" libraryDependencies += "org.scala-tools.testing" %% "scalacheck" % "1.8" 25.11.11 25 Scala für Enterprise-Applikationen
  • 26. Scala-Toolchain ► Herausforderungen mit sbt > sbt-Projekt in Eclipse importieren mit sbt-plugin sbteclipse > sbt-Projekt in IDEA importieren sbt-Plugin vorhanden > Bisher keine Integration von sbt in Eclipse oder IDEA analog zu Ant oder Maven (m2e) > Dadurch größere Roundtrips ► sbteclipse > Wird aktiv entwickelt 25.11.11 26 Scala für Enterprise-Applikationen
  • 27. 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 25.11.11 27 Scala für Enterprise-Applikationen
  • 28. Agenda ► Motivation ► Enterprise ? ► Sprache und Syntax ► Scala-Versionen und Kompatibilität ► IDE's, Build-Systeme und Tool Support ► Support und Wartung ► Fazit 25.11.11 28 Scala für Enterprise-Applikationen
  • 29. Support und Toolchain ► „Wen kann ich im Notfall 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 25.11.11 29 Scala für Enterprise-Applikationen
  • 30. Agenda ► Motivation ► Enterprise ? ► Sprache und Syntax ► Scala-Versionen und Kompatibilität ► IDE's, Build-Systeme und Tool Support ► Support und Wartung ► Fazit 25.11.11 30 Scala für Enterprise-Applikationen
  • 31. Fazit ► Sprache und Syntax ► Lernkurve, Verfügbarkeit ► Scala-Versionen und Binärkompatibilität ► IDE-Integration ► Build-Systeme ► Tools und Frameworks ► Support und Wartung 25.11.11 31 Scala für Enterprise-Applikationen
  • 32. Fazit Scala ist Reif für Enterprise! 25.11.11 32 Scala für Enterprise-Applikationen
  • 33. 25.11.11 33 Scala für Enterprise-Applikationen
  • 34. Danke für Ihre Aufmerksamkeit! 25.11.11 34 Scala für Enterprise-Applikationen