SlideShare uma empresa Scribd logo
1 de 22
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!

Mais conteúdo relacionado

Mais procurados

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 WordPressMarko Heijnen
 
NXTware remote for open vms introduction
NXTware remote for open vms introductionNXTware remote for open vms introduction
NXTware remote for open vms introductionecubemarketing
 
Peeling back the Lambda layers
Peeling back the Lambda layersPeeling back the Lambda layers
Peeling back the Lambda layersPatrick 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 APPAntonio Bartolozzi
 
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 developmentRomuald Halasz
 
ITS320 Presentation
ITS320 PresentationITS320 Presentation
ITS320 Presentationleena1990
 
Java presetstion
Java presetstionJava presetstion
Java presetstionleena1990
 
Its320 power point
Its320 power pointIts320 power point
Its320 power pointleena1990
 
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 usefulFrank van der Linden
 
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 JoseSteve Reiner
 

Mais procurados (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
 

Semelhante a haXe - One codebase to rule'em all

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 MEANJeff Fox
 
TypeScript - Javascript done right
TypeScript - Javascript done rightTypeScript - Javascript done right
TypeScript - Javascript done rightWekoslav Stefanovski
 
.Net overviewrajnish
.Net overviewrajnish.Net overviewrajnish
.Net overviewrajnishRajnish Kalla
 
Holy PowerShell, BATman! - dogfood edition
Holy PowerShell, BATman! - dogfood editionHoly PowerShell, BATman! - dogfood edition
Holy PowerShell, BATman! - dogfood editionDave Diehl
 
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 PracticesInductive 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 PracticesInductive Automation
 
Modified.net overview
Modified.net overviewModified.net overview
Modified.net overviewFaisal 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 WorkplaceJen Wei Lee
 
Web programming
Web programmingWeb programming
Web programmingIshucs
 
Introduction_to_NET.ppt
Introduction_to_NET.pptIntroduction_to_NET.ppt
Introduction_to_NET.pptDarwin Terraza
 
Raffaele Rialdi
Raffaele RialdiRaffaele Rialdi
Raffaele RialdiCodeFest
 
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 reimaginedAlex 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 matterMizno 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 TimeAmazon Web Services
 

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

Mais de 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 ApplicationsTom Crombez
 
Gadget review: Mango & Nokia
Gadget review: Mango & NokiaGadget review: Mango & Nokia
Gadget review: Mango & NokiaTom Crombez
 
Webcafe Leuven - intro
Webcafe Leuven - introWebcafe Leuven - intro
Webcafe Leuven - introTom Crombez
 
Webmatrix 2 beta
Webmatrix 2 betaWebmatrix 2 beta
Webmatrix 2 betaTom 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 BelgiumTom 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
 
Umbraco cms - Microsoft web platform installer
Umbraco cms - Microsoft web platform installerUmbraco cms - Microsoft web platform installer
Umbraco cms - Microsoft web platform installerTom 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 SketchFlowTom 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 continuumTom Crombez
 
FewebPlus @ microsoft 19 april 2010 mix
FewebPlus @ microsoft 19 april 2010 mixFewebPlus @ microsoft 19 april 2010 mix
FewebPlus @ microsoft 19 april 2010 mixTom 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 agenciesTom Crombez
 

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

Último

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 

Último (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 

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!