SlideShare ist ein Scribd-Unternehmen logo
Haskell aus einer Java EE
Perspektive
Torsten Fink
torsten.fink@akquinet.de
akquinet
Zu meiner Person
1999-2003:
 Promotion über ausführbare Softwarearchitekturen
   für verteilte Systeme

Ab 2004: Berater bei der akquinet
   technischer Architekt in J2EE-Projekten
   Projektleitung
   Betriebsführung, Wartung
   klassische Beratung und Schulungen

2006-2010:
  Leiter des JBoss-Competence-Centers bei der akquinet
Ab 2011:
  Geschäftsführer der akquinet tech@spree

Copyright © 2010 – akquinet AG                       08.04.2013   2
Unsere Unternehmensstruktur
EK: Eigenkapital          Geschäftsprozesse                        akquinet AG                    Institut für Softwaretechnik
                          business consulting GmbH                 2,4 Mio. € EK                  und Outsourcing an der FH
                          100 T€ EK                                                               Wedel GmbH 100 T€ EK




                   JAVA                               SAP                          Microsoft / .NET                   Outsourcing

       Java/JBoss                           Security                         MS ERP Lösungen                     RZ Betrieb
       tech@spree GmbH                      enterprise solutions             dynamic solutions GmbH              outsourcing gem. GmbH
       300 T€ EK                            GmbH 130 T€ EK                   370 T€ EK                           250 T€ EK
       Java Entwicklung                     Öffentlicher Sektor              Logistik Lösungen                   RZ Services
       engineering GmbH                     public consulting &              SLS logistics GmbH                  business service GmbH
       50 T€ EK                             services GmbH                    250 T€ EK                           25 T€ EK
       agile Entwicklung                    100 T€ EK
                                                                             CRM und Sharepoint                  Infrastruktur
       it-agile GmbH                        ECM-Lösungen, Polen              business solutions                  system integration GmbH
       100 T€ EK                            gbs GmbH 25 T€ EK                GmbH 100 T€ EK                      125 T€ EK
                                            SAP-Lösungen,                    Business Intelligence               Applikationen
                                            Österreich                       finance und controllling            hosting services GmbH
                                            HKS business techn.              GmbH 100 T€ EK                      125 T€ EK
                                            GmbH 75 T€ EK
                                                                             Sozialwirtschaft                    RZ Planung und
                                                                             care GmbH 100 T€ EK                 Erstellung
                                                                                                                 data center competence
                                                                             Sanitätshäuser                      GmbH 100 T€ EK
                                                                             ristec GmbH 52 T€ EK

                                                                                                                        08.04.2013         3
Memories....




Copyright © 2010 – akquinet AG   08.04.2013   4
Die Programmiersprache

     What lies beneath..




Copyright © 2010 – akquinet AG   08.04.2013   5
Historien anhand der Standards

Haskell
                            Haskell-98           Haskell 2010
 1.0


1990 1997 1999                               2006    2010
  1995 1998                               2005    2009 2011

Java             JDK             JEE     JDK   JEE   JEE   JDK
1.0a             1.1             1.2     5.0   5.0   6.0   7.0

Copyright © 2010 – akquinet AG                                  08.04.2013   6
Mal zusammengefasst:




Copyright © 2010 – akquinet AG   08.04.2013   7
Was ist cool an Haskell?
     ... und wird von Java so
     nicht geboten...




Copyright © 2010 – akquinet AG   08.04.2013   8
Verzögerte Auswertung
Die Menge der natürlichen Zahlen:
      n = [1..]

Alle geraden Zahlen:
      g = [ x | x <- [1..], even x ]

Was man damit tun kann?
 z.B. Nummerierung von Textzeilen
  lines :: [String]
  numberedLines = zip n lines
     :: [(Integer, String)]

Abstrahiert:
 Schwerpunkt auf Beschreibung von Daten und nicht auf
  Berechnung
Copyright © 2010 – akquinet AG                      08.04.2013   9
Algebraische Datentypen
Aufbau per Konstrukturen
      data BinTreeT a =
       Tree (BinTreeT a) a (BinTreeT a) |
       Empty

Zugriff per Patterns
      binSearch::(Ord a)=> a->(BinTreeT a)->Bool
      binSearch                  _ Empty = False
      binSearch                  search (Tree left value right)
       | search                  < value = binSearch search left
       | search                  > value = binSearch search right
       | search                  == value = True

=> Ermöglicht kurzen, lesbaren Code

Copyright © 2010 – akquinet AG                                08.04.2013   10
Aber, was ist
mit Kapselung?
Mit Modulen!

Konzept:
 Verbergen der Konstruktoren
  => kein Pattern-Matching       module ADT
  => kein Zugriff auf Interna    ( binSearch
 Export von Erzeugungs-         , BinTreeT
  funktionen                     , createBinTree
                                 )
                                 where
=> Einfach und effektiv          ....

Copyright © 2010 – akquinet AG            08.04.2013   12
OO mit Funktionen ohne Daten

Typeklassen                      class Eq a => Ord a where
                                  compare :: a -> a ->
 Menge von                                        Ordering
  Funktionen, die es für           (<) :: a -> a -> Bool
                                   (>) :: a -> a -> Bool
  einen Datentyp                   … -- Snip
  geben muss                       x < y =
                                    case compare x y of
 unterstützen                        LT -> True
                                      _ -> False
  Mehrfachvererbung
                                 instance (Ord a) =>
 erlauben                         Ord (BinTreeT a) where
  Standardimplementie            … -- Snip
  rung
Copyright © 2010 – akquinet AG                      08.04.2013   13
Eine letztes Wort zu Typen

Haskell ist statisch stark typisiert.
D.h.
 jeder Ausdruck hat zur Compilezeit einen geprüften
  konkreten Typ
 keine Typfehler zur Laufzeit
 Optimierungsmöglichkeiten, da Typinformation zur
  Laufzeit nicht mehr benötigt

Und praktisch:
 Einsatz von Typen zur fachlichen Modellierung ermöglicht
  teilweise Korrektheitsprüfungen bei der Übersetzung

Copyright © 2010 – akquinet AG                    08.04.2013   14
Und nun das Beste!

                                 Referentielle Transparenz
                                 a = f b c d e g
                                  => a wird sich nie ändern
                                  Keine Seiteneffekte!
                                  Wesentlich einfachere
                                   Programm- und damit
                                   Fehleranalyse

                                 I/O über Monadenkonzept
Copyright © 2010 – akquinet AG                             08.04.2013   15
Weitere Unterschiede zu Java

Übersetzung in Binärcode
 Schnelle Startzeiten, keine externe
  Laufzeitumgebung
  (Bsp. Hello World: C 2ms; Haskell 3ms; Java 157ms)

System-näher
 Sehr dünne Abstraktion von System
 Orientierung an Posix und Unix
  (=> kein VM-Konzept)

Und, ja, Funktionen als 1st Class Citizen...

Copyright © 2010 – akquinet AG                 08.04.2013   16
Gibt es
auch
Probleme?
The Ugly...
Verzögerte Auswertung
 erzeugt selten schwer auffindbaren Speicherverbrauch

Typinferenz
 Funktioniert gut, erschreckt gerne mit
  Fehlermeldungen

Entwurfsentscheidungen
 waren manchmal unklug
 Bsp: String als [Char]
  Ergebnis:
  – zwei verbreitete Alternativen:
    Text, ByteString
  – Compiler-Erweiterung zum einfacheren Handling
Copyright © 2010 – akquinet AG                      08.04.2013   18
Frameworks
     Werkzeuge
     Im Schweinsgalopp...




Copyright © 2010 – akquinet AG   08.04.2013   19
Klassifikation von Frameworks




Copyright © 2010 – akquinet AG   08.04.2013   20
Yesod
     typsicher, REST-basiert und
     effizient




Copyright © 2010 – akquinet AG     08.04.2013   21
Die Oberfläche




Copyright © 2010 – akquinet AG   08.04.2013   22
Verknüpfung zu Haskell




Copyright © 2010 – akquinet AG   08.04.2013   23
Weitere Yesod-Features

Schneller Entwicklungsmodus
 Automatisches inkrementelle Übersetzung

REST mit JSON
 Gut geeignet für Single-Page-Anwendungen

Internationalisierung

Authentisierung
 mit Standardmodulen für OpenID, BrowserID, Oauth

Copyright © 2010 – akquinet AG               08.04.2013   24
Tests

                                 BDD mit HSpec




    Automatische Testdatenerzeugung mit QuickCheck
Copyright © 2010 – akquinet AG                   08.04.2013   25
Cabal, Hackage




Copyright © 2010 – akquinet AG   08.04.2013   26
Zusammengefasst




Copyright © 2010 – akquinet AG   08.04.2013   27
Gibt es
auch
Probleme?
The Ugly ....

Cabal, Hackage
 DLL-Hell^2, schnell ein Versions-
  Chaos
 IMHO: Es fehlt an Standard-
  plattformen
Yesod
 Cool, aber kein Standard
Es fehlt:
 JMS, XA

Copyright © 2010 – akquinet AG        08.04.2013   29
Resümee

     ... And the winner is ...




Copyright © 2010 – akquinet AG   08.04.2013   30
Resümee

Vergleich der Programmiersprache
 Haskell deutlich klarer und weiter trotz gewachsener
  Schrunden
 Java punktet mit Standardbibliotheken

Vergleich der Frameworks
 Java führt, insb. im Enterprise-Sektor
 Haskell hat genug für autonome Webanwendungen

Sonstiges
 #Java-Entwickler > #Haskell-Entwickler
 Wesentlich mehr Investitionen im Java-Bereich
Copyright © 2010 – akquinet AG                     08.04.2013   31
Your
Choice!




Copyright © 2010 – akquinet AG   08.04.2013   32

Weitere ähnliche Inhalte

PPTX
Mundialización & uniformidad nuevos centros & periferias
PDF
Formas de caras y sus gafas. Violeta Ferrer.
PPTX
La sociedad de la informacin
PPT
Webinar Winkelconcept
PDF
Wahrheit oder Pflicht
PDF
PRESENTACION CONGRESO NACIONAL DE DEMOCRACIA UNR 2014
PDF
Aggregation, Filterung und Visualisierung von Nachrichten aus heterogenen Que...
PPTX
Help premature babies
Mundialización & uniformidad nuevos centros & periferias
Formas de caras y sus gafas. Violeta Ferrer.
La sociedad de la informacin
Webinar Winkelconcept
Wahrheit oder Pflicht
PRESENTACION CONGRESO NACIONAL DE DEMOCRACIA UNR 2014
Aggregation, Filterung und Visualisierung von Nachrichten aus heterogenen Que...
Help premature babies

Andere mochten auch (19)

PDF
PHPUnit - Eine kurze Einführung
PDF
Historiographie bei den Benediktinern in Raigern – Unterschiede in der histor...
PDF
Storytelling - Mehr verkaufen durch Produktinszenierungen
DOCX
ambiente word de jairo XD
PPTX
Ppt tablet-pc-stylistic-q550de
DOCX
P2014 programcación 2do. (1)
PDF
Gazette June-August 2012
PDF
Maurice Pinay-1963-Verschwoerung-gegen-die-Kirche
PDF
Geometría plana
PPTX
Kleinstmögliches netzwerk
PDF
Deutsch Keramiktest
DOC
24. LTG-Sitzung am 16. Dezember 2010
PPTX
Katja Bett lernen_mit_neuen_medien_in_der_ausbildung2013
PDF
Presentatie projecten 2010/2011
PDF
Propuesta cgt accion social
DOC
11. LTG-Sitzung am 18. Dezember 2009
PPS
Fremdsprachenlexikonkurz
PDF
ÖW Marketingkampagne 2013 Spanien
PHPUnit - Eine kurze Einführung
Historiographie bei den Benediktinern in Raigern – Unterschiede in der histor...
Storytelling - Mehr verkaufen durch Produktinszenierungen
ambiente word de jairo XD
Ppt tablet-pc-stylistic-q550de
P2014 programcación 2do. (1)
Gazette June-August 2012
Maurice Pinay-1963-Verschwoerung-gegen-die-Kirche
Geometría plana
Kleinstmögliches netzwerk
Deutsch Keramiktest
24. LTG-Sitzung am 16. Dezember 2010
Katja Bett lernen_mit_neuen_medien_in_der_ausbildung2013
Presentatie projecten 2010/2011
Propuesta cgt accion social
11. LTG-Sitzung am 18. Dezember 2009
Fremdsprachenlexikonkurz
ÖW Marketingkampagne 2013 Spanien
Anzeige

Ähnlich wie Haskell aus einer Java EE Perspektive (20)

PDF
Intelligent Edge - breaking the storage hype (Michael Beeck, mibeeck GmbH)
PDF
Logical Data Warehouse - SQL mit Oracle DB und Hadoop
PDF
Power point stadtwerke cottbus w.will 16 9
PDF
Wird das Datacenter künstlich-intelligent?
PDF
iOS: Einstieg und Ausblick
PPTX
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
PPTX
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
PDF
INNOVATIONSPREIS-IT 2010 - Siegerliste.pdf
PDF
Mobile App Stores- HTML5 & Web apps
PPT
Das Prinzip Offenheit
PDF
mühlnickel beit_PechaKucha
PDF
Datenintegration und Datenbewirtschaftung mit Oracle - OPITZ CONSULTING - Til...
PPTX
Oracle Open World 2009 Review V1.6
PPTX
Mag. Dr. Thomas Petrik (Sphinx IT Consulting)
PDF
INNOVATIONSPREIS-IT 2011 - Siegerliste.pdf
PDF
Steffan Müller Standortübergreifende Liquiditätsanalyse mit Jedox bei der ...
PDF
Maskenvalidierung
PDF
Elastic Compute Cloud: Darf es noch ein Server mehr sein?
PDF
INNOVATIONSPREIS-IT 2010 - Nominiertenliste.pdf
PPTX
Java Forum - Unlock Your Logs
Intelligent Edge - breaking the storage hype (Michael Beeck, mibeeck GmbH)
Logical Data Warehouse - SQL mit Oracle DB und Hadoop
Power point stadtwerke cottbus w.will 16 9
Wird das Datacenter künstlich-intelligent?
iOS: Einstieg und Ausblick
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
INNOVATIONSPREIS-IT 2010 - Siegerliste.pdf
Mobile App Stores- HTML5 & Web apps
Das Prinzip Offenheit
mühlnickel beit_PechaKucha
Datenintegration und Datenbewirtschaftung mit Oracle - OPITZ CONSULTING - Til...
Oracle Open World 2009 Review V1.6
Mag. Dr. Thomas Petrik (Sphinx IT Consulting)
INNOVATIONSPREIS-IT 2011 - Siegerliste.pdf
Steffan Müller Standortübergreifende Liquiditätsanalyse mit Jedox bei der ...
Maskenvalidierung
Elastic Compute Cloud: Darf es noch ein Server mehr sein?
INNOVATIONSPREIS-IT 2010 - Nominiertenliste.pdf
Java Forum - Unlock Your Logs
Anzeige

Mehr von Torsten Fink (7)

PDF
MEAN SCS in der Cloud
PDF
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...
PDF
Funktionale Reaktive Programmierung mit Sodium
PDF
Docker in der Anwendungsentwicklung
PDF
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...
PDF
OptaPlanner hilft bei verteilten Schulstandorten
PDF
JSF Anwendungen testen mit AcceptIt
MEAN SCS in der Cloud
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...
Funktionale Reaktive Programmierung mit Sodium
Docker in der Anwendungsentwicklung
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...
OptaPlanner hilft bei verteilten Schulstandorten
JSF Anwendungen testen mit AcceptIt

Haskell aus einer Java EE Perspektive

  • 1. Haskell aus einer Java EE Perspektive Torsten Fink torsten.fink@akquinet.de akquinet
  • 2. Zu meiner Person 1999-2003:  Promotion über ausführbare Softwarearchitekturen für verteilte Systeme Ab 2004: Berater bei der akquinet  technischer Architekt in J2EE-Projekten  Projektleitung  Betriebsführung, Wartung  klassische Beratung und Schulungen 2006-2010: Leiter des JBoss-Competence-Centers bei der akquinet Ab 2011: Geschäftsführer der akquinet tech@spree Copyright © 2010 – akquinet AG 08.04.2013 2
  • 3. Unsere Unternehmensstruktur EK: Eigenkapital Geschäftsprozesse akquinet AG Institut für Softwaretechnik business consulting GmbH 2,4 Mio. € EK und Outsourcing an der FH 100 T€ EK Wedel GmbH 100 T€ EK JAVA SAP Microsoft / .NET Outsourcing Java/JBoss Security MS ERP Lösungen RZ Betrieb tech@spree GmbH enterprise solutions dynamic solutions GmbH outsourcing gem. GmbH 300 T€ EK GmbH 130 T€ EK 370 T€ EK 250 T€ EK Java Entwicklung Öffentlicher Sektor Logistik Lösungen RZ Services engineering GmbH public consulting & SLS logistics GmbH business service GmbH 50 T€ EK services GmbH 250 T€ EK 25 T€ EK agile Entwicklung 100 T€ EK CRM und Sharepoint Infrastruktur it-agile GmbH ECM-Lösungen, Polen business solutions system integration GmbH 100 T€ EK gbs GmbH 25 T€ EK GmbH 100 T€ EK 125 T€ EK SAP-Lösungen, Business Intelligence Applikationen Österreich finance und controllling hosting services GmbH HKS business techn. GmbH 100 T€ EK 125 T€ EK GmbH 75 T€ EK Sozialwirtschaft RZ Planung und care GmbH 100 T€ EK Erstellung data center competence Sanitätshäuser GmbH 100 T€ EK ristec GmbH 52 T€ EK 08.04.2013 3
  • 4. Memories.... Copyright © 2010 – akquinet AG 08.04.2013 4
  • 5. Die Programmiersprache What lies beneath.. Copyright © 2010 – akquinet AG 08.04.2013 5
  • 6. Historien anhand der Standards Haskell Haskell-98 Haskell 2010 1.0 1990 1997 1999 2006 2010 1995 1998 2005 2009 2011 Java JDK JEE JDK JEE JEE JDK 1.0a 1.1 1.2 5.0 5.0 6.0 7.0 Copyright © 2010 – akquinet AG 08.04.2013 6
  • 7. Mal zusammengefasst: Copyright © 2010 – akquinet AG 08.04.2013 7
  • 8. Was ist cool an Haskell? ... und wird von Java so nicht geboten... Copyright © 2010 – akquinet AG 08.04.2013 8
  • 9. Verzögerte Auswertung Die Menge der natürlichen Zahlen: n = [1..] Alle geraden Zahlen: g = [ x | x <- [1..], even x ] Was man damit tun kann?  z.B. Nummerierung von Textzeilen lines :: [String] numberedLines = zip n lines :: [(Integer, String)] Abstrahiert:  Schwerpunkt auf Beschreibung von Daten und nicht auf Berechnung Copyright © 2010 – akquinet AG 08.04.2013 9
  • 10. Algebraische Datentypen Aufbau per Konstrukturen data BinTreeT a = Tree (BinTreeT a) a (BinTreeT a) | Empty Zugriff per Patterns binSearch::(Ord a)=> a->(BinTreeT a)->Bool binSearch _ Empty = False binSearch search (Tree left value right) | search < value = binSearch search left | search > value = binSearch search right | search == value = True => Ermöglicht kurzen, lesbaren Code Copyright © 2010 – akquinet AG 08.04.2013 10
  • 11. Aber, was ist mit Kapselung?
  • 12. Mit Modulen! Konzept:  Verbergen der Konstruktoren => kein Pattern-Matching module ADT => kein Zugriff auf Interna ( binSearch  Export von Erzeugungs- , BinTreeT funktionen , createBinTree ) where => Einfach und effektiv .... Copyright © 2010 – akquinet AG 08.04.2013 12
  • 13. OO mit Funktionen ohne Daten Typeklassen class Eq a => Ord a where compare :: a -> a ->  Menge von Ordering Funktionen, die es für (<) :: a -> a -> Bool (>) :: a -> a -> Bool einen Datentyp … -- Snip geben muss x < y = case compare x y of  unterstützen LT -> True _ -> False Mehrfachvererbung instance (Ord a) =>  erlauben Ord (BinTreeT a) where Standardimplementie … -- Snip rung Copyright © 2010 – akquinet AG 08.04.2013 13
  • 14. Eine letztes Wort zu Typen Haskell ist statisch stark typisiert. D.h.  jeder Ausdruck hat zur Compilezeit einen geprüften konkreten Typ  keine Typfehler zur Laufzeit  Optimierungsmöglichkeiten, da Typinformation zur Laufzeit nicht mehr benötigt Und praktisch:  Einsatz von Typen zur fachlichen Modellierung ermöglicht teilweise Korrektheitsprüfungen bei der Übersetzung Copyright © 2010 – akquinet AG 08.04.2013 14
  • 15. Und nun das Beste! Referentielle Transparenz a = f b c d e g => a wird sich nie ändern  Keine Seiteneffekte!  Wesentlich einfachere Programm- und damit Fehleranalyse I/O über Monadenkonzept Copyright © 2010 – akquinet AG 08.04.2013 15
  • 16. Weitere Unterschiede zu Java Übersetzung in Binärcode  Schnelle Startzeiten, keine externe Laufzeitumgebung (Bsp. Hello World: C 2ms; Haskell 3ms; Java 157ms) System-näher  Sehr dünne Abstraktion von System  Orientierung an Posix und Unix (=> kein VM-Konzept) Und, ja, Funktionen als 1st Class Citizen... Copyright © 2010 – akquinet AG 08.04.2013 16
  • 18. The Ugly... Verzögerte Auswertung  erzeugt selten schwer auffindbaren Speicherverbrauch Typinferenz  Funktioniert gut, erschreckt gerne mit Fehlermeldungen Entwurfsentscheidungen  waren manchmal unklug  Bsp: String als [Char] Ergebnis: – zwei verbreitete Alternativen: Text, ByteString – Compiler-Erweiterung zum einfacheren Handling Copyright © 2010 – akquinet AG 08.04.2013 18
  • 19. Frameworks Werkzeuge Im Schweinsgalopp... Copyright © 2010 – akquinet AG 08.04.2013 19
  • 20. Klassifikation von Frameworks Copyright © 2010 – akquinet AG 08.04.2013 20
  • 21. Yesod typsicher, REST-basiert und effizient Copyright © 2010 – akquinet AG 08.04.2013 21
  • 22. Die Oberfläche Copyright © 2010 – akquinet AG 08.04.2013 22
  • 23. Verknüpfung zu Haskell Copyright © 2010 – akquinet AG 08.04.2013 23
  • 24. Weitere Yesod-Features Schneller Entwicklungsmodus  Automatisches inkrementelle Übersetzung REST mit JSON  Gut geeignet für Single-Page-Anwendungen Internationalisierung Authentisierung  mit Standardmodulen für OpenID, BrowserID, Oauth Copyright © 2010 – akquinet AG 08.04.2013 24
  • 25. Tests BDD mit HSpec Automatische Testdatenerzeugung mit QuickCheck Copyright © 2010 – akquinet AG 08.04.2013 25
  • 26. Cabal, Hackage Copyright © 2010 – akquinet AG 08.04.2013 26
  • 27. Zusammengefasst Copyright © 2010 – akquinet AG 08.04.2013 27
  • 29. The Ugly .... Cabal, Hackage  DLL-Hell^2, schnell ein Versions- Chaos  IMHO: Es fehlt an Standard- plattformen Yesod  Cool, aber kein Standard Es fehlt:  JMS, XA Copyright © 2010 – akquinet AG 08.04.2013 29
  • 30. Resümee ... And the winner is ... Copyright © 2010 – akquinet AG 08.04.2013 30
  • 31. Resümee Vergleich der Programmiersprache  Haskell deutlich klarer und weiter trotz gewachsener Schrunden  Java punktet mit Standardbibliotheken Vergleich der Frameworks  Java führt, insb. im Enterprise-Sektor  Haskell hat genug für autonome Webanwendungen Sonstiges  #Java-Entwickler > #Haskell-Entwickler  Wesentlich mehr Investitionen im Java-Bereich Copyright © 2010 – akquinet AG 08.04.2013 31
  • 32. Your Choice! Copyright © 2010 – akquinet AG 08.04.2013 32