SlideShare a Scribd company logo
HAXE

One codebase to rule ‘em all
GETTING AQUAINTED

• Created by Nicolas Cannasse (who also created the MTASC-compiler) in
  2005

• First Beta released on 2006/02/04
  => only Neko and SWF8 targets available

• 2006/05/01: version 1.0 released
  => JavaScript target added

• Today: version 2.08
  => Neko, SWF8, SWF9, JS, C++, PHP targets available
  => C# and Java targets under heavy development

• Open Source
• Very active and bright community
• Mature and fast compiler
LANGUAGE FEATURES

• Multi-platform: write haXe source code and deploy to
  => mobile (Windows Phone, iOS, Android, webOS all using native code)
  => desktop (native code, AIR)
  => server (NekoVM, PHP, NodeJS)
  => web (Flash 6-11/HTML-Canvas-WebGL/JavaScript/PHP)
  => command line (C++, Neko)

• Elegant remoting across all platforms: compiling the same remoting classes
  source code to different targets allows for successful and fast
  deserialization between different platforms

• Syntax based on ECMAScript: easy switching for AS/JS developers, easy
  to learn for new developers or developers coming from other platforms

• Strictly typed: compile-time checking across all targets, even for non-
  compiled languages like JS and PHP

• Very fast compiler, blazing-fast serialization.
LANGUAGE FEATURES

• Macro’s allow you to write code that executes against your application at
  compile-time. This allows for advanced code
  generation/customisation/optimization.

• Use conditional compilation to handle different platforms

• Type inference allows for less and more beautiful code

• Function and constants inlining makes fast code faster

• Enrich types and fields with metadata
  => accessible at runtime through the haxe.rtti.Meta API
  => or to be used by the compiler internals at compile-time

• Fantastic Reflection API: using Reflect and Type allows for painless runtime
  type-checking and variable instantiation

• Standard libraries work across all client and server targets (Math, Xml,
  Date, Http, …)
LANGUAGE FEATURES

• Rich Type system
  => Void, Null, Dynamic, untyped (bypass type-checking)
  => Array, List, Hash with native iterators
  => Generics (with optional constraints), Typedefs, Enums

• Function type inference

• Dynamic functions: execute function logic on different data types using the
  Dynamic type for parameters and return type

• Local functions: functions that exist as the value of a variable
  => e.g.: var functionVariable : ParamOne [[- > ParamTwo] ...]- >
  ReturnValue
  ;
• Advanced cross-platform debugging with CallStack and ExceptionStack

• Cross-platform logging and tracing
LANGUAGE FEATURES

• SPOD Macro’s: Simple Persistent Objects Database Library
  => similar to an ultra-lightweight version of Hibernate
  => write haXe expressions instead of SQL
  => benefit from type-safety
  => supports metadata

• Duck typing using type inference and anonymous types

• Access full target platform API’s

• Interface with existing platform libraries using Extern classes or use haxelib

• Generated code is 100% compatible with existing target platform native
  code

• Excellent runtime performance on all target platforms
THAT’S COOL!
IT COMPENSATES A LITTLE FOR EVERYDAY REALITY FOR MOST OF
US…
SO, IS IT ALL GREAT?

Actually: YES! 

BUT:

• Writing cross-platform code is not always easy

• It takes some practice and experience to use it right

• A solid IDE is only available for Windows (FlashDevelop). IDE’s for Mac and
  Linux exist, but they are not nearly a match for FD.

• “PR” could be better: not always easy to find what you’re looking for on the
  website, most valuable info & help only available through the mailing list
  => BUT, big improvement: community moved to Google Groups last week

• Unknown == often not loved: not always easy to convince your
  bosses/clients to move to a little-known platform
CROSS-PLATFORM TIPS

Abstract display hierarchy through composition
CROSS-PLATFORM TIPS

Encapsulate low-level drawing and styling
CROSS-PLATFORM TIPS

Separate domain and presentation layers

=> application logic is universal
=> presentation logic can differ greatly between targets and devices
CROSS-PLATFORM TIPS

Implement a device-agnostic UI

=> the number of devices that applications can (and will!) run on increases
very fast
CROSS-PLATFORM TIPS
CROSS-PLATFORM TIPS
CROSS-PLATFORM TIPS
CROSS-PLATFORM TIPS

Criticise yourself

• Just because you have the power to do a lot of things doesn’t mean you
  always should

• Make sense when writing your code and try to keep it maintainable

• With great power comes great responsability
CROSS-PLATFORM TIPS

Get started easily using NME

• NME stands for Neko Media Engine

• It’s an SDL-like wrapper for the haXe and Neko platform

• Abstract away low-level stuff, deal with the funky juice
DEMO TIME
RESOURCES

Books:

• Professional haXe and Neko (Wrox)
• haXe 2 Beginner’s Guide (Packt Publishing)

Online:

•    http://haxe.org (official haXe website)
•    http://groups.google.com/group/haxelang (new Google Group)
•    http://lists.motion-twin.com/mailman/listinfo/haxe (old mailing list)
•    http://www.haxenme.org (official haXe NME website)
•    http://www.joshuagranick.com/blog/

Twitter: @haxelang, @ncannasse, @fponticelli, @tarwin, @internetsurfing,
@cwaneck, @brunofonzi, @gamehaxe, @polygonal, @leesylvester
MY CONTACT DATA

@sventunus
facebook.com/sventunus
http://be.linkedin.com/in/svendens
sven.dens@gmail.com
sven.dens@thesedays.com
THANK YOU


A BIG thank you also goes out to all my friends and fellow-haXe-coders on the
mailinglist for inspiring me and allowing me to use/demo some of their stuff!

More Related Content

What's hot

Let's create a multilingual site in WordPress
Let's create a multilingual site in WordPressLet's create a multilingual site in WordPress
Let's create a multilingual site in WordPress
Marko Heijnen
 
introduction to Lamp Stack
introduction to Lamp Stackintroduction to Lamp Stack
introduction to Lamp Stack
Anant Shrivastava
 
NXTware remote for open vms introduction
NXTware remote for open vms introductionNXTware remote for open vms introduction
NXTware remote for open vms introduction
ecubemarketing
 
Lamp technology
Lamp technologyLamp technology
Lamp technology
Harish Sabbani
 
Peeling back the Lambda layers
Peeling back the Lambda layersPeeling back the Lambda layers
Peeling back the Lambda layers
Patrick McCaffrey
 
Lesson1-How to migrate your Forms code and build HTM5 APP
Lesson1-How to migrate your Forms code and build HTM5 APPLesson1-How to migrate your Forms code and build HTM5 APP
Lesson1-How to migrate your Forms code and build HTM5 APP
Antonio Bartolozzi
 
Enterprise messaging
Enterprise messagingEnterprise messaging
Enterprise messaging
ColdFusionConference
 
Haxe Toolkit for cross-platform applications development
Haxe Toolkit for cross-platform applications developmentHaxe Toolkit for cross-platform applications development
Haxe Toolkit for cross-platform applications development
Romuald Halasz
 
ITS320 Presentation
ITS320 PresentationITS320 Presentation
ITS320 Presentation
leena1990
 
Java presetstion
Java presetstionJava presetstion
Java presetstion
leena1990
 
Its320 power point
Its320 power pointIts320 power point
Its320 power point
leena1990
 
Edge Of The Web
Edge Of The WebEdge Of The Web
Edge Of The Web
Justin Mclean
 
Bccon use notes objects in memory and other useful
Bccon   use notes objects in memory and other usefulBccon   use notes objects in memory and other useful
Bccon use notes objects in memory and other useful
Frank van der Linden
 
Web developer tools
Web developer toolsWeb developer tools
Web developer tools
Om shanti Web solutions
 
TypeScript for Alfresco and CMIS - Alfresco DevCon 2012 San Jose
TypeScript for Alfresco and CMIS - Alfresco DevCon 2012 San JoseTypeScript for Alfresco and CMIS - Alfresco DevCon 2012 San Jose
TypeScript for Alfresco and CMIS - Alfresco DevCon 2012 San Jose
Steve Reiner
 
Api crash
Api crashApi crash
Api crash
Hoang Nguyen
 

What's hot (16)

Let's create a multilingual site in WordPress
Let's create a multilingual site in WordPressLet's create a multilingual site in WordPress
Let's create a multilingual site in WordPress
 
introduction to Lamp Stack
introduction to Lamp Stackintroduction to Lamp Stack
introduction to Lamp Stack
 
NXTware remote for open vms introduction
NXTware remote for open vms introductionNXTware remote for open vms introduction
NXTware remote for open vms introduction
 
Lamp technology
Lamp technologyLamp technology
Lamp technology
 
Peeling back the Lambda layers
Peeling back the Lambda layersPeeling back the Lambda layers
Peeling back the Lambda layers
 
Lesson1-How to migrate your Forms code and build HTM5 APP
Lesson1-How to migrate your Forms code and build HTM5 APPLesson1-How to migrate your Forms code and build HTM5 APP
Lesson1-How to migrate your Forms code and build HTM5 APP
 
Enterprise messaging
Enterprise messagingEnterprise messaging
Enterprise messaging
 
Haxe Toolkit for cross-platform applications development
Haxe Toolkit for cross-platform applications developmentHaxe Toolkit for cross-platform applications development
Haxe Toolkit for cross-platform applications development
 
ITS320 Presentation
ITS320 PresentationITS320 Presentation
ITS320 Presentation
 
Java presetstion
Java presetstionJava presetstion
Java presetstion
 
Its320 power point
Its320 power pointIts320 power point
Its320 power point
 
Edge Of The Web
Edge Of The WebEdge Of The Web
Edge Of The Web
 
Bccon use notes objects in memory and other useful
Bccon   use notes objects in memory and other usefulBccon   use notes objects in memory and other useful
Bccon use notes objects in memory and other useful
 
Web developer tools
Web developer toolsWeb developer tools
Web developer tools
 
TypeScript for Alfresco and CMIS - Alfresco DevCon 2012 San Jose
TypeScript for Alfresco and CMIS - Alfresco DevCon 2012 San JoseTypeScript for Alfresco and CMIS - Alfresco DevCon 2012 San Jose
TypeScript for Alfresco and CMIS - Alfresco DevCon 2012 San Jose
 
Api crash
Api crashApi crash
Api crash
 

Similar to haXe - One codebase to rule'em all

Neptune @ SoCal
Neptune @ SoCalNeptune @ SoCal
Neptune @ SoCal
Chris Bunch
 
After the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEANAfter the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEAN
Jeff Fox
 
TypeScript - Javascript done right
TypeScript - Javascript done rightTypeScript - Javascript done right
TypeScript - Javascript done right
Wekoslav Stefanovski
 
.Net overviewrajnish
.Net overviewrajnish.Net overviewrajnish
.Net overviewrajnish
Rajnish Kalla
 
Holy PowerShell, BATman! - dogfood edition
Holy PowerShell, BATman! - dogfood editionHoly PowerShell, BATman! - dogfood edition
Holy PowerShell, BATman! - dogfood edition
Dave Diehl
 
Web Technology Fundamentals
Web Technology FundamentalsWeb Technology Fundamentals
Web Technology Fundamentals
sunmitraeducation
 
Design Like a Pro: Scripting Best Practices
Design Like a Pro: Scripting Best PracticesDesign Like a Pro: Scripting Best Practices
Design Like a Pro: Scripting Best Practices
Inductive Automation
 
Design Like a Pro: Scripting Best Practices
Design Like a Pro: Scripting Best PracticesDesign Like a Pro: Scripting Best Practices
Design Like a Pro: Scripting Best Practices
Inductive Automation
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code
Albert Suwandhi
 
Modified.net overview
Modified.net overviewModified.net overview
Modified.net overview
Faisal Aziz
 
Introduction To Web Development & The New Digital Workplace
Introduction To Web Development & The New Digital WorkplaceIntroduction To Web Development & The New Digital Workplace
Introduction To Web Development & The New Digital Workplace
Jen Wei Lee
 
Web programming
Web programmingWeb programming
Web programming
Ishucs
 
Introduction_to_NET.ppt
Introduction_to_NET.pptIntroduction_to_NET.ppt
Introduction_to_NET.ppt
Darwin Terraza
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
Travis van der Font
 
Php verses .net
Php verses .netPhp verses .net
Php verses .net
CBitss Technologies
 
Intro to CakePHP
Intro to CakePHPIntro to CakePHP
Intro to CakePHP
Walther Lalk
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele Rialdi
CodeFest
 
ASP.NET 5 - Microsoft's Web development platform reimagined
ASP.NET 5 - Microsoft's Web development platform reimaginedASP.NET 5 - Microsoft's Web development platform reimagined
ASP.NET 5 - Microsoft's Web development platform reimagined
Alex Thissen
 
PHP - Programming language war, does it matter
PHP - Programming language war, does it matterPHP - Programming language war, does it matter
PHP - Programming language war, does it matter
Mizno Kruge
 
AWS Summit Auckland - Moving MS .NET Applications One Container at a Time
AWS Summit Auckland - Moving MS .NET Applications One Container at a TimeAWS Summit Auckland - Moving MS .NET Applications One Container at a Time
AWS Summit Auckland - Moving MS .NET Applications One Container at a Time
Amazon Web Services
 

Similar to haXe - One codebase to rule'em all (20)

Neptune @ SoCal
Neptune @ SoCalNeptune @ SoCal
Neptune @ SoCal
 
After the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEANAfter the LAMP, it's time to get MEAN
After the LAMP, it's time to get MEAN
 
TypeScript - Javascript done right
TypeScript - Javascript done rightTypeScript - Javascript done right
TypeScript - Javascript done right
 
.Net overviewrajnish
.Net overviewrajnish.Net overviewrajnish
.Net overviewrajnish
 
Holy PowerShell, BATman! - dogfood edition
Holy PowerShell, BATman! - dogfood editionHoly PowerShell, BATman! - dogfood edition
Holy PowerShell, BATman! - dogfood edition
 
Web Technology Fundamentals
Web Technology FundamentalsWeb Technology Fundamentals
Web Technology Fundamentals
 
Design Like a Pro: Scripting Best Practices
Design Like a Pro: Scripting Best PracticesDesign Like a Pro: Scripting Best Practices
Design Like a Pro: Scripting Best Practices
 
Design Like a Pro: Scripting Best Practices
Design Like a Pro: Scripting Best PracticesDesign Like a Pro: Scripting Best Practices
Design Like a Pro: Scripting Best Practices
 
Infrastructure as Code
Infrastructure as CodeInfrastructure as Code
Infrastructure as Code
 
Modified.net overview
Modified.net overviewModified.net overview
Modified.net overview
 
Introduction To Web Development & The New Digital Workplace
Introduction To Web Development & The New Digital WorkplaceIntroduction To Web Development & The New Digital Workplace
Introduction To Web Development & The New Digital Workplace
 
Web programming
Web programmingWeb programming
Web programming
 
Introduction_to_NET.ppt
Introduction_to_NET.pptIntroduction_to_NET.ppt
Introduction_to_NET.ppt
 
TypeScript Introduction
TypeScript IntroductionTypeScript Introduction
TypeScript Introduction
 
Php verses .net
Php verses .netPhp verses .net
Php verses .net
 
Intro to CakePHP
Intro to CakePHPIntro to CakePHP
Intro to CakePHP
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele Rialdi
 
ASP.NET 5 - Microsoft's Web development platform reimagined
ASP.NET 5 - Microsoft's Web development platform reimaginedASP.NET 5 - Microsoft's Web development platform reimagined
ASP.NET 5 - Microsoft's Web development platform reimagined
 
PHP - Programming language war, does it matter
PHP - Programming language war, does it matterPHP - Programming language war, does it matter
PHP - Programming language war, does it matter
 
AWS Summit Auckland - Moving MS .NET Applications One Container at a Time
AWS Summit Auckland - Moving MS .NET Applications One Container at a TimeAWS Summit Auckland - Moving MS .NET Applications One Container at a Time
AWS Summit Auckland - Moving MS .NET Applications One Container at a Time
 

More from Tom Crombez

Apps on Windows
Apps on WindowsApps on Windows
Apps on Windows
Tom Crombez
 
Dear agency, get your act together !
Dear agency, get your act together !Dear agency, get your act together !
Dear agency, get your act together !
Tom Crombez
 
Build Web Applications
Build Web ApplicationsBuild Web Applications
Build Web Applications
Tom Crombez
 
Gadget review: Mango & Nokia
Gadget review: Mango & NokiaGadget review: Mango & Nokia
Gadget review: Mango & Nokia
Tom Crombez
 
Webcafe Leuven - intro
Webcafe Leuven - introWebcafe Leuven - intro
Webcafe Leuven - intro
Tom Crombez
 
Webmatrix 2 beta
Webmatrix 2 betaWebmatrix 2 beta
Webmatrix 2 beta
Tom Crombez
 
Feweb on tour: This is Microsoft Belgium
Feweb on tour: This is Microsoft BelgiumFeweb on tour: This is Microsoft Belgium
Feweb on tour: This is Microsoft Belgium
Tom Crombez
 
Transformez vos feuilles XLS en application mobile
Transformez vos feuilles XLS en application mobileTransformez vos feuilles XLS en application mobile
Transformez vos feuilles XLS en application mobileTom Crombez
 
Webcafe3 agenda
Webcafe3 agendaWebcafe3 agenda
Webcafe3 agenda
Tom Crombez
 
Umbraco cms - Microsoft web platform installer
Umbraco cms - Microsoft web platform installerUmbraco cms - Microsoft web platform installer
Umbraco cms - Microsoft web platform installer
Tom Crombez
 
Microsoft Webcafe 'Discovering interesting people at microsoft'
Microsoft Webcafe 'Discovering interesting people at microsoft'Microsoft Webcafe 'Discovering interesting people at microsoft'
Microsoft Webcafe 'Discovering interesting people at microsoft'
Tom Crombez
 
Prototyping with Microsoft SketchFlow
Prototyping with Microsoft SketchFlowPrototyping with Microsoft SketchFlow
Prototyping with Microsoft SketchFlow
Tom Crombez
 
Microsoft Webcafe
Microsoft Webcafe Microsoft Webcafe
Microsoft Webcafe
Tom Crombez
 
FewebPlus @ microsoft 19 april 2010 cloud continuum
FewebPlus @ microsoft 19 april 2010 cloud continuumFewebPlus @ microsoft 19 april 2010 cloud continuum
FewebPlus @ microsoft 19 april 2010 cloud continuum
Tom Crombez
 
FewebPlus @ microsoft 19 april 2010 mix
FewebPlus @ microsoft 19 april 2010 mixFewebPlus @ microsoft 19 april 2010 mix
FewebPlus @ microsoft 19 april 2010 mix
Tom Crombez
 
FewebPlus @ microsoft 19 april 2010 microsoft en web agencies
FewebPlus @ microsoft 19 april 2010 microsoft en web agenciesFewebPlus @ microsoft 19 april 2010 microsoft en web agencies
FewebPlus @ microsoft 19 april 2010 microsoft en web agencies
Tom Crombez
 

More from Tom Crombez (16)

Apps on Windows
Apps on WindowsApps on Windows
Apps on Windows
 
Dear agency, get your act together !
Dear agency, get your act together !Dear agency, get your act together !
Dear agency, get your act together !
 
Build Web Applications
Build Web ApplicationsBuild Web Applications
Build Web Applications
 
Gadget review: Mango & Nokia
Gadget review: Mango & NokiaGadget review: Mango & Nokia
Gadget review: Mango & Nokia
 
Webcafe Leuven - intro
Webcafe Leuven - introWebcafe Leuven - intro
Webcafe Leuven - intro
 
Webmatrix 2 beta
Webmatrix 2 betaWebmatrix 2 beta
Webmatrix 2 beta
 
Feweb on tour: This is Microsoft Belgium
Feweb on tour: This is Microsoft BelgiumFeweb on tour: This is Microsoft Belgium
Feweb on tour: This is Microsoft Belgium
 
Transformez vos feuilles XLS en application mobile
Transformez vos feuilles XLS en application mobileTransformez vos feuilles XLS en application mobile
Transformez vos feuilles XLS en application mobile
 
Webcafe3 agenda
Webcafe3 agendaWebcafe3 agenda
Webcafe3 agenda
 
Umbraco cms - Microsoft web platform installer
Umbraco cms - Microsoft web platform installerUmbraco cms - Microsoft web platform installer
Umbraco cms - Microsoft web platform installer
 
Microsoft Webcafe 'Discovering interesting people at microsoft'
Microsoft Webcafe 'Discovering interesting people at microsoft'Microsoft Webcafe 'Discovering interesting people at microsoft'
Microsoft Webcafe 'Discovering interesting people at microsoft'
 
Prototyping with Microsoft SketchFlow
Prototyping with Microsoft SketchFlowPrototyping with Microsoft SketchFlow
Prototyping with Microsoft SketchFlow
 
Microsoft Webcafe
Microsoft Webcafe Microsoft Webcafe
Microsoft Webcafe
 
FewebPlus @ microsoft 19 april 2010 cloud continuum
FewebPlus @ microsoft 19 april 2010 cloud continuumFewebPlus @ microsoft 19 april 2010 cloud continuum
FewebPlus @ microsoft 19 april 2010 cloud continuum
 
FewebPlus @ microsoft 19 april 2010 mix
FewebPlus @ microsoft 19 april 2010 mixFewebPlus @ microsoft 19 april 2010 mix
FewebPlus @ microsoft 19 april 2010 mix
 
FewebPlus @ microsoft 19 april 2010 microsoft en web agencies
FewebPlus @ microsoft 19 april 2010 microsoft en web agenciesFewebPlus @ microsoft 19 april 2010 microsoft en web agencies
FewebPlus @ microsoft 19 april 2010 microsoft en web agencies
 

Recently uploaded

Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Speck&Tech
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
KatiaHIMEUR1
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
ControlCase
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
Daiki Mogmet Ito
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
TIPNGVN2
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
Octavian Nadolu
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
innovationoecd
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Vladimir Iglovikov, Ph.D.
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
James Anderson
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
Rohit Gautam
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
Ana-Maria Mihalceanu
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 

Recently uploaded (20)

Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
Cosa hanno in comune un mattoncino Lego e la backdoor XZ?
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !Securing your Kubernetes cluster_ a step-by-step guide to success !
Securing your Kubernetes cluster_ a step-by-step guide to success !
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
PCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase TeamPCI PIN Basics Webinar from the Controlcase Team
PCI PIN Basics Webinar from the Controlcase Team
 
How to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For FlutterHow to use Firebase Data Connect For Flutter
How to use Firebase Data Connect For Flutter
 
Data structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdfData structures and Algorithms in Python.pdf
Data structures and Algorithms in Python.pdf
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Artificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopmentArtificial Intelligence for XMLDevelopment
Artificial Intelligence for XMLDevelopment
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 
Presentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of GermanyPresentation of the OECD Artificial Intelligence Review of Germany
Presentation of the OECD Artificial Intelligence Review of Germany
 
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIEnchancing adoption of Open Source Libraries. A case study on Albumentations.AI
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AI
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Large Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial ApplicationsLarge Language Model (LLM) and it’s Geospatial Applications
Large Language Model (LLM) and it’s Geospatial Applications
 
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
Monitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR EventsMonitoring Java Application Security with JDK Tools and JFR Events
Monitoring Java Application Security with JDK Tools and JFR Events
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 

haXe - One codebase to rule'em all

  • 1. HAXE One codebase to rule ‘em all
  • 2. GETTING AQUAINTED • Created by Nicolas Cannasse (who also created the MTASC-compiler) in 2005 • First Beta released on 2006/02/04 => only Neko and SWF8 targets available • 2006/05/01: version 1.0 released => JavaScript target added • Today: version 2.08 => Neko, SWF8, SWF9, JS, C++, PHP targets available => C# and Java targets under heavy development • Open Source • Very active and bright community • Mature and fast compiler
  • 3. LANGUAGE FEATURES • Multi-platform: write haXe source code and deploy to => mobile (Windows Phone, iOS, Android, webOS all using native code) => desktop (native code, AIR) => server (NekoVM, PHP, NodeJS) => web (Flash 6-11/HTML-Canvas-WebGL/JavaScript/PHP) => command line (C++, Neko) • Elegant remoting across all platforms: compiling the same remoting classes source code to different targets allows for successful and fast deserialization between different platforms • Syntax based on ECMAScript: easy switching for AS/JS developers, easy to learn for new developers or developers coming from other platforms • Strictly typed: compile-time checking across all targets, even for non- compiled languages like JS and PHP • Very fast compiler, blazing-fast serialization.
  • 4. LANGUAGE FEATURES • Macro’s allow you to write code that executes against your application at compile-time. This allows for advanced code generation/customisation/optimization. • Use conditional compilation to handle different platforms • Type inference allows for less and more beautiful code • Function and constants inlining makes fast code faster • Enrich types and fields with metadata => accessible at runtime through the haxe.rtti.Meta API => or to be used by the compiler internals at compile-time • Fantastic Reflection API: using Reflect and Type allows for painless runtime type-checking and variable instantiation • Standard libraries work across all client and server targets (Math, Xml, Date, Http, …)
  • 5. LANGUAGE FEATURES • Rich Type system => Void, Null, Dynamic, untyped (bypass type-checking) => Array, List, Hash with native iterators => Generics (with optional constraints), Typedefs, Enums • Function type inference • Dynamic functions: execute function logic on different data types using the Dynamic type for parameters and return type • Local functions: functions that exist as the value of a variable => e.g.: var functionVariable : ParamOne [[- > ParamTwo] ...]- > ReturnValue ; • Advanced cross-platform debugging with CallStack and ExceptionStack • Cross-platform logging and tracing
  • 6. LANGUAGE FEATURES • SPOD Macro’s: Simple Persistent Objects Database Library => similar to an ultra-lightweight version of Hibernate => write haXe expressions instead of SQL => benefit from type-safety => supports metadata • Duck typing using type inference and anonymous types • Access full target platform API’s • Interface with existing platform libraries using Extern classes or use haxelib • Generated code is 100% compatible with existing target platform native code • Excellent runtime performance on all target platforms
  • 8. IT COMPENSATES A LITTLE FOR EVERYDAY REALITY FOR MOST OF US…
  • 9. SO, IS IT ALL GREAT? Actually: YES!  BUT: • Writing cross-platform code is not always easy • It takes some practice and experience to use it right • A solid IDE is only available for Windows (FlashDevelop). IDE’s for Mac and Linux exist, but they are not nearly a match for FD. • “PR” could be better: not always easy to find what you’re looking for on the website, most valuable info & help only available through the mailing list => BUT, big improvement: community moved to Google Groups last week • Unknown == often not loved: not always easy to convince your bosses/clients to move to a little-known platform
  • 10. CROSS-PLATFORM TIPS Abstract display hierarchy through composition
  • 12. CROSS-PLATFORM TIPS Separate domain and presentation layers => application logic is universal => presentation logic can differ greatly between targets and devices
  • 13. CROSS-PLATFORM TIPS Implement a device-agnostic UI => the number of devices that applications can (and will!) run on increases very fast
  • 17. CROSS-PLATFORM TIPS Criticise yourself • Just because you have the power to do a lot of things doesn’t mean you always should • Make sense when writing your code and try to keep it maintainable • With great power comes great responsability
  • 18. CROSS-PLATFORM TIPS Get started easily using NME • NME stands for Neko Media Engine • It’s an SDL-like wrapper for the haXe and Neko platform • Abstract away low-level stuff, deal with the funky juice
  • 20. RESOURCES Books: • Professional haXe and Neko (Wrox) • haXe 2 Beginner’s Guide (Packt Publishing) Online: • http://haxe.org (official haXe website) • http://groups.google.com/group/haxelang (new Google Group) • http://lists.motion-twin.com/mailman/listinfo/haxe (old mailing list) • http://www.haxenme.org (official haXe NME website) • http://www.joshuagranick.com/blog/ Twitter: @haxelang, @ncannasse, @fponticelli, @tarwin, @internetsurfing, @cwaneck, @brunofonzi, @gamehaxe, @polygonal, @leesylvester
  • 22. THANK YOU A BIG thank you also goes out to all my friends and fellow-haXe-coders on the mailinglist for inspiring me and allowing me to use/demo some of their stuff!