Javaの特徴と開発環境

第1回:Javaとその開発環境
プログラミングII
2007年9月25日
本日の講義内容






プログラミング言語の種類
Javaとはどんな技術か?
Javaとオープンソース
Javaの開発環境(JDK)
Javaによる開発手順
Javaのプログラムの構造(クラス)
ソフトウェアとは何か?
ハードウェア(hardware)
= コンピュータを構成する物理的装置
CPU、メモリ、ハードディスク・・・
 ソフトウェア(software)
= 装置ではない。目に見えない?
でも、ないとマシンは動かない
プログラム、OS・・・

ソフトウェアはどう作る?どう使う?
プログラミング言語
 処理の手順を記述
 必要なソフトウェアの選択と実行
OS(オペレーティング・システム)の働き
Windows XP, Linux, MacOS 10・・・

Javaとはどんな技術か?


プログラミング言語としてのJava
インターネット時代の新しい言語
優れた開発効率
実行環境としてのJava
携帯電話からスパコンまで
あらゆる装置をネットワーク化
Javaは誰が作っているのか?



Sun Microsystems 社の製品
http://java.sun.com/
開発環境は無償で提供(対MS戦略)
2006年11月に「オープンソース」に
http://openjdk.dev.java.net/
言語としてのJavaの特徴






オブジェクト指向(Object Oriented)
仮想マシン(JVM)による実行
スレッドによる並列処理
簡潔な言語仕様
豊富なクラスライブラリ
開発環境は無償、ソース公開
現在のJavaの存在
インターネット上の標準言語
(特にサーバサイド)
 異なるシステム間に共通の実行環境
 ソースコード共有の新たな運動
apache.org, eclipse.org

Javaの登場と発展の背景
Java誕生以前 (1969-1994)
 最初のJava (1995)
 実用的開発言語へ (1996)
 拡大する応用範囲 (1997~ 99)
 B2BとWebサービス(2000~)

Java誕生以前












1969
1970
1975
1977
1977
1981
1982
1984
1987
1991
1993
1994
ARPAnet(インターネットの原型)
UNIX と C言語
最初のパソコン
アップルコンピュータ誕生
BSDの登場 -- ソースコードの配布・公開
BSDに TCP/IP実装
ビル・ジョイら Sun Microsystemsを設立
ストールマン本格的に活動開始
稚内北星学園短期大学開学
Linux と FreeBSD 誕生
最初のWebブラウザ登場
Netscape Comunications社誕生
リチャード・ストールマン
「ハッカー」の中の「ハッ
カー」
 Free Software
Foundation (オープンソ
フト運動)
 GNUプロジェクト(1984)
ソフトウェア生成の共同体
 emacs, gcc(g++)
http://www.stallman.org

Javaの歴史









1995
1996
1997
1998
1999
2001
2002
2004
2006
α版、β版、HotJava
JDK1.0
JDK1.1
Java2, 3つのJava
J2SDK 1.3
i503にJava搭載
J2SDK 1.4
J2SDK 5.0 (Tiger)
Java SE 6, JDKがオープンソース化
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の変化(2004-)
J2SE 5.0 で大きな言語仕様拡張
(1つの曲がり角)
 新しい開発スタイル
EOD(Ease of Development)
(もはや言語を意識しなくてもいい?)
 プログラマの階層化(役割分担)
 Java SE 6、オープンソース化

Javaと開発ツール



開発ツールの「標準化」を意識
(JavaBeans、Ant)
無償の開発ツールが「標準」に?
(Eclipse、 DoCoMoのiアプリツール)
Webアプリケーション用の開発ツール
Javaの開発環境の構成
Java仮想マシン(JVM)
 Java コンパイラ
 その他のツール(jarなど)
 標準クラスライブラリ
(java.awt, java.net など)

Java による開発手順
1.
2.
3.
クラスの設計 (ソースファイル
の記述)
コンパイル (バイトコードの生
成)
実行 (仮想マシンへのロード)
サンプルソース: Welcome.java
public class Welcome {
public static void main(String av[]){
System.out.println( "Welcome!" );
}
}
クラス名とファイル



クラス名でソースファイル名が決まる
Welcomeクラス=> Welcome.java
コンパイルでバイトコード
javac Welcome.java
クラス名+.class => Welcome.class
実行時にはクラス名を引数に
java Welcome