星期一, 十月 09, 2006

由 CakePHP 想到的......

做了一段时间的 CakePHP 开发,一个类似 RoR 的 PHP 框架,让我对 Web 编程又开始感兴趣了,之前用 Java 开发 Web 程序着实让人失望。静下心来总结一下,其实 Java 开发 Web 应用也可以模仿 RoR 的,虽然类似的框架已经有一些了,但是我还是觉得应该尽可能的简单......

采用一个非 JSP 的模版引擎。大家喜欢使用 JSP 当模版,当然了,默认就是这样的。不过 JSP 第一次编译着实让人很烦燥,我觉得 Web 开发的速度优势不明显了。开发 ASP/PHP,边写程序边刷新页面是挺实用的方法,页面有太多的布局、UI元素,需要频繁的刷新来进行调整,这点 JSP 让人调的很麻烦。所以选择一个好的模版引擎可以省不少事情,我最喜欢 FreeMarker,当然还有 Velocity 可以用,还有一个有意思的东西,Antlr 配套的 Stringtemplate 也可以拿来用,非常不错。

使用动态语言编写 Controller。Controller 的职责出要是处理一些控制逻辑,数据库的操作它不需要来负责,所以 Controller 随着 View 的不同改动太大了,但也都是微调。因为经常需要改变,所以每次都编译一边实在恶心。当然了,各种框架几乎都提供了容器外测试的环境,我个人觉得后期可以将稳定的 Controller 写回静态类以提高性能并进行详细功能测试,但一般来说大可不必。采用一种好的动态语言可以省不少事情,譬如 Java 提供了统一的 BSF 可以选用很多动态语言,譬如 JavaScript,Jython,Groovy, BeanShell,JRuby 等等。初期效率不是最关键的因素,再说 Web 应用的性能瓶颈往往在数据库,Web 框架没必要太复杂。


业务、数据层可以脱离容器开发。这一层是 Java 的强项,完全可以脱离容器开发,进行单元测试,这对于 Java 开发人员往往是最得心应手的工作。

如果有时间到想用 Java 做一个这样的东西玩玩,似乎还漏了最重要的一点,Convention over Configuration,有了这个 Magic,效率才可能有魔术般的提升!

1 条评论:

Diamond Tin 说...

1、JSP:我认为让它作为模版引擎是大材小用了,但是并不说明不适合。我觉得JSP还是很优秀的,性能不错,而且也很简单。必要的时候你还可以利用JSP的强大功能投机取巧。
2、Controler:我觉得措辞有点*。应该说脚本语言写逻辑。是否动态倒不是最重要的。这个是没话说!不过脚本语言的调试还是需要加强。
3、测试:单元测试、集成测试、功能测试,互相不能取代。这个每种语言都应该做到。

CoC这个东西,我觉得和语言机制还是有关系的,如果用Java,用反射,就有点不自然。而Ruby里面的元编程好像会带来很多方便。而PHP这种脚本中的弱检查机制好像也能带来好处。可怜的Java。