Java Web框架种类繁多,花样迭出,主流一点的就有Struts,Webwork,SpringMVC,JSF,Tapestry,至于非主流的就更加不计其数了。还有很多基于这些Java Web框架的衍生框架,例如基于Struts的beehive,基于JSF的JBoss Seam,基于JSF的MyFaces,Shale等等。对于开发人员来说,过多的选择是一种沉重的负担,不但需要花更多的时间去学习,也需要更多的时间去维护基于不同Java Web框架的代码.
必须承认,Web 开发实在不是多么愉快的工作,虽然,近年来,一些也算是有趣的工具在源源不断地推出,诸如 Rubby on Rails, Ajango 一类的框架,诸如 jQuery, Dojo 一类的 JavaScript 库在帮我们摆脱枯燥的工作,但我们仍然要面临着大量繁杂的工作,事实上,我们在 Web 开发领域取得的绝大多数进步都源自对各种繁杂工作的简化
最近,于阿根廷召开的 Python Conference 上,Django 的开发者 Jacob Kaplan-Moss 回答了一些与Java Web框架有关的问题 。Jacob Kaplan-Moss 表示,我们已经完成了从思考网页到思考Web 程序之间的巨大变迁,而现在,我们面临着另一场变迁,从思考传统的网站,到所有相关的 Web 技术。
对 Kaplan-Moss 来说,所有相关的 Web 技术的意思是从后台框架到 HTML 5 的所有东西,而这些东西将改变 Web 开发者们的工作方式。如果你对此还没有感觉,可以看一下 280Slides.com,这个网站提供的服务界面已经很象桌面程序(然而,我亲自体验过之后,感觉这样的桌面实在太难用了 - 译者),让人伤心的是,Kaplan-Moss 指出,这个站点的开发者不仅要设计一个全新的Java Web框架(Cappuccino),还要设计一种全新的语言(ObjectiveJ)来实现他们的工作。
单单是设计一个Java Web框架已经够受的了,更何谈设计一种全新的语言。
不过, Kaplan-Moss 同时指出,关于Java Web框架,我们也需要慎重考虑,因为当那些现代 Web 开发者陷入困境的时候,应该怪罪的恰恰是那些框架。
Java Web框架有两个问题,它们并不灵活,更坏的是,Java Web框架往往将你框住,Java Web框架是为大多数人通用而设计的,然而,当很多项目发展到一定程度,他们往往不在需要通用的东西,而是需要一些特定的技术。Django,Ruby on Rails 以及其它框架非常好用,但当你的站点发展到一定规模,问题将接踵而至,Java Web框架最终成为你的桎梏。
作为局外人,你可能以为,如果你某个项目中的 Rubby on Rails 让你陷入了困境,你可以很容易使用别的什么Java Web框架中的技术来解决,事实上这很难,你没有办法轻松地将一部分交给 Django,另一部分给 Ruby on Rails 或 Erlang。
Kaplan-Moss 是个彻头彻尾的 Python 爱好者,他希望从 Python 寻找解决方案,确实,从历史上看,Python 就是一种粘合语言,那些桌面和游戏程序的开发者们一直使用 C++ 或 Java 编写对性能要求高的部分,再用 Python 编写高层的可定制部分。
在 Web 开发上,也可以使用类似的方法,即用 Python 将 Haskell,Erlang, Rubby 等语言粘合起来,然而这些对我们来说仍遥遥无期,Web 仍在膨胀,不管是规模还是复杂程度。
诚然,多数站点的规模都很小,不会碰到 Twitter, Facebook, Google 等站点的规模与流量问题,然而,正是这些大规模站点促使我们设计出目前我们所使用的各种工具,Twiiter, Google 等站点成为我们的试验台,而一些新的解决方案也将从中诞生。尽管多数 Web 开发者不会遇到类似的问题,但这些问题本身会为我们带来更好的解决方案,最终让 Web 开发不再痛苦。