NectarJS:编译JavaScript为任意平台原生二进制代码


大家好,我是Adrien Thierry,我启动了一个alpha版本重要的项目,这个项目我付出了一年多的时间,这个项目就是NectarJs.

NectarJS 是一个JavaScript编译器,他可以使JS开发者做任何事情都十分有效并且使用他们最喜欢的语言。

自从上个九月,我决定放弃一切其他活动,来让自己全身心的投入到这个项目中。

这是我这样做的原因

开始

当我年轻的时候,我对计算机充满了兴趣并且疯狂的迷恋它的效率。我喜欢软件开发和计算机技术。我在我五岁的时候就开始使用Windows3.1和DOS。我用C/C++写一些有趣的游戏和工具在Windows 95和Windows98或者97里。在高中,我开始学习Ruby,python,perl和Java,并且我开始使用Metasploit.

经过不太令人兴奋的科学学习,我决定不在浪费我的时间,并且开启我自己的事业,在cyber security做一些令人兴奋的副业。

在2016年11月的一个下雨天,我工作致力于FortressJS,和I/O NodeJS框架的速度和安全。我如饥似渴的成为JS的粉丝,因为它十分的全能和完美的原型。

在这个特定的项目,我尝试不同的解决方案去打包一个APP用我的框架,像Nexe,JXCore或者EncloseJS.

我发现好多开发者都搜索过,我同样如此,如何打包一个JS的app。Nexe或者EncloseJS 不能编译JS;他们使用V8生成的字节码。因此他们不能完全和NodeJS兼容。关于JXCore这个项目已经废弃了。

除了打包,http基准,NodeJS并不比编译的语言快。我做了科学的测试去观察最有效的事情去实现打包和有效率这两件事情。

我最终找到了crystal 。Crystal是一个Ruby-like-compiler,基于LLVM,真的快。在http基准上,它速度比NodeJS快。对我来说两种方法解决这个问题:

  • 重写我的APP用Crystal或Go
  • 尝试编译JS

Crystal够快,够棒,但是它并不能实现所有跨平台。我喜欢Ruby的语法,但是NodeJS的生态很大,并且JS无处不在。关于Go,他是个很棒的语言,有很棒的生态,但是我我更喜欢JS(任性)。

第二种解决方案对我来说看似疯狂,但是这听起来是充满激情的挑战:编译JS

编译器即服务

我开始为JS创建一个编译器,我关注与编译一些JS功能在Linux平台,像数学表达式,逻辑运算。我开始编译循环和函数。管理空类型的变量也编译了一点,但是我实现了时间,测试和跨平台算法。它是在龙书 的帮助下一步一步工作的。

在两个星期在这个项目的辛苦工作后,我开始去展示,大小和时间来编译。

十分震惊的是! 展示令人印象深刻(这篇文章用一个简单的算法展示了编译后的JS代码竟然比C和NodeJS快)

这是一个好的开始,但是我只能编译JS在我的Linux电脑

这是我开始设想为JS弄一个CAAS(编译就是服务):写我的App和我需要的,剩下的全部交给编译器

很快的我开始这个项目,一些疯狂的想法涌上我的大脑,包括:

  • 对于JS更好的展示
  • 编译JS成WASM(Web组件)
  • 写一个为物联网小的框架(Arduino作为例子)
  • 做任何事情用JS
  • 编译一个APP给任意平台,包含所有的东西
  • 更多的功能

一个月过去了,它越来越消耗时间。继续这个令人兴奋的项目此外做我其他活动,我尝试和一些朋友做一个众筹活动。尽管它似乎很疯狂,我希望建立一个强大的社区网络去完成NectarJS,带有很多库和编译工具,招聘工程师去为它工作。

然而,显然,没有创建一个社区在开启众筹之前,我没有达到我的目标。虽然所有都落空了;但是一些人表示对这个项目十分感兴趣。

我面临这重要的决定:

  • 停止NectarJS,并继续我的专业活动
  • 或贡献我的项目。

再次,我选择后者

为什么?

因为我坚信这个解决方案有未来,以后的JS开发者将有能力写出效率接近C语言编写者的代码,我希望有一个团队与我一起为NectarJS工作。

它将做的更好

我们自举一个alpha版本带有一个嵌入JS引擎他能在Windows,Linux,WASM和ASM.JS工作的很好。即使他不能工作的像我们希望的速度。它可以让用户编译EcmasScript 5,和一部分ES6和ES7,我们添加NodeJS编译库,像FS,Process和HTTP.

关于未来

我们希望让JS变成一个普世的语言。JS是代表任意的Web浏览器,越来越多的代表服务端像NodeJS,并且它也通过Espruino用在物联网。然而,每个平台都有它的特殊性。用NectarJS,我们希望整合所有的内容通过一种解决方案。

它是一个新的,奇妙的冒险,你可以成为它的一部分

为了尽可能的快,我们需要反馈NecatarJS来改进它。我们有一个Slack,你可以订阅:NectarJS’Slack

NectarJS的alpha 在测试阶段将免费。你可以得到你免费的key在 http://nectar-lang.com/key/

你可以从github获取NectarJS客户端:

https://github.com/seraum/nectarjs

感谢您的帮助

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值