您的位置:首页 > 其它

haxe 简介 - 2017

2017-03-14 18:59 127 查看
感觉网上关于 haxe 编程的介绍都吹得有点太过, 特别是 “一次编写多处编译”

首先 haxe 标准库通用的部分并没有多少,因此想写出跨平台的的代码还是很有难度的,因为很多地方你没法同时兼顾. 特别是 js 代码大部分都是 “回调” 的形式 。当然如果你只针对一个平台来写的话会容易很多

因此各平台都有其独立的 API,并不能通用。如果打算用来写 JS 你必须得在一定程度上了解 JS。如果打算通过 hxcpp 来编译成 c++ 代码,但其实 hxcpp 会比直接写 c++ 更复杂。

其次 haxe 语言可以用来做什么了?

hashlink: 新的虚拟机,带有 JIT。重要的是还可以编译成 c 代码(我只用了一个简单的 fib 函数测试, 感觉也只比虚拟机快了 2/3 倍而已)。不过个人感觉还是非常有前途的。

js: 你可以把它看成是另一个 typescript, 建议将编译出来的 js 代码相互对比一下

flash: 虽然是 haxe 最成熟和稳定的平台,不过 flash 已经逐渐消失了。其实 flash air 基于 stage3D 的游戏其实也还行。

neko: 用来搭建网站服务器, haxe 官网的所有服务都是基于 neko 的。不过最近有人测试后表示在性能方面 neko 不如新出来的 php7,这个人同时提交了新的 php7 代码生成器。并且 hashlink 其实很大程度是作为 neko 2.0 出现的, 一些 neko 的项目都表示打算往 hashlink 上迁移, 似乎会被淘汰的感觉。

php7 俄罗斯人写的新的 php 构建器。我已经很多年没碰过 php 了,要是感兴趣的话可以自已去了解下生成的代码质量如何

php,hxcs,hxjava,lua,python: 这几个目标我从来没有使用过, 而且整个 haxe 社区也没有几个人用,似乎也没人在维护它们。

hxcpp 可将 haxe 编译成 c++ 代码。带有 GC 和 Reflect(我个人比较讨厌 Reflect, 没有它的话生成的代码或许会干净多了, 但是 Reflect 是通用标准库里的不实现又不行) 对于目前比较火的移动平台似乎只能使用 hxcpp 的几个游戏引擎,不过感觉这几个游戏引擎都不太成熟比如 Luxe,要么就是太复杂比如 Kha。

接下来社区方面对比火热朝天的 ts 社区, haxe 的人员实在太少了,加上编译器由 ocaml 所写,了解这个语言的人本来就不多,因此想靠社区力量来改善编译器有些乏力。

最后 HL(haxe foundation) 看上去有些缺乏资金, 创始人目前忙于使用 haxe 开发游戏并在 stream 上出售。如 “进化之地” 系列和最近推出的 “Northgard”(北境)。因此他没太多的时间来关注 haxe,前段时间还打算招募一个 CEO 来管理(估计是想找个靠山而不是职员)。不过他仍然在 “Northgard” 推出的同时发布了 hashlink

进化之地系列一直使用的 flash air,而 “Northgard” 则是 hashlink

hashlink 表示双链接即在开发周期可以输出虚拟机字节码的形式(类似于 java)用于快速开发和测试,而在产品发布时可以将代码编译成 c 语言,由于他的游戏主要是发布在 stream 的 windows 平台,因此 hashlink 在 linux,mac上可能就不那么完善了,就更别提 android 和 ios 了

如果你仍然打算尝试一下, 我倒是有几个建议:

haxe 推荐下载 github 上 night build 版本,下载包同时带有 haxelib(库管理)和一个简单 http 服务器(
nekotools server -h 0.0.0.0 -p 80


IDE 的话 window 平台推荐使用 flashdevelop,(对于 API 手册, 按
F4/shift+F4
就能直接跳转到定义处)

QQ 群: 30373020, 有任何疑问都可在群内问
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  haxe