View
1.630
Download
1
Category
Preview:
DESCRIPTION
This presentation explain the Java
Citation preview
<Insert Picture Here>
超入門!はじめてみようJavaプログラミング
日本オラクル株式会社 オラクルユニバーシティ 渋井俊昭
Copyright© 2010, Oracle. All rights reserved.�2
以下の事項は、弊社の一般的な製品の方向性に関する概要を説明するものです。また、情報提供を唯一の目的とするものであり、いかなる契約にも組み込むことはできません。以下の事項は、マテリアルやコード、機能を提供することをコミットメント(確約)するものではないため、購買決定を行う際の判断材料になさらないで下さい。オラクル製品に関して記載されている機能の開発、リリースおよび時期については、弊社の裁量により決定されます。
OracleとJavaは、Oracle Corporation 及びその子会社、関連会社の米国及びその他の国における登録商標です。文中の社名、商品名等は各社の商標または登録商標である場合があります。
Copyright© 2010, Oracle. All rights reserved.�
Agenda
• Java って何?
• 基本的なJavaプログラムの作り方
• キャンペーンのご案内
3
Copyright© 2010, Oracle. All rights reserved.�
Agenda
• Java って何? • Javaって何?
• Javaテクノロジー
• プログラミング言語としてのJava
• 実行環境としてのJava
• 開発環境としてのJava
• Javaの構成
• Javaのエディション
• プログラムの作成手順
• 基本的なJavaプログラムの作り方
• キャンペーンのご案内
4
Copyright© 2010, Oracle. All rights reserved.�
Javaって何?
5
http://www.java.com/ja/download/faq/whatis_java.xml 引用:
Java は、1995 年に Sun Microsystems から初めてリリースされた
プログラミング言語およびコンピューティングプラットフォームです。ユ
ーティリティ、ゲーム、ビジネスアプリケーションなど、最先端のプログラムの基礎となっているテクノロジです。 Java は、世界中の 8 億 5000 万台を超える個人用コンピュータや、世界中の何十億台ものデバイス (モバイルデバイスや TV デバイスなど) で動作しています。
Java が必要なのはなぜですか? Java がインストールされていないと動作しないアプリケーションや Web サイトが多数存在し、さらに毎日作成され続けています。Java は、
高速、安全で、高い信頼性を持っています。ラップトップコンピュータや
データセンター、ゲームコンソールスーパーコンピュータ、携帯電話、インターネットにいたるあらゆる分野で使われています。
Copyright© 2010, Oracle. All rights reserved.�
Javaって何?(つづき)
6
Java のダウンロードは無料ですか? はい、Java は無料でダウンロードできます。 最新バージョンは、http://java.com で入手してください。
http://ja.wikipedia.org/wiki/Java
http://www.java.com/ja/ この辺のページも 見てみよう
Copyright© 2010, Oracle. All rights reserved.�
Javaって何?
7
ここにも、あそこにもJava
Javaを知っていると IT分野での活躍の幅が
広がります。
Copyright© 2010, Oracle. All rights reserved.�
Javaテクノロジー
• 3つの側面を持つテクノロジー • 1)プログラミング言語
• 2)プログラム実行環境(JRE) • 3)プログラム開発環境(JDK)
8
2)実行環境�
1)プログラミング言語�
3)開発環境�
プログラミング言語
プラットフォーム
Copyright© 2010, Oracle. All rights reserved.�
1)プログラミング言語(としてのJava)
9
• 従来の言語のいいとこ取り
• オブジェクト指向
• 豊富なAPI
• セキュリティ
豊富なAPI、ライブラリ群�従来のプログラミング�言語によるプログラム�
Java言語による�プログラム�
適用プログラムコード��������
メモリ管理用�コード�
リソース管理用�コード�
�適用プログラムコード�
�
Java実行環境�����
メモリ管理�
リソース管理�
オブジェクト指向�
操作�
属性�操作�
属性�
操作�
オブジェクト�オブジェクト�
GUI 部品�
セキュ�リティ�部品�
ファイル�IO部品�
日付� 部品�
ネット�ワーク�部品�
通貨� 部品�
キーワード
Copyright© 2010, Oracle. All rights reserved.�
2)実行環境(としてのJava)
10
• プラットフォーム非依存(Write Once, Run Anywhere)
ソースプログラム�
コンパイル�
移植できない Windows用のプログラムは Linux上では動かない
プラットフォームA�
アプリケーション� アプリケーション�
プラットフォームB��
プラットフォームA�
JRE(JVM)
Javaアプリケーション�(バイトコード)�
JRE(JVM)
プラットフォームB�
Javaアプリケーション�(バイトコード)�
(マシンコード)� (マシンコード)�
キーワード JVM (Java Virtual Machine)
Windows � Linux�
× ソースプログラム�
コンパイル�
移植できる プラットフォームの違いは JVMが吸収してくれる
○
~他言語での開発~ ~ Javaでの開発~
Copyright© 2010, Oracle. All rights reserved.�
2)実行環境(としてのJava)
11
Write Once, Run Anywhere のすごさ。
顧客 H/W, OSメーカが無くなっても、既存資産をそのまま他のOS上に移せばOK。 → ベンダー依存リスクの低減 もっと早い環境が出てきたときに、すぐに乗り換えられる。 →より効果的な環境への変更が従来より容易
開発会社 プラットフォームが変わっても、プログラムを変更しなくて良い。
→変更のためのプロジェクト、テストなどに莫大な出費をしなくて良い。 同じアプリケーションを様々なお客様へ展開できる。 →販売効率の向上 H/W, OSに依存した開発者を育成しなくて良い。 → アプリケーションを、Windows, Linux, HP-UX, AIX等様々な環境で 動くようにするため重複した人財が必要
Copyright© 2010, Oracle. All rights reserved.�
3)開発環境(としてのJava)
12
コンパイル�
API ドキュメント�( HTML 形式)�
Java開発環境�
import java.util.*; public class Vehicle { String id ; int price ; int sales [ ] ; totalSales ( ) { ・・・� }
�
Java アプリケーション�
Javaソースコード�
コンパイラ�( javac.exe )�
実行�
インタプリタ�( java.exe )�
デバッグ実行�
デバッガ�( jdb.exe )�
�プラットフォーム�
JRE(JVM)�
ドキュメントジェネレータ�( javadoc.exe )�
キーワード 道具はそろっています
Copyright© 2010, Oracle. All rights reserved.�
Javaの構成
13
開発ツールを含む�(javac,javadoc等)�
JVM
JDK
Java APIを含む�
JRE
• JDK : Java Development Kit
• JRE : Java Runtime Environment
• JVM : Java Virtual Machine
Copyright© 2010, Oracle. All rights reserved.�
Javaの構成
• JRE(Java Runtime Environment) じぇい・あーる・いー • Javaの実行環境(プログラムを動かす際に必要) →ランタイムライブラリ
14
• JDK(Java Development Kit) じぇい・でぃー・けー Javaの開発環境(プログラムを開発する際に必要)
→開発のためのツール(コンパイラ、ソース、ドキュメント) が含まれている。 →JREも含まれている。(開発時に実行するので)
これから開発を行うときはJDKをダウンロードしよう!
人が作ったプログラムを動かすなら JREをダウンロードしよう!
2つの言葉を覚えましょう。
Copyright© 2010, Oracle. All rights reserved.�
Javaのエディション
15
Java SE
(Java Platform, Standard Edition)
Java EE(Java Platform, Enterprise Edition)
Java ME(Java Platform, Micro Edition)�
基本的な機能が入っています。スタータパックみたいなもの。
企業システム・業務アプリケーションに必要な部品集。
アプリケーションサーバにはこれが付いてきます。
携帯電話、テレビなどでJavaを使えるようにしたミニセット。 組み込み機器などで利用されます。
Copyright© 2010, Oracle. All rights reserved.�
Javaの構成
16
• Java SE: Java Platform, Standard Edition
• Java EE : Java Platform, Enterprise Edition
• Java ME : Java Platform, Micro Edition
ビジネス向け部品
開発ツールを含む�(javac,javadoc等)�
JVM
JDK
Java APIを含む�
JRE Java SE
Java EE
Copyright© 2010, Oracle. All rights reserved.�
プログラムの作成手順
17
プログラムの実行
���
ライブラリ����
Java ソースプログラム�( Hello.java )�
②コンパイル�
③ プログラム起動�
開発者�
public class Hello { public static void main(String[ ] args) { System.out.println(" Hello Java!!");; ・・・� } }
�
クラスがロードされ�プログラム実行�
��
JVM
OS �OS
prompt> javac Hello.java
00FF 01AF 001E 00BF FF01 047A 0BBD FF03
クラスファイル( Hello.class )�
Mainクラス�����00FF 01AF 001E 00BF
��FF01 047A 0BBD FF03
Helloクラス�
ディスク�
①プログラム� 作成�
ロード�
中間コード
Nativeコードに逐次 変換しながら実行
Copyright© 2010, Oracle. All rights reserved.�
簡単なプログラムの例
18
1. class Hello { 2. public static void main(String[] args) {
3. System.out.println("Hello Java!!");
4. }
5. }
> javac Hello.java
> dir
2011/02/24 11:02 416 Hello.class 2011/02/24 11:00 107 Hello.java
> java Hello Hello Java!!
Hello.java
←コンパイルします。
←エディタでJavaプログラムを作成します。
※豆知識1:ファイル名とクラス名は大文字小文字含めて一致。 ※豆知識2:Java言語は大文字小文字を厳格に区別します。
←クラスファイルを実行して結果が表示されました。
←.java から .classが 作成されました。
①
②
③
Copyright© 2010, Oracle. All rights reserved.�
(補足)実際の開発
19
http://ja.netbeans.org/ Netbeans ねこびーん
IDE:Integrated Development Environment (統合開発環境) 実際の開発では、
を利用して、効率の良い開発が行われます。(内部的にJDKのツールを利用)
Eclipse http://www.eclipse.org/ http://mergedoc.sourceforge.jp/
http://www.oracle.com/technetwork/jp/developer-tools/jdev/overview/index.html JDeveloper
Copyright© 2010, Oracle. All rights reserved.�
Agenda
• Java って何?
• 基本的なJavaプログラムの作り方
• オブジェクト
• クラス
• Javaプログラムの構成
• クラス定義
• オブジェクト生成とアクセス
• メソッドのオーバーロード
• オブジェクトの初期化
• コンストラクタ
• カプセル化とデータ隠蔽
• アクセス修飾子
• キャンペーンのご案内
20
Copyright© 2010, Oracle. All rights reserved.�
オブジェクト
• オブジェクト=Object=「もの」
• オブジェクトの種類
• 実在するもの : 車、自転車、ノート、パソコン etc. • 概念的なもの : 社員、銀行口座 etc.
• オブジェクトが持つもの
• 属性:特性、状態を表す(変数)
• 操作:動作、ふるまいを表す(メソッド)
21
社員ID 社員名
社員IDを取得する
社員IDを設定する
属性(変数)
操作(メソッド)
社員オブジェクト
オブジェクト指向 キーワード
人間が物事を捕らえるのと 同じように設計でき、 その概念のままプログラムに 表現することが出来る。
山田
1001
Copyright© 2010, Oracle. All rights reserved.�
クラス • オブジェクトが持つ概念(属性や操作)を定義したもの • オブジェクトを作成するためのひな形(テンプレート)
22
class 社員 { 社員ID 社員名 社員IDを設定する 社員IDを取得する 社員名を設定する 社員名を取得する}
インスタンス化
社員ID 社員名
2
社員IDを取得する
社員IDを設定する
属性(変数) suzuki
操作(メソッド)
社員ID 社員名
1
社員IDを取得する
社員IDを設定する
tanaka 属性(変数)
操作(メソッド)
インスタンス化
tanaka社員オブジェクト
suzuki社員オブジェクト
社員クラス 社員という概念は こう定義しますよ。
田中さんは、具体的にはこういう社員です。
鈴木さんは、具体的にはこういう社員です。
クラス(ひな形)に具体的な情報を入れて、オブジェクト(実体)を作ることを「インスタンス化」という。
Copyright© 2010, Oracle. All rights reserved.�
Javaプログラムの構成
• Javaプログラムはクラスの集合で構成
23
class クラス名 {
}
public static void main(String[ ] args) { // 処理内容
} main()メソッドの定義
クラス定義の始まり
クラス定義の終わり
class クラス名 {
}
属性(変数)
操作(メソッド)
クラス定義の始まり
クラス定義の終わり
Copyright© 2010, Oracle. All rights reserved.�
クラス定義
• クラスという単位でプログラムを作成
• クラスとは独自のデータ型のようなもの
24
class クラス名 { }
// インスタンス変数の定義[修飾子] データ型 インスタンス変数名;
// メソッドの定義[修飾子] 戻り値の型 メソッド名(引数リスト) { // 処理内容}
class Employee { // インスタンス変数の定義 int empId; // メソッドの定義
int getEmpId() { return empId; } void setEmpId(int id) { empId = id; } }
例:
実際のシステムでは、クラスをたくさん作ります。
Copyright© 2010, Oracle. All rights reserved.�
オブジェクト生成とアクセス
25
class Employee { // インスタンス変数の定義 int empId; //メソッド定義 int getEmpId() { return empId; } } class UseEmployee { public static void main(String[ ] args) { // オブジェクトの生成
Employee emp = new Employee(); //変数へアクセス(参照変数名.変数名) emp.empId = 1; //メソッドへアクセス(参照変数名.メソッド名) int id = emp.getEmpId(); } }
emp
int empId
getEmpId( ) { return empId; }
1. オブジェクトを生成し、参照するための変数に代入 クラス名 参照変数名 = new クラス名( );
2. . (ドット)演算子を使用してアクセス
参照変数名.インスタンス変数名
参照変数名.メソッド名( )
戻り値: 1
「new」はクラスからオブジェクトを作り出すおまじない
Copyright© 2010, Oracle. All rights reserved.�
サンプル
26
1. class Employee { 2. // インスタンス変数の定義 3. int empId; // 社員ID
4. String empName; // 社員名
5.
6. // メソッドの定義
7. void setData(int id, String name) { //インスタンス変数に値を設定するメソッド
8. empId = id; 9. empName = name;
10. } 11. int getEmpId() { // 社員IDを取得するメソッド
12. return empId; 13. } 14. String getEmpName(){ // 社員名を取得するメソッド
15. return empName;
16. } 17. }
Copyright© 2010, Oracle. All rights reserved.�
サンプル
27
18. class CreateSample { 19. public static void main(String[] args) {
20. Employee emp1 = new Employee(); // Employeeオブジェクトの生成
21. emp1.setData(1, "Tanaka"); // setData()メソッドの呼び出し
22. System.out.println("Employee ID : " + emp1.getEmpId()); 23. System.out.println("Employee Name : " + emp1.getEmpName()); 24.
25. Employee emp2 = new Employee(); // Employeeオブジェクトの生成
26. emp2.setData(2, "Suzuki"); // setData()メソッドの呼び出し
27. System.out.println("Employee ID : " + emp2.getEmpId()); 28. System.out.println("Employee Name : " + emp2.getEmpName()); 29. }
30. }
> java CreateSample Employee ID : 1
Employee Name : Tanaka
Employee ID : 2
Employee Name : Suzuki
Copyright© 2010, Oracle. All rights reserved.�
メソッドのオーバーロード
• 同一クラス内に同名のメソッドを定義すること
• オーバーロードのルール
• 引数の数、型が異なっていること
28
class Employee { int empId; String name; //引数を取らないsetData()メソッド void setData() { empId = 100; } // 引数を1つ取るsetData()メソッド void setData(int id) { empID = id; } :}
class UseEmployee { : // オブジェクトの生成 Employee emp = new Employee(); // メソッド呼び出し emp.setData( ); emp.setData(1); }
emp
setData( ) { empId = 100; }
setData(int id) { empId = id; }
Copyright© 2010, Oracle. All rights reserved.�
サンプル
29
1. class Employee { 2. // インスタンス変数の宣言
3. int empId;
4. String empName;
5. // 引数を1つ取るsetData()メソッド
6. void setData(int id) { 7. empId = id; 8. empName = "unknown"; 9. }
10. // 引数を2つ取るsetData()メソッド
11. void setData(int id, String name) { 12. empId = id; 13. empName = name; 14. } 15. void display() {
16. System.out.println("Employee ID : " + empId);
17. System.out.println("Employee Name : " + empName);
18. }
19. }
Copyright© 2010, Oracle. All rights reserved.�
サンプル
30
20. class OverloadSample { 21. public static void main(String[] args) {
22. Employee emp1 = new Employee();
23. emp1.setData(1); // 引数を1つ取るsetData()メソッドの呼び出し
24. emp1.display();
25.
26. Employee emp2 = new Employee();
27. emp2.setData(2, "Suzuki"); // 引数を2つ取るsetData()メソッドの呼び出し
28. emp2.display();
29. }
30. }
> java OverloadSample Employee ID : 1
Employee Name : unknown
Employee ID : 2
Employee Name : Suzuki
Copyright© 2010, Oracle. All rights reserved.�
オブジェクトの初期化
• オブジェクト生成時に自動的に初期化
• デフォルトの初期値
31
データ型 初期値
byte 0 short 0 int 0 long 0 float 0.0f double 0.0d char '\u0000' boolean false 参照型 null
Copyright© 2010, Oracle. All rights reserved.�
コンストラクタ
• オブジェクトを初期化するための処理ブロック
• オブジェクト生成時に一度だけ呼び出される
• 定義ルール • クラス名と同じ名前
• 戻り値を持たない(戻り値の型宣言もなし)
• 引数を持つことが可能
• オーバーロード可能
32
Employee() { empId = 100; } // 引数を取らないコンストラクタEmployee(int id) { empId = id; } //引数を1つ取るコンストラクタ
Copyright© 2010, Oracle. All rights reserved.�
コンストラクタの呼び出し
• オブジェクト生成時に呼び出される new クラス名(引数リスト);
33
class Employee { int empId; //コンストラクタ Employee() { empId = 100; } Employee(int id) { empId = id; }
; }}
class UseEmployee { : // コンストラクタ呼び出し Employee emp = new Employee(); Employee emp2 = new Employee(101); :}
emp
int empId
Employee() { empId = 100; }
Employee(int id) { empId = id; }
100
emp2
int empId
Employee() { empId = 100; }
Employee(int id) { empId = id; }
101
Copyright© 2010, Oracle. All rights reserved.�
デフォルトコンストラクタ
34
コンストラクタは必ず必要
しかし、開発者が書かないでいると、 コンパイル時に自動生成してくれます。
このコンストラクタのことを デフォルトコンストラクタ といいます。
Copyright© 2010, Oracle. All rights reserved.�
サンプル
35
1. class Employee { 2. // インスタンス変数の宣言
3. int empId;
4. String empName;
5. // 引数を1つ取るコンストラクタ
6. Employee(int id) { 7. empId = id; 8. empName = "unknown"; 9. }
10. // 引数を2つ取るコンストラクタ
11. Employee(int id, String name) { 12. empId = id; 13. empName = name; 14. } 15. void display() {
16. System.out.println("Employee ID : " + empId);
17. System.out.println("Employee Name : " + empName);
18. }
19. }
Copyright© 2010, Oracle. All rights reserved.�
サンプル
36
20. class ConstSample { 21. public static void main(String[] args) {
22. // 引数を1つ取るコンストラクタの呼び出し
23. Employee emp1 = new Employee(1); 24. emp1.display();
25.
26. // 引数を2つ取るコンストラクタの呼び出し27. Employee emp2 = new Employee(2, "Suzuki"); 28. emp2.display();
29. }
30. }
> java ConstSample Employee ID : 1
Employee Name : unknown
Employee ID : 2
Employee Name : Suzuki
Copyright© 2010, Oracle. All rights reserved.�
カプセル化とデータ隠蔽
• カプセル化とはオブジェクト内に属性(変数)とそれに対する操作(メソッド)をひとつにまとめて持たせること
• データ隠蔽あるオブジェクト内の変数やメソッドに対するアクセスを制限すること
37
社員ID
社員IDを取得する
社員IDを設定する
非公開
公開
アクセス拒否
アクセス可能
アクセス可能 特定のメソッドからしか操作できない。だから、安全!
Copyright© 2010, Oracle. All rights reserved.�
アクセス修飾子
• データ隠蔽を実現するために使用する修飾子 • public : どこからでもアクセス可
• private :変数およびメソッドが定義されたクラス内の メソッドからのみアクセス可能
38
emp
private int empId
public setEmpId(int id) { empId = id; }
emp.empId = 1; // NG
emp.setEmpd(1) ; // OK
Copyright© 2010, Oracle. All rights reserved.�
サンプル
39
1. class Employee { 2. public int empId; // public 変数
3. private String empName; // private 変数
4.
5. public Employee(int id, String name) { 6. empId = id;
7. empName = name;
8. }
9.
10. public int getEmpId() { 11. return empId;
12. }
13.
14. public String getEmpName() { 15. return empName;
16. }
17.
18. }
Copyright© 2010, Oracle. All rights reserved.�
サンプル
40
19. class AccessSample { 20. public static void main(String[] args) {
21. Employee emp1 = new Employee(1, "Tanaka");
22.
23. // インスタンス変数の適切な取得方法
24. System.out.println("Employee ID : " + emp1.getEmpId());
25. System.out.println("Employee Name : " + emp1.getEmpName());
26.
27. // エラーにはならないが、不適切な取得方法
28. System.out.println("Employee ID : " + emp1.empId);
29.
30. // private 変数にアクセスしているため、コンパイルエラー
31. // System.out.println("Employee Name : " + emp1.empName);
32. }
33. }
> java AccessSample Employee ID : 1
Employee Name : Tanaka
Employee ID : 1
Copyright© 2010, Oracle. All rights reserved.�
まとめ
41
Java って何?
基本的なJavaプログラムの作り方
超入門!はじめてみようJavaプログラミング
http://www.oracle.com/technetwork/jp/index.html
http://www.oracle.com/technetwork/jp/java/index.html
Oracle Technology Network
Oracle Technology Network の Javaに関する情報
参考URL
Copyright© 2010, Oracle. All rights reserved.�
Agenda
• Java って何?
• 基本的なJavaプログラムの作り方
• キャンペーンのご案内
42
Copyright© 2010, Oracle. All rights reserved.�
Java認定資格が新しくなりました • (Bronze) → Silver → Gold の積み上げ式に
新資格 (SE 7~)
旧資格 (~SE 6)
任意
任意
移行可能!!
必須
Bronze, Silverどちらからでもスタート可能
Copyright© 2010, Oracle. All rights reserved.�
キャンペーンのご案内
• 3月末までのOCJP Silver SE 7 試験合格者の 成績上位20名様に無償受験チケットプレゼント!!
• 詳しくはOracle University の キャンペーンページ をご確認ください。
Copyright© 2010, Oracle. All rights reserved.�
Copyright© 2010, Oracle. All rights reserved.� 46
Recommended