haxe & nme

Post on 06-May-2015

482 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Haxe17.04.2013 Florian Hofmann

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

Haxe als Programmiersprache

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

Type Inference / Strict Typedvar i;$type(i); // Unknown(0)

i = 1;$type(i); // Int

i = "test"; // Error: String should be Int

Haxe als Programmiersprache

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

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>

Haxe als Programmiersprache

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

Enumsenum Suit {

Clubs;Diamonds;Hearts;Spades;

}

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

Haxe als Programmiersprache

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

Macrosclass Test {

macro public static function getBuildDate() {var date = Date.now().toString();return Context.makeExpr(date, Context.currentPos());

}

static function main() {trace(getBuildDate());

}}

Haxe als Programmiersprache

● Klassisch OO, ähnlich Java oder ActionScript3● Strict Typed / Type inference● Packages● Generics● Inlining● Enums● Macros● SPOD Macros● Unit Testing● Externs● usw.

Aufbau

● Sprache für alle Plattformen gleich● Großes Paket an Standardbibliotheken (XML, Math, Crypto,

Datastructures, usw.)● Plattformspezifische APIs (JS->DOM, AS->DisplayList usw.)

Zielplattformen

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

Haxe Workflow - allgemein

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

Haxe Workflow - Entwicklungsumgebung

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

Haxe Workflow - Grafik

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

Haxe Workflow - Debugging

FlashFlash Debugger notwendig, dann geht das mit jedem Debugger/Profiler

JavascriptGenerierung von Sourcemaps

C++HXCPP Debugger (z.B. mit IntelliJ)

Ressourcen & Doku

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

Kosten

Compiler selber ist kostenlos und als OpenSource verfügbar!

Zukunftssicherheit

● OpenSource● Aktive Community● Haxe Foundation als Basis

Schwächen

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

Stärken

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

haxelib

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

NME

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

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.

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.

NME

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

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

Beispiele

BeispieleEvoland

BeispielePrezi

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

top related