作为一名 Symfony 开发人员,我正在赚钱,同时在 Spring MVC 中开发我的个人项目,所以,既然我已经看到了这两个世界,我想我有一些关于这个话题的分享。
我用 PHP 开发了 7 年,我知道 Java 作为一门语言也有 5 年了,但我开发我的第一个“真正的”Java 项目只有一两个月。最终,我想彻底抛弃 PHP,转而使用 Java 和/或其他 JVM 语言,如 Scala。
这是什么原因?好吧,不要误会我的意思,Symfony2 是一个很棒的框架,我真的很喜欢它。我相信它是目前最好的 PHP 框架。但是......它仍然是 PHP,你知道的。无论 PHP 框架多么出色,我都无法忍受 PHP 作为一门语言太久。你问 PHP 有什么问题?有一篇很棒的文章准确地解释了我长期以来对它的感受(至少阅读类比部分)。
而且由于我更喜欢静态绑定和强类型,因此我也更喜欢 Java。与最好的 PHP IDE 相比,Java IDE 的功能真是太棒了。我认为我正在为这些语言使用最好的 IDE——IDEA(带有 PHP 插件)或 PhpStorm——Java 支持好得多,这让我想跳舞。
我并不是说 Java 是最伟大的语言,但它是对 PHP 的巨大改进。我认为 Scala 非常有前途,但由于它的基础设施/生态系统对我来说还不够成熟——与那些自己破解语言和开发框架的人相比,我是一个喜欢完成最终用户项目的务实主义者——我将继续使用 Java目前。
所以,对我来说,它归结为语言、社区和生态系统。虽然 PHP 社区有一些优秀的开发人员,我喜欢在 IRC 或其他地方与他们交谈,但 Java 社区有很多很多很棒的开发人员为更大的 Java 生态系统开发了很多很多很棒的东西。
除了这三件事之外,我可以补充一点,Symfony 更容易学习——它的书和食谱都很棒而且非常中肯,而我必须在大量书籍、博客及其大量文档中寻找大量关于 Spring 的信息.
说到 YML 和 XML,你可以只用 XML 来做一个 Symfony 项目,你可以完全或几乎完全不用 XML 来做一个 Spring 项目——尤其是从 3.1 版开始。我在我的 Symfony 项目中使用 YML,但在我共享的包中使用 XML 。
并且由于 Symfony DIC 和 security 基于 Spring 和 Spring Security,而 Doctrine 基于 JPA,学习其中一个框架的习语,你会学到很多关于另一个框架的知识。我真正缺少的是 Spring MVC 世界中的 Twig 类比——JSP 完成了工作,但它并不是那么好。我知道 Spring MVC 集成了其他视图技术,但在我看来,JSP 似乎是最受认可的一种。