Haxe

968 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
0 Kommentare
0 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Keine Downloads
Aufrufe
Aufrufe insgesamt
968
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
5
Aktionen
Geteilt
0
Downloads
4
Kommentare
0
Gefällt mir
0
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie
  • - Vorstellung - Warum gibts den Vortrag? - Wie mit fragen umgehen?
  • Objektorientiert + Lambda ECMA-Script ähnliche ECMA = standart für Websprachen Sprachkern für JavaScript/ActionScript Multiplattform vs Plattformunabhängig: Java -> JVM C# -> .NET Actionscript -> Flash Player bzw. Tamarin
  • Motion Twin / Nicolas Cannasse AS2 wurde Interpretiert ASML to AS2 Vorcompiler (Typ und Parameterprüfung) MTASC erster Nicht-Macromedia-Compiler für SWF-ByteCode Flashout, ASDT, MTASC, Eclipse, SwfMill ab 2005 neko Was ist neko? Actionscript 3 MTASC eingestellt. 2011 mehrere Targets außer AS3 + neko Motivation zu haXe Überleitung zu Features?
  • js - eine .js File Flash - eine .swf File      - Version 6-8      - Version 9/10 (Tamarin) Php - php files (php 5) NekoVM - eine -n bytecode file Was ist neko? - vm von Motion Twin - Command-Line - C++      - C++ source - ?      - Java      - C#
  • - Witz über Compiler? - Später gibts ein Projekt mit JS-Client und PHP Backend - So sieht die "build.hxml aus"
  • ECMAScript ÄHNLICHE Programmiersprache switch      - keine breaks      - nach case sofort beendet enum      - switch nur mit allen enums, sonst warning      - enum parameter for      - keine Zählschleifen direkt      - alles über Iteratoren
  • Desto mehr typisiert ist, desto mehr Fehler werden zur compile-zeit gefunden. Vorteile aus beiden Welten. Basistypen Bool Int Float Dynamic Syntax: Sieht aus wie JS/AS Typisiert wie AS
  • Std (Methoden um Basistypen zu Modifizieren)      - parseInt      - parseFloat      - int      - string      - usw. Math (mathematische Funktionen und Konstanten)      - bekannt aus JS/AS      - sin/cos/an      - random      - usw. Date      - bekannt aus JS/AS      - erweiterte Funktionen durch DateTools Array, List, Hash, IntHash      - alles Typisiert      - List ist eine LinkedList (Performanter, zugriff durch index möglich)      - Hashtable (String -> Value)      - Int Hashtable (Int -> Value)      - Wie sieht das Compilat aus? - Was sind Generics?
  • Strukturierung mittels Packages. Vererbung Interfaces (auch mehrere) Generics Zugriffsmodifikatoren      - private (verhält sich wie protected)      - public Zugriffsfunktionen      - Getter und Setter Konstruktor      - new Überscheiben ist möglich Was nicht geht:      - Methodenüberladung      - Mehrfachvererbung      - Abstrakte Klassen Generics zu komplex?
  • Serializer/Unserializer      - wird für remoting verwendet      - was passiert mit Referenzen? Remoting      - Client/Server      - Flash/JavaScript      - Flash/AMF (Kein Serializer) Template System      - Ausdrücke      - if/elseif/else      - Foreach      - Macros UnitTests      - Basis-Api      - TestCase      - TestRunner XML      - Crossplattform      - War auf php langsam weil      - Wurde jetzt gefixt
  • Jedes Target hat ein eigenes Package. z.B.: PHP - db: Datenbank - io: Zugriff auf Dateisystem - net: Socket In jedem Package: Lib: - dump - print   oder bei js - document - window - alert - eval Web: - redirect - getHeader - setHeader - getParams - getMethod
  • Was mache ich, wenn ich eine Plattformspezifische Lib einbinden möchte? in diesem Beispiel jQuery (ein Teil davon) Es gibts zwei Möglichkeiten, hier die erste (und saubere) Das extern Keyword sagt dem Compiler, dass die Implemetierung dieser Klasse zur Laufzeit zur Verfügung stehen wird. Die Package-Struktur muss beibehalten werden: z.B. bar.Foo = function() {} Diese Lösung ist Typsicher! PHP: Wenn es eine eigene Klasse ist, muss man sie natürlich includen. Die nächste Lösung ist nicht so schön, wird teilweise aber auch gebraucht!
  • Die haXe Magic funktionen bieten uns die Möglichkeiten Zielcode direkt einzubetten. // JS Der Parameter wird im Zielcode auch value heißen, deshalb können wir ihn direkt so übernhemen. // PHP PHP bietet mehrere Magic-Funktionenen, hier sprechen wir nur 2 an. __call__ ruft eine Funktion auf, der wir die Parameter mitgeben können. __php__ lässt uns direkt Code einbetten. Auch hier sieht man, dass die Parameter genau wie in haxe benannt sind, mit dem Unterschied, dass wir das $ vorstellen müssen. Magic Methoden gibt es auch für Flash und Neko, darauf gehen wir jetzt mal nicht genauer ein.
  • Was mach ich, wenn ich Code auf mehreren Plattformen verwenden möchte, der Code aber Plattformspezifischen Code enthält? Lösung: Conditional Compilation Dies ermöglicht uns je nach Target des Compilers einen anderen Code zu verwenden. Negierung möglich z.B. !php Abfragen ob debug-version #if debug Man kann auch eigene Variablen einführen.
  • Zwei Entitäten Der Client ist eine JavaScript-Anwendung Bestehen aus "Application Server" und einem CDN Zusätzlich eine Ort wo unsere Assets liegen (z.B.: ein CDN) In dem Beispiel gibts kein CDN. Der Client lädt sich die Assets vom Server und rendert diese: z.B.: Unser Login-Formular (html) Die Eingaben im Login-Formular werden einen den Application Server gesendet und wir erhalten Daten des Users (oder auch nicht). UserService.login() liefert ein User-Objekt (shared Code) wie im folgenden Beispiel... Der Client verarbeitet die Antwort.
  • Eine Sprache: Wird der Algorythmus auf dem Client oder auf dem Server ausgeführt?
  • Masterplan Debugging: Zeitersparnis durch Fehler zur Compilezeit größer als Fehlersucher zur Laufzeit. Template-System: Macros
  • Haxe

    1. 1. haXeone language to rule them all
    2. 2. Übersicht    Was ist haXe?    Welche Features bietet haXe?    Warum sollten wir haXe verwenden?    Wohin geht es mit haXe?
    3. 3. Was ist haXe?    Definition    Geschichte
    4. 4.  Was ist haXe?  DefinitionhaXe ist eine objektorientierte, ECMAScript-ähnlicheProgrammiersprache.Sie ermöglicht es, haXe-Quellcode in Quellcode oder GByteCode verschiedener Plattformen zu kompilieren. haXe ist eine Multiplattform-Sprache!
    5. 5.  Was ist haXe?  Geschichte
    6. 6. Welche Features bietet haXe?    Plattformen    Compiler    Language Features    Crossplattform API    Plattformspezifische API
    7. 7.  Welche Features bietet haXe?  Plattformen ?
    8. 8.  Welche Features bietet haXe?  Compiler Wie sieht die build-File aus?
    9. 9.  Welche Features bietet haXe? switch true/false enum if/else for do/while  Language Features var new this try/catch return function  Keywords  anderes Verhalten
    10. 10.  Welche Features bietet haXe?  Language Features Typed vs. Dynamic
    11. 11.  Welche Features bietet haXe?  Language Features Standart Library     Std     Math     Date, DateTools     Array<T>, List<T>, Hash<T>, IntHash<T>
    12. 12.  Welche Features bietet haXe?  Language Features Objektorientierte Programmierung
    13. 13.  Welche Features bietet haXe?  Crossplatform API (special) Serializer/Unserializer Remoting Template-System UnitTests XML
    14. 14.  Welche Features bietet haXe?  Plattformspezifische Features
    15. 15.  Welche Features bietet haXe?  Plattformspezifische Features Extern class
    16. 16.  Welche Features bietet haXe?  Plattformspezifische Features The haXe Magic
    17. 17.  Welche Features bietet haXe?  Plattformspezifische Features Conditional Compilation
    18. 18. Warum sollten wir haXe verwenden?    Beispiel-Anwendung    Team    Vorteile    Nachteile    Pitfalls
    19. 19.  Warum sollten wir haXe verwenden?  Beispiel-Anwendung
    20. 20.  Warum sollten wir haXe verwenden?  Beispiel-Anwendung
    21. 21.  Warum sollten wir haXe verwenden?  Beispiel-Anwendung Jetzt zeig uns endlich die verdammte Anwendung!
    22. 22.  Warum sollten wir haXe verwenden?  Team
    23. 23.  Warum sollten wir haXe verwenden?  Vorteile Eine Sprache für Client und Server (und Desktop) Steile Lernkurve für JS/AS-Entwickler Erweiterung der Sprachen     z.B.: Generics, Packages usw. Optionale Typsicherheit
    24. 24.  Warum sollten wir haXe verwenden?  Nachteile Laufzeitfehler schwer zu debuggen Keine Crossbrowser-Implementierung von JS Community im Vergleich zu JS/AS/PHP extrem klein
    25. 25.  Warum sollten wir haXe verwenden?  Pitfalls Laufzeitfehler debuggen PHP: int -> float (pseudo-random) Template-System unpraktisch     (Funktionen/getter funktionieren nicht) Suche der Dokumentation ekelhaft
    26. 26. Wohin geht es mit haXe?    Tools    Projekte    Libs    Links
    27. 27.  Wohin geht es mit haXe?  Tools Editoren     FlashDevelop     EcliHx     FDT     Textmate     vim haxelib     install     update     run haxedoc     generiert Doku aus Java-Doc Kommentaren     
    28. 28.  Wohin geht es mit haXe?  Libs HXCPP NME/Neash Jeash ScreenWeaver HX u.v.m.
    29. 29.  Wohin geht es mit haXe?  haXe Projekte ...
    30. 30.  Wohin geht es mit haXe?  Links www.haxe.org lib.haxe.org blog.haxe.org
    31. 31.  Fragen?
    32. 32.  Vielen Dank!

    ×