haxe & nme

33
Haxe 17.04.2013 Florian Hofmann @_astrocreep http://www.blackgoat.de http://www.playata.com

Upload: indieoutpost

Post on 06-May-2015

482 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Haxe & NME

Haxe17.04.2013 Florian Hofmann

@_astrocreephttp://www.blackgoat.dehttp://www.playata.com

Page 2: Haxe & NME

Haxe als Programmiersprache

● Klassisch OO, ähnlich Java oder ActionScript3● Strict Typed / Type inference

Page 3: Haxe & NME

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

Haxe als Programmiersprache

● Klassisch OO, ähnlich Java oder ActionScript3● Strict Typed / Type inference● Packages● Generics

Page 5: Haxe & NME

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

Haxe als Programmiersprache

● Klassisch OO, ähnlich Java oder ActionScript3● Strict Typed / Type inference● Packages● Generics● Inlining● Enums

Page 7: Haxe & NME

Enumsenum Suit {

Clubs;Diamonds;Hearts;Spades;

}

class Card {public var suit:Suit;...

Page 8: Haxe & NME

Haxe als Programmiersprache

● Klassisch OO, ähnlich Java oder ActionScript3● Strict Typed / Type inference● Packages● Generics● Inlining● Enums● Macros

Page 9: Haxe & NME

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
Page 11: Haxe & NME

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

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

Zielplattformen

Plattformunabhängige Programmiersprache● Flash● Javascript● NekoVM● PHP● C++● (Java)● (C#)● (Objective-C)

Page 14: Haxe & NME

Haxe Workflow - allgemein

● Code in .hx Files● Build-Config in .hxml Files● Haxe Compiler (2.10 stable, 3.0RC)● kommandozeilenlastig ;)

Page 15: Haxe & NME

Haxe Workflow - Entwicklungsumgebung

● Flashdevelop (nur Windows)● SublimeText2 (als Package)● IntelliJ Idea Ultimate● FDT ab V4

Page 16: Haxe & NME

Haxe Workflow - Grafik

Kein definierter "Workflow". Hängt von der Zielplattform ab, prinzipiell kann jedes Tool benutzt werden.

Page 17: Haxe & NME

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

Ressourcen & Doku

● API auf haxe.org/api● Hauptfeatures sind gut dokumentiert auf: haxe.org/doc

Page 19: Haxe & NME

Kosten

Compiler selber ist kostenlos und als OpenSource verfügbar!

Page 20: Haxe & NME

Zukunftssicherheit

● OpenSource● Aktive Community● Haxe Foundation als Basis

Page 21: Haxe & NME

Schwächen

● Keine eigene Zielplattform● Extrem schnelle Entwicklung● Mangelhafter MAC Support (IDE)● Aktuell keine plattformunabhängige 3D-Engine

Page 22: Haxe & NME

Stärken

● Keine eigene Zielplattform● Extrem schnelle Entwicklung● Open-Source● AS3 wie es sein sollte● haxelib (Librarymanagement)

Page 23: Haxe & NME

haxelib

● Kommandozeilentool zum Verwalten von Bibliotheken● haxelib install xy● haxelib remove xy● haxelib upgrade

Page 24: Haxe & NME

NME

"Native" Crossplatform● Web (Flash oder HTML5)● iOS● Android● Windows● MAC● BlackBerry● Air

Page 25: Haxe & NME

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

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

NME

Stärken● Auf jeder Plattform die gleiche API● Kommandozeilentools

Schwächen● Overhead● Kleiner Entwicklerstamm● Viele Features leider nur 90%

Page 28: Haxe & NME

Beispiele

Page 29: Haxe & NME

BeispieleEvoland

Page 30: Haxe & NME

BeispielePrezi

Page 31: Haxe & NME

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