Java やその他のプログラミング言語で Tomcat のようなサーバーを作成するのはどれほど難しいでしょうか?
UDP および TCP ソケットを使用して、それらを単純なクライアントとサーバーに成形し、コンピューターでデータをやり取りする作業を楽しんでいます。
通常 C または ASM で記述される部分で JVM を使用して Java で記述された OS が少なくとも 1 つあることを私は知っています。
Java やその他のプログラミング言語で Tomcat のようなサーバーを作成するのはどれほど難しいでしょうか?
UDP および TCP ソケットを使用して、それらを単純なクライアントとサーバーに成形し、コンピューターでデータをやり取りする作業を楽しんでいます。
通常 C または ASM で記述される部分で JVM を使用して Java で記述された OS が少なくとも 1 つあることを私は知っています。
Java は、クライアント/サーバー プログラムを作成する際に非常に優れています。ネットワーキングは必ずしも簡単ではありませんが、そのようなプログラムの作成をより困難にし、より多くの前提知識を必要とする多くのツール キットがあります。
「Tomcat」タイプのサーバーに関しては、「アプリケーション」として識別される Java クラスの「ツリー」が相互通信しないようにするために、クラスのロードについても多くを学ぶ必要があります。クラスのロードが適切に行われるようになるまでには、もう少し時間がかかります。これは主に、クラスが適切な場所にあり、セキュリティが実際に存在することを確認するために適切な一連のテストを作成するのに少し手間がかかるためです。
それはちょっとした仕事ですか?はい。しかし、正確にどれだけの作業が行われるかは、詳細に大きく依存します。単純なサーバー ソケットと接続を受け入れるコードは、経験豊富なプログラマーであれば 1 日 (または少なくとも 1 週間以内) で作成できます。プロトコル (予期され、送信されるビット) の実装には、プロトコルがサポートする「機能」の数に応じて、時間がかかります。これが、すべての「サンプル」クライアント/サーバー Java プログラムが基本的に「エコー」サーバー、タイム サーバー、またはその他の非常に単純なプロトコルである理由です。
洗練されたスレッド モデルを使用して、サーバーが余分なコア間でスケーリングしたり、比較的時間がかかる他の要求を処理する場合でも要求を迅速に処理したりすることを保証する場合は、さらに時間を追加し続けます (より複雑なスレッド モデルでは単純なスレッド モデルを破棄するため)。 .
ここまでで、いくつかのことを構成可能にする必要があると判断し、構成をどのように決定するかによって、構成サブシステムにどれだけの時間を投資する必要があるかが決まります。
実際のコスト; ただし、アプリケーションの作成中ではなく、テストとバグ修正中になります。通常の状況で動作するように記述したコードのすべての行は、考慮されていない多くの状況によって最終的に速度が低下します。既知の、しかししばしば計画外の余分な時間を前もって支払うには、テスト駆動開発を使用して、「私は終わった」と言いたいときに莫大なテスト負債を支払わないようにします。
プログラミングについてたくさん教えることができるので、これは学生にとって素晴らしいプロジェクトだと思います。特に、プロジェクトに取り組むときに発生する小さな(そして小さなではない)問題のすべてについて学ぶのに役立ちます。大学時代、私は自分のシンプルなSMTPサーバーを最初から書きたかったのです。プロトコル、ネットワークプログラミング、スレッド化など、始めたときは考えもしなかった多くの詳細を学ぶ必要がありました。とても便利で(そして時間がかかる)、終わったときに実際に何かを成し遂げたような気がしました。また、人々が既存のライブラリを使用し、最初から始めるのではなく、他の作業に基づいて構築することに集中する傾向がある理由も学びましたが、それは最後まで学びませんでした。
私のアドバイスは、あなた自身に特定の、そして一見小さな目標を与えて、あなたがそれを確実に終わらせることです。最も重要な教訓は、彼らが始めたことを完了するような人になることです。多くの人が素晴らしいアイデアを持っていますが、小さなアイデアでさえ実行(そして仕上げ)することが常に最も重要です。
サーブレット仕様は獣なので、Tomcatのようなサーブレットコンテナは選びません。私はあなたが興味を持っている何かを見つけて、範囲を制限して仕事に行きます。友達がメーリングリストを欲しがっていたので、そこから始めました。たぶん、あなたはHTTPに興味があるか、あなたの電話があなたのコンピュータでMP3を再生する方法を望んでいます。自分で問題を解決している場合(「実際の」解決策がすでに存在している場合でも)、やる気を維持するのに役立ちます。
幸運を!
あなたはそれを行うことができます!