我是 Eric J. Smith 的对立面——我只能代表 Haxe。
Haxe 绝对是一门很棒的语言。我想说它的大部分商业用途是在游戏行业——能够将相同的代码库编译到 Flash、JavaScript、桌面、iPhone、Android、WebOS 和黑莓上确实令人印象深刻 :) 作为一个例子,看一些在上一届 Ludum Dare 48 小时游戏制作比赛中使用 Haxe创建的游戏 - 其中一些甚至在 GitHub 上有源代码。
如果您要在 Haxe 中玩游戏,有几个选择。最流行的似乎是使用NME,它是 Haxe 之上的一个库,它为您提供了一个类似 Flash/AS3 的 API,可以编译成许多目标。它确实输出到 JavaScript,但它的主要焦点是 Flash 和 Native CPP(用于 iPhone 等)——因为性能比 JavaScript 好得多。您还可以使用专门针对 JavaScript 的框架,例如 CreateJS - 这是一篇将 NME 与用于 Haxe 的 CreateJS 进行比较的博客文章。我还听说过Flambe的好消息,它似乎针对 JavaScript 游戏/交互式图形进行了优化。
(旁注:Haxe 很容易创建'externs',所以在 Haxe 中可以使用许多普通的 JavaScript 库而不会遇到太多麻烦)
对于应用程序开发(不是游戏),Haxe 仍然可以很好 - 这就是我所做的更多。我通常使用非常标准的 JS 技术,例如 jQuery,但 Haxe 提供了一大堆不错的附加功能,包括编译时错误检查、一种非常强大的语言以及与服务器共享代码的能力。我确信 Dart 提供了一些相同的优势。
在成熟度、稳定性和支持度方面:
- Haxe 已经存在了很长时间,虽然它的开发团队更小,但他们非常投入(看看有多少变化正在被提交)。
- Dart 有一家更大的公司支持它。Haxe 正在建立一个官方基金会来促进 Haxe 的未来——但他们不会像谷歌那样有钱!最终,如果 Dart 真的起飞了——我预测有人会尽快设置 Haxe 以输出到 Dart——就像他们在服务器上使用 NodeJS 一样:)
- 两者似乎都有超级忠诚的社区
- 许多可用于 Haxe 的库似乎与游戏相关 - 大量补间、动画、物理等。不知道 Dart 是如何发展的。
我也很想听听使用过这两种语言的人关于实际语言的差异。从我所了解的情况来看,Haxe 的类型似乎更严格(我更喜欢 - 在编译时捕获更多错误!)但有些人不喜欢这样。