SlideShare a Scribd company logo
1 of 32
Download to read offline
Cross-platform Development 
Introducing the Haxe Toolkit 
by Romuald Halasz, 02.08.2014
A little bit about me 
- started work with QuickBasic, BPascal, C++ 
- Visual Studio 2005, OpenGL, DirectX 
- PHP, HTML, CSS, JavaScript 
- Flash, Flex 
- Haxe, NME 
- currently hosting TGD Meetup
Presentation structure 
Introduction to Haxe 
- language features 
Cross-platform aspects 
- specific APIs 
- target specific platforms
Getting acquainted with Haxe 
A bit of history: 
22 October 2005 by French developer Nicolas Cannasse 
Haxe 2.0 was released in July 2008, 
Haxe 3 was released in May 2013 
open source 
Toolkit: 
- language 
- standard library 
- compiler
Language Specifics 
- based on ECMAScript standard, similar to ActionScript 
- strictly typed 
- object oriented 
- conditional compilation 
- inline calls 
- metadata 
- type params, constraints, variance 
- etc. (pattern matching, abstract types, string interpolation …) 
- more info: http://haxe.org/documentation/introduction/language-features.html
What does it look like ? 
class Test { 
static function main():Void { 
var people:Array = [ 
"Elizabeth" => "Programming", 
"Joel" => "Design" 
]; 
for (name in people.keys()) { 
var job = people[name]; 
trace('$name does $job for a living!'); 
} 
} 
}
Language Architecture 
- Haxe API 
- platform-specific APIs 
- libraries 
- frameworks
Haxe Standard Library 
- general classes 
- system (requires platform compilation) 
- target specific APIs 
(cpp, cs, flash, php etc.)
Haxelib 
- library manager 
- CLI tool 
- browse and download libraries: 
http://lib.haxe.org/
Haxe and multiple platforms 
Going cross-platform! 
Let’s dive right into it. 
first, a bit of context...
Targets and Use Cases 
Name Kind Static typed Sys Use Cases 
Flash byte code Yes No Games, Mobile 
Neko byte code No Yes Web, CLI 
ActionScript 3 source Yes Yes Games, Mobile, API 
JavaScript source No No Web, Desktop, API 
PHP source No Yes Web 
C++ source Yes Yes Games, CLI, Mobile, Desktop 
Java source Yes Yes CLI, Mobile, Desktop 
C# source Yes Yes Mobile, Desktop 
Python source No Yes CLI, Web, Desktop
Platform Use Cases 
We will focus on: 
- Mobile 
- Desktop 
- Web 
- Games!
Library Spotlight: Lime 
“A foundational Haxe framework for cross-platform 
native development.” 
- abstraction layer 
- compile code to C++, JavaScript etc. 
Structure 
- CLI tools - platform-specific process 
- native layer (C++, Objective-C, Java) 
- Haxe wrapper
OpenFl, NME 
- provide support for creating 
cross-platform interfaces 
- flash-like API (display, events, 
text, external, net etc.)
Supported platforms 
Take your pick!
OpenFl in practice 
Targets: 
Desktop: Windows, Mac, Linux 
Mobile: iOS, Android, BlackBerry 
Web: Tizen, Emscripten, HTML5 
Exposes: 
OpenGL, Audio, Input 
Windowing 
Useful native features
Haxe and Mobile 
Targets: C++, HTML5 
Tools: 
- cross-platform APIs 
- libraries: StablexUI, HaxeUI 
For iOS and Android: Basis 
HTML5 target works with PhoneGap
Targeting iOS, Android, BlackBerry 
Android: 
- Android SDK/NDK, Apache ANT, Java JDK 
- supported by lime 
iOS: 
- Xcode required 
- target Flash, publish using AIR 
BlackBerry: 
- OpenFl is compatible with BlackBerry Tablet SDK 
- supported by lime
Desktop Targets 
Targets: C++, HTML5 
Tools: 
Libraries: Waxe (Haxe + wxW) 
HTML5 targets work with Node-socket 
- app runtime 
- based on Chromium and Node.js 
https://github.com/rogerwang/node-webkit
Targeting Windows, Mac, Linux 
Windows: 
- Neko (no dependencies) 
- C++, Visual Studio required 
Mac: 
- Neko 
- C++, requires Xcode 
Linux: 
- g++, gcc-multilib required 
!! Targeting restricted to current platform
Haxe on the Web 
Client targets: 
- JavaScript, ActionScript 3 
Server targets: 
- PHP, Node, Neko
Haxe Web - clients 
Haxe and jQuery: 
- Haxe js.jQuery API 
- jQueryExternForHaxe (library) 
- more recent jQuery version 
- https://github.com/andyli/jQueryExternForHaxe
jQuery Example 
$(document).ready(function(){ 
$("#myDiv").hide(); 
}); 
import JQuery; 
class Main { 
static public function main():Void { 
new JQuery(function():Void { 
new JQuery("#myDiv").hide(); 
}); 
} 
}
Haxe Web - servers 
Haxe JS Kit 
https://github.com/clemos/haxe-js-kit 
includes Node.js 
- NPM libraries: 
Mongoose, Connect.js, Express.js, Socket.io, Passport.js, 
Atom-shell 
Haxenode 
- Node.js port for Haxe 
http://haxenode.herokuapp.com/
Haxenode Example (node) 
Node.js: 
var http = require('http'); 
var server = http.createServer( 
function (req, res) { 
res.writeHead(200, {'Content-Type': 'text/plain'}); 
res.end('Hello Worldn'); 
} 
); 
server.listen(1337, "127.0.0.1"); 
console.log('Server running at http://127.0.0.1:1337/');
Haxenode Example (haxe) 
import js.Node; 
class Haxenode { 
public static function main() { 
var server = Node.http.createServer(function(req:NodeHttpServerReq, res: 
NodeHttpServerResp) { 
res.setHeader("Content-Type","text/plain"); 
res.writeHead(200); 
res.end('Hello Worldn'); 
} 
); 
server.listen(1337,"localhost"); 
trace('Server running at http://127.0.0.1:1337/'); 
} 
}
And last but not least, Games! 
Libraries: 
Frameworks: HaxeFlixel, awe6, HaxePunk
A close look at HaxePunk
More information 
haxe.org 
openfl.org 
haxepunk.com
Thank you very much !

More Related Content

What's hot

.NET Core in the Real World
.NET Core in the Real World.NET Core in the Real World
.NET Core in the Real WorldNate Barbettini
 
Lean Php Presentation
Lean Php PresentationLean Php Presentation
Lean Php PresentationAlan Pinstein
 
Front End Development Automation with Grunt
Front End Development Automation with GruntFront End Development Automation with Grunt
Front End Development Automation with GruntLadies Who Code
 
Cache in Chromium: Disk Cache
Cache in Chromium: Disk CacheCache in Chromium: Disk Cache
Cache in Chromium: Disk CacheChang W. Doh
 
Voxxed Days Thessaloniki 2016 - Web assembly : the browser vm we were waiting...
Voxxed Days Thessaloniki 2016 - Web assembly : the browser vm we were waiting...Voxxed Days Thessaloniki 2016 - Web assembly : the browser vm we were waiting...
Voxxed Days Thessaloniki 2016 - Web assembly : the browser vm we were waiting...Voxxed Days Thessaloniki
 
Drupal Camp2009 Asp.Net Vs Drupal
Drupal Camp2009 Asp.Net Vs DrupalDrupal Camp2009 Asp.Net Vs Drupal
Drupal Camp2009 Asp.Net Vs DrupalInna Tuyeva
 
PHP presentation - Com 585
PHP presentation - Com 585PHP presentation - Com 585
PHP presentation - Com 585jstout007
 
.Net introduction
.Net introduction.Net introduction
.Net introductionSireesh K
 

What's hot (15)

Super combinators
Super combinatorsSuper combinators
Super combinators
 
.NET Core in the Real World
.NET Core in the Real World.NET Core in the Real World
.NET Core in the Real World
 
Lean Php Presentation
Lean Php PresentationLean Php Presentation
Lean Php Presentation
 
Front End Development Automation with Grunt
Front End Development Automation with GruntFront End Development Automation with Grunt
Front End Development Automation with Grunt
 
Cache in Chromium: Disk Cache
Cache in Chromium: Disk CacheCache in Chromium: Disk Cache
Cache in Chromium: Disk Cache
 
Voxxed Days Thessaloniki 2016 - Web assembly : the browser vm we were waiting...
Voxxed Days Thessaloniki 2016 - Web assembly : the browser vm we were waiting...Voxxed Days Thessaloniki 2016 - Web assembly : the browser vm we were waiting...
Voxxed Days Thessaloniki 2016 - Web assembly : the browser vm we were waiting...
 
Net core
Net coreNet core
Net core
 
Php
PhpPhp
Php
 
Tech talk php_cms
Tech talk php_cmsTech talk php_cms
Tech talk php_cms
 
Drupal Camp2009 Asp.Net Vs Drupal
Drupal Camp2009 Asp.Net Vs DrupalDrupal Camp2009 Asp.Net Vs Drupal
Drupal Camp2009 Asp.Net Vs Drupal
 
Tech talk: PHP
Tech talk: PHPTech talk: PHP
Tech talk: PHP
 
Presentation php
Presentation phpPresentation php
Presentation php
 
JS 4 U
JS 4 UJS 4 U
JS 4 U
 
PHP presentation - Com 585
PHP presentation - Com 585PHP presentation - Com 585
PHP presentation - Com 585
 
.Net introduction
.Net introduction.Net introduction
.Net introduction
 

Similar to Haxe Toolkit for cross-platform applications development

Haxe Toolkit and Game Development
Haxe Toolkit and Game DevelopmentHaxe Toolkit and Game Development
Haxe Toolkit and Game DevelopmentRomuald Halasz
 
qooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkqooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkecker
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Pierre Joye
 
2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar Slides2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar SlidesDuraSpace
 
20160201_resume_Vladimir_Chesnokov
20160201_resume_Vladimir_Chesnokov20160201_resume_Vladimir_Chesnokov
20160201_resume_Vladimir_ChesnokovVladimir Chesnokov
 
Open Source Flash 2010
Open Source Flash 2010Open Source Flash 2010
Open Source Flash 2010Gaurav Saxena
 
Node.js an introduction
Node.js   an introductionNode.js   an introduction
Node.js an introductionMeraj Khattak
 
The future of server side JavaScript
The future of server side JavaScriptThe future of server side JavaScript
The future of server side JavaScriptOleg Podsechin
 
API Platform: Full Stack Framework Resurrection
API Platform: Full Stack Framework ResurrectionAPI Platform: Full Stack Framework Resurrection
API Platform: Full Stack Framework ResurrectionLes-Tilleuls.coop
 
full-stack web developer (6).pdf
full-stack web developer (6).pdffull-stack web developer (6).pdf
full-stack web developer (6).pdfShubhamSaini950258
 
.Net overviewrajnish
.Net overviewrajnish.Net overviewrajnish
.Net overviewrajnishRajnish Kalla
 
HTML5: An Introduction To Next Generation Web Development
HTML5: An Introduction To Next Generation Web DevelopmentHTML5: An Introduction To Next Generation Web Development
HTML5: An Introduction To Next Generation Web DevelopmentTilak Joshi
 
Add the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitAdd the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitIgalia
 
Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...
Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...
Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...Flink Forward
 
AJAX Frameworks
AJAX FrameworksAJAX Frameworks
AJAX Frameworksshank
 
Building Desktop RIAs with PHP, HTML & Javascript in AIR
Building Desktop RIAs with PHP, HTML & Javascript in AIRBuilding Desktop RIAs with PHP, HTML & Javascript in AIR
Building Desktop RIAs with PHP, HTML & Javascript in AIRfunkatron
 

Similar to Haxe Toolkit for cross-platform applications development (20)

Haxe Toolkit and Game Development
Haxe Toolkit and Game DevelopmentHaxe Toolkit and Game Development
Haxe Toolkit and Game Development
 
HaXe Demo
HaXe DemoHaXe Demo
HaXe Demo
 
qooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Frameworkqooxdoo - Open Source Ajax Framework
qooxdoo - Open Source Ajax Framework
 
Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18Webdevcon Keynote hh-2012-09-18
Webdevcon Keynote hh-2012-09-18
 
2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar Slides2.28.17 Introducing DSpace 7 Webinar Slides
2.28.17 Introducing DSpace 7 Webinar Slides
 
.NET Core on Mac
.NET Core on Mac.NET Core on Mac
.NET Core on Mac
 
20160201_resume_Vladimir_Chesnokov
20160201_resume_Vladimir_Chesnokov20160201_resume_Vladimir_Chesnokov
20160201_resume_Vladimir_Chesnokov
 
Open Source Flash 2010
Open Source Flash 2010Open Source Flash 2010
Open Source Flash 2010
 
World of Node.JS
World of Node.JSWorld of Node.JS
World of Node.JS
 
Node.js an introduction
Node.js   an introductionNode.js   an introduction
Node.js an introduction
 
The future of server side JavaScript
The future of server side JavaScriptThe future of server side JavaScript
The future of server side JavaScript
 
API Platform: Full Stack Framework Resurrection
API Platform: Full Stack Framework ResurrectionAPI Platform: Full Stack Framework Resurrection
API Platform: Full Stack Framework Resurrection
 
full-stack web developer (6).pdf
full-stack web developer (6).pdffull-stack web developer (6).pdf
full-stack web developer (6).pdf
 
.Net overviewrajnish
.Net overviewrajnish.Net overviewrajnish
.Net overviewrajnish
 
Webhouse
WebhouseWebhouse
Webhouse
 
HTML5: An Introduction To Next Generation Web Development
HTML5: An Introduction To Next Generation Web DevelopmentHTML5: An Introduction To Next Generation Web Development
HTML5: An Introduction To Next Generation Web Development
 
Add the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKitAdd the power of the Web to your embedded devices with WPE WebKit
Add the power of the Web to your embedded devices with WPE WebKit
 
Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...
Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...
Flink Forward Berlin 2018: Robert Bradshaw & Maximilian Michels - "Universal ...
 
AJAX Frameworks
AJAX FrameworksAJAX Frameworks
AJAX Frameworks
 
Building Desktop RIAs with PHP, HTML & Javascript in AIR
Building Desktop RIAs with PHP, HTML & Javascript in AIRBuilding Desktop RIAs with PHP, HTML & Javascript in AIR
Building Desktop RIAs with PHP, HTML & Javascript in AIR
 

Recently uploaded

5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVshikhaohhpro
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfPower Karaoke
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...gurkirankumar98700
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfjoe51371421
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataBradBedford3
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideChristina Lin
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationkaushalgiri8080
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...OnePlan Solutions
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...aditisharan08
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number SystemsJheuzeDellosa
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsMehedi Hasan Shohan
 

Recently uploaded (20)

5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
The Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdfThe Evolution of Karaoke From Analog to App.pdf
The Evolution of Karaoke From Analog to App.pdf
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
(Genuine) Escort Service Lucknow | Starting ₹,5K To @25k with A/C 🧑🏽‍❤️‍🧑🏻 89...
 
why an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdfwhy an Opensea Clone Script might be your perfect match.pdf
why an Opensea Clone Script might be your perfect match.pdf
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer DataAdobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
Adobe Marketo Engage Deep Dives: Using Webhooks to Transfer Data
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop SlideBuilding Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
Building Real-Time Data Pipelines: Stream & Batch Processing workshop Slide
 
Project Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanationProject Based Learning (A.I).pptx detail explanation
Project Based Learning (A.I).pptx detail explanation
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...Advancing Engineering with AI through the Next Generation of Strategic Projec...
Advancing Engineering with AI through the Next Generation of Strategic Projec...
 
Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...Unit 1.1 Excite Part 1, class 9, cbse...
Unit 1.1 Excite Part 1, class 9, cbse...
 
What is Binary Language? Computer Number Systems
What is Binary Language?  Computer Number SystemsWhat is Binary Language?  Computer Number Systems
What is Binary Language? Computer Number Systems
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 
XpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software SolutionsXpertSolvers: Your Partner in Building Innovative Software Solutions
XpertSolvers: Your Partner in Building Innovative Software Solutions
 

Haxe Toolkit for cross-platform applications development

  • 1. Cross-platform Development Introducing the Haxe Toolkit by Romuald Halasz, 02.08.2014
  • 2. A little bit about me - started work with QuickBasic, BPascal, C++ - Visual Studio 2005, OpenGL, DirectX - PHP, HTML, CSS, JavaScript - Flash, Flex - Haxe, NME - currently hosting TGD Meetup
  • 3. Presentation structure Introduction to Haxe - language features Cross-platform aspects - specific APIs - target specific platforms
  • 4. Getting acquainted with Haxe A bit of history: 22 October 2005 by French developer Nicolas Cannasse Haxe 2.0 was released in July 2008, Haxe 3 was released in May 2013 open source Toolkit: - language - standard library - compiler
  • 5. Language Specifics - based on ECMAScript standard, similar to ActionScript - strictly typed - object oriented - conditional compilation - inline calls - metadata - type params, constraints, variance - etc. (pattern matching, abstract types, string interpolation …) - more info: http://haxe.org/documentation/introduction/language-features.html
  • 6. What does it look like ? class Test { static function main():Void { var people:Array = [ "Elizabeth" => "Programming", "Joel" => "Design" ]; for (name in people.keys()) { var job = people[name]; trace('$name does $job for a living!'); } } }
  • 7. Language Architecture - Haxe API - platform-specific APIs - libraries - frameworks
  • 8.
  • 9. Haxe Standard Library - general classes - system (requires platform compilation) - target specific APIs (cpp, cs, flash, php etc.)
  • 10. Haxelib - library manager - CLI tool - browse and download libraries: http://lib.haxe.org/
  • 11. Haxe and multiple platforms Going cross-platform! Let’s dive right into it. first, a bit of context...
  • 12.
  • 13. Targets and Use Cases Name Kind Static typed Sys Use Cases Flash byte code Yes No Games, Mobile Neko byte code No Yes Web, CLI ActionScript 3 source Yes Yes Games, Mobile, API JavaScript source No No Web, Desktop, API PHP source No Yes Web C++ source Yes Yes Games, CLI, Mobile, Desktop Java source Yes Yes CLI, Mobile, Desktop C# source Yes Yes Mobile, Desktop Python source No Yes CLI, Web, Desktop
  • 14. Platform Use Cases We will focus on: - Mobile - Desktop - Web - Games!
  • 15. Library Spotlight: Lime “A foundational Haxe framework for cross-platform native development.” - abstraction layer - compile code to C++, JavaScript etc. Structure - CLI tools - platform-specific process - native layer (C++, Objective-C, Java) - Haxe wrapper
  • 16. OpenFl, NME - provide support for creating cross-platform interfaces - flash-like API (display, events, text, external, net etc.)
  • 18. OpenFl in practice Targets: Desktop: Windows, Mac, Linux Mobile: iOS, Android, BlackBerry Web: Tizen, Emscripten, HTML5 Exposes: OpenGL, Audio, Input Windowing Useful native features
  • 19. Haxe and Mobile Targets: C++, HTML5 Tools: - cross-platform APIs - libraries: StablexUI, HaxeUI For iOS and Android: Basis HTML5 target works with PhoneGap
  • 20. Targeting iOS, Android, BlackBerry Android: - Android SDK/NDK, Apache ANT, Java JDK - supported by lime iOS: - Xcode required - target Flash, publish using AIR BlackBerry: - OpenFl is compatible with BlackBerry Tablet SDK - supported by lime
  • 21. Desktop Targets Targets: C++, HTML5 Tools: Libraries: Waxe (Haxe + wxW) HTML5 targets work with Node-socket - app runtime - based on Chromium and Node.js https://github.com/rogerwang/node-webkit
  • 22. Targeting Windows, Mac, Linux Windows: - Neko (no dependencies) - C++, Visual Studio required Mac: - Neko - C++, requires Xcode Linux: - g++, gcc-multilib required !! Targeting restricted to current platform
  • 23. Haxe on the Web Client targets: - JavaScript, ActionScript 3 Server targets: - PHP, Node, Neko
  • 24. Haxe Web - clients Haxe and jQuery: - Haxe js.jQuery API - jQueryExternForHaxe (library) - more recent jQuery version - https://github.com/andyli/jQueryExternForHaxe
  • 25. jQuery Example $(document).ready(function(){ $("#myDiv").hide(); }); import JQuery; class Main { static public function main():Void { new JQuery(function():Void { new JQuery("#myDiv").hide(); }); } }
  • 26. Haxe Web - servers Haxe JS Kit https://github.com/clemos/haxe-js-kit includes Node.js - NPM libraries: Mongoose, Connect.js, Express.js, Socket.io, Passport.js, Atom-shell Haxenode - Node.js port for Haxe http://haxenode.herokuapp.com/
  • 27. Haxenode Example (node) Node.js: var http = require('http'); var server = http.createServer( function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello Worldn'); } ); server.listen(1337, "127.0.0.1"); console.log('Server running at http://127.0.0.1:1337/');
  • 28. Haxenode Example (haxe) import js.Node; class Haxenode { public static function main() { var server = Node.http.createServer(function(req:NodeHttpServerReq, res: NodeHttpServerResp) { res.setHeader("Content-Type","text/plain"); res.writeHead(200); res.end('Hello Worldn'); } ); server.listen(1337,"localhost"); trace('Server running at http://127.0.0.1:1337/'); } }
  • 29. And last but not least, Games! Libraries: Frameworks: HaxeFlixel, awe6, HaxePunk
  • 30. A close look at HaxePunk
  • 31. More information haxe.org openfl.org haxepunk.com
  • 32. Thank you very much !