Your SlideShare is downloading. ×
  • Like
Haskell aus einer Java EE Perspektive
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Haskell aus einer Java EE Perspektive

  • 174 views
Published

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 …

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.

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
174
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Haskell aus einer Java EEPerspektiveTorsten Finktorsten.fink@akquinet.deakquinet
  • 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. 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. 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 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. 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 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. 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. Aber, was istmit 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 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. 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. 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. 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. Gibt esauchProbleme?
  • 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. Frameworks Werkzeuge Im Schweinsgalopp...Copyright © 2010 – akquinet AG 08.04.2013 19
  • 20. Klassifikation von FrameworksCopyright © 2010 – akquinet AG 08.04.2013 20
  • 21. Yesod typsicher, REST-basiert und effizientCopyright © 2010 – akquinet AG 08.04.2013 21
  • 22. Die OberflächeCopyright © 2010 – akquinet AG 08.04.2013 22
  • 23. Verknüpfung zu HaskellCopyright © 2010 – akquinet AG 08.04.2013 23
  • 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. Tests BDD mit HSpec Automatische Testdatenerzeugung mit QuickCheckCopyright © 2010 – akquinet AG 08.04.2013 25
  • 26. Cabal, HackageCopyright © 2010 – akquinet AG 08.04.2013 26
  • 27. ZusammengefasstCopyright © 2010 – akquinet AG 08.04.2013 27
  • 28. Gibt esauchProbleme?
  • 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. Resümee ... And the winner is ...Copyright © 2010 – akquinet AG 08.04.2013 30
  • 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. YourChoice!Copyright © 2010 – akquinet AG 08.04.2013 32