为新项目选择“更好”或更熟悉的技术?

时间:2010-05-25 08:48:42

标签: java hibernate spring

我希望开始研究一个全新的项目,这是我作为我的第一个独立的可销售项目一直在考虑的事情。 从广义上讲,它是一个基于Web的服务应用程序,我的第一选择,服务器语言非常简单......我在过去从事Java Web应用程序的工作非常了解Java。

然而,我在做Web应用程序方面的经验涉及JSP,Servlets和JSTL ......我知道Hibernate / Spring等新技术背后的想法,但从未使用过它们。所以我们编写了自己的DAO,通过编写生成XML / JSON页面的特殊mini-JSP页面来处理AJAX等。

我并不认为Spring / Hibernate是执行任何Java Web项目的“唯一”或“正确”方式,但它们被广泛使用。另一方面,不仅尝试学习这些会增加初始开发时间,而且还会利用我的学习尝试来构建生产系统。

我记得乔尔的一篇早期文章说过(我会解释,因为我找不到它)

  

“无论什么都很酷,总是使用   领先的技术   开发人员(或开发团队?)最了解“

我想知道人们怎么想这个?

ps:这应该是CW吗?

8 个答案:

答案 0 :(得分:6)

我是一名顾问,我看过很多项目,开发人员开始使用servlets + JSP,因为这是他们所知道的,开始时非常简单。但是,它为团队提供了编写自己的平台which is more fun than using someone else's and just writing an application的机会/借口。

随着项目的发展,团队重新发明了越来越多的轮子,其中不少轮子最终square。这就是我进入图片的地方 - 在这个半灵活平台上添加新东西变得非常复杂,以至于开发人员无法跟上添加功能修复错误而无需调用增援。只是为了增加侮辱伤害,内部开发人员通常是那些被指派去做无聊的bug修复的人,因为错误修复需要更多关于已成为团队专有持久性和Web框架的血腥内脏的知识,所以那些gosh-danged顾问可以做一些有趣的新事物。

现在,你不应该仅仅因为人们一直在互相讨论关于它的真棒的博客文章而使用框架,但是你也应该意识到这些框架存在的原因很充分(以及为什么使用这些框架) )。如果您根本没有使用任何Web框架,我建议您使用Spring MVC,Wicket或其他任何试用版。它们并不能解决所有问题,并且它们确实会产生一些问题,但总体上通常会提高生产率,特别是如果您正在制作高级用户界面。

我一直在进行普通JDBC已经足够持久化的项目,并且不需要比servlet + JSP更高级的Web框架,但这些项目是少数。如果没有使用一两个框架,你永远不会认为你的项目是那个不需要的项目的一部分,或者它是否是大多数人的一部分。

答案 1 :(得分:2)

不要一次尝试所有东西 - 一次采用一种新技术。

答案 2 :(得分:1)

小心酷炫的新框架的诱惑!我目前正在攻击一个只有登录的小小网络应用程序,一些主要是静态页面,以及一些表单来请求一些信息电子邮件。我可能需要两天的时间来做MVC风格的传统Servlet / JSP。相反,由于时间表有些松懈,我决定使用这个项目来加速Spring,Spring MVC和Spring WebFlow。虽然很可能我只是密集,但我花了好几个星期来绕过正确的做事方式,我仍然不完全相信我正在做的一切,并且申请仍未完成。幸运的是,由于懈怠,我没有整体项目进度滑落的危险,但我总是问自己,我是否要废弃它并重新开始。

我已经吸取了教训:下一次,除非我之前用于制作项目,否则我不会推动新框架。也就是说,我很高兴我现在明白春天(或者至少我认为我这样做),并且下次再次使用它会毫不犹豫。

那么下次我将如何学习新的框架?如果有一个项目负责人(在这种情况下,我是一个团队的项目负责人,那里没有帮助)我会使用他们实施的框架。如果没有,或者我想学习项目负责人没有使用的框架,我会在我自己的时间用它来进行一个侧面项目。学习很好。通过将未经测试的技术投入到公司的工作风险中并不是那么好。

答案 3 :(得分:1)

我可以肯定地说Spring值得考虑。它可以为您提供尽可能多的服务,但它并不会让您感到烦恼。

例如,在一开始您可能只需要依赖注入。然后,您将需要有关数据库交互和事务管理的帮助。然后,您将决定将MVC模式应用于您的Web应用程序。之后,您可能会意识到系统的组件是相互发送JMS。依此类推。

对于所有这些情况,Spring拥有自己简单,直观,轻量级的解决方案。

答案 4 :(得分:1)

启动新项目时,限制使用的不熟悉技术/框架的数量。每个框架都需要时间来学习,每个框架都有问题,特别是如果没有正确实现。

如果可以,我建议您查看Play framework。它是Java的Web框架,专注于开发人员的工作效率。如果你愿意,你可以选择使用Spring / Hibernate,但你不受此限制。它有一个非常容易学习的实现,如果你正在寻找它,你应该能够在一天之内得到一个好主意。

答案 5 :(得分:0)

这取决于客户想要的(在咨询领域)。 你必须学习新技术。客户是否愿意为此付费?

并不是所有新的警告都是已知的,而较旧的那些已被证明更多。

当然,如果每个人都这么想,我们这些天都会被VB困住。你必须寻找适当的平衡,并自己学习很多东西,这样你就可以对可用的技术,它们的上升和下降有一个客观的看法。

答案 6 :(得分:0)

我个人肯定会建议进入春天,我发现它为我节省了无数个小时。如果你需要一个ORM层,那么hibernate也很有用(而且spring也与hibernate有很好的集成)。他们肯定不是“唯一的”甚至是“正确的”做事方式(这是非常主观的),但他们既省时又省力,特别是春天。

答案 7 :(得分:0)

任何未知技术都有一个主要陷阱。你不知道龙在哪里,你不知道如何用“头发”来磨新技术。

了解需要时间,并且您需要在估算中使用它。你的估计也很可能太低......