基本情報 平成22年度 秋期 問7:テクノロジ系に関する問題
]ava VMが稼働している環境だけがあれば, Web ブラウザや Web サーバがなくても 動作するプログラムはどれか。
- aJavaScript
- bJava アプリケーション正答
- cJava アプレット
- dJava サーブレット
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは b「Javaアプリケーション」 です。
Javaのプログラムには種類があります:
- Javaアプリケーション:パソコン上で普通に実行するプログラム。Java VMがあれば動く(ブラウザ不要・Webサーバ不要)
- Javaアプレット:Webブラウザの中で動かす昔のJavaプログラム(今は廃止)
- Java Servlet:Webサーバ上で動くJavaプログラム
- JavaScript:Javaとほぼ無関係の別言語。Webブラウザで動く
👉 覚え方:「普通に実行=アプリケーション」「ブラウザ内=アプレット(廃止)」「Webサーバ内=Servlet」。
Java VMだけでOK=Webブラウザ・Webサーバ不要、で当てはまるのはアプリケーションだけ!
なぜこれが正解か
正解は b。JavaアプリケーションはJVM(Java Virtual Machine)上で直接実行されるスタンドアロン型プログラムで、mainメソッドを起点に動作する。Webブラウザ・Webサーバ等の追加コンテナを必要としない。
各選択肢の解説
- a JavaScript:Java VMでなくWebブラウザのJavaScriptエンジン(V8、SpiderMonkey、JavaScriptCore)または各種ランタイム(Node.js、Deno、Bun)で動作。
- b Javaアプリケーション:JVMだけあれば動く。正解。
- c Javaアプレット:Webブラウザ内で動作する古いJava(Java 11で削除)。
- d Javaサーブレット:Webサーバ(Tomcat、Jetty等のServletコンテナ)上で動作。
覚え方・ひっかけ注意
「Java VMだけでOK=スタンドアロン=Javaアプリケーション」が判定基準。Java EE(Jakarta EE)の各種コンポーネント(Servlet、JSP、EJB、JAX-RS)はWebサーバ/アプリケーションサーバ内で動作。「JavaScript≠Java」は語感だけ似た別言語であることを徹底。
理論的背景
Javaの実行モデル:(1) ソースコード(.java)→javacでコンパイル→バイトコード(.class)、(2) JVMがクラスローダでクラスを読込み、バイトコードインタープリタまたはJITコンパイラ(HotSpot:C1高速起動、C2積極最適化、Graal)で実行、(3) GC(Garbage Collector:Serial/Parallel/CMS/G1/ZGC/Shenandoah)でメモリ自動管理。Javaアプリケーションは`java -jar app.jar`のようにコマンドラインから起動、メインメソッド`public static void main(String[] args)`がエントリポイント。WORA(Write Once, Run Anywhere)の理念で、JVMさえあれば任意プラットフォームで動作するプラットフォーム独立性が最大特長。
実務での使われ方
現代のJavaはJava EEの分離でJakarta EEに改称(Eclipse Foundation管理)。サーバサイド主流:Spring Boot(組込みTomcat、自動設定、Actuator監視)、Quarkus(クラウドネイティブ、GraalVM Native Image、超高速起動)、Micronaut(Reactive、コンパイル時DI)、Helidon(Oracle、軽量)。Vert.xはReactive・Polyglot対応のイベント駆動フレームワーク。Project Loom(Java 21 LTS)でVirtual Threadsが正式リリース、軽量スレッドで百万単位の並行処理が可能に。GraalVM Native ImageでAOT(Ahead-of-Time)コンパイルしてサーバレス向けの瞬時起動・低メモリ実行を実現。Kotlin(Android公式、サーバサイドでも台頭)、Scala(関数型)はJVM言語の代表的兄弟。
試験での位置づけ
FE科目AでJavaプログラム種別の識別が頻出。応用情報・システムアーキテクトではJVM内部構造、メモリ管理(Heap/Stack/Metaspace、Young/Old世代)、GCアルゴリズム選定、性能チューニング、Spring/Spring Boot基本が問われる。情報処理安全確保支援士ではJava脆弱性(Log4Shell:CVE-2021-44228のLog4j脆弱性が著名)、デシリアライゼーション攻撃、JNDIインジェクションが頻出。
選択肢の発展補足
Javaのリリースケイデンス:6ヶ月ごとの新バージョン+LTS(Java 8/11/17/21/25 LTS)。Project Valhalla(Value Type、Generic特殊化、メモリレイアウト最適化)、Project Panama(Foreign Function & Memory API、JNI後継、ネイティブライブラリ簡単統合)、Project Lilliput(オブジェクトヘッダ縮小)が今後の主要プロジェクト。Pattern Matching for Switch、Records、Sealed Classes、Text Blocksなどモダン構文が継続追加。OpenJDKディストリビューション:Oracle JDK(商用)、Eclipse Temurin(旧AdoptOpenJDK、Adoptium)、Amazon Corretto、Azul Zulu、Microsoft Build of OpenJDK等が選定対象。Polyglot JVM(GraalVM)はJava/JavaScript/Python/Ruby/R/LLVM/Wasmを単一VMで動かす先進機能。FE午後・応用情報の言語問題、開発技術者試験で頻出範囲。
出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成22年度 秋期 問7/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。