Java Web开发框架对比—Part1—快速原型

Web框架有点像酸酵母,你要么喜欢它,要么讨厌它!什么?你从来没听过什么是酸酵母?没关系,那么你很有可能会讨厌它!使自己沉浸在一个新型语言中或者一个项目里,快速拥有高效生产力是十分重要的。学习一个Web框架也同样如此。

这一部分将会比较和对比每个Web框架的类别排序(总分为5分),并从下面几个方面给出我们的评价:

  1. 快速原型
  2. 框架复杂性
  3. 易于使用性
  4. 文档与社区

这一次我们将使用到一个新的单位——“烧杯”(Beaker),我们将用它来衡量每个框架的温度。

在接下来的第二部分中,你将会看到我们卧底调查的一些更深层次的主题——忍者风格(Ninja Style)。

1、快速应用原型

无论你是否是第一次使用到这个框架,或者已经这个框架使用领域内的专家,我们都要说:迅速地挖掘属于自己的创意、尝试新鲜的事物都对开发者来说是很有必要的。本章会通过各个框架从头构建应用的速度来对其进行评价。

Spring MVC

如果你在寻找一个框架能帮助你快速、整洁地生产出应用,那么Spring真的不适合你。只要一开始着手,你就会发现它不仅是规模庞大而且难以把握。对于一个快速模板,你可以随时下载Petclinic工具包并除去你认为不必要的东西,但这需要时间。你必须弄清楚到底什么才是重要的东西。

Spring Roo是一个支持Spring框架的子项目;Spring Security是一个安全访问控制框架,能够为基于Spring的企业应用系统提供声明式的安全访问控制);还有Spring WebFlow,它是一个基于配置的Spring框架,侧重于提高Java代码的生产力、可用性、避免运行超时和进程锁死,通过附加组件可拥有扩展性。如今,它的功能正在逐渐扩展,潜力巨大。

得分:2.5/5 — 需要提前掌握大量有关Spring的知识。普通的JSP页面和控制器(Controller)不提供现成组件。

Grails

Grails非常棒!每次我们需要实现中小型CRUD(增加、查询、更新、删除)类型的程序,都会考虑使用Grails。Grails配置起来非常快速,并且它提供的框架(代码生成)节省了大量的时间。约定优于配置原则(Convention over configuration )可以帮助您抛除几乎所有配置带来的麻烦。

Grails默认支持重新加载,但仍然有一定的局限性(比如它只能重新加载Groovy类)。如果项目中只有一部分使用的是Java,你可能仍然会想到去使用JRebel的。

得分:5/5 — 最高分在这里。过渡支架(Scaffolding)、约定编程、热代码重新加载(hot-code reloading),还有其它什么是你想要的?

Vaadin 

Vaadin目录是一个组件仓库,它包含了所有用户已经实现、可供他人使用的组件。如果你需要选择待使用的组件,只需要去下载JAR包并添加到你的项目中,然后在你的代码里直接使用JAR包里提供的优秀模板即可。在写这篇文章之时,Vaadin有365个组件提供您使用,每天一个!你再也找不到比这更快速的原型开发工具了!

另外,Vaadin的设计提供一种拖放机制,可以方便地添加需要的组件并为用户生成代码,除此之外还可以为你提供想要的精确布局,甚至连键盘都不需要使用了!

得分:4.5/5 — 过渡支架(Scaffolding )和Vaadin目录都让人过目不忘。

GWT

虽然有很多可使用的未封装装饰器,但在真实情况下你可能会在GWT框架下使用Javascript和浏览器DOM完成开发。如果你喜欢设计,也可以使用GWT内置的设计模式,这是一个简单的拖放和代码自动生成界面。

虽然这不是GWT,但我们的目标是让开发人员能够高效地开发Web应用程序而不再专攻JavaScript、XML、HttpRequest以及各种浏览器的古怪行为。

得分:4.5/5 — GWT易于创建和维护Web应用程序组件,内置的编译器生成的代码可以有效地进行编译并兼容不同的浏览器。

Wicket

凭借其清晰的MVC模式、清楚的HTML样式以及富有魔力的组件,你可以使用Wicket简单、快速地重用组件创建新的应用程序。Wicket采用了组件继承方式进行扩展,这种方式学习曲线略显陡峭不是最佳选择。

每个组件中的标记文件进行了清晰地分工,控制器决定要显示的内容,视图决定如何显示。这不仅缩短了开发时间,也给你的网页设计师在修改HTML代码时增加了信心。无需担心程序崩溃和程序丢失,很棒吧!

得分:3.5/5 — 使用HTML和组件结构,无需配置文件;组件内容与显示分离;采用组件继承。

Play

Play 框架非常简单、易于上手,这个框架的起源可以归结为,Java开发人员很羡慕Ruby on Rail开发者有一个超级快速的原型开发框架。Play框架有一两个类似于ROR框架下的Rails组件的二进制组件它用于支架(代码生成)。这使得Play成为了一个不那么常规的Java Web框架。Play 框架的入门文档是一个很棒的基础教程,为开发者提供了一个非常低的门槛。使得他们可以成为比较高效的开发者。

得分:5/5 — Play框架有一个非常不错的文档,它的代码生成的框架也是很给力的。

Struts

很多开发者认为Struts是一项传统的技术,所以不怎么指望在这里可以通过模生成板很绚的代码。在建立原型前,首先你需进行大量的配置。项目实例仍旧是一个很好的起点,柳暗花明的地方是:Struts有一个Convention插件,强制规定了一些编程约定,并且提供注解来配置URL和其他的东西。这些都加快了原型的开发。

得分:2/5  — 大量的样板代码,没有内置代码生成,无需强大的外部工具。

JSF

JSF不是极好的快速开发原型,代码生成不是内置功能,并且原型开发应用需要开发完整应用程序那么多的配置。这真的不是JSF的错,因为它基于Java EE规范。JSF确实有一些实用的Maven原型,然而那只适用于基本的应用程序。原型也可以与在线以及Java EE应用部署的服务器一起使用。JSF提升生产力最为人津津乐道的是那些能够在产生出大量样板代码和配置的IDE向导。

得分:3/5 – JSF的快速原型依赖相关的工具。Maven和Netbeans提供了原型和向导方便开发。

原文链接: zeroturnaround 翻译: ImportNew.com - 苏曦汀
译文链接: http://www.importnew.com/7957.html
[ 转载请保留原文出处、译者和译文链接。]



相关文章

发表评论

Comment form

(*) 表示必填项

6 条评论

  1. vileneera 说道:

    Play 不会这么低吧,看引用图 Play 应该是 5/5 吧

    Thumb up 1 Thumb down 0

  2. simon 说道:

    能把struts拼写对不?这篇文章简直无力吐槽

    Thumb up 0 Thumb down 0

  3. 白菜 说道:

    确实是翻译时搞错了。play是5分

    Thumb up 0 Thumb down 0

  4. 唐尤华 说道:

    感谢提醒,已经更新得分和名称问题。

    Thumb up 0 Thumb down 0

  5. wavelet 说道:

    grails有大量的plugin咋没说呢…

    Thumb up 0 Thumb down 0

  6. 节能 说道:

    在Java9模块化来临之前,掌握模块化开发能更好的应对未来,http://jigsaw.org.cn 模块化之路。

    Thumb up 0 Thumb down 0

跳到底部
返回顶部