私はJavaベースのサーバーを開発しており、NIOマルチプレックスを使用しており、多くのフレームワークを見始めました...これらのフレームワークが生活を楽にするだけなのか、それともパフォーマンスが向上するのかわかりません(たとえば netty )
4 に答える
その下にあるもののパフォーマンスを向上させることができるフレームワークはありません。NIO の場合、私はそれがすでにフレームワークそのものであるという見解に至りました。私は Mina などのいくつかの NIO フレームワークをレビューし、実際に自分で作成しましたが、これはほとんど無駄な努力であり、最終的に何らかの形で邪魔になるというのが私の結論です。必要なのは、適切に作成された選択ループと適切なデータ構造だけです。
重要な点は、生活が楽になり、生産性が向上するということだと思います。それらは、相互に比較したり、独自のコードに比べて多かれ少なかれパフォーマンスが高い場合があります (ゼロからコーディングした場合、最初の試行でパフォーマンスが向上すると考える理由はありません。もちろん、最終的には所有しているので、最適化することができます)。時間があれば死ぬ)。
最終的には、それらはすべて Java NIO フレームワークとクラスを使用しており、それらを上回る唯一の方法は、独自の JNI を作成することです (成功したと仮定して)。これは難しい作業であり、プログラミングにおける独自の専門分野です。
それはあなたがしようとしていることに依存します。NIO フレームワークは、NIO コア アクションの抽象化を提供するので便利です。ただし、使い慣れていないデザイン パターンをいくつか使用する必要があります。
これらの設計パターンに適応できると思われる場合は、おそらくフレームワークを使用する必要があります。バグが少なくなり、やるべき作業が少なくなり、最終的にはすべてのアクションがどこで発生するかわかりません。達成しようとしていることだけに集中する必要があります。
「国内」ソリューションと比較して追加のオーバーヘッドがありますが、無視できます。
java.nio
それは、 APIに関する知識のレベルに大きく依存します。仕組みがよくわからない場合は、おそらくサードパーティの API を使用する必要があります。物事がどのように機能するかを知っていて、サード パーティの API を使用せずにコードを記述できる場合は、文字列を添付せずに独自のコードを使用する必要があります。余分なもの (サードパーティ API) を使用しなくても、パフォーマンスを向上させることができます。
私はKISSの原則に従って生きるのが好きです。