【问题标题】:Choose 'better' or more familiar technologies for a new project?为新项目选择“更好”或更熟悉的技术?
【发布时间】:2010-05-25 08:48:42
【问题描述】:

我希望开始一个全新的项目,作为我的第一个独立可销售项目,我已经考虑了一段时间。 从广义上讲,它是一个基于 Web 的服务应用程序,而我的首选服务器语言非常简单……我过去在 Java Web 应用程序上工作过,对 Java 非常了解。

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

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

我记得 Joel 早期的一篇文章中说过(我会转述,因为我找不到它)

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

我想知道人们对此有何看法?

ps:这应该是CW吗?

【问题讨论】:

  • “最了解”是非常非常明智的建议!

标签: java hibernate spring


【解决方案1】:

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

随着项目的发展,团队重新发明了越来越多的轮子,其中不少最终成为square。这就是我进入画面的地方 - 向这个半灵活的平台添加新东西变得如此复杂,以至于开发人员无法在不调用增援的情况下继续添加功能修复错误。雪上加霜的是,内部开发人员通常被指派进行无聊的错误修复,因为错误修复需要更多了解已成为团队专有持久性和 Web 框架的血腥内脏,所以那些天哪的顾问开始做新的、有趣的事情。

现在,您不应该仅仅因为人们在彼此的博客文章中反复谈论它的真棒就使用框架,但您也应该意识到这些框架存在的充分理由(以及使用它们的原因) )。如果您根本没有使用任何 Web 框架,我建议您使用 Spring MVC、Wicket 或其他任何东西进行试驾。它们并不能解决所有问题,并且确实会引起一些问题,但总体而言通常是生产力的提高,尤其是在您制作高级用户界面时。

我参与过的项目中,纯 JDBC 已经足够持久化,并且不需要比 servlet+JSP 更高级的 Web 框架,但这些项目是少数。如果没有使用一两个框架,您永远不会知道您的项目是否属于不需要框架的少数群体,或者是否属于需要框架的绝大多数。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      当心新框架的诱惑!我目前正在开发一个很小的网络应用程序,它只有一个登录名、一些主要是静态页面和一些表单来请求一些信息电子邮件。我可能要花两天时间才能完成 MVC 风格的传统 Servlet/JSP。相反,由于日程安排有些松懈,我决定使用这个项目来加快 Spring、Spring MVC 和 Spring WebFlow 的速度。虽然我很可能只是很密集,但我花了 几个星期 才弄清楚正确的做事方式,但我仍然不能完全相信我做的一切都是正确的,并且申请还没有完成。幸运的是,由于时间不够,我没有面临整个项目进度下滑的危险,但我总是问自己是否必须放弃它并重新开始。

      不过,我已经吸取了教训:下一次,我不会成为推动新框架的人,除非它是我以前用于生产项目的框架。也就是说,我很高兴我现在了解 Spring(或者至少我认为我了解)并且下次会毫不犹豫地再次使用它。

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

      【讨论】:

        【解决方案4】:

        我可以肯定地说 Spring 值得考虑。它给了你尽可能多的东西,但它不会因为你不需要的东西而打扰你。

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

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

        【讨论】:

          【解决方案5】:

          开始一个新项目时,请限制要使用的不熟悉技术/框架的数量。每个框架都需要时间来学习,每个框架都有问题,尤其是如果没有正确实施。

          如果可以,我建议您查看Play framework。它是一个专注于开发人员生产力的 Java 网络框架。如果需要,您可以选择使用 Spring / Hibernate,但不受此约束。它有一个非常容易学习的实现,如果你正在寻找它,你应该能够在一天的时间里得到一个好主意。

          【讨论】:

            【解决方案6】:

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

            并非所有新的警告都为人所知,而旧的警告则更多。

            当然,如果每个人都这么想,这些天我们都会被 VB 困住。您必须寻找适当的平衡点,并且自己也学到很多东西,这样您才能客观地了解可用的技术及其优缺点。

            【讨论】:

              【解决方案7】:

              我个人肯定会推荐看看春天,我发现它为我节省了无数小时。如果你需要一个 ORM 层,hibernate 也很有用(而且 spring 也与 hibernate 有很好的集成)。它们当然不是“唯一”甚至不是“正确”的做事方式(这很主观),但它们都为我节省了时间和精力,尤其是春天。

              【讨论】:

                【解决方案8】:

                任何未知技术都有一个重大陷阱。你不知道龙在哪里,你不知道如何“用毛”摩擦新技术。

                了解需要时间,您需要在估计中考虑到这一点。此外,您的估计很可能太低...

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2010-12-22
                  • 2023-03-21
                  • 1970-01-01
                  • 2010-11-11
                  • 2012-11-01
                  • 2011-02-28
                  • 2021-10-13
                  • 1970-01-01
                  相关资源
                  最近更新 更多