23
OSS モデルカリキュラムの学習ガイダンス 4-1-Java に関する知識 1. 科目の概要 Web アプリケーション構築で利用されることの多い Java 言語について、基本的な仕組み、 プログラミング文法、オブジェクト指向によるプログラム設計の概念、各種のアプリケー ション開発を解説する。 2. 習得ポイント 本科目の学習により習得することが期待されるポイントは以下の通り。 習得ポイント シラバスの対応コマ 4-1-基-1.Java言語の歴史、特長、種類 Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ わる様々なトピックを紹介する。 1 4-1-基-2.Javaの実行手順 Javaプログラムの例を示し、Javaプログラムの記述からコンパイル、実行までの手順を紹介す る。さらに様々なJavaのエディションや実行環境の整備など、Javaを用いたプログラミングを実 施する際に留意すべき点について述べる。 2 4-1-基-3.Javaを用いたプログラミング手法 Javaの基本的なしくみ、特徴、構造を説明する。基本的なプログラム要素として、識別子、変 数、型、クラス、演算子、制御構文について解説する。またアプレットやサーブレットといった 形態、クラスライブラリの利用についても言及する。 2 4-1-基-4.カプセル化によるオブジェクト指向プログラミング Javaの大きな特徴であるオブジェクト指向プログラミングについて、その基本的な特徴とメリッ トを説明する。クラス、オブジェクト、メソッド、コンストラクタなどオブジェクト指向の様々な概 念を紹介し、オブジェクト指向による代表的なプログラミング手法を示す。メンバへのアクセス 制御とカプセル化の概念を説明する。 3,4 4-1-基-5.継承と多相性を利用したクラスの再利用 オブジェクト指向の最大の特徴である継承と多相性について説明する。スーパークラスをサ ブクラスに継承させる方法を解説し、また、オーバーライドによる多相性を解説する。さらに パッケージについても紹介し、クラスのまとめ方についても言及する。 5 4-1-基-6.インタフェースを利用したクラスの抽象化 インスタンス化することのできない抽象クラスやインタフェースの概念を解説する。抽象クラス やインタフェースの定義方法を説明し、抽象クラスを継承したクラスやインタフェースを実装し たクラスの作り方を解説する。 6 4-1-基-7.標準クラスライブラリを使用したプログラミング 数値や文字列といった基本的なクラスと、ファイル入出力機能を持つクラスを紹介する。それ ぞれクラスの特徴や使い方を説明し、ライブラリを利用した簡潔で読みやすいプログラムの 書き方を解説する。 8,9 4-1-基-8.ジェネリクスを使用したメタプログラミング ジェネリクスの基本、特徴やメリットを解説する。ジェネリクスを利用したメタプログラミングを紹 介し、データ型に依存しない、汎用性の高いクラス、インタフェース、メソッドの具体的な実装 方法を説明する。 10 4-1-基-9.Javaによるアルゴリズムの実装 標準クラスライブラリで用意されたデータ構造(コレクション)とアルゴリズムを紹介し、具体的 な利用方法と利用場面を解説する。 11,12,13 4-1-基-10.ServletとJSPによるWebアプリケーション開発 ServletとJSPによるWebアプリケーション開発の手順と内容について解説する。また開発プ ラットフォームとしてのTomcatやJBossといった代表的なOSSの実装を紹介する。 14

4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

OSS モデルカリキュラムの学習ガイダンス

4-1-基 Java に関する知識

1. 科目の概要 Web アプリケーション構築で利用されることの多い Java 言語について、基本的な仕組み、

プログラミング文法、オブジェクト指向によるプログラム設計の概念、各種のアプリケー

ション開発を解説する。 2. 習得ポイント 本科目の学習により習得することが期待されるポイントは以下の通り。

習得ポイント 説 明 シラバスの対応コマ

4-1-基-1.Java言語の歴史、特長、種類Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメリットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつわる様々なトピックを紹介する。

1

4-1-基-2.Javaの実行手順Javaプログラムの例を示し、Javaプログラムの記述からコンパイル、実行までの手順を紹介する。さらに様々なJavaのエディションや実行環境の整備など、Javaを用いたプログラミングを実施する際に留意すべき点について述べる。

2

4-1-基-3.Javaを用いたプログラミング手法Javaの基本的なしくみ、特徴、構造を説明する。基本的なプログラム要素として、識別子、変数、型、クラス、演算子、制御構文について解説する。またアプレットやサーブレットといった形態、クラスライブラリの利用についても言及する。

2

4-1-基-4.カプセル化によるオブジェクト指向プログラミング

Javaの大きな特徴であるオブジェクト指向プログラミングについて、その基本的な特徴とメリットを説明する。クラス、オブジェクト、メソッド、コンストラクタなどオブジェクト指向の様々な概念を紹介し、オブジェクト指向による代表的なプログラミング手法を示す。メンバへのアクセス制御とカプセル化の概念を説明する。

3,4

4-1-基-5.継承と多相性を利用したクラスの再利用オブジェクト指向の最大の特徴である継承と多相性について説明する。スーパークラスをサブクラスに継承させる方法を解説し、また、オーバーライドによる多相性を解説する。さらにパッケージについても紹介し、クラスのまとめ方についても言及する。

5

4-1-基-6.インタフェースを利用したクラスの抽象化インスタンス化することのできない抽象クラスやインタフェースの概念を解説する。抽象クラスやインタフェースの定義方法を説明し、抽象クラスを継承したクラスやインタフェースを実装したクラスの作り方を解説する。

6

4-1-基-7.標準クラスライブラリを使用したプログラミング数値や文字列といった基本的なクラスと、ファイル入出力機能を持つクラスを紹介する。それぞれクラスの特徴や使い方を説明し、ライブラリを利用した簡潔で読みやすいプログラムの書き方を解説する。

8,9

4-1-基-8.ジェネリクスを使用したメタプログラミングジェネリクスの基本、特徴やメリットを解説する。ジェネリクスを利用したメタプログラミングを紹介し、データ型に依存しない、汎用性の高いクラス、インタフェース、メソッドの具体的な実装方法を説明する。

10

4-1-基-9.Javaによるアルゴリズムの実装標準クラスライブラリで用意されたデータ構造(コレクション)とアルゴリズムを紹介し、具体的な利用方法と利用場面を解説する。

11,12,13

4-1-基-10.ServletとJSPによるWebアプリケーション開発ServletとJSPによるWebアプリケーション開発の手順と内容について解説する。また開発プラットフォームとしてのTomcatやJBossといった代表的なOSSの実装を紹介する。

14

Page 2: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

OSS モデルカリキュラムの学習ガイダンス

3. IT 知識体系との対応関係 「4-1-基 Java に関する知識」と IT 知識体系との対応関係は以下の通り。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

4-1-基 Javaに関する

知識Javaの基本 基本文法

クラスの基本とオブジェクト指向プログラミング

カプセル化 継承と多相性 継承の応用 例外入出力ライブラリの基本

文字列、数値クラスの基本

ジェネリクスアルゴリズムとデータ構造の実装・1(リンクリスト)

アルゴリズムとデータ構造の実装・2(キューとスタック)

アルゴリズムとデータ構造の使用

Servlet/JSPによるWebアプリケーション開発の概要

Javaの応用利用例

科目名基本レベル

<IT 知識体系上の関連部分> 科目名 1 2 3 4 5 6 7 8 9 10 11 12 13

1IT-IAS 情報保証と情報セキュリティ

IT-IAS1.基礎的な問題

IT-IAS2.情報セキュリティの仕組み(対策)

IT-IAS3.運用上の問題

IT-IAS4.ポリシー IT-IAS5.攻撃IT-IAS6.情報セキュリティ分野

IT-IAS7.フォレンジック(情報証拠)

IT-IAS8.情報の状態

IT-IAS9.情報セキュリティサービス

IT-IAS10.脅威分析モデル

IT-IAS11.脆弱性

2

IT-SP 社会的な観点とプロフェッショナルとしての課題

IT-SP1.プロフェッショナルとしてのコミュニケーション

IT-SP2.コンピュータの歴史

IT-SP3.コンピュータを取り巻く社会環境

IT-SP4.チームワーク

IT-SP5.知的財産権

IT-SP6.コンピュータの法的問題

IT-SP7.組織の中のIT

IT-SP8.プロフェッショナルとしての倫理的な問題と責任

IT-SP9.プライバシーと個人の自由

3 IT-IM 情報管理IT-IM1.情報管理の概念と基礎

IT-IM2.データベース問合わせ言語

IT-IM3.データアーキテクチャ

IT-IM4.データモデリングとデータベース設計

IT-IM5.データと情報の管理

IT-IM6.データベースの応用分野

4IT-WS Webシステムとその技術

IT-WS1.Web技術 [1-Ⅰ-7]

IT-WS2.情報アーキテクチャ [1-Ⅰ-7]

IT-WS3.デジタルメディア

IT-WS4.Web開発 IT-WS5.脆弱性IT-WS6.ソーシャルソフトウェア

5IT-PF プログラミング基礎

IT-PF1.基本データ構造

IT-PF2.プログラミングの基本的構成要素

IT-PF3.オブジェクト指向プログラミング

IT-PF4.アルゴリズムと問題解決

IT-PF5.イベント駆動プログラミング

IT-PF6.再帰

6IT-IPT 技術を統合するためのプログラミング

IT-IPT1.システム間通信 [1-Ⅰ-3]

IT-IPT2.データ割り当てと交換

IT-IPT3.統合的コーディング

IT-IPT4.スクリプティング手法

IT-IPT5.ソフトウェアセキュリティの実現

IT-IPT6.種々の問題

IT-IPT7.プログラミング言語の概要

7CE-SWE ソフトウェア工学

CE-SWE0.歴史と概要

CE-SWE1.ソフトウェアプロセス

CE-SWE2.ソフトウェアの要求と仕様

CE-SWE3.ソフトウェアの設計

CE-SWE4.ソフトウェアのテストと検証

CE-SWE5.ソフトウェアの保守

CE-SWE6.ソフトウェア開発・保守ツールと環境 [1-Ⅰ-4]

CE-SWE7.ソフトウェアプロジェクト管理

CE-SWE8.言語翻訳CE-SWE9.ソフトウェアのフォールトトレランス

CE-SWE10.ソフトウェアの構成管理

CE-SWE11.ソフトェアの標準化 [1-Ⅰ-6]

8

IT-SIA システムインテグレーションとアーキテクチャ

IT-SIA1.要求仕様IT-SIA2.調達/手配

IT-SIA3.インテグレーション [1-Ⅰ-4]

IT-SIA4.プロジェクト管理

IT-SIA5.テストと品質保証

IT-SIA6.組織の特性

IT-SIA7.アーキテクチャ

9IT-NET ネットワーク

IT-NET1.ネットワークの基礎

IT-NET2.ルーティングとスイッチング

IT-NET3.物理層IT-NET4.セキュリティ

IT-NET5.アプリケーション分野 [1-Ⅰ-5]

IT-NET6.ネットワーク管理

CE-NWK0.歴史と概要

CE-NWK1. 通信ネットワークのアーキテクチャ

CE-NWK2.通信ネットワークのプロトコル

CE-NWK3.LANとWAN

CE-NWK4.クライアントサーバコンピューティング [1-Ⅰ-3]

CE-NWK5.データのセキュリティと整合性

CE-NWK6.ワイヤレスコンピューティングとモバイルコンピューティング

CE-NWK7.データ通信

CE-NWK8.組込み機器向けネットワーク

CE-NWK9.通信技術とネットワーク概要

CE-NWK10.性能評価

CE-NWK11.ネットワーク管理

CE-NWK12.圧縮と伸張

CE-NWK13.クラスタシステム

CE-NWK14.インターネットアプリケーション [1-Ⅰ-5,7]

CE-NWK15.次世代インターネット

CE-NWK16.放送

11IT-PT プラットフォーム技術

IT-PT1.オペレーティングシステム [1-Ⅰ-3]

IT-PT2.アーキテクチャと機構

IT-PT3.コンピュータインフラストラクチャ

IT-PT4.デプロイメントソフトウェア [1-Ⅰ-4]

IT-PT5.ファームウェア

IT-PT6.ハードウェア

12CE-OPS オペレーティングシステム

CE-OPS0.歴史と概要

CE-OPS1.並行性CE-OPS2.スケジューリングとディスパッチ

CE-OPS3.メモリ管理

CE-OPS4.セキュリティと保護

CE-OPS5.ファイル管理

CE-OPS6.リアルタイムOS

CE-OPS7.OSの概要CE-OPS8.設計の原則

CE-OPS9.デバイス管理

CE-OPS10.システム性能評価

コンピュー

ハー

ドウェ

アと

アー

キテクチャ

13CE-CAO コンピュータのアーキテクチャと構成

CE-CAO0.歴史と概要

CE-CAO1.コンピュータアーキテクチャの基礎

CE-CAO2.メモリシステムの構成とアーキテクチャ

CE-CAO3.インタフェースと通信

CE-CAO4.デバイスサブシステム

CE-CAO5.CPUアーキテクチャ

CE-CAO6.性能・コスト評価

CE-CAO7.分散・並列処理

CE-CAO8.コンピュータによる計算

CE-CAO9.性能向上

14 IT-ITF IT基礎IT-ITF1.ITの一般的なテーマ [1-Ⅰ-4]

IT-ITF2.組織の問題

IT-ITF3.ITの歴史

IT-ITF4.IT分野(学科)とそれに関連のある分野(学科)

IT-ITF5.応用領域IT-ITF6.IT分野における数学と統計学の活用

CE-ESY0.歴史と概要

CE-ESY1.低電力コンピューティング

CE-ESY2.高信頼性システムの設計

CE-ESY3.組込み用アーキテクチャ

CE-ESY4.開発環境CE-ESY5.ライフサイクル

CE-ESY6.要件分析 CE-ESY7.仕様定義 CE-ESY8.構造設計 CE-ESY9.テストCE-ESY10.プロジェクト管理

CE-ESY11.並行設計(ハードウェア、ソフトウェア

CE-ESY12.実装

CE-ESY13.リアルタイムシステム設計

CE-ESY14.組込みマイクロコントローラ

CE-ESY15.組込みプログラム

CE-ESY16.設計手法

CE-ESY17.ツールによるサポート

CE-ESY18.ネットワーク型組込みシステム

CE-ESY19.インタフェースシステムと混合信号システム

CE-ESY20.センサ技術

CE-ESY21.デバイスドライバ

CE-ESY22.メンテナンス

CE-ESY23.専門システム

CE-ESY24.信頼性とフォールトトレランス

複数領域にまたがるもの

15CE-ESY 組込みシステム

システム基盤

10CE-NWK テレコミュニケーション

分野

組織関連事項と情報システム

応用技術

ソフトウェ

アの方法と技術

Page 3: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

OSS モデルカリキュラムの学習ガイダンス

4. OSS モデルカリキュラム固有の知識 OSS モデルカリキュラム固有の知識として、Java 言語の特徴、記述、開発手法、および

Web やデータベースを扱う手法がある。Web に関してはサーバ側のサービスを実現する

Servlet や JSP を、データベースに関してはドライバである JDBC を内容として含む。 科目名 第1回 第2回 第3回 第4回 第5回 第6回 第7回

(1) Javaプログラムの例

(1) Java言語の書き方の特徴

(1) オブジェクト指向の概要

(1) カプセル化 (1) 継承 (1) 抽象クラス (1) 例外

(2) Javaのオープンソースとしての特徴

(2) 基本的なプログラム記述の例

(2) クラスの実装 (2) アクセス修飾子 (2) オーバーライド (2) インタフェース

(3) Javaによる開発の全体像(ワークショップ)

(3) アプレット (3) パッケージ (3) オブジェクト指向を活用したプログラミング手順

(3) instanceof演算子

(4) 入出力 (4) サンプルプログラム

(4) サンプルプログラム

(4) サンプルプログラム

(5) サンプルプログラム

第8回 第9回 第10回 第11回 第12回 第13回 第14回 第15回

(1) 文字ストリーム (1) ラッパクラス (1) ジェネリクスとは (1) リンクリストの概要

(1) リンクリストによるスタック

(1) コレクションクラスとは

(1) Webアプリケーション

(1) アノテーション

(2) バイトストリーム (2) Stringクラス (2) ジェネリクスクラス (2) リンクリストの実装

(2) リンクリストによるキュー

(2) インタフェース (2) Servlet (2) リフレクション

(3) ジェネリクスインタフェース

(3) リンクリストへの操作

(3) よく使用されるコレクションクラス

(3) JSP

(4) ジェネリクスメソッド

(4) オートボクシング (4) 開発プラットフォーム

4-1-基 Javaに関する知識

(網掛け部分は IT 知識体系で学習できる知識を示し、それ以外は OSS モデルカリキュラム固有の知識を示している)

Page 4: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

スキル区分 OSS モデルカリキュラムの科目 レベル

プログラミング分 基本 野 4-1-基 Java に関する知識

習得ポイント va 言語の歴史、特長、種類 4-1-基-1. Ja

対応する 第 1 回 Java の基本

コースウェア

4

概念と特有な機能、発展の歴史、Java が登場した背景と必然性、Java 利用のメリットな

ど、Java プログラミングを理解する前におさえておくべき項目として、Java 言語にまつわる様々なトピ

介する。

-1-基-1. Java 言語の歴史、特長、種類

Java の基本

ックを紹

【学習の要点】

ンソースと

特徴がある。

と中間言語を用い、Write Once、 Run Anywhere を実現している。

* Java には動作対象によって JavaEE、JavaSE、JavaME の3種類がある。

* Java プログラムには Web ブラウザ上で動作するアプレットや Web サーバ上で動作するサーブレ

ットといった形態がある。

図 4-1-基-1 Java プログラムの実行環境

* Java はサン・マイクロシステムズ社が 1996 年に発表した言語であり、現在ではオープ

して開発が続けられている。

* Java には、オブジェクト指向、ポインタの廃止、ガベージコレクションを装備等の

* Java は仮想マシン

Javaプログラム

Macの仮想マシン

Windowsの仮想マシン

Linuxの仮想マシン

Mac OS X Windows Linux

一つのプログラムがどの環境でも動くWrite Once, Run Anywhere

4-1-基 - 1

Page 5: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

【解説】

リケーション開発

た組み込み機器用の開発環境がリリースされた。そして今

にサーバサイドの Web アプリケーションや、携帯電話等に搭載されている組み込み機器

きなくなった。

排除された。

づけを採用しているため、変数に型自体からして違う値などが入って起こるバグを最

* コンパイルしたファイルは中間言語に変換され、Java 仮想マシン上で実行される。

を一度作ってしまえばそのプログラムがどこの環境でも動くということを意味する。

各自が作ったソースを統合する

理は非常に複雑でバグの原因やパフォーマンスの低下につながっていたが、ガベージ

コレクションによってそれらの問題が軽減される。

* ポインタを廃止したことで、ポインタ起因のバグが出なくなった。

* オブジェクトの扱いのあいまいさや複雑さを防ぐため、多重継承を禁止した。

* バグの原因の多くは変数に意図しない値が入ることだが、それを防ぐために静的な型づけが採

用された。

1) Java の歴史

Java はサン・マイクロシステムズ社によって開発され、1996 年に正式発表された。

初期は Web ブラウザ上で動く、アプレットという動的な Web ページを実現するアプリケーションとし

て使われていたが、このアプレットとしての役割は Flash などに取って代わられた。しかしその後、

Java SE といった基本的な開発環境に加え、Java EE といったサーバサイドのアプ

に特化した開発環境や、Java ME といっ

では、主

技術など、非常に幅広い分野で利用されている。

2) Java の特徴

* 仮想マシンにより環境を問わず実行できるため、環境に依存しないアプリケーションが作れる。

* オブジェクト指向言語であり、コードの生産性が高い。

* ガベージコレクションを備えており、メモリ管理の手間が非常に少ない。

* ポインタを廃止したことにより、不正なメモリ参照が起

* 多重継承を禁止しているため、メソッド呼び出しの際のあいまいさが

* 静的な型

小限に抑えられる。

3) Java の思想と背

* Java の思想を表す言葉で、『Write Once, Run Anywhere』という言葉がある。これは、プログラ

* 大人数でプログラムを作る際、オブジェクト指向であることにより

のが簡単になる。

* メモリ管

4-1-基- 2

Page 6: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

スキル区分 OSS モデルカリキュラムの科目 レベル

プログラミング分 する知識 基本 野 4-1-基 Java に関

習得ポイント Java の実行手順 4-1-基-2.

対応する 第 2 回 基本文法

コースウェア

4

、Javaプログラムの記述からコンパイル、実行までの手順を紹介する。さら

に様々な Java のエディションや実行環境の整備など、Java を用いたプログラミングを実施する際に

べき点について述べる。

-1-基-2. Java の実行手順

Javaプログラムの例を示し

留意す

【学習の要点】

常 Sun のサイトから Java SE Development Kit (JDK)をダウン

ロードする。これは無償で利用できる。

* Java のソースコードをコンパイルすると、中間言語で記述されたクラスファイルが作成され、それ

を仮想マシン上で実行することができる。

図 4-1-基-2 Java プログラミングの流れ

* Java の開発環境を整えるには、通

ソースファイル

HelloWorldSample.java

class HelloWorldSample {public static void main( String args[] ) {System.out.println( "Hello world!" );

}}

JVM(Java

仮想マシン)

Sample.class(バイトコード)

Javacコンパイラ プログラム実行

4-1-基 - 3

Page 7: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

【解説】

pment Kit) をダウ

aアプリケーション

ava EE

SDKを、モバイル用のJavaアプリケーションを開発したい場合はSun Java Wireless Toolkitを、ダウ

ava SE SDKをダウンロードすればよい。

トエディタで記述する。

トとして扱われる部分は次の 2 通りがある。

- 「//」から行末までの間

- 「/*」から「*/」までの間

* プログラム中の各命令は、一般に「;」で終わる。

Linux の場合、以下のような手順でコンパイルをする。

ソースファイルが保存されているディレクトリに移動する。

ル名>と入力してコンパイルを実行する。ソースファイル名には、java まで含

ファイルが作成さ

Linux の場合、以下の手順でコンパイルしたファイルを実行する。

* ターミナルを起動し、クラスファイルが保存されているディレクトリに移動する。しかし、コンパイル

をした直後で既にラスファイルが保存されているディレクトリにいるなら移動する必要はない。

* java <クラス名>と入力して JVM を起動する。例えば、クラスファイルが Sample.class という名前

だったら、java Sample と入力する。最後の .class は含めないことに注意する。

1) Java プログラミング環境の整え方

SunのJavaのページ、http://java.sun.com/にアクセスして、JDK (Java SE Develo

ンロードする。特に理由がなければ、最新版をダウンロードするとよい。通常のJav

を開発したい場合はJava SE SDKを、Web用のJavaアプリケーションを開発したい場合はJ

ンロードする。通常はJ

2) Java プログラムの記述の仕方

* プログラムは、テキス

* プログラム中でコメン

* ファイルを保存するときは、拡張子を「.java」とする。

3) Java プログラムのコンパイルの仕方

* ターミナルを起動し

* javac <ソースファイ

める。

* ソースファイルが保存されているディレクトリに、 .class という拡張子が付いた

れていることを確認する。

4) Java プログラムの実行の仕方

4-1-基- 4

Page 8: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

スキル区分 OSS モデルカリキュラムの科目 レベル

プログラミング分 基本 野 4-1-基 Java に関する知識

習得ポイント Java を用いたプログラミング手法 4-1-基-3.

対応する 第 2 回 基本文法

コースウェア

4

構造を説明する。基本的なプログラム要素として、識別子、変数、

型、クラス、演算子、制御構文について解説する。またアプレットやサーブレットといった形態、クラス

リの利用についても言及する。

-1-基-3. Java を用いたプログラミング手法

Java の基本的なしくみ、特徴、

ライブラ

【学習の要点】

* Java には、識別子、変数、型、クラス、演算子、制御構文が基本的な仕組みとして存在する。

* Java プログラムには Web ブラウザ上で動作するアプレットや Web サーバ上で動作するサーブレ

ットといった形態がある。

* Java にはクラスライブラリが用意されており、それを利用することでプログラムの生産性の向上が

見込める。

図 4-1-基-3 演算子の変数と種類

演算子

算術演算子 論理演算子

+-*/%+-~++--<<>>>>>

記号 名前加算

減算

乗算

除算

剰余

プラス

マイナス

補数

インクリメント

デクリメント

左シフト

右シフト

符号なし

右シフト

変数の型

記号 名前

&|^

>>=<<==!=instanseof!&&||?:new

ビット論理積

ビット論理和

ビット排他的

論理和

より大きい

以上

未満

以下

型比較

論理否定

論理積

論理和

オブジェクト

生成

整数

byte (8bit)short (16bit)int (32bit)long (64bit)

浮動小数

float (32bit)double (64bit)

文字

char (16bit)

論理

boolean

= 等価

非等価

4-1-基 - 5

Page 9: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

【解説】

数字などの名前で識別するものである。

class など Java の予約語は識別子として用いることはできない。

2) Java の型

ず型の宣言が必要になる。

ラムは主に値を計算することによって様々な機能を果たす。値をどのように計算するのかを

制御構文

データの値によっ

ラムの挙動が変わるようにすることができる。主な制御構文とその働きは以下のとおりであ

件に当てはまった場合と、当てはまらなかった場合の挙動を制

の条件とそれに対する挙動を制御できる。

* for:指示した回数だけ挙動を繰り返す。

*

挙動が実行され、その後指示した条件に当てはまっている間だけ挙

、Java アプレット、

レットといった種類がある。

ザ)で実行される

されなくなった。

Ruby などスクリプト

で処理される CGI と比べると、様々なオーバーヘッドが無いために動作が速いという特徴がある。

6) クラスライブラリ

Java のプログラムを書くときに、すべてのクラスを一から定義しなくとも、よく使われるクラスに関して

は、クラスライブラリによってすでに用意されているものを利用すればよい。クラスライブラリを利用

することによりコードの生産性を高めることができるうえ、十分にテストされたライブラリを利用すれば

バグを減らすことも可能となる。

1) 識別子とは

Java でいう識別子とは、変数などを人間が読みやすい英

void、

Java は静的な型づけを採用しているため、変数を用いる際には必

3) 演算子について

プログ

命令するためのものが演算子である。

4)

Java には制御構文が用意されている。これらの制御構文にデータを渡すと、その

てプログ

る。

* if ~ else if ~ else:ある条

御する。

* switch:複数

while:指示した条件に当てはまっている間だけ挙動を繰り返す。

* do ~ while:まず一度は

動を繰り返す。

5) Java プログラムの種類

Java プログラムの実行形態にはコマンドラインで実行されるコンソールプログラム

Java サーブ

Java アプレットはネットワーク経由でダウンロードされ、クライアント(Web ブラウ

Java プログラムのことである。現在では Adobe Flash などの普及によりあまり利用

Java サーブレットは Web サーバ上で実行される Java プログラムである。Perl や

4-1-基- 6

Page 10: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

スキル区分 OSS モデルカリキュラムの科目 レベル

プログラミング分 基本 野 4-1-基 Java に関する知識

習得ポイント 向プログラミング 4-1-基-4. カプセル化によるオブジェクト指

対応する 第 3 回 クラスの基本とオブジェクト指向プログラミング

コースウェア 第 4 回 カプセル化

4

徴とメリットを説

、オブジェクト、メソッド、コンストラクタなどオブジェクト指向の様々な概念を紹介し、オ

ブジェクト指向による代表的なプログラミング手法を示す。メンバへのアクセス制御とカプセル化の

-1-基-4. カプセル化によるオブジェクト指向プログラミング

Java の大きな特徴であるオブジェクト指向プログラミングについて、その基本的な特

明する。クラス

概念を説明する。

【学習の要点】

* オブジェクト指向プログラミングとは、データと関数を同時に扱うことによってコー

くし、疎結合なプログラム

ドの独立性を強

を設計するプログラミング技法である。

* オブジェクトとはひな形であるクラスに実際の値を与えて作られる、クラスを実体化したものであ

る。

* オブジェクト内のデータやオブジェクトの振る舞いを隠蔽することでオブジェクトの独立性を高め

ることを、カプセル化という。

図 4-1-基-4 カプセル化

* クラスはフィールドとメソッドによって成り立っている、ひな形の概念である。

オブジェクト1 オブジェクト2

private フィールド

private フィールド

public メソッド

public メソッド

アクセス不可

アクセス可メソッド

アクセス

4-1-基 - 7

Page 11: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

【解説】

ドの独立性を強く

である。オブジェクト指向により、コー

更がしやすい柔軟なプログラムを作ることができる。

り)を定義したものである。クラス

ールド、クラスの関数をメ^ソッドと呼ぶ。また、フィールドやメソッドを、そのクラスのメン

ば Person というクラスを定義したい場合は以下のように記述する。

class Person {

1) オブジェクト指向プログラミングとは

オブジェクト指向プログラミングとは、データと関数を同時に扱うことによってコー

し、疎結合なプログラムを設計するためのプログラミング技法

ドの変

2) クラスとは

クラスとは、対象とするものに付随させる変数や関数(処理のまとま

の変数をフィ

バと呼ぶ。例え

例)

フィールドの宣言

メソッドの宣言と処理の記述

}

3) オブジェクト(インスタンス)とは

クラスの性質や機能を持った実体のことをオブジェクトという。

用するためには、次の処理を行う。

する変数を宣言する。

ェクトを代入する。

例)

Person person1;

オブジェクトを利

* 定義したクラスを型と

* 定義したクラスのオブジェクトを生成し、宣言した変数にそのオブジ

person1 = new Person();

オブジェクトは、一つのクラスから複数作ることができる。クラスという型からオブジェクトという実体が

に自動実行される処理を指す。Java では、クラス定義の中

飾子

クラス、および、クラスのメンバにはアクセス修飾子を付けることができる。クラス内のメンバへのアク

セスを制御することでフィールドの値やメソッドの動作を隠蔽し、カプセル化を実現する。

アクセス修飾子には次の種類がある。省略した場合は同じパッケージ内からのみアクセスできる。

* private: 同じクラス内からのみアクセスできる。

* protected: 同じパッケージ内か、そのクラスのサブクラスからのみアクセスできる。

* public: アクセス制限なし。

複数生成されると考えれば分かりやすい。

4) コンストラクタとは

コンストラクタとは、オブジェクトの生成時

で、クラス名と同じ名前で処理を定義することで、その処理がコンストラクタとして扱われる。

5) カプセル化とアクセス修

4-1-基- 8

Page 12: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

スキル区分 OSS モデルカリキュラムの科目 レベル

プログラミング分 基本 野 4-1-基 Java に関する知識

習得ポイント と多相性を利用したクラスの再利用 4-1-基-5. 継承

対応する 第 5 回 継承と多相性

コースウェア

4

多相性について説明する。スーパークラスをサブクラス

に継承させる方法を解説し、また、オーバーライドによる多相性を解説する。さらにパッケージにつ

介し、クラスのまとめ方についても言及する。

-1-基-5. 継承と多相性を利用したクラスの再利用

オブジェクト指向の最大の特徴である継承と

いても紹

【学習の要点】

* クラスを継承することで効率よく実装することができ、クラスの再利用を行うことができる。

* 継承したメソッドをオーバーライドすることで、サブクラスによって処理を変える多相性を実現す

ることができる。

* パッケージを利用しクラスを分類することで、そのクラスの役割をより明確にすることができる。

図 4-1-基-5 継承と多相性

4-1-基 - 9

Page 13: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

【解説】

しいクラスを作成するこ

サブクラスは、スーパークラスの特性をすべて引き継ぎ、過去の資産を再利用し差分のみで新しい

とができるため、効率よく実装を行うことができる。

き(再実装)するこ

用する。

設定することがで

のインスタンスのようにメソッドを呼び出すことができる。この時にサブクラスのメソ

ーライドされていた場合は、オーバーライドされたそのメソッドが呼ばれる。このように

スーパークラスのメソッドからインスタンスとなっているサブクラスのメソッドを呼び出すことができる

ード

ドを上書きした場合、それらにア

4) final キーワード

義を行うと、そのメソッドのオーバーライドが禁止される。

5) パッケージ

パッケージとはクラスを名前空間と呼ばれるまとまりにまとめる機能である。同じカテゴリのクラスをま

とめることでクラスの責務を明確にすることや、パッケージに対するアクセス権を付与することでクラ

スをパッケージ内で限定的に利用することができる。

1) クラスの継承

オブジェクト指向の構成要素の一つで、クラスの特性を引きついだ、別の新

とを差す。継承された元のクラスを「スーパークラス」、継承したクラスを「サブクラス」と呼ぶ。

クラスを作成するこ

2) オーバーライドと多相性

オーバーライドとはスーパークラスのメソッドを継承されたサブクラスで新しく上書

とである。スーパークラスの特性を利用しつつ、メソッドの機能を変えたい場合に利

継承関係にあるクラス間ではスーパークラスの変数にサブクラスのインスタンスを

き、スーパークラス

ッドがオーバ

仕組みを多相性と呼ぶ。

3) super キーワ

継承やオーバーライドによってスーパークラスのメソッドやフィール

クセスするときには super キーワードを用いてアクセスする。

クラスに final キーワードを用いて定義を行うと、そのクラスの継承が禁止される。

またメソッドに final キーワードを用いて定

4-1-基- 10

Page 14: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

スキル区分 OSS モデルカリキュラムの科目 レベル

プログラミング分 基本 野 4-1-基 Java に関する知識

習得ポイント ンタフェースを利用したクラスの抽象化 4-1-基-6. イ

対応する 第 6 回 継承の応用

コースウェア

4

ことのできない抽象クラスやインタフェースの概念を解説する。抽象クラスやイン

タフェースの定義方法を説明し、抽象クラスを継承したクラスやインタフェースを実装したクラスの作

説する。

-1-基-6. インタフェースを利用したクラスの抽象化

インスタンス化する

り方を解

【学習の要点】

* 抽象クラスを利用することで、共通部分のみを抜き出したクラスを作成することができる。

* インタフェースを利用してクラスの使い方のみ定義することで、クラス間をより疎結合にすること

ができる。

図 4-1-基-6 抽象クラスとインタフェース

4-1-基 - 11

Page 15: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

【解説】

抽象メソッド

)サブクラスに実装

を任せるような場合に利用する。抽象クラスは abstract キーワードを用いてクラスを定義する。

キーワードを用いて宣言された実装を持たないメソッドで、呼び出し

グニチャ)のみ定義され、実装はサブクラスにて行うメソッドである。抽象メソッドを持

を継承する場合は、通常の継承と同じく extends キーワードを用いる。全ての抽象メソッ

なかっ

インタフェースはシグニチャのみ取り決めたい場合に利用する。すべてのメソッドは抽象メソッドとし

て定義され、メソッドの中身はインタフェースを実装したクラスで記述される。

インタフェースの実装には implements キーワードを利用してクラスへ継承する。

ンタフェースの継承を定義する場合

は extends キーワードを利用する。

instanceof 演算子

オブジェクトのクラスや実装されているインタフェースを知るために利用する。instanceof 演算子を

利用することで特定のクラスやインタフェースを条件に分岐することができる。

1) 抽象クラスと

* 抽象クラスとは

抽象クラスは共通部分のみ抜き出し、メソッドの一部を実装せず(抽象メソッド

また、抽象クラスはインスタンス化することができない。

* 抽象メソッドとは

抽象メソッドとは abstract

の方法(シ

つクラスは必ず抽象クラスとなる。

2) 抽象クラスの継承

抽象クラス

ドを実装したサブクラスはインスタンスを生成することができる。1 つでも抽象メソッドを実装し

たサブクラスは抽象クラスとなる。

3) インタフェース

インタフェースには定数を定義することができるが、変数を定義することはできない。

4) インタフェースの継承

インタフェース間にも継承関係を定義することが可能である。イ

5)

4-1-基- 12

Page 16: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

スキル区分 OSS モデルカリキュラムの科目 レベル

プログラミング分 基本 野 4-1-基 Java に関する知識

習得ポイント イブラリを使用したプログラミング 4-1-基-7. 標準クラスラ

対応する 第 8 回 入出力ライブラリの基本

コースウェア 第 9 回 文字列、数値クラスの基本

4

や文字列といった基本的なクラスと、ファイル入出力機能を持つクラスを紹介する。それぞれク

ラスの特徴や使い方を説明し、ライブラリを利用した簡潔で読みやすいプログラムの書き方を解説

-1-基-7. 標準クラスライブラリを使用したプログラミング

数値

する。

【学習の要点】

パクラスと呼ばれる基本データ型の数値を扱うクラスが存在する。データ型を変換するときに

* 文字列は String クラスで表わされ、基本的な文字列操作は String クラスのメンバで行うことがで

きる。

* ストリームクラスを利用することで、ファイル操作を簡単に行うことができる。

図 4-1-基-7 よく使用される標準クラスライブラリの一覧

* ラッ

もこのクラスを利用する。

4-1-基 - 13

Page 17: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

【解説】

また、基本データ

使

スの主なメンバは次の通り。

LUE/MAX_VALUE

る定数。

つのメソッドが存在する。インスタンスメソッドの

ng()は、インスタンスが保持する値を文字列に変換して出力する。クラスメソッドの

* parseXXX()

引数で渡された文字列をそのデータ型の値に変換する。XXX には対応するデータ型の名前が

ンスタンスは 1 つ

を行うメソッドが多数用意されている。

クラスと、バイ

ト単位のデータを扱うためのバイトストリームクラスが用意されている。

er クラスが処理の中心となり、

。ファイルの読み書きを行う場

承した FileReaderクラスと FileWriterクラスを利用する。入出力処理の

ることが多い。

dReader(new FileReader("a.txt"));

1) ラッパクラス

個々の基本データに対応するクラスが存在し、データ型の変換などに使用する。

型の値を持ったクラス型のインスタンスを作るので、データを参照型として扱いたい場合などに

用される。ラッパクラ

* MIN_VA

そのデータ型で設定可能な最小値(MIN_VALUE)、最大値(MAX_VALUE)を保持す

* toString()

同名でインスタンスメソッドとクラスメソッドの 2

toStri

toString()は、引数として渡された値を文字列に変換する。

入る(例: Integer クラスであれば、parseInt()メソッド)。

2) 文字列クラ

Java では文字列を表すクラスとして String クラスが用意されている。String 型のイ

の固定文字列を保持する。String クラスには文字列操作

3) ストリームクラス

Java ではストリームを扱うためのクラスとして、文字処理のための文字ストリームを扱う

文字ストリームでは InputStreamReader クラスと InputStreamWrit

文字ストリームとバイトストリームの変換や、文字コードの変換を行う

合にはこれらのクラスを継

効率を良くするために BufferedReader クラスと BufferedWriter クラスを併用す

例)

BufferedReader br = new Buffere

BufferedWriter bw = new BufferedWriter(new FileWriter("a.txt"));

String s;

while ((s = br.readLine()) != null) { // データがなくなるまで読み込む。

bw.write(s); // バッファへ書き出し。

bw.newLine(); // 改行を書き出し。

bw.flush(); // ファイルへ出力。

}

bw.close();

br.close();

4-1-基- 14

Page 18: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

スキル区分 OSS モデルカリキュラムの科目 レベル

プログラミング分 基本 野 4-1-基 Java に関する知識

習得ポイント したメタプログラミング 4-1-基-8. ジェネリクスを使用

対応する 第 10 回 ジェネリクス

コースウェア

4

ネリクスの基本、特徴やメリットを解説する。ジェネリクスを利用したメタプログラミングを紹介し、

データ型に依存しない、汎用性の高いクラス、インタフェース、メソッドの具体的な実装方法を説明

-1-基-8. ジェネリクスを使用したメタプログラミング

ジェ

する。

【学習の要点】

、メソッドを実装する

ことができる。

* ジェネリクスクラスやメソッドは、型パラメータを使用して宣言/実装される。ジェネリクスクラスやメ

ソッドは、使用するときに型が指定され、型パラメータがその型に置き換えられて動作する。

図 4-1-基-8 ジェネリクスクラス

* ジェネリクスを使用することで、データ型に依存しないクラス、インタフェース

4-1-基 - 15

Page 19: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

【解説】

クスを利用するこ

ッドを汎用化することができる。

クションを中心に利用されている。

Tは型パラメータであり、実際の型は使うときに

る型はオブジェクト参照のみとなる。基本データ型を使用する場合、たとえば

利用する。

class Generics<T> { // ジェネリクスクラスの宣言

1) ジェネリクス

ジェネリクスとは型に依存せず、型自体をパラメータとする考え方である。ジェネリ

とで従来であれば型ごとに実装していたクラス、インタフェース、メソ

Java の標準クラスライブラリでもコレ

2) ジェネリクスクラス/ジェネリクスインタフェース

クラスやインタフェース内の型を汎用化する。例中の

決定される。指定でき

int 型のデータを使用したいときには Integer 型を

* ジェネリクスクラスの宣言

private T value; // フィールド

public setValie(T value) { this.value = value; } // メソッド

}

* ジェネリクスクラスの使用

Generics<Integer> intVal = new Generics<Integer>();

3)

型を汎用化する。例中の T は型パラメータであり、実際の型はメソッドの呼び出し時に

public <T> void valChange(T val) // ジェネリクスメソッドの宣言

ジェネリクスメソッド

メソッド内の

決定される。

* ジェネリクスメソッドの宣言

{ ・・・ }

* ジェネリクスメソッドの呼び出し

int x = valChange<Integer>( 10 );

4-1-基- 16

Page 20: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

スキル区分 OSS モデルカリキュラムの科目 レベル

プログラミング分 基本 野 4-1-基 Java に関する知識

習得ポイント の実装 4-1-基-9. Java によるアルゴリズム

対応する

コースウェア 第 12 回 アルゴリズムとデータ構造の実装・2

造の使用

第 11 回 アルゴリズムとデータ構造の実装・1

第 13 回 アルゴリズムとデータ構

4

標準クラスライブラリで用意されたデータ構造(コレクション)とアルゴリズムを紹介し、具体的な利用

用場面を解説する。

-1-基-9. Java によるアルゴリズムの実装

方法と利

【学習の要点】

* 基本的なデータ構造やアルゴリズムは標準クラスライブラリで提供されている。

* ジェネリクスで実装されているコレクションクラスを使用することで、様々なデータ構造を簡単に

利用することができる。

* コレクションクラスで基本データ型を使用する場合には、オートボクシング機能を利用することで、

コードの量を減らし可読性を上げることができる。

図 4-1-基-9 アルゴリズムの使用例

import java.util.*;

class AlgorithmSample{public static void main( String args[] ){List<Integer> list = new LinkedList<Integer>();for ( int i = 0; i < 10; ++i ) {

list.add( i );}

for ( Integer value : list ) {System.out.println( "value: " + value );

}

System.out.println( "" );

Stack<Integer> stack = new Stack<Integer>();for ( int i = 0; i < 10; ++i ) {

stack.push( i );}

while ( !stack.empty() ) {System.out.println( "value: " + stack.pop() );

}}

}

リンクリストクラスの利用

挿入した順番に取り出される

スタッククラスの利用

挿入した順番と逆に取り される出

4-1-基 - 17

Page 21: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

【解説】

意されている。ほ

とんどのクラスはジェネリクスを使用して実装されており、データ型を問わずに利用することができ

能を定義したインタフェース。用意されているコレクションに

.util.List

られたコレクションで、配列のように整数値のインデックスで、もしくは、Iterator を使用

どの操作が定義さ

l.Map

決定する値へのアクセスを提供する。

追加や削除、値の探索、キーの探索などの操作が定義されている。

3)

ションから、よく使用されるものを以下に紹介する。

列を提供する。List インタフェースを実装する。通常の配列と異なり、宣言時に要素

nkedList

Stack

加え、先頭項目

Map インタフェースを実装する。

4) Autoboxing/Unboxing

オートボクシング(Autoboxing)は、基本データ型からラッパクラスへの変換を自動で行う機能である。

逆の機能をアンボクシング(Unboxing)という。特にジェネリクスを利用したコレクションで基本データ

型を使用するときに役に立つ。

ArrayList<Integer> li = new ArrayList<Integer>();

1) 標準クラスライブラリのコレクションクラス

Java では、よく利用されるデータ構造を実現するクラスが標準クラスライブラリに用

る。

2) コレクションインタフェース

用意されているコレクションに共通の機

実装されているほか、自作のコレクションに使用することもできる。

* java

順序づけ

して格納された要素にアクセスすることができる。要素の追加や削除、探索な

れている。

* java.uti

キーを値にマッピングするオブジェクト。キーから一意に

キーと値のペアの

コレクションクラス

用意されているコレク

* java.util.ArrayList

可変長の配

数を決定する必要がなく、後から要素を追加・削除・挿入することができる。

* java.util.Li

リンクリストを提供する。List インタフェースを実装する。

* java.util.

スタックを提供する。Listインタフェースを実装する。標準的な pop、push 操作に

を削除せずに読み取る peek、要素を探索する search 操作を持つ。

* java.util.HashMap

キーを値にマッピングした連想配列を提供する。

li.add( 10 ); // オートボクシングにより、int->Integer に変換される。

li.add(new Integer( 10 )); // オートボクシングを利用しない場合。

4-1-基- 18

Page 22: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

4-1-基 - 19

スキル区分 OSS モデルカリキュラムの科目 レベル

プログラミング分 基本 野 4-1-基 Java に関する知識

習得ポイント ション開発 4-1-基-10. Servlet と JSP による Web アプリケー

対応する 第 14 回 Servlet/JSP による Web アプリケーション開発の概要

コースウェア

4

Servlet と JSP による Web アプリケーション開発の手順と内容について解説する。また開発プラットフ

しての Tomcat や JBoss といった代表的な OSS の実装を紹介する。

-1-基-10. Servlet と JSP による Web アプリケーション開発

ォームと

【学習の要点】

* Servlet、JSP は Java で作られた Web アプリケーションである。

* Tomcat や JBoss などは、Web コンテナと呼ばれる Web アプリケーションの実行環境である。

図 4-1-基-10 Servlet と JSP のサンプルコード

Page 23: 4-1-基 Javaに関する知識 - IPA · 2020. 1. 10. · Javaの基本概念と特有な機能、発展の歴史、Javaが登場した背景と必然性、Java利用のメ リットなど、Javaプログラミングを理解する前におさえておくべき項目として、Java言語にまつ

4-1-基- 20

【解説】

ン入力に応じて Web ペ

生成して返す Web アプリケーションの一種である。その特徴は、次のとおりである。

を返すプログラム。Perl や Python で記述される CGI と比べると、サー

め動作が高速という優位性を持つ。

- Web ページがサーブレットによって動的に生成される。

ている。クライアントが JSP ページをリクエストすると、

出して実行する。明示的なコンパイルは不要。

す。

エストを受ける。

ジの中のプログラムから、Servlet を呼び出す。

代表的なオープンソースの開発プラットフォームとして、以下のようなものがある。

)

サーブレットの実行環境である Web コンテナ。

* JBoss Application Server(http://labs.jboss.com/jbossas/)

クライアントとバックエンドの間にあるアプリケーションサーバ。

* Jetty(http://jetty.mortbay.org/)

Web サーバでありサーブレットコンテナでもあるソフト。

1) Servlet と JSP

Servlet も JSP も、共に Java で作られたユーザーからのテキスト入力やボタ

ージを

* Servlet

Java により動的なページ

ブレットはメモリに常駐し待機しているた

その動作の概要を以下に示す。

- クライアントからページのリクエストを受ける。

- 生成された Web ページがリクエストに対するレスポンスとして返される。

* JSP

JSP は HTML の中にプログラムが書かれ

Web コンテナが JSP から Servlet のコードを呼び

その動作の概要を以下に示

- クライアントから JSP ページのリク

- JSP ペー

- JSP ページをコンパイルする。

- ユーザーにコンパイルしたページを返す。

2) 開発プラットフォーム

* Apache Tomcat(http://tomcat.apache.org/