Haskell aus einer Java EE Perspektive
Upcoming SlideShare
Loading in...5
×
 

Haskell aus einer Java EE Perspektive

on

  • 284 views

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.

Statistics

Views

Total Views
284
Views on SlideShare
284
Embed Views
0

Actions

Likes
0
Downloads
1
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Haskell aus einer Java EE Perspektive Haskell aus einer Java EE Perspektive Presentation Transcript

  • 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 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
  • 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
  • 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 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
  • 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 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
  • 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
  • Aber, was istmit 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 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
  • 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
  • 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
  • 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 esauchProbleme?
  • 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
  • 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 Single-Page-AnwendungenInternationalisierungAuthentisierung mit Standardmodulen für OpenID, BrowserID, OauthCopyright © 2010 – akquinet AG 08.04.2013 24
  • Tests BDD mit HSpec Automatische Testdatenerzeugung mit QuickCheckCopyright © 2010 – akquinet AG 08.04.2013 25
  • 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, aber kein StandardEs fehlt: JMS, XACopyright © 2010 – akquinet AG 08.04.2013 29
  • 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 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
  • YourChoice!Copyright © 2010 – akquinet AG 08.04.2013 32