質問: 「サーバサイドでjavascriptを実行させる」というのはどういうことなのでしょうか? Rhino、Nashorn、Node.js などを使っているときは、 サーバサイドでのjavascriptというのも 全然理解できるのですが、 それらの基盤を使用していなくても、 サーバサイドの処理に、javascriptを使うことができるのでしょうか? jspやhtmlで、scriptタグで使用するjavascriptのパスを書き、 「サーバ上にあるjavascript」が クライアントサイドで動くと捉えており、 そういう意味では、基本、javascriptはクライアントサイドで動くと捉えているのですが違うのでしょうか? ※java+jspで実装しています。
回答: (文脈にもよると思いますが、一般的に)Webブラウザ組み込みのJavaScript実行環境(≒Documentが利用可能な実行環境)向けに書かれたものがクライアントサイドJavaScript、そうでないものがサーバサイドJavaScriptと呼ばれます。 また、Javaが一般的にはJava実行環境(JVM)を要求するのと同様、JavaScript実行にはNode.jsなりWebブラウザなりJavaScript実行環境が必要です。 (※Java/JavaScriptともネイティブバイナリにコンパイルする手段はあるようですが一般的ではない。) 上記を踏まえて質問文に回答すると、 > > 「サーバサイドでjavascriptを実行させる」というのはどういうことなのでしょうか? > > > Webブラウザ組み込み環境以外の実行環境でJavaScriptを実行させることです。 > > それらの基盤を使用していなくても、 > > サーバサイドの処理に、javascriptを使うことができるのでしょうか? > > > (サーバサイドに限らず、クライアントサイドでも)「基盤」は必要です。 > > jspやhtmlで、scriptタグで使用するjavascriptのパスを書き、 > > 「サーバ上にあるjavascript」が > > クライアントサイドで動くと捉えており、 > > そういう意味では、基本、javascriptはクライアントサイドで動くと捉えているのですが違うのでしょうか? > > > 記載されている通り、jsp/htmlからリンクされるJavaScriptはWebブラウザで実行されるためのものであり、(当然ながら)Webブラウザで実行されます。 この状況では、Webサーバは単にJavaScriptファイルをクライアントへ送信しているだけで、JavaScript実行自体には関わりの無い存在です。 参考になるかわかりませんが、昔次のような質問を書きました: * JavaScriptで標準出力に文字列を出力したい