分享

Haxe 这种语言实用吗

 quasiceo 2015-03-20

Haxe 这种语言实用吗?

添加评论 ·

我们在用haxe+openfl做网游,下个月发布。目前对openfl底层做了不少修改,解决了一些内存占用和渲染性能问题,但感觉还是有不少坑。我个 人认为openfl应该先让windows/android/ios这三个平台成熟起来,而不是支持更多的平台,每个平台都不成熟谁敢用。

我曾经学习 Haxe 时使用它练手写了一个包管理器,看代码的直观感受:
  1. JS/ActionScript 风格的动态
  2. Java 风格的 OOP

在 某些方面不很完善(比如说 for 没法同时迭代两个变量),但总的来说用起来很顺手,库也很直观,我虽然是 Haxe 的完全新手,但用着 Google 和 API 参考,竟然也在两天内顺利写出了包管理器的雏形,但我尝试着用 C++/C#/Java 写总觉得限制多多,难以忍受,终于放弃,尽管我有这些语言的一点点基础,不能说是完全新手了。

实际上,Haxe 是一种特别实用的语言,一些语言特性也很好玩很有趣,可惜就是库比较少,做 Web 和游戏开发倒是挺爽的。

不过,要检测一种语言是否趁手,不应该自己试试吗?你说呢? ;-)


haxe和lua作为编程接口各有什么优劣?修改

我目前在做的一个项目,目的是给别人用的,想要运行在多平台包括浏览器上,经过一段时间的思考试验,现在决定选择haxe或lua做接口语言。

lua当然是一个很好的选择,但是考虑到浏览器支持,所以在纠结是否用haxe算了。。

lua优点:
  • 方便、简单、用户接受度高
lua缺点:
  • 浏览器不支持,当然可以写lua2js compiler解决这问题,就是花点时间

haxe优点:
  • 平台支持性高
haxe缺点:
  • 用户不熟悉,不知道会不会是个问题
Haxe的跨平台特性非常独特,在2014年地球上还没有其他成熟解决方案能做到。

“Java运行时”可以跨操作系统平台。但Java运 行时本身就是平台,你可以基于Java虚拟机和Java标准库构建跨操作系统的程序。但是Java程序与操作系统原生程序整合时,非常笨重。虽然Java 字节码通过GWT运行在浏览器中,但也同样笨重,会大大增加脚本下载时间。

.NET框架的问题和Java虚拟机类似。虽然有Unity之 类的技术能把托管代码编译成iOS、Android等的原生代码,但这些原生代码仍然基于Unity和.NET的API。哪怕你的程序99%都是原生代 码,只要有1%用了托管代码,就必须包含庞大的.NET运行时。

Lua虽然运行时更轻巧,但本质上和Java虚拟机/.NET框架没有什么区别。仍然是在底层平台上封装一层Lua虚拟机。就算你的lua2js compiler可以直接编译出JavaScript,你仍然需要给这些编译出的JavaScript代码提供Lua标准库。

Haxe与上述技术不同,在于Haxe本身不提供平台(除了Haxe的C++ target),而是真正生成指定平台上的代码。Haxe生成的代码可以与原生代码无缝编译,根本不需要引入任何额外的运行时或者虚拟机。比如,我把一些公共库(qifun/json-streamqifun/haxe-import-csv)用Haxe实现,然后根据不同平台


看看这个项目,看看是否能否帮助你决定。
顺带一提所谓利益相关,我是作者。 ,分别生成Java代码和C#代码,最后就可以在Scala服务端和Unity客户端中无缝整合。Scala程序员和C#程序员都完全不需要学习Haxe就能使用Haxe开发的中间件。




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多