一些有意思的 jython 应用

当我们既能从 java 里面调用 python 写的代码也能从 python 里面调用 Java 里面的成品时,很自然都会有一些有趣的应用,当然我这种初学者也只是管中窥豹,略见一斑而已。于是把一些想法和一些已经见到列举一下。

PIG UDF

这也是我认识到 jython 价值的第一个应用,其实大约是本科还是研究生早年就接触过一次 jython,那个时候觉得挺傻的,这么慢的语言还要支持别的更慢的语言,到底有什么好处… 现在不再这么想了。有了前面的一些预备知识以后,其实分析 PIG 的 UDF 实现并不困难,只是 python 那边不像 ruby 使用的是比较老实的策略,而是玩了个花哨的 annotation,当然花哨的好处就是不必局限于要继承什么 inerface。

hadoop 上的“原生”python 接口

其实了解了 PIG UDF 之后第二个念头就是为啥 hadoop 不支持,也许 hadoop 想做得更加底层一点。不过有人已经尝试过这个想法了,这个 happy 就是干这个事情的,可惜并没有更多的看到后续的进展。与 streaming 比较的好处自然是去掉了中间那个 serialize/deserialize 的环节,就是不知道 python 去实现那些复杂的 Writable 接口是不是也还是麻烦,否则开发效率上仍然得不偿失。更自然的想法那就是有没有 concurrent cascading 的接口 binding,原先玩了一下 scalding 和 scala 之后的感觉就是 scala 这个语言要熟悉起来比较花时间,要是直接通过 jython 去做 cascading 能做的事情,也提供类似 scalding 一样的接口不就更好了么?嗯,这就是 pycascading

spring

比较流行的 IoC framework 莫过于 spring,通过 jython 我们也可以从 python 里面获得 spring 的配置的 Java 对象,实现这个部分的可以通过 springpython。看起来功能很强大,还支持 yaml 等配置,有空可以研究下…

web 开发

RoR 的出色导致了 python 系的 django,实际上和 RoR 比较,django 可能我更喜欢一点,这是因为其 minimalist 的思想,导致你总能选择自己喜欢的东西跟 django 一起用。jython book 一章专门讲述了 django 和 jython 如何一起工作的。安装了合适的模块后你甚至可以通过 manage.py 生成 war 发布到 application server。

其他

尝试了在 jython 上用 scrapy 但是似乎 twisted 需要 bz2 支持,居然这个 jython 没实现。

后记

在 Java 平台上滋生的这些语言如何选择可能跟每个人的经历都有一些关系:

  • python 走到 jython
  • ruby 走到 jruby
  • javascript 走到 rhino
  • lisp 走到 clojure
  • 与 java 本身更接近的 groovy
  • static type 的 scala

现在大家都能找到合适自己的东西玩起来了。看性能据说 scala 还是挺占优势的。hmm… JC,你怎么看?还是 scala 控么?

——————
And when her days to be delivered were fulfilled, behold, there were twins in her womb.

Advertisements
一些有意思的 jython 应用

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s