haXe是什么?
haXe是一种编程语言,官方网站在:http://haxe.org
下面是官网对haXe的描述:
IF YOU COULD ONLY LEARN ONE PROGRAMMING LANGUAGE, HAXE WOULD BE IT.
IT'S UNIVERSAL. IT'S POWERFUL. IT'S EASY-TO-USE.
那么haXe语言是怎么个通用、强大和易用呢?
从语法来说,haXe的基本语法一定令你很熟悉,会Java/C++/PHP/JavaScript/ActionScript的都不会感到陌生,内置的垃圾回收机制让你不必为内存管理而挠头。
从目标平台上来说,haXe在周边库的支持下,可以直接生成多达9种主流平台的原生应用,注意:是Native应用而不是基于虚拟机的应用哦!
从任务类型上来说,haXe可以用来写基于C++或C#的原生桌面应用,可以写面向iOS/Android/Air/BlackBerry/WebOS/WindowsPhone等平台的移动应用,可以写基于Flash或HTML5的浏览器内应用,还可以写基于PHP或Java或Node.js的服务器端应用。
你看到这里一定觉得我疯了,这怎么可能?
haXe为什么?
其实说穿了也不神秘:正像我博客副标题中说的,One Language to Rule Them All,haXe是居于其它各种高级语言之上的高高级语言。简单而言,haXe的构建目标不是某种平台(包括JVM其实也是一种平台)的二进制可执行文件,而是另外一种语言的源代码!它的编译器严格来说,是一种语言转换器!
这样一来,其实haXe跨平台的能力来源于它的目标编程语言,目前haXe 2.10支持输出成以下几种语言源码或虚拟机字节码:
C++
Flash虚拟机(AVM)
字节码
PHP
JavaScript
Neko虚拟机字节码
马上要发布的haXe 3则将增加另两个主要语言的支持:
Java
C#
注:Neko是haXe支持的另外一种比较小众的脚本语言,它通过Neko虚拟机可运行于各种桌面OS,很适合写跨平台脚本。虽然Neko并不常见,但haXe内部大量工具都是基于Neko目标的。
而C++无疑是haXe之所以可以跨移动平台的最重要武器,因为除了WindowsPhone之外的几乎所有移动平台都支持C++(iOS支持C++,Android也有NDK),而haXe 3.0新增的C#输出支持则弥补了这个缺憾。
另外值得重点指出的是,因为输出的是C++源代码而未引入任何中间层如虚拟机,因此:
1. haXe应用的性能几乎可以与手写C++代码的原生应用比肩
2. haXe生成的iOS应用完全遵守苹果的开发者协议(协议要求只能用Objective-c或C++写iOS应用)
其实如果仅仅是语言转换器,那么显然,一份代码直接构建9种平台的目标码仍然只是个玩笑,因为各种平台即使都支持C++语言,但其运行库却各不相同,系统架构、API设计也完全不一样。其实在NME出现以前,haXe也不过让你少学一些不同语言的语法而已,各个平台的API还得开发者自己啃。
但现在有了NME这个逆天的东东,情况就完全不一样了!
NME是haXe语言的一个第三方库 -- 当然现在几乎已经半官方了。NME官方网站:http://www.haxenme.org
NME其实就是一整套Flash运行库的C++版实现。这样,你只要编写一套基于Flash API的代码,那么除了Flash/AIR的版本,还可以直接发布到所有支持C++的平台上去!另外,NME还内嵌了另一个叫Jeash的库,这个库则是Flash运行库的JavaScript实现,也就说HTML5也OK!
当然,目前NME还没有C#版本,因此如果WindowsPhone仍然不开放C++支持的话,那么还得调用系统自己的API,不过我觉得完全可以期待不远的将来出现C#版,因为haXe的开发者社区非常活跃,几乎每天都有新的代码提交!
haXe可以做什么?
运行于浏览器内的Flash应用和游戏
基于Adobo AIR/Flash,运行在AVM虚拟机上的Windows/Linux/Mac桌面和移动应用
基于NME-hxcpp,运行于Windows/Linux/Mac/iOS/Android/BlackBerry/WebOS桌面和移动平台的原生(Native)应用
基于NME-Jeash,运行于浏览器中的的HTML5应用和游戏
基于haXe-PHP的服务器端应用
基于haXe-JavaScript和Node.js的服务器端应用,此项目的官网是: http://haxenode.org/
基于haXe-neko的桌面脚本,在这里haXe扮演的是类似批处理或Shell的角色,但是强大许多
更多,仅仅决定于你的需求
haXe名词术语扫盲
neko: 一种开发语言,这种语言被编译器编译成neko字节码(.n文件),然后运行在nekoVM,即neko虚拟机上。neko是haXe的目标之一,即haXe语言可以被直接编译成为neko字节码文件从而运行在nekoVM上。
haxelib: haXe自带的库管理工具,可以用来对haXe的扩展库进行查找、在线安装、删除、升级等操作,也可以用来执行扩展库的自定义命令。
hxcpp: 一个haXe的扩展库,用来把haXe语言源码编译(翻译?)成C++源码。因为iOS的开发者协议限制,编译成C++源码而不是动态链接库很重要。
nme: haXe的扩展库,依赖于hxcpp库,是Flash图形API的C++版实现。
neash: haXe的扩展库,是Flash图形API的neko版实现,但绝大部分都是纯haXe语言编写而具备很好的跨平台性,因此NME大量重用此库的代码。目前已经与NME集成在一起。
jeash: 一个haXe的扩展库,是Flash图形API的JavaScript版实现,目前已经与NME集成在一起。
haxenode: 一个haXe扩展库,使得开发者可以使用haXe编写node.js服务器端应用。
CFFI: 即C Foreign Function Interface, 是hxcpp和原生CPP代码交互的标准方案,就像JNI之于java。如果希望自己创建haXe的原生扩展,或重用C++开源项目,那么理解CFFI很有必要。
Android NDK: Android的C++开发包。
SDL: 一个基于C++的开源游戏开发库,nme的图形渲染部分依赖于SDL。SDL基于OpenGL,是可以利用到硬件加速的,这也给nme开发的图形应用带来了很高的性能。
tween: 补间动画,搞Flash开发的应该都知道是怎么回事,大概和关键帧动画是类似的意思,你指定一些时间线上的关键帧的参数,其它帧的相应参数值可以由tween系统自动帮你运算出来。
actuate: haXe的扩展库,一个非常易于使用,且和用户代码低耦合的tween引擎。
box2d: 一个二维物理引擎,看看愤怒的小鸟就能理解物理引擎是干嘛用的了。box2d原项目是C++的,有人把它移植到了ActionScript,然后再有人把AS版移植到了haXe。
相关推荐
为什么要用Haxe? Haxe是一门很强力的语言,有很多引人注目的特性。目标是给开发者一套一体化的工具来创建网站或者应用,一门语言打天下。它可以实现: ECMA风格的客户端、服务器端以及桌面型程序。 风一般迅捷的...
Professional haXe and Neko
haXe2语言参考手册haXe API Documentation
Haxe 宏、Haxe Magic 和 Haxe 元数据代码示例Haxe 的新手? 需要快速入门 Haxe 宏? 好吧,我们开始了。 该项目包含大量示例,可帮助您快速释放 Haxe 宏的威力。已知限制请注意,这些样本只是 - 样本。 它们绝不是...
intellij-haxe, IntelliJ平台的Haxe插件( IDEA,Android Studio ) 用于 IntelliJ IDEA的 Haxe插件这个插件允许你使用 IntelliJ IDEA 开发 Haxe程序。 它需要 IntelliJ IDEA 最终版或者社区版,版本 14,15,2016和...
haXe语言参考手册,全面的介绍了haXe语言的各个方面,章节列表如下: 基本类型 语法 类型推断 面向对象 类型参数(泛型) 枚举Enum 包和导入(import) 动态类型Dynamic 高级类型 迭代子Iterator 属性Properties 可...
Haxe是一个开源工具包,可让您轻松构建针对许多主流平台的跨平台工具和应用程序。 Haxe工具包包括: Haxe编程语言,一种现代的高级严格类型的编程语言 Haxe交叉编译器,适用于许多目标的最先进的闪电般的编译器 ...
haxe3-manual Haxe是一门新兴的开源编程语言,开发者称:“相比其他语言(Java的平台是 JVM,C#的平台是.Net,ActionScript的平台是Flash Player等等),Haxe才是真正的多平台语言。不管是开发原生iOS、Android应用...
已经部署好的HAXE最新版本 HAXE 3.2.0 OPENFL 3.3.2 其他库为最新版本,包含开发游戏所需全部内容
Atom-hxatom.zip,atom文本编辑器包的haxe类型定义氢原子,atom是一个用web技术构建的开源文本编辑器。
NULL 博文链接:https://patoto.iteye.com/blog/1160068
哈克-巴比伦 为生成的haxe 怎么样? extern是使用创建的。 手动进行了一些手动修复。 版本控制 软件包版本与巴比伦版本匹配。 样品 Babylon.js示例可在。
Haxe 中 Haxe 的静态分析和样式检查 安装 来自haxelib haxelib install haxelint 手动构建 haxe build.hxml 用法 从命令行 haxelib run haxelint -s <HAXE> 只haxelib run haxelint寻求帮助 使用 API var file...
Haxe语言服务器 这是一个语言服务器,用于为语言实现。 该项目的目标是将haxe的完成API与其所有怪癖一起封装在可靠且易于使用的协议之后,该协议可被任何编辑器/ IDE使用。 由。 它也已成功地用于Neovim和Sublime ...
Haxe经理使用户能够从VScode中创建haxe项目,并扩展vscode使其成为更集成的haxe IDE的功能。 如果有人想贡献项目模板,那么我将使用Haxe的内置系统,因为它足够简单,可以用于本用例。 现在,这仅对样板代码有帮助:...
battle-haxe -您的Emacs的新武器 Haxe编程语言的开发系统。 Battle-haxe在编辑由Haxe提供的Haxe代码时添加了代码完成和类似IDE的功能。 服务器模式下Haxe编译器的功能。 请参阅“部分以开始使用。 主要的怪癖是...
迪亚Haxe的轻量级游戏框架什么是Dia? Dia是用Haxe编写的轻量级游戏框架。 Dia的API在很大程度上受到LÖVE和Haxegon的启发。例子Main.hx package;import kha.Assets;import dia.App;import dia.Dia;class Main ...
haxe-教程一些用爱制作的haxe教程
Haxe? Haxe是一种出色的强类型语言,既适合重量级的单页应用程序,也适合FuseTools应用程序的分布式/响应式代码。 这是我试图说服自己(也许是您),Haxe编译器和类型系统可以为Fuse项目带来很多价值:玩...