SlideShare uma empresa Scribd logo
1 de 33
Baixar para ler offline
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 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
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

Mais conteúdo relacionado

Semelhante a Haxe & NME

Creasoft - Windows powershell
Creasoft - Windows powershellCreasoft - Windows powershell
Creasoft - Windows powershellCreasoft AG
 
Java und Go im Vergleich
Java und Go im VergleichJava und Go im Vergleich
Java und Go im VergleichQAware GmbH
 
PHP, AJAX und XUL im Intranet
PHP, AJAX und XUL im IntranetPHP, AJAX und XUL im Intranet
PHP, AJAX und XUL im IntranetMarkus 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 2013Oliver Zeigermann
 
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-vortragRamon 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 2003Brigitte Jellinek
 
The Lotus Code Cookbook
The Lotus Code CookbookThe Lotus Code Cookbook
The Lotus Code CookbookUlrich Krause
 
IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007IfN Studienarbeit Abschlusspres 18.9.2007
IfN Studienarbeit Abschlusspres 18.9.2007derDoc
 
PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3PhpStorm 6 Configuration for TYPO3
PhpStorm 6 Configuration for TYPO3marco-huber
 
PHAR better Tools
PHAR better ToolsPHAR better Tools
PHAR better ToolsPHP 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 nutzenAndreas 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 BarthNETWAYS
 
Startmeeting Interessengruppe NLP NLU Graz
Startmeeting Interessengruppe NLP NLU GrazStartmeeting Interessengruppe NLP NLU Graz
Startmeeting Interessengruppe NLP NLU Grazroskakori
 

Semelhante a 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#
 

Mais de IndieOutpost

CipSoft Innovations-Prozess
CipSoft Innovations-ProzessCipSoft Innovations-Prozess
CipSoft Innovations-ProzessIndieOutpost
 
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 DirectorIndieOutpost
 
Making HTML5 Games with Phaser
Making HTML5 Games with PhaserMaking HTML5 Games with Phaser
Making HTML5 Games with PhaserIndieOutpost
 
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 DecentIndieOutpost
 
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 BayernIndieOutpost
 
Amazon Web Services
Amazon Web ServicesAmazon Web Services
Amazon Web ServicesIndieOutpost
 
Postmortem: "Spellcreepers"
Postmortem: "Spellcreepers"Postmortem: "Spellcreepers"
Postmortem: "Spellcreepers"IndieOutpost
 
Algorithmische Grafik
Algorithmische GrafikAlgorithmische Grafik
Algorithmische GrafikIndieOutpost
 
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 SDKIndieOutpost
 
Scaleform in Unity3D
Scaleform in Unity3DScaleform in Unity3D
Scaleform in Unity3DIndieOutpost
 
HTML5 Spiele entwickeln mit ImpactJS
HTML5 Spiele entwickeln mit ImpactJSHTML5 Spiele entwickeln mit ImpactJS
HTML5 Spiele entwickeln mit ImpactJSIndieOutpost
 
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 ControllerIndieOutpost
 

Mais de 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