Haxe & NME
-
Upload
indieoutpost -
Category
Technology
-
view
493 -
download
0
Transcript of Haxe & NME
![Page 1: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/1.jpg)
Haxe17.04.2013 Florian Hofmann
@_astrocreephttp://www.blackgoat.dehttp://www.playata.com
![Page 2: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/2.jpg)
Haxe als Programmiersprache
● Klassisch OO, ähnlich Java oder ActionScript3● Strict Typed / Type inference
![Page 3: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/3.jpg)
Type Inference / Strict Typedvar i;$type(i); // Unknown(0)
i = 1;$type(i); // Int
i = "test"; // Error: String should be Int
![Page 4: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/4.jpg)
Haxe als Programmiersprache
● Klassisch OO, ähnlich Java oder ActionScript3● Strict Typed / Type inference● Packages● Generics
![Page 5: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/5.jpg)
Genericsclass SomeClass<T> {
public arr:Array<T>;
public function new() {arr = new Array();
}}
var instance = new SomeClass<Sprite>();$type(instance.arr) // Array<flash.display.Sprite>
![Page 6: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/6.jpg)
Haxe als Programmiersprache
● Klassisch OO, ähnlich Java oder ActionScript3● Strict Typed / Type inference● Packages● Generics● Inlining● Enums
![Page 7: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/7.jpg)
Enumsenum Suit {
Clubs;Diamonds;Hearts;Spades;
}
class Card {public var suit:Suit;...
![Page 8: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/8.jpg)
Haxe als Programmiersprache
● Klassisch OO, ähnlich Java oder ActionScript3● Strict Typed / Type inference● Packages● Generics● Inlining● Enums● Macros
![Page 9: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/9.jpg)
Macrosclass Test {
macro public static function getBuildDate() {var date = Date.now().toString();return Context.makeExpr(date, Context.currentPos());
}
static function main() {trace(getBuildDate());
}}
![Page 10: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/10.jpg)
![Page 11: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/11.jpg)
Haxe als Programmiersprache
● Klassisch OO, ähnlich Java oder ActionScript3● Strict Typed / Type inference● Packages● Generics● Inlining● Enums● Macros● SPOD Macros● Unit Testing● Externs● usw.
![Page 12: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/12.jpg)
Aufbau
● Sprache für alle Plattformen gleich● Großes Paket an Standardbibliotheken (XML, Math, Crypto,
Datastructures, usw.)● Plattformspezifische APIs (JS->DOM, AS->DisplayList usw.)
![Page 13: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/13.jpg)
Zielplattformen
Plattformunabhängige Programmiersprache● Flash● Javascript● NekoVM● PHP● C++● (Java)● (C#)● (Objective-C)
![Page 14: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/14.jpg)
Haxe Workflow - allgemein
● Code in .hx Files● Build-Config in .hxml Files● Haxe Compiler (2.10 stable, 3.0RC)● kommandozeilenlastig ;)
![Page 15: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/15.jpg)
Haxe Workflow - Entwicklungsumgebung
● Flashdevelop (nur Windows)● SublimeText2 (als Package)● IntelliJ Idea Ultimate● FDT ab V4
![Page 16: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/16.jpg)
Haxe Workflow - Grafik
Kein definierter "Workflow". Hängt von der Zielplattform ab, prinzipiell kann jedes Tool benutzt werden.
![Page 17: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/17.jpg)
Haxe Workflow - Debugging
FlashFlash Debugger notwendig, dann geht das mit jedem Debugger/Profiler
JavascriptGenerierung von Sourcemaps
C++HXCPP Debugger (z.B. mit IntelliJ)
![Page 18: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/18.jpg)
Ressourcen & Doku
● API auf haxe.org/api● Hauptfeatures sind gut dokumentiert auf: haxe.org/doc
![Page 19: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/19.jpg)
Kosten
Compiler selber ist kostenlos und als OpenSource verfügbar!
![Page 20: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/20.jpg)
Zukunftssicherheit
● OpenSource● Aktive Community● Haxe Foundation als Basis
![Page 21: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/21.jpg)
Schwächen
● Keine eigene Zielplattform● Extrem schnelle Entwicklung● Mangelhafter MAC Support (IDE)● Aktuell keine plattformunabhängige 3D-Engine
![Page 22: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/22.jpg)
Stärken
● Keine eigene Zielplattform● Extrem schnelle Entwicklung● Open-Source● AS3 wie es sein sollte● haxelib (Librarymanagement)
![Page 23: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/23.jpg)
haxelib
● Kommandozeilentool zum Verwalten von Bibliotheken● haxelib install xy● haxelib remove xy● haxelib upgrade
![Page 24: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/24.jpg)
NME
"Native" Crossplatform● Web (Flash oder HTML5)● iOS● Android● Windows● MAC● BlackBerry● Air
![Page 25: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/25.jpg)
NME im Vergleich zu "purem" Haxe
NME stellt fast alle AS3 Pakete für sämtliche Zielplattformen zur Verfügung (z.B.: nme.display.*)Im Vergleich zu Haxe muss nicht für jede Zielplattform individueller Code zur grafischen Anzeige geschrieben werden.
![Page 26: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/26.jpg)
NME Workflow
Eigenes Paket an Kommandozeilentools● nme setup xy● nme test● nme build
Eigenes Build-File-FormatDamit auch Zertifikate, ganze Ordner mit Assets etc. mit eingebunden werden können.
![Page 27: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/27.jpg)
NME
Stärken● Auf jeder Plattform die gleiche API● Kommandozeilentools
Schwächen● Overhead● Kleiner Entwicklerstamm● Viele Features leider nur 90%
![Page 28: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/28.jpg)
Beispiele
![Page 29: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/29.jpg)
BeispieleEvoland
![Page 30: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/30.jpg)
BeispielePrezi
![Page 31: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/31.jpg)
Genome2D
● "Increased performance up to 400% in some cases but whats more at least 100% so basically everything I tried yet was atleast 2 times faster than the AS3 version"
● "There are 4 targets at the moment that I am working on 2 flash targets (bitmap/stage3D) and 2 JS targets (canvas/webgl). Thinking about C target as well but we'll see."
http://forum.genome2d.com/viewtopic.php?f=4&t=19
![Page 32: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/32.jpg)
![Page 33: Haxe & NME](https://reader034.fdocuments.net/reader034/viewer/2022050723/55498cefb4c905c26a8b51a2/html5/thumbnails/33.jpg)
Links
Haxehttp://haxe.orghttp://haxe.org/apihttp://haxe.org/dochttps://groups.google.com/forum/#!forum/haxelang
NMEhttp://www.nme.io