我厌倦了不得不每隔一天学习另一个 Java Web 框架。
JSP、Struts、Wicket、JSF、JBoss Seam、Spring MVC 等等——所有这些无数的框架都试图解决同样的问题。然而,它们都没有真正解决根本问题——这就是为什么总是会出现越来越多的新问题。
大多数在第一印象中看起来非常明亮和闪亮,因为它们简化了简单的事情。
但是,一旦涉及到现实世界用例的实施,就会遇到问题。
框架通常不提供任何帮助,而是通过强制根据框架自己的逻辑和环境来实现事物来阻碍和限制选项。
简而言之,我在使用框架时看到了以下缺点:
- 大多数情况下学习曲线很陡峭,您首先需要了解有时相当学术的概念,并知道一堆配置文件的含义和位置,然后才能开始。
- 文档通常或多或少很糟糕,要么缺少可公开访问的在线参考,要么已经过时,要么混淆了不同的不兼容版本,要么将所有这些混为一谈,而且通常没有提供任何有用的示例。
- 该框架由数以万计的类组成,这使得仅通过浏览源代码几乎不可能理解其预期用途。
- 因此,您需要购买一些“XYZ in action for dummy in 21 days”之类的书籍,它们的用户界面很糟糕,因为它们缺少全文搜索并且携带很重。
- 要真正使用其中一个框架,您需要牢记如何按照框架要求的方式完成工作,方法是记住足够的类和方法名称,直到您的脑海中充满愚蠢和无用的信息,您无法将其用于其他任何事情.
- 开销很大,会减慢应用程序的性能,并在尝试了解真正发生的事情时让您的大脑感到麻木。
- 在现实世界中,由于工作效率的压力,通常没有时间熟悉新事物。由于这种边做边学的方法,人们总是只寻找完成下一项任务的最快方法,而不是真正了解新工具及其可能性。
- 在我看来,遵循标准将使刚接触项目的人能够快速开始的论点是无效的,因为即使在同一家公司内,每个项目都使用不同的框架(至少在我的情况下)。
在我看来,阿尔伯特爱因斯坦的以下引用非常适合这里:
“我们无法通过使用我们在创建问题时使用的相同思维来解决问题。”
回到我过去的 PHP 编码时代,那时编码仍然很有趣且富有成效,我曾经为大多数事情编写自己的框架,然后只是复制粘贴并将它们从一个项目应用到下一个项目。
这种方法效果很好,导致快速开发,完全没有开销,而且框架实际上比大多数 Java 框架更强大,但单个文件中只有几百行代码加上一些简单的 mod_rewrite 规则。
这当然不能解决 Web 开发的所有问题,但它简单、快速且直截了当。
虽然完美地适应了当前项目的要求,但它也易于扩展,并且由于零开销而具有非常高的性能。
那么,为什么使用这个框架会遇到这么多麻烦,为什么不把它们全部扔掉并回到根源呢?
当我们明天再次开始下一个带有新框架的项目时,我应该对我的老板说什么?
还是有可能真正有所作为的框架?
还是我忽略的一些隐藏优势?