私はWebアプリケーションの開発を始めたのはそれほど前のことなので、この分野には未知のことがたくさんあります。私の質問は、Java言語を使用したWeb開発に関するものです。クライアントがブラウザであるクライアント/サーバーアプリケーションを開発する必要があると仮定します。私の知る限り、少なくとも2つの方法があります。コミュニケーションをとること。
HTTPサーバーはサーバー側で機能し、Javaアプリケーション(バックエンド)のコンテナーです。HTTPサーバーは、Javaアプリケーション。Javaアプリケーションは、具体的なクライアントの要求への応答として、データベースからの動的コンテンツをクライアントページに送信します。アプリケーションは、このためにテンプレートエンジンを使用します。 。たとえば、TimeleafまたはVelocity。
HTTPサーバーは静的ファイル(HTMLページ、CSSおよびJavaScriptファイル)のみを送信し、さらにクライアントはJavascriptコードを使用して非同期要求をサーバーに送信し始めます。リクエストはJSON形式(またはXML)でHTTP/HTTPSを介して送信されます。このアプローチでは、RESTの原則を使用します。Javaで記述されたサーバーアプリケーションは、特定のポートからこれらの要求を受け取り、それらを処理して、同じ方法で応答を送信します。ページリロードせずに、クライアント側で動的に更新します。
私はJavaについて書きましたが、これらのアプローチは他のプログラミング言語、たとえばPythonで使用されます。
Javaコミュニティでは最初のアプローチは悪いと考えられています。しかし、具体的な議論は聞いていません。知りたいのですが。
あなたの時間と答えに感謝します。
質問で説明している実装の詳細(つまり、Javaの使用)は、説明しようとしているアーキテクチャよりも重要ではないので、説明を少し簡単にしてみましょう。
簡単に言えば、2つのアプローチがあります。
どちらのアプローチも「良い」も「悪い」もありません。違いは、各アプローチが可能にするユーザーと彼のデバイスの間の対話性の度合いです。選択するアプローチ(および最終的に採用するテクノロジー)は、ソフトウェアプロジェクトの特定の要件によって異なります。
サーバー側のレンダリングでは、ユーザーの対話性はページ投稿に限定されます。ユーザーがWebページにデータを入力するたびに、アプリケーションが次のステップに進むために、サーバーにページを送信する必要があります。
クライアント側のレンダリングでは、インタラクティブ機能が拡張され、同じページでのリアルタイムの対話が含まれます。ユーザーは部分的なデータ送信を行うことができ、ページは新しいページを要求せずにデータの更新を要求できます。このアプローチにより、Webページはデスクトップアプリケーションのように感じられ、複数のクライアントタイプ(ネイティブモバイルなど)の開発をサポートします。
ただし、すべてのWebページがこのレベルの対話性を必要とするわけではありません。たとえば、ルーターやその他の組み込みデバイスの構成ページを設計している場合、クライアント側のレンダリングを使用することはほとんどありません。また、アプリケーションには必ずしもエンタープライズグレードのインフラストラクチャの完全な厳密さが必要です。
以前は、Webアプリケーションの構築の複雑さはすべてサーバーに集中していました。しかし、Webアプリケーションは何年もの間、クライアント側のレンダリングに向けて進化してきました。これらの種類のアプリケーションでは、過度の複雑さが常に本当の問題となっていますが、開発手法がより「標準」になり、Webアプリケーションの開発がよりシンプルかつ強力になっているという証拠があります。以前は非常に複雑であったもの(データバインディングやページスタイリングなど)がはるかに簡単になりました。これは、重い作業の多くを実行できる非常に優れたJavascriptライブラリが利用できるようになったためです。
要するに、あなたの選択は適合性に基づいて行われます。