SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
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

Mais conteúdo relacionado

Destaque

Help premature babies
Help premature babiesHelp premature babies
Help premature babiesLIsapen9
 
PHPUnit - Eine kurze Einführung
PHPUnit - Eine kurze EinführungPHPUnit - Eine kurze Einführung
PHPUnit - Eine kurze Einführungfrankstaude
 
Historiographie bei den Benediktinern in Raigern – Unterschiede in der histor...
Historiographie bei den Benediktinern in Raigern – Unterschiede in der histor...Historiographie bei den Benediktinern in Raigern – Unterschiede in der histor...
Historiographie bei den Benediktinern in Raigern – Unterschiede in der histor...MoravskaZemskaKnihovna
 
Storytelling - Mehr verkaufen durch Produktinszenierungen
Storytelling - Mehr verkaufen durch ProduktinszenierungenStorytelling - Mehr verkaufen durch Produktinszenierungen
Storytelling - Mehr verkaufen durch ProduktinszenierungenKai Radanitsch
 
ambiente word de jairo XD
ambiente word de jairo XDambiente word de jairo XD
ambiente word de jairo XDjsduartec2008
 
Gazette June-August 2012
Gazette June-August 2012Gazette June-August 2012
Gazette June-August 2012sehgazette
 
Maurice Pinay-1963-Verschwoerung-gegen-die-Kirche
Maurice Pinay-1963-Verschwoerung-gegen-die-KircheMaurice Pinay-1963-Verschwoerung-gegen-die-Kirche
Maurice Pinay-1963-Verschwoerung-gegen-die-KircheHans Wolter
 
Geometría plana
Geometría planaGeometría plana
Geometría planaYunae
 
Kleinstmögliches netzwerk
Kleinstmögliches netzwerkKleinstmögliches netzwerk
Kleinstmögliches netzwerkovm-lukas
 
Deutsch Keramiktest
Deutsch   KeramiktestDeutsch   Keramiktest
Deutsch KeramiktestRalf Kotalla
 
24. LTG-Sitzung am 16. Dezember 2010
24. LTG-Sitzung am 16. Dezember 201024. LTG-Sitzung am 16. Dezember 2010
24. LTG-Sitzung am 16. Dezember 2010Stephan Tauschitz
 
Katja Bett lernen_mit_neuen_medien_in_der_ausbildung2013
Katja Bett lernen_mit_neuen_medien_in_der_ausbildung2013Katja Bett lernen_mit_neuen_medien_in_der_ausbildung2013
Katja Bett lernen_mit_neuen_medien_in_der_ausbildung2013Katja Bett
 
Presentatie projecten 2010/2011
Presentatie projecten 2010/2011Presentatie projecten 2010/2011
Presentatie projecten 2010/2011keesjanverplanke
 
11. LTG-Sitzung am 18. Dezember 2009
11. LTG-Sitzung am 18. Dezember 200911. LTG-Sitzung am 18. Dezember 2009
11. LTG-Sitzung am 18. Dezember 2009Stephan Tauschitz
 
Fremdsprachenlexikonkurz
FremdsprachenlexikonkurzFremdsprachenlexikonkurz
FremdsprachenlexikonkurzAster46
 

Destaque (20)

Help premature babies
Help premature babiesHelp premature babies
Help premature babies
 
PHPUnit - Eine kurze Einführung
PHPUnit - Eine kurze EinführungPHPUnit - Eine kurze Einführung
PHPUnit - Eine kurze Einführung
 
Historiographie bei den Benediktinern in Raigern – Unterschiede in der histor...
Historiographie bei den Benediktinern in Raigern – Unterschiede in der histor...Historiographie bei den Benediktinern in Raigern – Unterschiede in der histor...
Historiographie bei den Benediktinern in Raigern – Unterschiede in der histor...
 
Storytelling - Mehr verkaufen durch Produktinszenierungen
Storytelling - Mehr verkaufen durch ProduktinszenierungenStorytelling - Mehr verkaufen durch Produktinszenierungen
Storytelling - Mehr verkaufen durch Produktinszenierungen
 
ambiente word de jairo XD
ambiente word de jairo XDambiente word de jairo XD
ambiente word de jairo XD
 
Ppt tablet-pc-stylistic-q550de
Ppt tablet-pc-stylistic-q550dePpt tablet-pc-stylistic-q550de
Ppt tablet-pc-stylistic-q550de
 
LAS PRISIONERAS
LAS PRISIONERASLAS PRISIONERAS
LAS PRISIONERAS
 
P2014 programcación 2do. (1)
P2014 programcación 2do. (1)P2014 programcación 2do. (1)
P2014 programcación 2do. (1)
 
Gazette June-August 2012
Gazette June-August 2012Gazette June-August 2012
Gazette June-August 2012
 
Maurice Pinay-1963-Verschwoerung-gegen-die-Kirche
Maurice Pinay-1963-Verschwoerung-gegen-die-KircheMaurice Pinay-1963-Verschwoerung-gegen-die-Kirche
Maurice Pinay-1963-Verschwoerung-gegen-die-Kirche
 
Geometría plana
Geometría planaGeometría plana
Geometría plana
 
Kleinstmögliches netzwerk
Kleinstmögliches netzwerkKleinstmögliches netzwerk
Kleinstmögliches netzwerk
 
Deutsch Keramiktest
Deutsch   KeramiktestDeutsch   Keramiktest
Deutsch Keramiktest
 
24. LTG-Sitzung am 16. Dezember 2010
24. LTG-Sitzung am 16. Dezember 201024. LTG-Sitzung am 16. Dezember 2010
24. LTG-Sitzung am 16. Dezember 2010
 
Katja Bett lernen_mit_neuen_medien_in_der_ausbildung2013
Katja Bett lernen_mit_neuen_medien_in_der_ausbildung2013Katja Bett lernen_mit_neuen_medien_in_der_ausbildung2013
Katja Bett lernen_mit_neuen_medien_in_der_ausbildung2013
 
Presentatie projecten 2010/2011
Presentatie projecten 2010/2011Presentatie projecten 2010/2011
Presentatie projecten 2010/2011
 
Propuesta cgt accion social
Propuesta cgt accion socialPropuesta cgt accion social
Propuesta cgt accion social
 
11. LTG-Sitzung am 18. Dezember 2009
11. LTG-Sitzung am 18. Dezember 200911. LTG-Sitzung am 18. Dezember 2009
11. LTG-Sitzung am 18. Dezember 2009
 
Fremdsprachenlexikonkurz
FremdsprachenlexikonkurzFremdsprachenlexikonkurz
Fremdsprachenlexikonkurz
 
ÖW Marketingkampagne 2013 Spanien
ÖW Marketingkampagne 2013 SpanienÖW Marketingkampagne 2013 Spanien
ÖW Marketingkampagne 2013 Spanien
 

Semelhante a Haskell aus einer Java EE Perspektive

Intelligent Edge - breaking the storage hype (Michael Beeck, mibeeck GmbH)
Intelligent Edge - breaking the storage hype (Michael Beeck, mibeeck GmbH)Intelligent Edge - breaking the storage hype (Michael Beeck, mibeeck GmbH)
Intelligent Edge - breaking the storage hype (Michael Beeck, mibeeck GmbH)data://disrupted®
 
Logical Data Warehouse - SQL mit Oracle DB und Hadoop
Logical Data Warehouse - SQL mit Oracle DB und HadoopLogical Data Warehouse - SQL mit Oracle DB und Hadoop
Logical Data Warehouse - SQL mit Oracle DB und HadoopOPITZ CONSULTING Deutschland
 
Power point stadtwerke cottbus w.will 16 9
Power point stadtwerke cottbus w.will 16 9Power point stadtwerke cottbus w.will 16 9
Power point stadtwerke cottbus w.will 16 9Cloud-EcoSystem
 
Wird das Datacenter künstlich-intelligent?
Wird das Datacenter künstlich-intelligent?Wird das Datacenter künstlich-intelligent?
Wird das Datacenter künstlich-intelligent?Jesus Villar-Rodriguez
 
iOS: Einstieg und Ausblick
iOS: Einstieg und AusblickiOS: Einstieg und Ausblick
iOS: Einstieg und AusblickStefan Scheidt
 
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem VormarschVon Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem VormarschAndreas Koop
 
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem VormarschVon Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarschenpit GmbH & Co. KG
 
Mobile App Stores- HTML5 & Web apps
Mobile App Stores- HTML5 & Web appsMobile App Stores- HTML5 & Web apps
Mobile App Stores- HTML5 & Web appsAberla
 
Datenintegration und Datenbewirtschaftung mit Oracle - OPITZ CONSULTING - Til...
Datenintegration und Datenbewirtschaftung mit Oracle - OPITZ CONSULTING - Til...Datenintegration und Datenbewirtschaftung mit Oracle - OPITZ CONSULTING - Til...
Datenintegration und Datenbewirtschaftung mit Oracle - OPITZ CONSULTING - Til...OPITZ CONSULTING Deutschland
 
Oracle Open World 2009 Review V1.6
Oracle Open World 2009 Review V1.6Oracle Open World 2009 Review V1.6
Oracle Open World 2009 Review V1.6Torsten Winterberg
 
Steffan Müller Standortübergreifende Liquiditätsanalyse mit Jedox bei der ...
Steffan Müller   Standortübergreifende  Liquiditätsanalyse mit Jedox bei der ...Steffan Müller   Standortübergreifende  Liquiditätsanalyse mit Jedox bei der ...
Steffan Müller Standortübergreifende Liquiditätsanalyse mit Jedox bei der ...Stephan Trahasch
 
Maskenvalidierung
MaskenvalidierungMaskenvalidierung
MaskenvalidierungCofinpro AG
 
Elastic Compute Cloud: Darf es noch ein Server mehr sein?
Elastic Compute Cloud: Darf es noch ein Server mehr sein?Elastic Compute Cloud: Darf es noch ein Server mehr sein?
Elastic Compute Cloud: Darf es noch ein Server mehr sein?Lothar Wieske
 
Java Forum - Unlock Your Logs
Java Forum - Unlock Your LogsJava Forum - Unlock Your Logs
Java Forum - Unlock Your LogsAccsonaut Cody
 

Semelhante a Haskell aus einer Java EE Perspektive (20)

Intelligent Edge - breaking the storage hype (Michael Beeck, mibeeck GmbH)
Intelligent Edge - breaking the storage hype (Michael Beeck, mibeeck GmbH)Intelligent Edge - breaking the storage hype (Michael Beeck, mibeeck GmbH)
Intelligent Edge - breaking the storage hype (Michael Beeck, mibeeck GmbH)
 
Logical Data Warehouse - SQL mit Oracle DB und Hadoop
Logical Data Warehouse - SQL mit Oracle DB und HadoopLogical Data Warehouse - SQL mit Oracle DB und Hadoop
Logical Data Warehouse - SQL mit Oracle DB und Hadoop
 
Power point stadtwerke cottbus w.will 16 9
Power point stadtwerke cottbus w.will 16 9Power point stadtwerke cottbus w.will 16 9
Power point stadtwerke cottbus w.will 16 9
 
Wird das Datacenter künstlich-intelligent?
Wird das Datacenter künstlich-intelligent?Wird das Datacenter künstlich-intelligent?
Wird das Datacenter künstlich-intelligent?
 
iOS: Einstieg und Ausblick
iOS: Einstieg und AusblickiOS: Einstieg und Ausblick
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 VormarschVon Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
 
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem Vormarsch
Von Big Data zu Künstlicher Intelligenz - Maschinelles Lernen auf dem VormarschVon 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
INNOVATIONSPREIS-IT 2010 - Siegerliste.pdfINNOVATIONSPREIS-IT 2010 - Siegerliste.pdf
INNOVATIONSPREIS-IT 2010 - Siegerliste.pdf
 
Mobile App Stores- HTML5 & Web apps
Mobile App Stores- HTML5 & Web appsMobile App Stores- HTML5 & Web apps
Mobile App Stores- HTML5 & Web apps
 
Das Prinzip Offenheit
Das Prinzip OffenheitDas Prinzip Offenheit
Das Prinzip Offenheit
 
mühlnickel beit_PechaKucha
mühlnickel beit_PechaKuchamühlnickel beit_PechaKucha
mühlnickel beit_PechaKucha
 
Datenintegration und Datenbewirtschaftung mit Oracle - OPITZ CONSULTING - Til...
Datenintegration und Datenbewirtschaftung mit Oracle - OPITZ CONSULTING - Til...Datenintegration und Datenbewirtschaftung mit Oracle - OPITZ CONSULTING - Til...
Datenintegration und Datenbewirtschaftung mit Oracle - OPITZ CONSULTING - Til...
 
Oracle Open World 2009 Review V1.6
Oracle Open World 2009 Review V1.6Oracle Open World 2009 Review V1.6
Oracle Open World 2009 Review V1.6
 
INNOVATIONSPREIS-IT 2011 - Siegerliste.pdf
INNOVATIONSPREIS-IT 2011 - Siegerliste.pdfINNOVATIONSPREIS-IT 2011 - Siegerliste.pdf
INNOVATIONSPREIS-IT 2011 - Siegerliste.pdf
 
Steffan Müller Standortübergreifende Liquiditätsanalyse mit Jedox bei der ...
Steffan Müller   Standortübergreifende  Liquiditätsanalyse mit Jedox bei der ...Steffan Müller   Standortübergreifende  Liquiditätsanalyse mit Jedox bei der ...
Steffan Müller Standortübergreifende Liquiditätsanalyse mit Jedox bei der ...
 
Maskenvalidierung
MaskenvalidierungMaskenvalidierung
Maskenvalidierung
 
Elastic Compute Cloud: Darf es noch ein Server mehr sein?
Elastic Compute Cloud: Darf es noch ein Server mehr sein?Elastic Compute Cloud: Darf es noch ein Server mehr sein?
Elastic Compute Cloud: Darf es noch ein Server mehr sein?
 
INNOVATIONSPREIS-IT 2010 - Nominiertenliste.pdf
INNOVATIONSPREIS-IT 2010 - Nominiertenliste.pdfINNOVATIONSPREIS-IT 2010 - Nominiertenliste.pdf
INNOVATIONSPREIS-IT 2010 - Nominiertenliste.pdf
 
Java Forum - Unlock Your Logs
Java Forum - Unlock Your LogsJava Forum - Unlock Your Logs
Java Forum - Unlock Your Logs
 
geo.admin.ch Stand der Arbeiten / nächste Schritte
geo.admin.ch Stand der Arbeiten / nächste Schrittegeo.admin.ch Stand der Arbeiten / nächste Schritte
geo.admin.ch Stand der Arbeiten / nächste Schritte
 

Mais de Torsten Fink

MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der CloudTorsten Fink
 
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...Torsten Fink
 
Funktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumFunktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumTorsten Fink
 
Docker in der Anwendungsentwicklung
Docker in der AnwendungsentwicklungDocker in der Anwendungsentwicklung
Docker in der AnwendungsentwicklungTorsten Fink
 
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...Torsten Fink
 
OptaPlanner hilft bei verteilten Schulstandorten
OptaPlanner hilft bei verteilten SchulstandortenOptaPlanner hilft bei verteilten Schulstandorten
OptaPlanner hilft bei verteilten SchulstandortenTorsten Fink
 
JSF Anwendungen testen mit AcceptIt
JSF Anwendungen testen mit AcceptItJSF Anwendungen testen mit AcceptIt
JSF Anwendungen testen mit AcceptItTorsten Fink
 

Mais de Torsten Fink (7)

MEAN SCS in der Cloud
MEAN SCS in der CloudMEAN SCS in der Cloud
MEAN SCS in der Cloud
 
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...
Open Source als Innovator und Treiber von De‐Facto Standards für das Internet...
 
Funktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit SodiumFunktionale Reaktive Programmierung mit Sodium
Funktionale Reaktive Programmierung mit Sodium
 
Docker in der Anwendungsentwicklung
Docker in der AnwendungsentwicklungDocker in der Anwendungsentwicklung
Docker in der Anwendungsentwicklung
 
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...
Security in Rechenzentren und Fabriken - Ansätze und Parallelen für Industrie...
 
OptaPlanner hilft bei verteilten Schulstandorten
OptaPlanner hilft bei verteilten SchulstandortenOptaPlanner hilft bei verteilten Schulstandorten
OptaPlanner hilft bei verteilten Schulstandorten
 
JSF Anwendungen testen mit AcceptIt
JSF Anwendungen testen mit AcceptItJSF Anwendungen testen mit AcceptIt
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