ruby很慢,这个大家都知道,本来是不那么在乎的,反正我只是玩玩
于是我被威逼利诱,开始打起了jruby的主意
好不容易jruby开始支持1.9.2的api和标准库了
最近一周开始用下来,问题多多啊
首先是个Dir.glob和File.expand_path的问题
ruby的File.expand_path没有要求对classpath:的前缀处理
但是如果在其他java程序调用jruby的话,__FILE__会带上classpath:
如果你进行Dir.glob(File.expand_path(File.dirname(__FILE__)))
之类的操作,就彻底中招了
类似的问题还有很多,特别把win环境算进去,更为不靠谱了
然后一个,jruby的多线程是把每一个ruby线程都映射成jvm线程,
所以jruby的ThreadLibrary的实现是通过完全通过java的老一套多线程同步锁机制进行的
对象的内部结构之类的东西完全不同
根本没办法和原来对cruby进行的扩展兼容
如果费劲去实现它,还不如直接使用actor模型的scala,恩,就是这样(《-这句才是重点)
完。
于是我被威逼利诱,开始打起了jruby的主意
好不容易jruby开始支持1.9.2的api和标准库了
最近一周开始用下来,问题多多啊
首先是个Dir.glob和File.expand_path的问题
ruby的File.expand_path没有要求对classpath:的前缀处理
但是如果在其他java程序调用jruby的话,__FILE__会带上classpath:
如果你进行Dir.glob(File.expand_path(File.dirname(__FILE__)))
之类的操作,就彻底中招了
类似的问题还有很多,特别把win环境算进去,更为不靠谱了
然后一个,jruby的多线程是把每一个ruby线程都映射成jvm线程,
所以jruby的ThreadLibrary的实现是通过完全通过java的老一套多线程同步锁机制进行的
对象的内部结构之类的东西完全不同
根本没办法和原来对cruby进行的扩展兼容
如果费劲去实现它,还不如直接使用actor模型的scala,恩,就是这样(《-这句才是重点)
完。
