基本情報技術者 2013年 秋期 午前(科目A) 問20
問題文
コンパイル済みのオブジェクトコードがサーバに格納されていて、クライアントからの要求によってクライアントへ転送されて実行されるプログラムはどれか。
選択肢
ア:アプレット(正解)
イ:サーブレット
ウ:スクリプト
エ:スレッド
コンパイル済みオブジェクトコードがサーバに格納されていて、クライアントからの要求によってクライアントへ転送されて実行されるプログラムはどれか。【午前2 解説】
要点まとめ
- 結論:サーバに格納されたコンパイル済みオブジェクトコードを転送してクライアント上で実行する方式はアプレットです。
- 根拠:アプレットはJavaのコンパイル済みバイトコード(.class)をクライアントのJVMへ配信し、その場で実行する仕組みだからです。
- 差がつくポイント:問題文の「サーバ→クライアントへ転送され実行」が決定的。サーブレットはサーバ側、スクリプトは通常ソースの送信である点に注意。
正解の理由
ア(アプレット)が正解です。アプレットは作成時にJavaソースをコンパイルしてバイトコード(オブジェクトコード相当)にし、サーバに置かれた.classファイルが要求に応じてクライアント(ブラウザ)のJVMへ転送され、その場で実行されます。問題文の「コンパイル済みのオブジェクトコード」「クライアントへ転送して実行する」という条件と一致します。
よくある誤解
- サーブレットと混同する:サーブレットはサーバ側で実行されるプログラムで、クライアントへコンパイル済みコードを転送して実行することはありません。
- スクリプト=コンパイル済みと考える:多くのスクリプト言語(例:JavaScript)はソースをそのまま送ってクライアント側で解釈実行され、問題文の「コンパイル済みオブジェクトコード」とは性質が異なります。
- スレッドをプログラムと誤認する:スレッドは実行単位(軽量プロセス)であり、サーバに格納され転送されるプログラムの種類ではありません。
解法ステップ
- 問題文のキーワードを拾う:「コンパイル済み」「オブジェクトコード」「サーバに格納」「クライアントへ転送」「実行」。
- 各選択肢の実行場所と配布方法を確認する:サーバ側実行かクライアント側実行か、配信されるのはソースかバイナリか。
- サーブレットはサーバ側、スクリプトは通常ソース配信、スレッドは単なる実行単位であることを排除する。
- 残るのがアプレット:バイトコードを転送してクライアントのJVMで実行するため一致する。
選択肢別の誤答解説
- ア:正解。Javaのバイトコード(コンパイル済みオブジェクトコード)をクライアントのJVMに転送して実行する仕組みです。
- イ(サーブレット):誤り。サーブレットはサーバ上で動作し、クライアントへプログラム本体(コンパイル済みコード)を転送して実行させるものではありません。
- ウ(スクリプト):誤り。スクリプトは原則ソース(テキスト)をクライアントに送って解釈実行するもので、問題文の「コンパイル済みオブジェクトコード」とは異なります(例外的に事前コンパイルされるケースもありますが設問意図と不一致)。
- エ(スレッド):誤り。スレッドはスレッド制御の単位であり、サーバからクライアントに転送して実行されるプログラムの種類ではありません。
補足コラム
アプレットは歴史的にブラウザでJavaコードを配信・実行する代表的技術でしたが、セキュリティやプラグイン非推奨の流れで主要ブラウザはNPAPIを廃止し、アプレットの利用は激減しました。現在ではWebAssemblyやクライアント側のJavaScriptフレームワーク、あるいはネイティブ配布(アプリ配信)が主流です。ただし試験問題では「コンパイル済みオブジェクトコードをサーバから転送してクライアントで実行する」を問う場合、伝統的定義としてアプレットが正解になります。
FAQ
Q1: 「オブジェクトコード」とは何ですか?
A1: ソースコードをコンパイラが機械語や中間コード(例:Javaバイトコード)に変換したもので、実行可能な形式を指します。
A1: ソースコードをコンパイラが機械語や中間コード(例:Javaバイトコード)に変換したもので、実行可能な形式を指します。
Q2: JavaScriptはオブジェクトコードですか?
A2: 通常はソースコードのまま配信され、クライアント側で解釈・実行されるため「コンパイル済みオブジェクトコード」とは性質が異なります。JITコンパイルは実行時最適化の話です。
A2: 通常はソースコードのまま配信され、クライアント側で解釈・実行されるため「コンパイル済みオブジェクトコード」とは性質が異なります。JITコンパイルは実行時最適化の話です。
Q3: サーブレットは全くクライアントと関係ないですか?
A3: サーブレットはHTTPレスポンスを生成してクライアントに送りますが、プログラム本体(コンパイル済みコード)をクライアントへ転送してクライアント側で実行するものではありません。
A3: サーブレットはHTTPレスポンスを生成してクライアントに送りますが、プログラム本体(コンパイル済みコード)をクライアントへ転送してクライアント側で実行するものではありません。
Q4: 現代の同等技術はありますか?
A4: WebAssemblyやブラウザで動くコンパイル済みバイナリ技術が近い役割を果たしており、セキュリティ制御の下でクライアントへ配信・実行されます。
A4: WebAssemblyやブラウザで動くコンパイル済みバイナリ技術が近い役割を果たしており、セキュリティ制御の下でクライアントへ配信・実行されます。
関連キーワード: アプレット, サーブレット, スクリプト, スレッド, Javaバイトコード, クライアントサイド, サーバサイド, サンドボックス, NPAPI, WebAssembly

\ せっかくなら /
基本情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

