做了一段时间的 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,效率才可能有魔术般的提升!