SlideShare ist ein Scribd-Unternehmen logo
Haxe
17.04.2013 Florian Hofmann
@_astrocreep
http://www.blackgoat.de
http://www.playata.com
Haxe als Programmiersprache
● Klassisch OO, ähnlich Java oder ActionScript3
● Strict Typed / Type inference
Type Inference / Strict Typed
var 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
Generics
class 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
Enums
enum 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
Macros
class Test {
macro public static function getBuildDate() {
var date = Date.now().toString();
return Context.makeExpr(date, Context.currentPos());
}
static function main() {
trace(getBuildDate());
}
}
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.
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
Flash
Flash Debugger notwendig, dann geht das mit jedem
Debugger/Profiler
Javascript
Generierung 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-Format
Damit 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
Beispiele
Evoland
Beispiele
Prezi
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
Haxe & NME
Links
Haxe
http://haxe.org
http://haxe.org/api
http://haxe.org/doc
https://groups.google.com/forum/#!forum/haxelang
NME
http://www.nme.io

Weitere ähnliche Inhalte

Ähnlich wie Haxe & NME

Creasoft - Windows powershell
Creasoft - Windows powershellCreasoft - Windows powershell
Creasoft - Windows powershell
Creasoft AG
 
Java und Go im Vergleich
Java und Go im VergleichJava und Go im Vergleich
Java und Go im Vergleich
QAware GmbH
 
PHP, AJAX und XUL im Intranet
PHP, AJAX und XUL im IntranetPHP, AJAX und XUL im Intranet
PHP, AJAX und XUL im Intranet
Markus Wolff
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
Oliver Zeigermann
 
FLOW3-Workshop F3X12
FLOW3-Workshop F3X12FLOW3-Workshop F3X12
FLOW3-Workshop F3X12
Karsten Dambekalns
 
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
NETWAYS
 
Schweine latein-vortrag
Schweine latein-vortragSchweine latein-vortrag
Schweine latein-vortrag
Ramon Wartala
 
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Brigitte Jellinek
 
The Lotus Code Cookbook
The Lotus Code CookbookThe Lotus Code Cookbook
The Lotus Code Cookbook
Ulrich Krause
 
IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007
derDoc
 
PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3
marco-huber
 
PHAR better Tools
PHAR better ToolsPHAR better Tools
PHAR better Tools
PHP in DD
 
Java und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzenJava und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzen
Andreas Schreiber
 
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang BarthNagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
NETWAYS
 
Startmeeting Interessengruppe NLP NLU Graz
Startmeeting Interessengruppe NLP NLU GrazStartmeeting Interessengruppe NLP NLU Graz
Startmeeting Interessengruppe NLP NLU Graz
roskakori
 
Web Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 BetaWeb Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 Beta
Hans-Joachim Piepereit
 
Workshop: Besseres C#
Workshop: Besseres C#Workshop: Besseres C#
Workshop: Besseres C#
Rainer Stropek
 

Ähnlich wie Haxe & NME (20)

Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1Web Entwicklung mit PHP - Teil 1
Web Entwicklung mit PHP - Teil 1
 
Creasoft - Windows powershell
Creasoft - Windows powershellCreasoft - Windows powershell
Creasoft - Windows powershell
 
Java und Go im Vergleich
Java und Go im VergleichJava und Go im Vergleich
Java und Go im Vergleich
 
PHP, AJAX und XUL im Intranet
PHP, AJAX und XUL im IntranetPHP, AJAX und XUL im Intranet
PHP, AJAX und XUL im Intranet
 
JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013JavaScript für Java-Entwickler W-JAX 2013
JavaScript für Java-Entwickler W-JAX 2013
 
FLOW3-Workshop F3X12
FLOW3-Workshop F3X12FLOW3-Workshop F3X12
FLOW3-Workshop F3X12
 
Haxe
HaxeHaxe
Haxe
 
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
OSMC 2008 | Programmierung von Nagios-Plugins für NetApp Speichergeräte by In...
 
Schweine latein-vortrag
Schweine latein-vortragSchweine latein-vortrag
Schweine latein-vortrag
 
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
Perl - die Taschenkettensäge unter den Programmiersprachen - Vortrag 2003
 
The Lotus Code Cookbook
The Lotus Code CookbookThe Lotus Code Cookbook
The Lotus Code Cookbook
 
IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007
 
PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3
 
PHAR better Tools
PHAR better ToolsPHAR better Tools
PHAR better Tools
 
Java und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzenJava und Python - Das Beste aus beiden Welten nutzen
Java und Python - Das Beste aus beiden Welten nutzen
 
Php Schulung
Php SchulungPhp Schulung
Php Schulung
 
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang BarthNagios Conference 2007 |  Pluginprogrammierung in Perl by Wolfgang Barth
Nagios Conference 2007 | Pluginprogrammierung in Perl by Wolfgang Barth
 
Startmeeting Interessengruppe NLP NLU Graz
Startmeeting Interessengruppe NLP NLU GrazStartmeeting Interessengruppe NLP NLU Graz
Startmeeting Interessengruppe NLP NLU Graz
 
Web Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 BetaWeb Entwicklung mit PHP - Teil 3 Beta
Web Entwicklung mit PHP - Teil 3 Beta
 
Workshop: Besseres C#
Workshop: Besseres C#Workshop: Besseres C#
Workshop: Besseres C#
 

Mehr von IndieOutpost

CipSoft Innovations-Prozess
CipSoft Innovations-ProzessCipSoft Innovations-Prozess
CipSoft Innovations-Prozess
IndieOutpost
 
Keep your game in the fun zone - Designing an AI Director
Keep your game in the fun zone - Designing an AI DirectorKeep your game in the fun zone - Designing an AI Director
Keep your game in the fun zone - Designing an AI Director
IndieOutpost
 
Making HTML5 Games with Phaser
Making HTML5 Games with PhaserMaking HTML5 Games with Phaser
Making HTML5 Games with Phaser
IndieOutpost
 
Juice up your game feel!
Juice up your game feel!Juice up your game feel!
Juice up your game feel!
IndieOutpost
 
Eye Tracking Studie in Amnesia the Dark Decent
Eye Tracking Studie in Amnesia the Dark DecentEye Tracking Studie in Amnesia the Dark Decent
Eye Tracking Studie in Amnesia the Dark Decent
IndieOutpost
 
Games Bavaria - Spieleentwickler Förderung in Bayern
Games Bavaria - Spieleentwickler Förderung in BayernGames Bavaria - Spieleentwickler Förderung in Bayern
Games Bavaria - Spieleentwickler Förderung in Bayern
IndieOutpost
 
Amazon Web Services
Amazon Web ServicesAmazon Web Services
Amazon Web Services
IndieOutpost
 
Postmortem: "Spellcreepers"
Postmortem: "Spellcreepers"Postmortem: "Spellcreepers"
Postmortem: "Spellcreepers"
IndieOutpost
 
Algorithmische Grafik
Algorithmische GrafikAlgorithmische Grafik
Algorithmische Grafik
IndieOutpost
 
Spiele entwickeln mit dem Adobe AIR SDK
Spiele entwickeln mit dem Adobe AIR SDKSpiele entwickeln mit dem Adobe AIR SDK
Spiele entwickeln mit dem Adobe AIR SDK
IndieOutpost
 
GameMaker:Studio
GameMaker:StudioGameMaker:Studio
GameMaker:Studio
IndieOutpost
 
Cocos2dx
Cocos2dxCocos2dx
Cocos2dx
IndieOutpost
 
Scaleform in Unity3D
Scaleform in Unity3DScaleform in Unity3D
Scaleform in Unity3D
IndieOutpost
 
HTML5 Spiele entwickeln mit ImpactJS
HTML5 Spiele entwickeln mit ImpactJSHTML5 Spiele entwickeln mit ImpactJS
HTML5 Spiele entwickeln mit ImpactJS
IndieOutpost
 
Location-based Games - Game Design für kaputte Controller
Location-based Games - Game Design für kaputte ControllerLocation-based Games - Game Design für kaputte Controller
Location-based Games - Game Design für kaputte Controller
IndieOutpost
 

Mehr von IndieOutpost (15)

CipSoft Innovations-Prozess
CipSoft Innovations-ProzessCipSoft Innovations-Prozess
CipSoft Innovations-Prozess
 
Keep your game in the fun zone - Designing an AI Director
Keep your game in the fun zone - Designing an AI DirectorKeep your game in the fun zone - Designing an AI Director
Keep your game in the fun zone - Designing an AI Director
 
Making HTML5 Games with Phaser
Making HTML5 Games with PhaserMaking HTML5 Games with Phaser
Making HTML5 Games with Phaser
 
Juice up your game feel!
Juice up your game feel!Juice up your game feel!
Juice up your game feel!
 
Eye Tracking Studie in Amnesia the Dark Decent
Eye Tracking Studie in Amnesia the Dark DecentEye Tracking Studie in Amnesia the Dark Decent
Eye Tracking Studie in Amnesia the Dark Decent
 
Games Bavaria - Spieleentwickler Förderung in Bayern
Games Bavaria - Spieleentwickler Förderung in BayernGames Bavaria - Spieleentwickler Förderung in Bayern
Games Bavaria - Spieleentwickler Förderung in Bayern
 
Amazon Web Services
Amazon Web ServicesAmazon Web Services
Amazon Web Services
 
Postmortem: "Spellcreepers"
Postmortem: "Spellcreepers"Postmortem: "Spellcreepers"
Postmortem: "Spellcreepers"
 
Algorithmische Grafik
Algorithmische GrafikAlgorithmische Grafik
Algorithmische Grafik
 
Spiele entwickeln mit dem Adobe AIR SDK
Spiele entwickeln mit dem Adobe AIR SDKSpiele entwickeln mit dem Adobe AIR SDK
Spiele entwickeln mit dem Adobe AIR SDK
 
GameMaker:Studio
GameMaker:StudioGameMaker:Studio
GameMaker:Studio
 
Cocos2dx
Cocos2dxCocos2dx
Cocos2dx
 
Scaleform in Unity3D
Scaleform in Unity3DScaleform in Unity3D
Scaleform in Unity3D
 
HTML5 Spiele entwickeln mit ImpactJS
HTML5 Spiele entwickeln mit ImpactJSHTML5 Spiele entwickeln mit ImpactJS
HTML5 Spiele entwickeln mit ImpactJS
 
Location-based Games - Game Design für kaputte Controller
Location-based Games - Game Design für kaputte ControllerLocation-based Games - Game Design für kaputte Controller
Location-based Games - Game Design für kaputte Controller
 

Haxe & NME