• 検索結果がありません。

17章 プログラムの提供

N/A
N/A
Protected

Academic year: 2021

シェア "17章 プログラムの提供"

Copied!
22
0
0

読み込み中.... (全文を見る)

全文

(1)
(2)
(3)

データ構造

コレクション

」とは、複数のデータをひとまとめに

するクラス

ArrayList以外のコレクション

 TreeSet 要素を常にソートされた状態に保ち、重複を自動的に排除する  HashMap キーと値のペアを要素として保持する  LinkedList ArrayListとほぼ同じだが、リスト中の任意の位置に要素を挿入・削除 するといった処理のパフォーマンスが若干高い  HashSet 要素の重複を自動的に排除し、特定の要素へのアクセスが高速  LinkedHashMap HashMapとほぼ同じだが、個々の要素(キーと値のペア)の操作を、 追加された順に行うことができる

(4)

データ構造

コレクションを「

タイプセーフ

」なもの

(型につ

いての問題が起きにくいもの

)にするのが「

ジェ

ネリックス

」の目的

ArrayList

Object Object Object Object

ArrayList<Fish>

(5)

データ構造

インスタンス作成

変数の宣言と値の代入

メソッドの宣言

(呼び出し)

new ArrayList<Song>();

List<Song> songList = new ArrayList<Song>();

void foo(List<Song> list); x.foo(songList);

(6)

133ページ参照

ArrayList<Egg> myList = new ArrayList<Egg>();

Egg s = new Egg();

myList.add(s);

Egg b = new Egg();

myList.add(b);

(7)

for(int i = 0; i < myList.size(); i++) {

Egg e = myList.get(i);

boilEgg(e);

}

for(Egg e : myList) {

boilEgg(e);

}

(8)
(9)

① ローカル

・ユーザが全コードを自らのシステム上で動かす

② ローカル、リモートの中間(コンビネーション)

・ユーザがクライアント部分のコードを自らのシステム上で動かす ・クライアント部分とサーバ部分をネットワーク経由で接続

③ リモート

・全コードがサーバシステム上で動作 ・ユーザはWebブラウザを介してプログラムを利用

(10)

◇ソースファイルとクラスファイルを分けて保存

① 開発プロジェクト用のディレクトリ作成(ここではMyProject) ② MyProject内にソースファイル用ディレクトリ(source)と クラスファイル用ディレクトリ(classes)作成 ③ source内にソースファイル(末尾が.java)作成 ④ ③をコンパイルし、出来上がるクラスファイルをclassesに格納 -dオプションを使ったコンパイル % cd MyProject/source

% javac –d ../classes MyApp.java

or % javac –d ../classes *.java

実行 % cd MyProject/classes % java MyApp MyApp.class MyApp.java source MyProject classes

(11)

JAR(Java Archive)

Javaプログラムの実行に必要なクラスファイルを1つにまとめるツール

実行可能

JARファイルの作成

① classesディレクトリに全てのクラスファイルをまとめる。 ② manifest.txtを作り、main()メソッド をもつクラス名を書き込む。 ③ jarツールを起動。classes内の全ファイル を収めたJARファイルを作成。 manifest.txt内 Main-Class: MyApp (注)行末に改行文字を入れる % cd Miniproject/classes

% jar –cvmf manifest.txt app1.jar *.class

or % jar –cvmf manifest.txt app1.jar Myapp.class

MyProject Main-Class: MyApp manifest.txt manifest.txt MyApp.class classes (注)JARファイルには ソースコードを 納めない

(12)

JVM(Java Virtual Machine)を用いる

1. コマンドプロンプトの場合

(注)JVMのアクセスできる場所にJARファイルを置く (CLASSPATHにJARファイルの置かれている ディレクトリが指定されている必要がある)

2. アイコンの場合

・アイコンをダブルクリック ・アイコンを右クリック→「開く」メニュー % cd MyProject/classes % java –jar app1.jar

classes

Main-Class: MyApp app1.jar

(13)

複数のクラスをまとめるもの

◆ライブラリ中のクラスを整理しやすくする

◆クラス名の重複を防ぐ

○ パッケージAのcountクラス、パッケージBのcountクラス × パッケージAのcountクラス、パッケージAのcountクラス

◆セキュリティの確保

例)同じパッケージに属するクラスでのみ利用できるクラス

(注)パッケージ名を重複させてはいけない

・ドメイン名を逆にした命名が

一般的

例) com.headfirstjava.project.~ Java API に属するパッケージの例 java.text.NumberFormat java.util.ArrayList java.awt.FlowLayout java.awt.event.ActionEvent java.net.Socket

(14)

クラスをパッケージに所属させる

① パッケージ名を決める ② packageステートメントを クラスのソースコードに入れる ③ パッケージの階層構造に合わせて ディレクトリ作成 package com.headfirstjava; import javax.swing.*;

public class PackageExercise { //クラスのコード } MyProject source classes com com headfirst

java headfirstjava

(15)

*コンパイラと

JVMが、使用するソースファイルと

クラスファイルを全て「見つける」ことができるようにする

sourceディレクトリでコンパイル

(-dオプション使用)

classesディレクトリで実行

% cd Miniproject/source

% javac –d ../classes com/headfirstjava/PackageExercise.java % cd Miniproject/classes % java com.headfirstjava.PackageExercise -dオプション ◇コンパイルして作成されるクラスファイルの保存先を指定 ・パッケージの階層構造を認識、クラスファイル保存先を自動判別 ・パッケージの階層構造に対応するディレクトリが無ければ、 自動的に作成

(16)

*ディレクトリの階層構造ごと

JARファイルに入れる

classesの下に、パッケージの階層構造に

対応するディレクトリを作成。クラスファイル保存。

manifest.txtファイルを作成。

jarツールを起動。JARファイルを作成。

manifest.txt内 Main-Class: com.headfirstjava.PackageExercise (注)クラス名は必ず「完全名」 % cd Miniproject/classes

% jar –cvmf manifest.txt packEx.jar com

packEx.jar PackageExercise.class manifest.txt classes com headfirst java

(17)

JARファイルの内容確認

JARファイルの内容抽出

% jar –tf packEx.jar META-INF/ META-INF/MANIFEST.MF com/ com/headfirstjava/ com/headfirstjava/ PackageExercise.class % cd Skyler % jar –xf packEx.jar Skyler com headfirst java PackageExercise.class MANIFEST.MF packEx.jar META-INF

(18)

JWS(Java Web Start)

…ダウンロード、プログラムの起動などを行う

JWSを利用したプログラム提供

・ユーザのコンピュータ上のWebブラウザを使って起動 ・初回実行時、ユーザのコンピュータにプログラムがダウンロードされる ・2回目以降の実行には、ネットワーク接続,Webページ上のリンクの クリックが不要 ・サーバ上のプログラム変更を自動検知し、ユーザのプログラムへ 自動的に反映 *JVM,JWSの適切なバージョンをユーザのコンピュータにインストール させる必要がある

(19)

① ユーザが

Webページ上の

リンク

をクリック。

拡張子「.jnlp」がついたファイルへのリンク

Web(HTTP)サーバが、.jnlpファイルを送る。

JWSがブラウザによって起動される。

JWSは.jnlpファイルの内容を読み取り、

プログラムの

JARファイルを

サーバにリクエスト。

Webサーバが、JARファイルを提供。

JWSがプログラムを起動

<a href=“MyApp.jnlp”>Click</a>

(20)

.jnlp(Java Network Launch Protocol)ファイル

…実行可能JARファイルの名前などが記述されたXMLファイル <?xml version=“1.0” encodeing=“utf-8”?> <jnlp spec=“0.2 1.0” codebase=“http://127.0.0.1/~kathy” href=“MyApp.jnlp”> <information> <title>kathy App</title> <vendor>Wickedly Smart</vendor> <homepage href=“index.html”/>

<description>Head First WebStart demo</description> <icon href=“kathys.gif”/> <offline-allowed/> </information> <resources> <j2se version=“1.3+”/> <jar href=“MyApp.jar”/> </resources> <application-desc main-class=“HelloWebStart”/> </jnlp>

(21)

① javaファイルを用意 (ここではプロジェクト名:test1、 ソースファイル名:sleepy.java) ② プロジェクト名(ここではtest1) を右クリック→「エクスポート」 ③ 「実行可能JARファイル」を選んで 「次へ」をクリック sleepy.java

public class sleepy {

public static void main(String[] args) { System.out.println("I'm Sleepy..."); }

(22)

③ 起動構成にmain()のあるクラス(ここではsleepy)を指定、 エクスポート先(ここではデスクトップ、 ファイル名はtest1.jar)を指定して、 「完了」をクリック ④ デスクトップ上にjarファイルが 作成される ←コマンドプロンプトから 実行した結果

参照

関連したドキュメント

※ 2 既に提出しており、記載内容に変更がない場合は添付不要

FLOW METER INF-M 型、FLOW SWITCH INF-MA 型の原理は面積式流量計と同一のシャ

質問内容 回答内容.

(1) 再エネおあずかりプラン[時間帯別電灯(夜間 8

67 の3−12  令第 59 条の7第5項の規定に基づく特定輸出者の承認内容の変 更の届出は、

計   画  事  項 内              容

確認事項 確認項目 確認内容

確認事項 確認項目 確認内容