Java I 第2回 (9/22)
この講義(Java I)の目的
プログラミングの入門
 「開発環境」は Java
 火曜日:1限目 講義、2限目 実習
木曜日:3限目 講義、4間目 実習
(9月下旬~11月上旬
11月中旬以降は Java II)

本日(第1回)の目的




プログラムとは何か?
プログラムを作るには?
「プログラム言語」とは?
プログラムの「開発」とは?
プログラムとは何か?
コンピュータへの命令(仕事の指示)
その方法は多様(音声、マウスなど)
 命令を文字で表現
 例)
cp file1 file2
(コピーしろ。 file1 を file2 に)
<h1>Java</h1> (見出しの内容)

プログラムの言葉(言語)
ルールが必要(文法)
 言語は1種類とは限らない
(日本語、英語、ロシア語・・・)
 人間の言葉と同じとは限らない
コンピュータのための言語(機械語)
音楽の「音符」

プログラムとソフトウェア
ソフトウェア
OS(オペレーティング・システム)
アプリケーションソフト
 ソフトウェアはプログラムによって記述
「ソフトウェア」は製品全体
「プログラム」はその一部

プログラムはどう作られる?
プログラムを「書く(記述する)」
文章を書く、作曲などの作業と共通
(プリントや雑誌の解説)
通常はデジタルデータとして保存
 「ソースファイル(source file)」
 コンピュータに理解できるように
「翻訳」が必要な場合も

日常の言葉との比較
「プログラム言語」vs「自然言語」
 厳密で少ないルール
あいまいさはない
1文字の違いで全く異なる意味
 「記号」が重要な働き
+, -, { }, ( ), : ; /

プログラムの記述の例1(HTML)
<body>
<h1>Java</h1>
<p>
Let’s begin!
</p>
</body>
プログラムの記述の例2(Java)
public class Hello {
public static void main( String[] a ) {
System.out.println( “Hello!” );
}
}
プログラムの「開発」





「ソースの編集(edit)」作業=「記述」
ソースファイルの処理
「前処理」、「コンパイル」
プログラムの実行テストと「デバッグ」
製品化
アフターケア、バージョンアップ
「開発環境」とは?


プログラムを開発する時に利用される
ハードウェア、ソフトウェア
例)
Linuxのパソコンを利用
エディタ、コンパイラ、インタプリタ
開発支援ソフトウェア
実習の例で見ると
マシンはパソコン(実行環境と同じ)
 OSはLinuxまたはWindows
 エディタ – vi, メモ帳など
 コンパイラ、インタプリタ
Java, C, Peal, Shell など

本日の実習のポイント




開発環境の確認と復習
UNIX(Linux) のコマンド
mkdir, cp, mv, vi
vi エディタの利用
文字の挿入と削除
コピー&ペースト、ファイルの保存
メールによる課題の提出
Javaの特徴、開発環境




Javaとは何か?
Javaの言語としての特徴
Javaの開発環境
開発の基本手順
Java とは何か?


プログラミング言語としてのJava
インターネット時代の新しい言語
優れた開発効率
実行環境の「標準」としてのJava
携帯電話からスーパーコンピュータまで
家電製品もネットワーク化
Javaは誰が作っているのか?



Sun Microsystems 社の製品
http://java.sun.com/
開発環境は無償で提供(対MS戦略)
「オープンソース」的な成果も採用
Java の名前の由来
コーヒーの品名(原産地の地名)
 稚内にある「日本初のコーヒー」碑

Javaの歴史









1995
1996
1997
1998
1999
2001
2002
2004
2005
α版、β版、HotJava(アプレット)
JDK1.0
JDK1.1 (本格的開発言語へ)
Java2, 3つのJava(J2SE,J2EE,J2ME)
J2SDK1.3
i503にJava搭載
J2SDK1.4
J2SDK5.0 (言語仕様拡張)
Java誕生10周年
Javaの祖先?


C (1970) 手続き指向、アルゴリズム
の構造化(関数、ループと条件分岐)、
データ型の導入(原始型と構造体)
C++ (1980~) オブジェクト指向、クラ
ス、クラスの継承、アクセス制御、抽
象クラス、演算子の多重定義、多重継
承、例外処理・・・(次々と機能拡張)
Java登場の背景
C++の機能の肥大化の弊害
 開発者の負担軽減
 教育コストの軽減
 シンプルでかつ多様な環境に対
応できるオブジェクト指向言語

「オープン」な性格のルーツ




Sun Microsystemsの戦略の要
仕様の公開、開発環境の無償配布
背景に UNIX文化、オープンソース運
動の影響
インターネットの普及 (異機種・異OS
のネットワーク)
最初のJava (1995)




α、β、JDK 1.0
8個のパッケージ:java.applet,
java.awt, java.awt.image,
java.awt.peer, java.lang, java.io,
java.net, java.util
HotJavaブラウザとアプレット
玩具? 入門教育用には最適だった
実用的な開発言語へ (1997)






JDK 1.1
国際化対応、Unicodeの採用
セキュリティ機能の強化
JavaBeans
RMI (分散オブジェクト)
Jarアーカイブ
拡大する応用範囲 (98-99)





Java 2 の登場 (J2EE, J2SE, J2ME)
基幹システムから携帯電話まで
世の中なんでも Java ?
「ミドルウェア」の提供
単なる言語ではなく実行環境の標準
サーバサイドの標準(2000以降)




XMLとの融合
B2BとWebサービスの普及
システムの違いを越えてサービス提供
サービス提供の自動化
Javaの現状と将来(2005現在)
J2SDK 5.0で大きな言語仕様拡張
(1つの曲がり角?)
 新しい開発スタイル
より効率のよい開発
各種フレームワーク
開発ツール
EOD(Ease of Development)

現在のJavaの存在
インターネット上の標準言語
(特にサーバサイド)
 異なるシステム間に共通の実行環境
 ソースコード共有の新たな運動も
apache.org, eclipse.org

言語としてのJavaの特徴






オブジェクト指向(Object Oriented)
仮想マシン(JVM)による実行
スレッドによる並列処理
簡潔な言語仕様
豊富なクラスライブラリ
開発環境は無償、ソース公開
Javaでプログラミングする



環境は自由
(UNIXでもWindowsでも)
基本開発環境はSunから
(コマンドラインの操作)
ドキュメントは豊富
(稚内北星も提供)
Javaの開発環境の構成
Java仮想マシン(JVM)
 Java コンパイラ
 その他のツール(jarなど)
 標準クラスライブラリ
(java.awt, java.net など)

Java による開発手順
1.
2.
3.
クラスの設計 (ソースファイル
の記述)
コンパイル (バイトコードの生
成)
実行 (仮想マシンへのロード)
ファイル名とコマンドのルール




ソースファイルは「クラス名+.java」
コンパイラ javac の引数にソース名
コンパイルの結果バイトコード生成
そのファイル名は「クラス名
+.class」
仮想マシン java の引数はクラス名
サンプルソース: Welcome.java
public class Welcome {
public static void main(String[] av){
System.out.println( "Welcome!" );
}
}
コマンドラインの実行例
1.
2.
3.
ソース Welcome.java を編集
javac Welcome.java
java Welcome
Javaと開発ツール



開発ツールの「標準化」を意識
(JavaBeans、Ant)
無償の開発ツールが「標準」に?
(Eclipse)
Webアプリケーション用の開発ツール
(Ease of Development の考え)
ダウンロード

Java とは?