Haskell aus einer Java EEPerspektiveTorsten Finktorsten.fink@akquinet.deakquinet
Zu meiner Person1999-2003: Promotion über ausführbare Softwarearchitekturen   für verteilte SystemeAb 2004: Berater bei d...
Unsere UnternehmensstrukturEK: Eigenkapital          Geschäftsprozesse                        akquinet AG                 ...
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 StandardsHaskell                            Haskell-98           Haskell 2010 1.01990 1997 1999      ...
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 AuswertungDie Menge der natürlichen Zahlen:      n = [1..]Alle geraden Zahlen:      g = [ x | x <- [1..], even ...
Algebraische DatentypenAufbau per Konstrukturen      data BinTreeT a =       Tree (BinTreeT a) a (BinTreeT a) |       Empt...
Aber, was istmit Kapselung?
Mit Modulen!Konzept: Verbergen der Konstruktoren  => kein Pattern-Matching       module ADT  => kein Zugriff auf Interna ...
OO mit Funktionen ohne DatenTypeklassen                      class Eq a => Ord a where                                  co...
Eine letztes Wort zu TypenHaskell ist statisch stark typisiert.D.h. jeder Ausdruck hat zur Compilezeit einen geprüften  k...
Und nun das Beste!                                 Referentielle Transparenz                                 a = f b c d ...
Weitere Unterschiede zu JavaÜbersetzung in Binärcode Schnelle Startzeiten, keine externe  Laufzeitumgebung  (Bsp. Hello W...
Gibt esauchProbleme?
The Ugly...Verzögerte Auswertung erzeugt selten schwer auffindbaren SpeicherverbrauchTypinferenz Funktioniert gut, ersch...
Frameworks     Werkzeuge     Im Schweinsgalopp...Copyright © 2010 – akquinet AG   08.04.2013   19
Klassifikation von FrameworksCopyright © 2010 – akquinet AG   08.04.2013   20
Yesod     typsicher, REST-basiert und     effizientCopyright © 2010 – akquinet AG     08.04.2013   21
Die OberflächeCopyright © 2010 – akquinet AG   08.04.2013   22
Verknüpfung zu HaskellCopyright © 2010 – akquinet AG   08.04.2013   23
Weitere Yesod-FeaturesSchneller Entwicklungsmodus Automatisches inkrementelle ÜbersetzungREST mit JSON Gut geeignet für ...
Tests                                 BDD mit HSpec    Automatische Testdatenerzeugung mit QuickCheckCopyright © 2010 – ak...
Cabal, HackageCopyright © 2010 – akquinet AG   08.04.2013   26
ZusammengefasstCopyright © 2010 – akquinet AG   08.04.2013   27
Gibt esauchProbleme?
The Ugly ....Cabal, Hackage DLL-Hell^2, schnell ein Versions-  Chaos IMHO: Es fehlt an Standard-  plattformenYesod Cool...
Resümee     ... And the winner is ...Copyright © 2010 – akquinet AG   08.04.2013   30
ResümeeVergleich der Programmiersprache Haskell deutlich klarer und weiter trotz gewachsener  Schrunden Java punktet mit...
YourChoice!Copyright © 2010 – akquinet AG   08.04.2013   32
Nächste SlideShare
Wird geladen in …5
×

Haskell aus einer Java EE Perspektive

494 Aufrufe

Veröffentlicht am

Die funktionale Programmiersprache Haskell ist über viele Jahre im akademischen Kontext entstanden und gereift. In der kommerziellen Geschäftswelt kam sie dagegen praktisch nie zum Einsatz. Nun hat sich in den letzten Jahren Haskell und insbesondere das begleitende Umfeld massiv gewandelt. Es ist nun möglich mit dem Benutzer zu interagieren, größere Projekte zu verwalten, Datenbanken anzusprechen und Webanwendungen zu erstellen. Dabei bleiben die Vorteile von Haskell als reine, also durchgehend seiteneffektfreie Programmiersprache erhalten.

In diesem Vortrag werden wir, evtl. etwas schwärmerisch, die programmiersprachlichen Vorteile von Haskell kurz vorstellen, und dann aufzeigen, was sich im Umfeld der Programmiersprache an Werkzeugen entwickelt hat zur Erstellung typischer Geschäftsanwendungen. Die Messlatte wird dabei Java mit seiner reichhaltigen Ökosphere sein.

0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
494
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
2
Aktionen
Geteilt
0
Downloads
5
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Haskell aus einer Java EE Perspektive

  1. 1. Haskell aus einer Java EEPerspektiveTorsten Finktorsten.fink@akquinet.deakquinet
  2. 2. Zu meiner Person1999-2003: Promotion über ausführbare Softwarearchitekturen für verteilte SystemeAb 2004: Berater bei der akquinet technischer Architekt in J2EE-Projekten Projektleitung Betriebsführung, Wartung klassische Beratung und Schulungen2006-2010: Leiter des JBoss-Competence-Centers bei der akquinetAb 2011: Geschäftsführer der akquinet tech@spreeCopyright © 2010 – akquinet AG 08.04.2013 2
  3. 3. Unsere UnternehmensstrukturEK: 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. 4. Memories....Copyright © 2010 – akquinet AG 08.04.2013 4
  5. 5. Die Programmiersprache What lies beneath..Copyright © 2010 – akquinet AG 08.04.2013 5
  6. 6. Historien anhand der StandardsHaskell Haskell-98 Haskell 2010 1.01990 1997 1999 2006 2010 1995 1998 2005 2009 2011Java JDK JEE JDK JEE JEE JDK1.0a 1.1 1.2 5.0 5.0 6.0 7.0Copyright © 2010 – akquinet AG 08.04.2013 6
  7. 7. Mal zusammengefasst:Copyright © 2010 – akquinet AG 08.04.2013 7
  8. 8. Was ist cool an Haskell? ... und wird von Java so nicht geboten...Copyright © 2010 – akquinet AG 08.04.2013 8
  9. 9. Verzögerte AuswertungDie 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 BerechnungCopyright © 2010 – akquinet AG 08.04.2013 9
  10. 10. Algebraische DatentypenAufbau per Konstrukturen data BinTreeT a = Tree (BinTreeT a) a (BinTreeT a) | EmptyZugriff 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 CodeCopyright © 2010 – akquinet AG 08.04.2013 10
  11. 11. Aber, was istmit Kapselung?
  12. 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. 13. OO mit Funktionen ohne DatenTypeklassen 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 rungCopyright © 2010 – akquinet AG 08.04.2013 13
  14. 14. Eine letztes Wort zu TypenHaskell 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ötigtUnd praktisch: Einsatz von Typen zur fachlichen Modellierung ermöglicht teilweise Korrektheitsprüfungen bei der ÜbersetzungCopyright © 2010 – akquinet AG 08.04.2013 14
  15. 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 MonadenkonzeptCopyright © 2010 – akquinet AG 08.04.2013 15
  16. 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
  17. 17. Gibt esauchProbleme?
  18. 18. The Ugly...Verzögerte Auswertung erzeugt selten schwer auffindbaren SpeicherverbrauchTypinferenz Funktioniert gut, erschreckt gerne mit FehlermeldungenEntwurfsentscheidungen waren manchmal unklug Bsp: String als [Char] Ergebnis: – zwei verbreitete Alternativen: Text, ByteString – Compiler-Erweiterung zum einfacheren HandlingCopyright © 2010 – akquinet AG 08.04.2013 18
  19. 19. Frameworks Werkzeuge Im Schweinsgalopp...Copyright © 2010 – akquinet AG 08.04.2013 19
  20. 20. Klassifikation von FrameworksCopyright © 2010 – akquinet AG 08.04.2013 20
  21. 21. Yesod typsicher, REST-basiert und effizientCopyright © 2010 – akquinet AG 08.04.2013 21
  22. 22. Die OberflächeCopyright © 2010 – akquinet AG 08.04.2013 22
  23. 23. Verknüpfung zu HaskellCopyright © 2010 – akquinet AG 08.04.2013 23
  24. 24. Weitere Yesod-FeaturesSchneller Entwicklungsmodus Automatisches inkrementelle ÜbersetzungREST mit JSON Gut geeignet für Single-Page-AnwendungenInternationalisierungAuthentisierung mit Standardmodulen für OpenID, BrowserID, OauthCopyright © 2010 – akquinet AG 08.04.2013 24
  25. 25. Tests BDD mit HSpec Automatische Testdatenerzeugung mit QuickCheckCopyright © 2010 – akquinet AG 08.04.2013 25
  26. 26. Cabal, HackageCopyright © 2010 – akquinet AG 08.04.2013 26
  27. 27. ZusammengefasstCopyright © 2010 – akquinet AG 08.04.2013 27
  28. 28. Gibt esauchProbleme?
  29. 29. The Ugly ....Cabal, Hackage DLL-Hell^2, schnell ein Versions- Chaos IMHO: Es fehlt an Standard- plattformenYesod Cool, aber kein StandardEs fehlt: JMS, XACopyright © 2010 – akquinet AG 08.04.2013 29
  30. 30. Resümee ... And the winner is ...Copyright © 2010 – akquinet AG 08.04.2013 30
  31. 31. ResümeeVergleich der Programmiersprache Haskell deutlich klarer und weiter trotz gewachsener Schrunden Java punktet mit StandardbibliothekenVergleich der Frameworks Java führt, insb. im Enterprise-Sektor Haskell hat genug für autonome WebanwendungenSonstiges #Java-Entwickler > #Haskell-Entwickler Wesentlich mehr Investitionen im Java-BereichCopyright © 2010 – akquinet AG 08.04.2013 31
  32. 32. YourChoice!Copyright © 2010 – akquinet AG 08.04.2013 32

×