私はSymfony開発者としてお金を稼いでおり、Spring MVCで個人的なプロジェクトを開発しているので、両方の世界を見てきましたので、このトピックについて共有することがあると思います。
私はPHPで約7年間開発しており、Javaを言語として約5年間知っていますが、最初の「実際の」Javaプロジェクトを開発しているのはわずか1〜2か月です。最終的には、PHPを完全に廃止し、JavaやScalaなどの他のJVM言語に切り替えたいと考えています。
これの理由は何ですか?誤解しないでください。Symfony2は素晴らしいフレームワークであり、私はそれが大好きです。私はそれがそこにある最高のPHPフレームワークだと信じています。しかし...それはまだPHPです。PHPフレームワークがどれほど優れていても、私はPHPを言語として長く耐えることができません。PHPの何がそんなに悪いのか、あなたは尋ねますか?私が長い間それについて感じていたことを正確に説明する素晴らしい記事があります(少なくともアナロジーのセクションを読んでください)。
そして、私は静的バインディングと強い型付けを好むので、この理由からもJavaに慣れています。最高のPHPIDEが行うことと比較して、JavaIDEが行うことは非常に優れています。私はこれらの言語に最適なIDE(IDEA(PHPプラグイン付き)またはPhpStorm)を使用していると思います。Javaサポートは非常に優れているため、踊りたくなります。
Javaがすべての中で最も優れた言語であると言っているわけではありませんが、PHPよりも大幅に改善されています。Scalaは非常に有望だと思いますが、そのインフラストラクチャ/エコシステムは私にとって十分に成熟していないため、言語自体をハッキングしてフレームワークを開発する人と比較して、エンドユーザープロジェクトを実行するのが好きな実用的な人です。私はJavaを使用しています今のところ。
つまり、私にとっては、言語、コミュニティ、エコシステムに要約されます。PHPコミュニティには優れた開発者が何人かいて、IRCやその他の場所で彼らと会話するのは楽しいですが、Javaコミュニティには、はるかに大きなJavaエコシステムのためにはるかに優れたものを開発するはるかに優れた開発者がいます。
これらの3つのこととは別に、Symfonyははるかに習得しやすいと付け加えることができます。その本と料理本は素晴らしく、本当に要点がありますが、Springに関する多くの情報を多数の本、ブログ、およびその膨大なドキュメントで探す必要があります。 。
YMLとXMLについて言えば、SymfonyプロジェクトはXMLでのみ実行でき、SpringプロジェクトはXMLなしで完全にまたはほぼ完全に実行できます(特にバージョン3.1以降)。私はSymfonyプロジェクトでYMLを使用していますが、共有するバンドルにはXMLを使用しています。
また、SymfonyDICとセキュリティはSpringとSpringSecurityに基づいており、DoctrineはJPAに基づいており、これらのフレームワークの1つのイディオムを学習するため、もう1つのフレームワークについて多くを学ぶことができます。私が本当に見逃しているのは、Spring MVCの世界でのTwigアナログです— JSPは仕事を成し遂げますが、それはそれほど素晴らしいことではありません。Spring MVCが統合する他のビューテクノロジーがあることは知っていますが、私には、JSPが最も支持されているテクノロジーのようです。