一直用 jruby 处理 java 这样的遗留系统,一个系统就能搞定。但是最近在部署的时候遇到了一些麻烦,感觉纯粹 ruby 就能搞定的事情,加上个 java 就会变得很复杂,这个情况有些像基于 hibernate 的 grails,虽然很象 rails,但是技术栈太深了......
但是协作还是需要的,除了用消息引擎粘合之外,有没有人尝试用 drb 解决 ruby 和 java(jruby) 之间的协作呢?
我之前用过一阵子,就是因为它可以把我的 ruby 代码加密成 java 字节码文件,除了这个好外之外,我没有用它的必要了。
能不用还是不要用了,除了一些小的细微的 BUG, JRuby 部署慢,另外调试更是抓狂。
我们的老大和销售给开发团队设立了一个目标:将现几个 Web apps 用 JRuby 编译,打包成一个 war 文件,交付给客户,让客户能够一键部署。
这个目标在老大眼里优先级很高,于是团队就跟 Jruby 的关系就若即若离,非常暧昧。
java 就两个优势:1、跨平台;2、有很多遗留系统。不在这个范围内的应用就可以考虑不用 jruby 了
话说有人考虑过我博客里面说的方案么?性能如何?我想不清楚怎么做压测
最近在看 Akka 2.0, typesafe 的 stack 真是好!..
play 2.0 已经基本都是模仿了 rails 的型了。但是性能上没在一个量级上。这个很可怕。不细说.. .有兴趣自己去看吧。
#21 楼 @WilliamZhu Play 本身是没有后端的。官方推荐的是 Ebeans. Ebeans 是类似 hibernate 的 orm 工具。具体来说属于 DM 模式。世间不只有 AR.
Ebean.find(Order.class)
.fetch("details", new FetchConfig().queryFirst(20).lazy(20))
.setMaxRows(100)
.where().eq("status",Order.Status.NEW)
.order().desc("id")
.findList();
ebeans 的 find 是这样的。
Order.where({:status=>1,:name=>"tt"});
这个 hash 做参数的方式我也不喜欢。 hash 做参数唯一的好处是方便直接接受用户传递来的参数构建 where 条件。否则我觉得最合服只觉得应该是
Order.where(“status=>1 and name=>'tt‘”);
#25 楼 @WilliamZhu 这种差别只是因为 Ebeans 是 Java 写的,链式调用已经很不错了。
另外 Ruby 的 Datamapper 跟 Activerecord 库的调用方式大部分都是类似的。很容易就迁移过去了。
#26 楼 @Saito 我不知道为什么 Play 不实现这套机制 (http://www.iteye.com/topic/1125807.因为框架本身已经使用了字节码修改的技术。为何不做的彻底一点呢?) ps: 链接地址是一个 java 开源框架提供的是实现。非常测彻底。整个实现,包括 controller 层不超过一个月。其实大部门互联网应用核心就是 model 层。如果能简化 model 层,那么你的整个开发代码就简化了。