web-dev-qa-db-ja.com

「クリーンなコード/アーキテクチャ」を想定すると、PHPまたはJava / J2EE Webアプリケーション開発の間で「努力」に違いがありますか?

クライアントから、次のWebベースアプリケーションの実装言語としてPHP)を選択する際の労力を見積もるように求められました。私たちは、PHP、プロトタイピング、テストなどの調査に約1週間を費やしました。この言語-過去にハッキングされた可能性がありますが、PHPの初心者ですが、アプリケーション開発の専門家に行きましょう(より良い、あまりお世辞のないWordがないため:)

メンテナンス可能なコードを記述し、懸念の分離に従って、エンタープライズアーキテクチャのパターン(DAOなど)に従うと、オブジェクト指向のPHPベースのWebアプリケーションを作成する際の '努力'のようです。 Javaベースのものでも同じです。

これが私たちの努力(開発/納期)を見積もるためのものです:

ConstructionEffort = f(analysis, design, coding, testing, review, deployment)

具体的には、エンタープライズアプリケーションを作成する際の作業量の見積もりを次のように比較しました。

  1. PHP + CakePHP/CodeIgniter(他の人を考慮すべきでしたか?)
  2. Java + Spring + Restlet

これはエンドツーエンドのアプリケーションです。

  1. クライアント:Javascript/jQuery + HTML/CSS
  2. 中間層/ビジネスロジック-(まだPHP/Javaを評価中)
  3. データベース:MySQL

1層目と3層目の工数の見積もりは一定であり、中間層のテクノロジーとは比較的無関係です。要求された機能のユーザーストーリーへの最初の内訳と、PHPのように見えない)に必要となるクラス/ SLOCの膨大な数に関する高レベルの盗品を含む高レベルJavaで同じものに必要なものとは大きく異なります。これは正しいですか?

PHP-現在、言語の流暢さを要因として無視しています。これは初期のハードルであり、長期的な障害IMHO(PHPに精通するのに十分な時間もあります)。

どちらか一方の言語を選択することを正当化するために、どちらかの言語で同様のアプリケーションを作成するときの努力に関するプログラマーの視点を知ることに興味があります。ここで何かが足りませんか?私たちはPHPであることquiickerであるという一般的な信念に反して市場に出ようとしているようです(またはJava曇っています)。私たちが遊んだことから節約できるコーディング/プログラミングの労力はないようです。

7
PhD

あなたの答え:全然

私はPHPとJavaの両方で豊富な経験があり、PHPを十分に知っていれば、あなたはは完全な初心者ではなく、PHPはクラス、インターフェイス(そしてすぐに水平方向の再利用の特性も)、例外、自動クラス読み込みなどを実行できることを知っています。あなたのPHPコードはJavaコードよりも見栄えが良く、さらにうまく機能する可能性があります。

私を信じてはいけませんか?、 Symfonyフレームワーク をチェックして(IMHO)PHPソフトウェアコード例については、そのマニュアルを参照してください。

PHPの背後にある本当の問題

初心者、スクリプトキディ、平凡なプログラマー...たくさんあり、それらはすべてPHP簡単すぎるため)に目を向けているようです。PHPは簡単すぎます確かに、それは悪いことではありません(優れた言語ドキュメンテーションのせいです)。

すべての言語には欠点があり、実際のところ、最も欠陥のある言語の1つはjavascriptであり、現在の場所を確認します(ヒント:どこでも)。

PHPを選択する際のいくつかの利点

  • 開発者のためのより広くてより安い市場。 PHP開発者がOOのバックグラウンドを持ち、Symfonyを選択した場合は学習に対して良い態度をとります(特に Doctrine 、ORM Symfonyが使用)が、学習曲線があります(見た目よりも小さい、時々大きく見える)。
  • より安いホスティングサービス。
  • 開発者環境と本番環境のセットアップが簡単になります。

したがって、労力はほぼ同じである可能性がありますが、以前の特典はJavaとの違いであり、さらに多くの特典があると確信しています。

5
dukeofgaming

PHPおよびJava労力または生産性を明示的に示した-ほとんどの作業はさまざまな言語を調べます 世代 =。Javaは 第3世代の言語 であり、PHPも第3世代であると確信しています。 -世代の言語。これは、他のすべての条件が同じであれば、両方の言語で同じ製品を作成するために必要な固有の努力は、プロジェクトに大きな影響を与えないほど十分に近いことを意味します。

ただし、プログラミング言語の知識は、1.20の生産性の違いを示すことが示されています。これは小さな要因の1つです。チームの能力、プロジェクトの複雑さ、使用するツールでさえ、プログラミング言語よりもプロジェクトのパフォーマンスにはるかに大きな影響を及ぼします。

つまり、プログラミング言語の選択は生産性に違いがあります。ただし、これは小さな違いの1つです。私はプロジェクトの他の側面にもっと関心があります。

さらに興味がある場合は、 [〜#〜] cocomo [〜#〜][〜#〜] slim [〜#〜]などのツールを検討します。 およびそれらに行った基礎となる研究。これらの見積もりモデリングツールを使用すると、プロジェクトのさまざまな側面における知識と機能を考慮に入れ、それらがスケジュール、予算、および作業/生産性レベルにどのように影響するかを判断できます。

1
Thomas Owens

[〜#〜] php [〜#〜]でアプリケーションを開発するのにかかる時間は短くなりますが、おそらくアーキテクチャ的に十分な一貫性がないため、バグが多くなります。それにもかかわらず、PHPアプリケーションの変更のコストは、Javaアプリケーションに比べて低くなります。

一方、Javaアプリケーションは、設計と開発に時間がかかりますが、より堅牢で一貫性があります。おそらくバグは少なくなりますが、変更を実装するのはより困難になります。

時間と労力の見積もりに関して言語は同じように見えるかもしれませんが、それは真実ではありません。 PHPまたはJavaのどちらを使用するのがよいかは、特定のアプリケーションドメインによって異なります。言語は関係ありません。テクノロジーは関係ありません。PHPテクノロジーとJavaテクノロジーがあります。それがあなたです。言語技術の詳細により、PHP技術とJava技術の両方を特定のドメインに適用できないため、実際に考慮する必要があります。たとえば、自然言語処理にPHP技術を適用しようとはしません。 Javaで単純な管理パネルを開発するためのオーバーヘッドになります。

アプリケーションドメインが本当に重要です。

1
altern

一般に、あなたはあなたがよく知っている言語/フレームワークでより生産的になります。これは、言語/フレームワーク間の本質的な違いよりも生産性の大きな要因になる可能性があります。

あなたが検討している特定の言語に関して:

  • PHPは、高速で動的なWebサイトに適しています。これがPHPのルーツです。
  • Javaは、長期にわたって維持/開発する必要がある、より堅牢なエンタープライズアプリケーションに適しています

Javaplatform(これは言語とは別に考えることができます)は非常に強力で、おそらく世界最高のGC、卓越したJITコンパイル、およびライブラリとツールの巨大なエコシステム。長期的には、これは深刻なアプリケーションにとってより魅力的な戦略的選択になるでしょう。

すでにJavaプラットフォームのスキルを持っているが、PHPを本当に知らないように聞こえるので、私は間違いなくJava over PHP中間層の実装用。高い生産性に関心がある場合は、次のことも検討してください。

  • GroovyやClojureなどの動的JVM言語-これらは、Javaプラットフォームにうまく統合されるという利点とともに、最新の動的言語の高い生産性をすべて提供します。
  • 最新のJava PlayVaadin などのWebフレームワーク---新しいフレームワークはJ2EEよりもはるかに生産性が高いです。J2EEはおそらくやり過ぎです。ミッションクリティカルなエンタープライズアプリケーションを構築しています。
0
mikera