質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

Q&A

4回答

4751閲覧

Webサーバー

退会済みユーザー

退会済みユーザー

総合スコア0

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Webサーバー

Webサーバーとは、HTTPリクエストに応じて、クライアントに情報を提供するシステムです。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

0グッド

1クリップ

投稿2015/07/20 10:13

Tomcatなどのサーブレットコンテナを活用したWebサーバーと、Node.jsによるWebサーバーとでは、サーバーサイドのプログラムを作成するという観点からみた場合、主な相違点は何ですか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

Node.js(サーバ)のメリットは、まず使用言語が統一できることです。
クライアントサイドもJavaScript(以下JSと略)、サーバサイドもJS。

サーブレットだとJavaですし、ほかのPerlやPHP、Ruby、Pythonでも、
クライアントとサーバで別々の言語で書く必要があります。それより楽だろうと。

ただ、過去にもJaxerなど、サーバサイドJS環境は出ていました。

今なぜ、Node.jsがかくも注目されているかというと、
C10K問題をノンブロッキングI/Oで解決する(とされている)からです。

大ざっぱに言うと、サーバのアクセスが多いときにうまくさばける、
といったようなことです。つまり、サーバの挙動が微妙に違います。

投稿2015/07/20 13:01

LLman

総合スコア5592

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Being a web developer is not an easy task as it requires you to have advanced knowledge of programming languages. Join a PHP Training Institute in Delhi or a Python course in Delhi and learn different languages. These web development classes are provided by ADMEC which is the web development institute in Rohini. It is one of the best Web development institute in Delhi as it provides training and internship facilities to students so that students can be a professional.

投稿2023/03/22 11:21

aryan21

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Tomcatと比較するなら、Nginxでは無いでしょうか。
node.jsのノンブロッキングな構成と相性がよくNode.jsとNginxはセットで語られます。

Webサーバに関してはくわしくないので直接調べてもらった方がいいと思いますが、私が聞きかじった話をとりあえず。

Tomcatの場合、リクエストの度Workerプロセスが立ち上がるため、プロセス間のオーバーヘッドが大きくクライアント数が1万件を超えると急にレスポンスが落ちるという指摘があり、これを”C10K問題”と呼ぶそうです。

レスポンスが重くないサイトであれば10Kも行かないので問題無いのですが、WebSocketなどつなぎっぱなしの環境だと影響が出てきます。一方、Ngixはシングルスレッドで動作するので切り替えのオーバーヘッドは存在しません。

ただし、ファイル読み込みなどで同期処理を行っていると、スレッドが停止してしまいます。IOを持たない言語であるJavaScriptに非同期IOを組み込んで、処理が常に非同期で実行出来るようにしたのがNode.jsです。
ココらへんからぱくりました

余談ですが、TomcatもNginxもJavaでもNode.jsでも動くみたいです。(あまりしないだろうけど。)

投稿2015/07/20 13:55

iwamoto_takaaki

総合スコア2883

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

一番の違いは使用できる言語です。
TomcatはJava Servletですので、JavaまたはJavaのバイトコードに
コンパイルできる言語(GroovyやScala等)しか使えません。
Node.jsはJavaScriptの実行環境ですので、JavaScriptまたはJavaScriptに
コンパイルできる言語(CoffeeScriptやTypeScript等)しか使えません。
さらに、上に無いようなPHPやRubyなど他の言語を使用したい場合は
Apacheなど別のものが必要になります。
※ 抜け道として、他言語でも、例えばRubyだったらJRuby(Java上で動くRuby)や
Opal(RubyをJavaScriptにコンパイル)という手段もありますが、
物によっては不安定であり、構成も複雑になるのでお勧めはしません。

次に、言語が違えば使えるフレームワークやライブラリも違ってきます。
Play Framework(JavaまたはScala用のフレームワーク)がやりたい!
といってもTomcatでは動かすことはできますが、Node.js上で動かすことはできません。

では、作れる物は?というと違いはありません。
どの言語でもそれなりに便利なフレームワークはありますし、
同じ物は作れます。
ただ、言語もフレームワークもそれぞれ特徴や利点・欠点があるため、
作りやすさや学習コストが変わってくると思います。

投稿2015/07/20 11:55

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問