SlideShare a Scribd company logo
1 of 48
Download to read offline
Кроссплатформенная
разработка на Haxe
Евгений Веретенников
@nitrobin
2016
О себе:
● 7 лет в GameDev
● 6 лет в Ice Owl
● Языки: Java, Haxe, ActionScript 3.0, Python
● Опыт разработки, запуска и многолетней
поддержки клиент-серверных проектов для
соцсетей
Введение
Что такое Haxe?
Haxe — это высокоуровневый, кроссплатформенный, мультипарадигменный
язык программирования и компилятор с открытым исходным кодом.
Компилятор Haxe позволяет генерировать исходный код для множества
различных платформ из единой кодовой базы.
Язык программирования Haxe предоставляет общий синтаксис для всех
платформ и стандартную библиотеку с реализациями базовых структур и
алгоритмов.
Недостатки Haxe
● Недостаточно распространен (слабый PR)
● Слабая поддержка в средах разработки IDE
● Сложность отладки на некоторых платформах
Преимущества Haxe
● Кроссплатформенность
● Лаконичный синтаксис
● Сопоставление с образцом
● Мощная система типов
● Средства мета-программирования
● Динамично развивается
● Быстрый оптимизирующий компилятор
● Поставляется с менеджером библиотек haxelib
Кто разрабатывает Haxe?
Haxe был разработан Nicolas Cannasse и другими авторами, для нужд
игровой разработки.
Был назван haXe, потому что это короткое имя, и «у него есть X в
названии» — обязательный атрибут, чтобы новая технология стала
успешной.
Первая версия: Апрель 2006 - Haxe 1.0
Текущая версия: Май 2016 - Haxe 3.3.0-rc.1
На сегодняшний день разработка языка ведется силами организации Haxe
Foundation (c 2012 года) и сообщества.
Для каких задач подходит Haxe?
● Игры!
● Веб
● Мобильные приложения
● Десктопные приложения
● Консольные приложения
● Кроссплатформенные библиотеки
Жизненный путь Haxe
Backend Platform Version
AVM1/AVM2 Adobe Flash Player 2005 (alpha)
Neko NekoVM 2005 (alpha)
JavaScript HTML 5, NodeJS 2006 (beta)
ActionScript 3 Adobe Flash Player 2007 (1.12)
PHP PHP 2008 (2.0)
C++ (hxcpp) Android, iOS, Windows, Linux, OS X 2009 (2.04)
C# .NET Framework 2012 (2.10)
Java Java 2012 (2.10)
Python Python 2014 (3.2)
Lua Lua 2016 (3.3)
Haxe Targets
Ежегодные конференции
Обзор
синтаксиса
Haxe
Hello World
Вывод типов (Type Inference)
class Main {
public static function main() {
var x = null;
$type(x); // Unknown<0>
x = "foo";
$type(x); // String
}
}
Интерполяция строк (String Interpolation)
Функциональный тип (Function Type)
Встраиваемые функции (Inline)
Условная компиляция (Conditional Compilation)
haxe -main Test -js out.js
haxe -main Test -js out.js -D
USELOG
Структурная типизация (Anonymous Structure)
Псевдонимы типов (Typedef)
JSON-нотация для структур
Перечисления и АТД (Algebraic Data Type)
Сопоставление с образцом (Pattern Matching)
Сопоставление с образцом (Pattern Matching)
Типы времени компиляции (Abstract)
Макросы (Macros)
Пример DSL на маросах из StablexUI
first.xml
AST
Кодогенерация
haxe.macro.Context
Разработка на
Haxe
Поддержка в редакторах и IDE
● HaxeDevelop
● IntelliJ Idea
● Atom
● Visual Studio Code
● Sublime Text
Менеджер библиотек Haxelib
Общий код между клиентами
Общий код между клиентом и сервером
Общий код между клиентом и сервером
Популярные фреймворки
● NME
● OpenFL
● HaxeFlixel
● Flambe
● HaxePunk
● Kha
● StablexUI
● HaxeUI
Конструктор игр Stencyl
Архитектура фреймворка OpenFL
Примеры
реальных
проектов
“Маленький космос” (Ice Owl)
● Клиент: Haxe
● Сервер: Scala
● З месяца - от старта разработки до релиза
● 4 программиста
● 4 художника
● 2 геймдизайнера
● Мобильная версия не планировалась
“Маленький космос” (Ice Owl)
AndroidFlash HTML5
Match3 безумие (Ice Owl) :)
Примеры игровых проектов
Инди разработчики:
● http://evoland.shirogames.com Evoland
● http://papersplea.se Papers, Please
Компании:
● http://plamee.com (Army of Heroes, Unity/Node.js)
● http://proletariat.com (WorldZombination, Unity/Node.js)
● https://www.socialquantum.ru (Dragons World, Unity/Node.js)
Примеры игровых проектов
Кто использует Haxe?
Полезные ссылки
http://haxe.org
http://haxe.org/manual
http://try.haxe.org
http://haxe.io
https://goo.gl/tu8okJ
Благодарю за
внимание!
Веретенников Евгений
@nitrobin
nitrobin@gmail.com
http://iceowl.ru

More Related Content

What's hot

Rust - GDG DevFest Siberia 2016
Rust - GDG DevFest Siberia 2016Rust - GDG DevFest Siberia 2016
Rust - GDG DevFest Siberia 2016Nikita Baksalyar
 
Webinar: Создание приложений в FireMonkey для Windows 10 в RAD Studio 10 Seattle
Webinar: Создание приложений в FireMonkey для Windows 10 в RAD Studio 10 SeattleWebinar: Создание приложений в FireMonkey для Windows 10 в RAD Studio 10 Seattle
Webinar: Создание приложений в FireMonkey для Windows 10 в RAD Studio 10 SeattleDenis Vasilyev
 
курс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключениякурс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключения7bits
 
Platypus platform ivbit
Platypus platform ivbitPlatypus platform ivbit
Platypus platform ivbitjskonst
 
Rust: история языка и контекст применения
Rust: история языка и контекст примененияRust: история языка и контекст применения
Rust: история языка и контекст примененияNikita Baksalyar
 
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-выводКурс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-вывод7bits
 
Webinar: Обзор RAD Studio 10 Seattle (Delphi, C++Builder)
Webinar: Обзор RAD Studio 10 Seattle (Delphi, C++Builder)Webinar: Обзор RAD Studio 10 Seattle (Delphi, C++Builder)
Webinar: Обзор RAD Studio 10 Seattle (Delphi, C++Builder)Denis Vasilyev
 
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с MavenКурс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven7bits
 
использование .Net framework
использование .Net frameworkиспользование .Net framework
использование .Net frameworkjskonst
 
Webinar: Основные компоненты для разработки мобильных приложений в Delphi
Webinar: Основные компоненты для разработки мобильных приложений в DelphiWebinar: Основные компоненты для разработки мобильных приложений в Delphi
Webinar: Основные компоненты для разработки мобильных приложений в DelphiDenis Vasilyev
 
Микросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокМикросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокDotNetConf
 
Полный цикл разработки на Python + Django
Полный цикл разработки на Python + DjangoПолный цикл разработки на Python + Django
Полный цикл разработки на Python + DjangoAzamat Tokhtaev
 
Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)AvitoTech
 
Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"Fwdays
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxDotNetConf
 
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)AvitoTech
 
Кэширование в веб-приложениях: что? где? когда?
Кэширование в веб-приложениях: что? где? когда?Кэширование в веб-приложениях: что? где? когда?
Кэширование в веб-приложениях: что? где? когда?CUSTIS
 
С чем едят JS-дебаггур?!
С чем едят JS-дебаггур?!С чем едят JS-дебаггур?!
С чем едят JS-дебаггур?!volegg
 

What's hot (20)

Rust - GDG DevFest Siberia 2016
Rust - GDG DevFest Siberia 2016Rust - GDG DevFest Siberia 2016
Rust - GDG DevFest Siberia 2016
 
Webinar: Создание приложений в FireMonkey для Windows 10 в RAD Studio 10 Seattle
Webinar: Создание приложений в FireMonkey для Windows 10 в RAD Studio 10 SeattleWebinar: Создание приложений в FireMonkey для Windows 10 в RAD Studio 10 Seattle
Webinar: Создание приложений в FireMonkey для Windows 10 в RAD Studio 10 Seattle
 
курс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключениякурс Java 2016. занятие 03. интерфейсы, generic, исключения
курс Java 2016. занятие 03. интерфейсы, generic, исключения
 
Platypus platform ivbit
Platypus platform ivbitPlatypus platform ivbit
Platypus platform ivbit
 
Rust: история языка и контекст применения
Rust: история языка и контекст примененияRust: история языка и контекст применения
Rust: история языка и контекст применения
 
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-выводКурс Java-2016. Занятие 06. Файлы и ввод-вывод
Курс Java-2016. Занятие 06. Файлы и ввод-вывод
 
Webinar: Обзор RAD Studio 10 Seattle (Delphi, C++Builder)
Webinar: Обзор RAD Studio 10 Seattle (Delphi, C++Builder)Webinar: Обзор RAD Studio 10 Seattle (Delphi, C++Builder)
Webinar: Обзор RAD Studio 10 Seattle (Delphi, C++Builder)
 
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с MavenКурс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
 
использование .Net framework
использование .Net frameworkиспользование .Net framework
использование .Net framework
 
Webinar: Основные компоненты для разработки мобильных приложений в Delphi
Webinar: Основные компоненты для разработки мобильных приложений в DelphiWebinar: Основные компоненты для разработки мобильных приложений в Delphi
Webinar: Основные компоненты для разработки мобильных приложений в Delphi
 
Base php 1
Base php 1Base php 1
Base php 1
 
Микросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бокМикросервисы: взгляд сверху и в бок
Микросервисы: взгляд сверху и в бок
 
Полный цикл разработки на Python + Django
Полный цикл разработки на Python + DjangoПолный цикл разработки на Python + Django
Полный цикл разработки на Python + Django
 
Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)Работаем с API по-взрослому - Максим Кислов (Badoo)
Работаем с API по-взрослому - Максим Кислов (Badoo)
 
Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"Владислав Грязнов "Многозадачность в PHP"
Владислав Грязнов "Многозадачность в PHP"
 
Continuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под LinuxContinuous Delivery для ASP.NET MVC проекта под Linux
Continuous Delivery для ASP.NET MVC проекта под Linux
 
Html лаб 2
Html лаб 2Html лаб 2
Html лаб 2
 
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
Rempl — крутая платформа для крутых инструментов - Роман Дворнов (Avito)
 
Кэширование в веб-приложениях: что? где? когда?
Кэширование в веб-приложениях: что? где? когда?Кэширование в веб-приложениях: что? где? когда?
Кэширование в веб-приложениях: что? где? когда?
 
С чем едят JS-дебаггур?!
С чем едят JS-дебаггур?!С чем едят JS-дебаггур?!
С чем едят JS-дебаггур?!
 

Similar to Кроссплатформенная разработка на Haxe

2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел КрынецкийJSC “Arcadia Inc”
 
Компьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingКомпьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingTatiana Volkova
 
игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решенияВладимир Кожаев
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language RuntimeGetDev.NET
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseAlexander Granin
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаSQALab
 
Теория и практика обработки естественного языка
Теория и практика обработки естественного языкаТеория и практика обработки естественного языка
Теория и практика обработки естественного языкаNikolay Karpov
 
основы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программированиеосновы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программированиеYakubovichDA
 
Aspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHPAspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHPAlexander Lisachenko
 
Sergey Ilinsky Rit 2010 Complex Gui Development Ample Sdk
Sergey Ilinsky Rit 2010 Complex Gui Development Ample SdkSergey Ilinsky Rit 2010 Complex Gui Development Ample Sdk
Sergey Ilinsky Rit 2010 Complex Gui Development Ample Sdkrit2010
 
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данныхCodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данныхCodeFest
 
Язык программирования PHP
Язык программирования PHPЯзык программирования PHP
Язык программирования PHPVasiliy Gudoshnikov
 
Ada in education-09-oct06
Ada in education-09-oct06Ada in education-09-oct06
Ada in education-09-oct06Pavel Zhukov
 
Zend Framework и мультиязычность
Zend Framework и мультиязычностьZend Framework и мультиязычность
Zend Framework и мультиязычностьStepan Tanasiychuk
 

Similar to Кроссплатформенная разработка на Haxe (20)

Progopedia - OSDN
Progopedia - OSDNProgopedia - OSDN
Progopedia - OSDN
 
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
2015-12-12 | AzovDevMeetup 2015 | Enterprise приложения на PHP | Павел Крынецкий
 
Компьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingКомпьютерная графика. Введение в Processing
Компьютерная графика. Введение в Processing
 
DLR Hosting
DLR HostingDLR Hosting
DLR Hosting
 
игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решения
 
TypeScript
TypeScriptTypeScript
TypeScript
 
Dynamic Language Runtime
Dynamic Language RuntimeDynamic Language Runtime
Dynamic Language Runtime
 
Профессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом EnterpriseПрофессиональная разработка в суровом Enterprise
Профессиональная разработка в суровом Enterprise
 
Java: вчера, сегодня, завтра
Java: вчера, сегодня, завтраJava: вчера, сегодня, завтра
Java: вчера, сегодня, завтра
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проекта
 
Теория и практика обработки естественного языка
Теория и практика обработки естественного языкаТеория и практика обработки естественного языка
Теория и практика обработки естественного языка
 
основы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программированиеосновы ооп на языке C#. часть 1. введение в программирование
основы ооп на языке C#. часть 1. введение в программирование
 
Aspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHPAspect-Oriented Programming in PHP
Aspect-Oriented Programming in PHP
 
Интегрированная среда для языка Рефал
Интегрированная среда для языка РефалИнтегрированная среда для языка Рефал
Интегрированная среда для языка Рефал
 
Sergey Ilinsky Rit 2010 Complex Gui Development Ample Sdk
Sergey Ilinsky Rit 2010 Complex Gui Development Ample SdkSergey Ilinsky Rit 2010 Complex Gui Development Ample Sdk
Sergey Ilinsky Rit 2010 Complex Gui Development Ample Sdk
 
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данныхCodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
CodeFest 2012. Нелюбин Д. — Neo4j — графовая база данных
 
C# 3.0
C# 3.0C# 3.0
C# 3.0
 
Язык программирования PHP
Язык программирования PHPЯзык программирования PHP
Язык программирования PHP
 
Ada in education-09-oct06
Ada in education-09-oct06Ada in education-09-oct06
Ada in education-09-oct06
 
Zend Framework и мультиязычность
Zend Framework и мультиязычностьZend Framework и мультиязычность
Zend Framework и мультиязычность
 

Кроссплатформенная разработка на Haxe