`
hereson
  • 浏览: 1428070 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

haXe是什么?

 
阅读更多

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 3.0垮平台开源编程语言

    为什么要用Haxe? Haxe是一门很强力的语言,有很多引人注目的特性。目标是给开发者一套一体化的工具来创建网站或者应用,一门语言打天下。它可以实现: ECMA风格的客户端、服务器端以及桌面型程序。 风一般迅捷的...

    Professional haXe and Neko

    Professional haXe and Neko

    haXe2语言参考手册

    haXe2语言参考手册haXe API Documentation

    haxe-macro-samples:Haxe 宏、Haxe Magic 和 Haxe 元数据代码示例

    Haxe 宏、Haxe Magic 和 Haxe 元数据代码示例Haxe 的新手? 需要快速入门 Haxe 宏? 好吧,我们开始了。 该项目包含大量示例,可帮助您快速释放 Haxe 宏的威力。已知限制请注意,这些样本只是 - 样本。 它们绝不是...

    intellij-haxe, IntelliJ平台的Haxe插件( IDEA,Android Studio ).zip

    intellij-haxe, IntelliJ平台的Haxe插件( IDEA,Android Studio ) 用于 IntelliJ IDEA的 Haxe插件这个插件允许你使用 IntelliJ IDEA 开发 Haxe程序。 它需要 IntelliJ IDEA 最终版或者社区版,版本 14,15,2016和...

    haXe2语言参考手册(英文)

    haXe语言参考手册,全面的介绍了haXe语言的各个方面,章节列表如下: 基本类型 语法 类型推断 面向对象 类型参数(泛型) 枚举Enum 包和导入(import) 动态类型Dynamic 高级类型 迭代子Iterator 属性Properties 可...

    haxe:Haxe-跨平台工具包

    Haxe是一个开源工具包,可让您轻松构建针对许多主流平台的跨平台工具和应用程序。 Haxe工具包包括: Haxe编程语言,一种现代的高级严格类型的编程语言 Haxe交叉编译器,适用于许多目标的最先进的闪电般的编译器 ...

    haxe3-manual

    haxe3-manual Haxe是一门新兴的开源编程语言,开发者称:“相比其他语言(Java的平台是 JVM,C#的平台是.Net,ActionScript的平台是Flash Player等等),Haxe才是真正的多平台语言。不管是开发原生iOS、Android应用...

    已经部署好的HAXE最新版本(卷标2)

    已经部署好的HAXE最新版本 HAXE 3.2.0 OPENFL 3.3.2 其他库为最新版本,包含开发游戏所需全部内容

    Atom-hxatom,atom文本编辑器包的haxe类型定义.zip

    Atom-hxatom.zip,atom文本编辑器包的haxe类型定义氢原子,atom是一个用web技术构建的开源文本编辑器。

    haXe学习笔记(一)

    NULL 博文链接:https://patoto.iteye.com/blog/1160068

    haxe-babylon:Babylon.js的Haxe externs

    哈克-巴比伦 为生成的haxe 怎么样? extern是使用创建的。 手动进行了一些手动修复。 版本控制 软件包版本与巴比伦版本匹配。 样品 Babylon.js示例可在。

    haxelint:[未维护,检查 haxe-checkstyle] Haxe 中 Haxe 的静态分析和样式检查

    Haxe 中 Haxe 的静态分析和样式检查 安装 来自haxelib haxelib install haxelint 手动构建 haxe build.hxml 用法 从命令行 haxelib run haxelint -s <HAXE> 只haxelib run haxelint寻求帮助 使用 API var file...

    haxe-language-server:Haxe语言的语言服务器协议实现

    Haxe语言服务器 这是一个语言服务器,用于为语言实现。 该项目的目标是将haxe的完成API与其所有怪癖一起封装在可靠且易于使用的协议之后,该协议可被任何编辑器/ IDE使用。 由。 它也已成功地用于Neovim和Sublime ...

    Haxe-Manager:Haxe项目模板以及最终更有用的haxe实用程序已添加到VSCode

    Haxe经理使用户能够从VScode中创建haxe项目,并扩展vscode使其成为更集成的haxe IDE的功能。 如果有人想贡献项目模板,那么我将使用Haxe的内置系统,因为它足够简单,可以用于本用例。 现在,这仅对样板代码有帮助:...

    battle-haxe:Emacs内部对Haxe的全面支持

    battle-haxe -您的Emacs的新武器 Haxe编程语言的开发系统。 Battle-haxe在编辑由Haxe提供的Haxe代码时添加了代码完成和类似IDE的功能。 服务器模式下Haxe编译器的功能。 请参阅“部分以开始使用。 主要的怪癖是...

    Dia: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-tutorials:一些用爱制作的haxe教程

    haxe-教程一些用爱制作的haxe教程

    fusetools-haxe:可以将Haxe与FuseTools一起使用-甚至有用吗?

    Haxe? Haxe是一种出色的强类型语言,既适合重量级的单页应用程序,也适合FuseTools应用程序的分布式/响应式代码。 这是我试图说服自己(也许是您),Haxe编译器和类型系统可以为Fuse项目带来很多价值:玩...

Global site tag (gtag.js) - Google Analytics