基本情報

基本情報 平成22年度 春期 問7|テクノロジ系に関する問題

問題

基本情報 | 平成22年度 春期 | 分野:テクノロジ系

Java VMが稼働している環境だけがあれば, Web ブラウザや Web サーバがなくても 動作するプログラムはどれか。

キーボード:1〜4で選択・Enterで次へ

タップするとすぐ答え合わせ

答え合わせ

正解は B
  • A
  • B
  • C
  • D

自信の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
訂正の記録この問題の訂正はありません(サイト全体の記録)
出典と作り方

出典:IPA(情報処理推進機構)公式 基本情報技術者試験 平成22年度 春期 問7/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビ独自の3段階の解説(初級・標準・上級)です。