Java Web框架真的值得麻烦吗?

时间:2009-04-16 23:43:06

标签: java jsp jsf servlets frameworks

我相对较新的Java编程(大约2年),但不是Web开发。我从HTML和ASP(.NET之前)开始,最近开始搞乱J2EE。我觉得我很好地掌握了JSP / Servlets(我发现它们与ASP类似)并且最近开始使用JSF和Facelets。虽然我可以看到为什么人们会喜欢JSF,但我发现它是一个巨大的负担,它实际上减慢了我的开发时间。我想这是由于学习曲线,但我经常发现自己认为如果我只是使用JSP / Servlet,我将完成一个页面/任务。

对于那些花时间学习框架的人来说,这是否常见?你有没有花时间学习一个框架,一旦你精通它,就决定回到一个不那么复杂但你觉得舒服的方法?

我也质疑我是否选择了正确的框架。我真的希望找到一些不会影响添加AJAX功能的东西。

7 个答案:

答案 0 :(得分:12)

开始使用JSF可能很棘手,并且比许多Java Web框架更难学习。您可能会发现使用Seam更容易使用JSF,这简化了您使用JSF的大部分工作,并将JSP替换为Facelets,这是一个很大的改进。

或者,你可以试试SpringMVC,很多人都觉得它更容易使用。

答案 1 :(得分:5)

我一直在使用facelets一年多一点。我在Java Web框架中看到的主要优点之一是它有助于保持代码清洁并促进重用。例如,在facelets中,您不会像在JSP中那样在页面中获取任何scriptlet。我已经看到生产中超过3000行的ASP文件。 ASP或JSP没有任何内在错误,但它确实很容易将页面中的某些业务逻辑混为一谈。没有害处,对吗?直到其他人必须维护它。

大多数框架试图“帮助”您更加严格地分离MVC或他们喜欢的任何模型,这反过来导致更清晰的模板(jsp,facelets,无论如何)以及可自动进行单元测试的业务和域代码。使用许多框架可能需要花费更多时间,但在维护和重构方面可以节省很多时间。

答案 2 :(得分:1)

我认为简单的答案是 - 您如何测试并在进行更改时验证它是否有效?

这就是易解决方案崩溃的地方,你最终会处于维持状态。不幸的是:(

答案 3 :(得分:1)

我认为这取决于框架是否真正为您解决了“难题”,并且很容易解决。由于某些原因,人们总是发现这是一个非常有争议的事情,但是我考虑使用的大多数框架我最终都在中途放弃,因为写一些代码更容易完成我想做的事。

稍后,当我的代码出现问题时,我可以直接找到问题所在并添加一行代码来修复它,而不是浏览文档页面来查找魔术配置参数。如果我遇到问题(插入喜欢的框架),我通常会发现,当框架应该解决的基本问题从来没有那么复杂时,我已经好几年了。

我最喜欢的无用框架是那些需要大量配置和笨拙的样板代码来完成基本任务的框架,例如在套接字上发送一些字节或将一些参数填充到预准备语句中并将其发送到数据库。我最喜欢的另一个是“XML技术”,特别是那些“可插拔”或“可配置”的技术。 (为什么我想要一个“可插拔的解析器框架”而不只是一个总是有效的解析器...?)叫我Victor Meldrew,但人们可以将10分钟的正则表达式问题变成2天的方式,这真是太棒了 - 你做这个框架与X在标题做的问题。

现在说,有些人在Spring,Hibernate,JSF,MVCJammer,Joomajamaventilate,其中带有'X'等等的东西上绝对茁壮成长等等。在某些情况下,对某些人来说很明显,他们是一个奇迹,我只是错过了生活。

可能这取决于您或您的组织是否主要具有“配置”和“将事物整合在一起”expertese或“编程”专家?我想我有更多的后者。

答案 4 :(得分:1)

我的建议:熟悉许多不同的框架,并且知道如何弄脏并自己编写。您将开发一些最喜欢的工作方式,但您将很好地理解工具可以做什么,以及它们不能做什么。而且你也会关注何时适合使用框架,什么时候适合不使用框架。

如果你能在学习曲线中存活下来,我发现JSF和Facelets绝对值得一试。它非常陡峭,但是当你弄明白时,它很容易使用。它们使管理会话和应用程序范围对象比原始JSP和servlet更容易处理,并且我发现当我不必考虑业务逻辑中的Web时,我可以编写更清晰的Java。总的来说,我发现框架帮助我以一致,易于理解的方式组织我的想法(以及扩展,我的代码)。

Facelets,尤其是我最喜欢的网页模板引擎。我喜欢这样的事实:我的页面是有效的 XML,并且我没有到处都有scriptlet。如果您了解框架,它会使代码更清晰,更容易理解再次有学习曲线。

顺便说一下,如果你使用像RichFaces或IceFaces这样的东西,那么将AJAX添加到Facelets很容易。他们预先构建了一个可以轻松添加到应用程序中的ajax组件。

那就是说,它不是所有项目的最佳选择,YMMV等等。在一天结束时,使用任何框架都是判断。如果它不能帮助你解决问题,那就不值得了。不要与您的工具斗争,正确使用它们。如果该工具妨碍您使用,请使用其他工具。在非常小的应用程序上,JSF和facelets确实不是很好的选择。在你拥有一个相当复杂的领域模型和复杂的业务逻辑之前,它们并没有真正发挥作用。基本上,您需要项目足够复杂,以克服您需要编写的样板代码量。

答案 5 :(得分:1)

我是第二个SpringMVC。理解起来非常容易,如果使用annotations,代码就非常语义化。就像那些Budweiser commercials ... Servlets太轻了...... Struts太重了。

我希望Java有脚手架。它可以与Grails一起使用,但这是嵌入框架的另一个框架。

答案 6 :(得分:0)

SpringMVC值得一试。 J2EE不是。