基本情報技術者 2015年 春期 午前(科目A) 問08
問題文
Javaにおいて、よく使われる機能などを再利用できるようにコンポーネント化するための仕様はどれか。
選択肢
ア:JavaBeans(正解)
イ:JavaScript
ウ:Javaアプリケーション
エ:Javaアプレット
🔒 解説は解答すると表示されます
JavaBeansコンポーネント仕様【午前解説】
正解の理由
JavaBeansは「再利用可能なソフトウェアコンポーネント」を定義するためのJavaプラットフォーム上の仕様です。
主な特徴として、プロパティを表す getter/setter パターン、イベント発行の仕組み、デザイナーから扱いやすくするためのイントロスペクション、永続化のためのシリアライズ対応などを規定しています。
これにより、ビジュアルツールやフレームワークがコンポーネントを自動的に組み合わせて利用できるため、設問の「よく使われる機能などを再利用できるようにコンポーネント化するための仕様」に最も合致します。
主な特徴として、プロパティを表す getter/setter パターン、イベント発行の仕組み、デザイナーから扱いやすくするためのイントロスペクション、永続化のためのシリアライズ対応などを規定しています。
これにより、ビジュアルツールやフレームワークがコンポーネントを自動的に組み合わせて利用できるため、設問の「よく使われる機能などを再利用できるようにコンポーネント化するための仕様」に最も合致します。
解法ステップ
- 問題文のキーワード「再利用」「コンポーネント化」「仕様」を確認する。
- 選択肢を見て「コンポーネント仕様」を提供するものを探す。
- 各選択肢の役割を判定:JavaBeans(コンポーネント仕様)、JavaScript(言語)、Javaアプリケーション(実行形態)、Javaアプレット(ブラウザ用実行形態)。
- 最も仕様に該当するアを選ぶ。
選択肢別の誤答解説
- ア: JavaBeans — 正解。プロパティ(getter/setter)、イベント、シリアライズ、イントロスペクション等により再利用可能なコンポーネントを定義する仕様です。
- イ: JavaScript — 誤り。クライアント/サーバ両方で使われるスクリプト言語であり、Javaのコンポーネント仕様ではありません。
- ウ: Javaアプリケーション — 誤り。単にJavaで作られた独立実行プログラムで、コンポーネント仕様そのものを指す言葉ではありません。
- エ: Javaアプレット — 誤り。かつてブラウザ上で実行する小さなアプリケーションの形式で、コンポーネント仕様とは異なります。
よくある誤解
- Javaアプレットと混同する:アプレットはブラウザ上で動く小さいアプリで、コンポーネント仕様そのものではありません。
- JavaBeansは単なるクラス=POJOと考える:単なるPOJOと似ますが、プロパティ命名規約やシリアライズ、イベントなど設計上の規約がポイントです。
- 「JavaScriptもコンポーネント」と考える:フロントエンドのコンポーネント概念とは別領域で、言語そのものは仕様ではありません。
補足コラム
簡単なJavaBeanの例を示します。ポイントは無引数コンストラクタ、プロパティのgetter/setter、Serializableの実装などです。
import java.io.Serializable;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
public class PersonBean implements Serializable {
private String name;
private final PropertyChangeSupport pcs = new PropertyChangeSupport(this);
public PersonBean() {} // 無引数コンストラクタが望ましい
public String getName() { return name; }
public void setName(String name) {
String old = this.name;
this.name = name;
pcs.firePropertyChange("name", old, name); // イベント通知
}
public void addPropertyChangeListener(PropertyChangeListener l) {
pcs.addPropertyChangeListener(l);
}
public void removePropertyChangeListener(PropertyChangeListener l) {
pcs.removePropertyChangeListener(l);
}
}
このようにJavaBeansは「設計規約」として、ツールやフレームワークが扱いやすいコンポーネントを実現します。
FAQ
Q1: JavaBeanは必ずSerializableを実装しなければなりませんか?
A1: 厳密な必須ではありませんが、永続化(シリアライズ)をサポートするために実装することが一般的です。
A1: 厳密な必須ではありませんが、永続化(シリアライズ)をサポートするために実装することが一般的です。
Q2: POJOとJavaBeanの違いは何ですか?
A2: POJOは「プレーンな」Javaオブジェクトの総称です。JavaBeanはPOJOのうち、プロパティ命名規約や無引数コンストラクタ、イベント・シリアライズ等の仕様に従ったものを指します。
A2: POJOは「プレーンな」Javaオブジェクトの総称です。JavaBeanはPOJOのうち、プロパティ命名規約や無引数コンストラクタ、イベント・シリアライズ等の仕様に従ったものを指します。
Q3: 現代のJava開発でJavaBeansは使われますか?
A3: はい。古典的なGUIビルダや一部フレームワーク、設定オブジェクトなどで概念は今も利用されます。ただし、単にPOJOやアノテーションベースの構成が好まれる場面もあります。
A3: はい。古典的なGUIビルダや一部フレームワーク、設定オブジェクトなどで概念は今も利用されます。ただし、単にPOJOやアノテーションベースの構成が好まれる場面もあります。
関連キーワード: Java、JavaBeans、コンポーネント化、プロパティ、イベント、シリアライズ、イントロスペクション、POJO、デザインタイム-tools

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

