`
hereson
  • 浏览: 1453997 次
  • 性别: 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》这本书涵盖了 haXe 和 Neko 相关的广泛知识领域,从基础知识到高级应用都有涉猎,对于希望深入学习这两种语言的开发者来说是非常有价值的资源。

    haXe学习笔记(一)

    **haXe学习笔记(一)** haXe是一种多平台的静态类型编程语言,它设计的目标是提供高性能、跨平台的解决方案。haXe不仅可以用于Web开发,还可以编写桌面应用、服务器端脚本和移动应用。在本学习笔记中,我们将深入...

    haXe2语言参考手册

    haXe2语言参考手册haXe API Documentation

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

    Atom-hxatom是针对Atom文本编辑器的一个扩展,它提供了Haxe语言的类型定义,使得在使用Atom编辑Haxe代码时能获得更好的代码补全、语法高亮和错误检查等功能。Atom是一个广受欢迎的开源文本编辑器,由GitHub开发,其...

    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.1 安装文件

    Haxe是一种多平台的编程语言,它允许开发者编写一次代码,然后编译成可以在不同操作系统上运行的原生代码。Haxe2.1是Haxe的早期版本,发布于大约2009年,它提供了许多功能,为跨平台开发提供了便利。 1. **Haxe的...

    haxe-2.08-win.zip

    Haxe是一种多平台的编程语言,它允许开发者编写一次代码,然后编译成可以在不同操作系统和平台上运行的目标代码。标题中的"haxe-2.08-win.zip"指示这是一个针对Windows平台的Haxe 2.08版本的压缩包。这个版本可能...

    haxe:Haxe-跨平台工具包

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

    haXe2语言参考手册(英文)

    ### haXe2语言参考手册知识点详述 #### 基本类型 (Basic Types) - **定义**: 在haXe2中,基本类型是构建所有数据结构的基础。 - **示例**: 包括整型(`Int`), 浮点型(`Float`), 字符串(`String`), 布尔值(`Bool`)等...

    haxe3-manual

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

    haxe nme通过jni调用android

    在IT行业中,跨平台开发是常见的需求,Haxe语言因其强大的多平台支持而备受青睐。NME(Native Media Extensions)是Haxe的一个扩展库,它允许开发者使用Haxe编写的游戏或应用运行在多个平台上,包括Android。本篇将...

    haxe语言编译成luajit 再exe进行调用

    3. **编译Haxe代码**: 使用Haxe编译器,将Haxe源代码编译成Lua代码。例如,如果你有一个名为`Main.hx`的文件,你可以运行类似`haxe -lib haxe-lua -main Main -lua main.lua`的命令来生成`main.lua`。 4. **编译...

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

    Haxe是一种多平台的编程语言,它允许开发者编写一次代码,然后编译成可以在各种不同平台上运行的目标代码,包括JavaScript、C++、Java、Flash、PHP等。本教程集是为那些想要学习或深入理解Haxe语言的人准备的,充满...

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

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

    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...

    3D引擎核心_Haxe_Python_下载.zip

    《3D引擎核心:Haxe与Python的融合》 3D引擎是计算机图形学中的重要组成部分,它负责处理复杂的三维场景、渲染、物理模拟、动画等任务,为游戏开发、虚拟现实、建筑设计等领域提供了强大的工具。本文将深入探讨3D...

Global site tag (gtag.js) - Google Analytics