さて、本腰入れて。
今回の比較に当たり、大きな前提として、
pub/subはなし(つまり、メモリ内で処理を完結可能)
というのをあげておきます。
というのも、pub/subがあるときと、ないときでは、
結構実装が異なってしまうためです。
(※うまく抽象化できればいいのですが、node.js側は上手に継承を使うのが難しいので)
この前提のもと、
javaとnode.jsの大きな違いは、
java:マルチスレッド
node.js:シングルスレッド
ということであります。
この違いは、プログラムを書く上で、
「排他制御」が必要か、不要かということにつながります。
たとえば、対戦ゲームを作るとした場合、
ゲームには「マッチング」と「対戦中」で処理が大きく2つに分かれます。
マッチングは諸条件あるものの、基本的には来た順番にさばく手法がとられると思います。
このとき、javaでは必ず排他制御をかける必要があります。
それに対し、node.jsでは、シングルスレッドなので、排他制御をかける必要はありません。
ここが両者の最大の違いとなります。
※あくまでメモリ内で完結する場合です。(つまり1プロセス)
複数台を使う場合は、node.jsでも排他制御が必要となる場合があります。
コメントがあればどうぞ