一次失败的j2v8集成

V8 js引擎赫赫有名,为了将其集成到我们公司的安卓产品上,我们公司的老大准备使用j2v8这个中间体完成我们的v8引擎集成。我也有幸和老大一起参与到这个集成项目来。摸索了将近一周的用法,最后发现j2v8并没有我们想的那样完美。主要有两个问题:

1:多线程问题。J2v8是支持多线程的,所以在很多的方法里面都加入了线程的判断checkthread();而我们的项目中开了很多的多线程,在这个线程中new出来的v8,到另一个线程中进行使用就会报“invalid v8 thread access”。为解决这个问题,j2v8的作者专门写了v8.getLocker().release()和v8.getLocker().aquire()方法。使用这个方法,就可以解决线程检查的问题。可是问题又来了。在j2v8中我们发现只能使用一个v8对象,其他对象只能是v8object对象,然后v8object add 到v8对象中。而v8object对象并没有getlocker()方法。线程检查又一次档住了我们的去路;

2:函数重载的问题。J2V8并不支持函数重载,我们的项目中,有的函数的参数是多变的。j2v8的作者明确提出不支持这种重载的写法。这也是我们最终放弃它的原因。

但我们还是需要更新我们的js引擎。迫不得已,我们公司的老大硬着头皮升级了我们原先的js引擎-minijoe。研究发现,minijoe确实是一款小巧精简有力的引擎。只可惜它并没有受到大家的重视,没有得到很好的扩展。这次,公司老大发挥其死磕到底的精神,将minijoe从一个不支持面向对象编程的引擎改造成了支持面向对象编程和jQuery库的引擎。心中敬仰之情大大的。而总共花的改造时间只有两天。大大缩短了工期。

总结来说,技术在于积累,happy coding,happy world.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值