fundamental java

33
Fundamental Java HASUNUMA Kenji Vice president, GlassFish Users Group Japan [email protected] Twitter: @btnrouge

Upload: kenji-hasunuma

Post on 15-Jan-2015

9.922 views

Category:

Technology


3 download

DESCRIPTION

社内勉強会「Java基礎以前」講義資料

TRANSCRIPT

Page 1: Fundamental Java

Fundamental Java

HASUNUMA KenjiVice president, GlassFish Users Group Japan

[email protected]: @btnrouge

Page 2: Fundamental Java

What’s Java?

Page 3: Fundamental Java

Javaの特徴

• オープンな規格である

• 常に進化している

• 互換性を重視している

Page 4: Fundamental Java

Javaはオープン規格

• 言語、標準API、仮想マシン仕様

• Java Community Processで標準化

• 現在はオープンソース (GPLv2)

Page 5: Fundamental Java

•Write Once, Run Anywhere

•言語レベルでマルチスレッド対応•厳格な例外処理機構•Unicodeを全面的に採用

Page 6: Fundamental Java

Write Once, Run Anywhere

• OS、Java VM実装に依存しない

• 古いコードが最新のJavaでも動く

• Blu-rayから巨大システムまで

Page 7: Fundamental Java

������� ������� �������

������� ������� �������

����������������� �����������

当初: OSの差異をJava VMが吸収する

現在: Java VMが多言語の共通基盤へ

Page 8: Fundamental Java

Essential Java

Page 9: Fundamental Java

�������

�������

�������

��

��

��

�����������

����� �����

�����

��������������

��������������� �

Javaのエコシステム

Page 10: Fundamental Java

������������

������������

������������

����������������

����������������

����������������

����������������

�����

��������

クラスとインタフェース

Page 11: Fundamental Java

�����

�����

�����

�����������������

�������� !����

��������������

�����

�����

������

������

� ��������

� !�����

クラスの継承

Page 12: Fundamental Java

����������������

����������������

����������������

����������������

��"������

#�������������"�

Polymorphismとは?

Page 13: Fundamental Java

�����

������ ��

������ ����$%�������&�

����

'�&���(���

���(���

)�����&%%%

�������

プロセスとスレッド

Page 14: Fundamental Java

�����

������ ��

������ ����$%�������&�

����

'�&���(���

���(���

)�����&%%%

�������

������ ����$%�* �

������ ����$%�* �

������ ����$%�* �

+������������

+�����

プロセスとスレッド

Page 15: Fundamental Java

���� ��������

���� ��������

���� ��������

����� ,�

��"��-#�����

.��/��0� ,�

����0���

����

#���-

.��/��0

������

������

������

� �� ������"

�� ������"

� �� ������"

�� ������"

� �� ������"

�� ������"

���-"������"1

Javaの入出力(Stream)

現在では文字列データに特化したReader/Writerや、高速I/Oを実現するChannelもよく使われている

Page 16: Fundamental Java

Javaのパッケージ�������������� ������������� ������

���

����

��

����� ��

���� ��

Page 17: Fundamental Java

クラス名の表記方法

•原則: パッケージを含む完全名(例) java.util.List

• import宣言: 特定のパッケージを省略可(方法1) import java.util.List;(方法2) import java.util.*;

• java.lang…常にパッケージを省略可

Page 18: Fundamental Java

Javaクラスの同一性

• クラス名が同一である

• パッケージ名が完全に一致している

• 同じクラスローダーから読み込まれた

Page 19: Fundamental Java

Java Core Parts

Page 20: Fundamental Java

クラスとオブジェクト

• クラスは定義のみ…実体がない

• オブジェクト(インスタンス)

…クラスから作成した実体のこと

• フィールドとメソッドはオブジェクトに属する(⇔staticはクラスに属する)

Page 21: Fundamental Java

java.lang.Object

• Javaの全クラスのスーパークラス

• クラスの根幹に関わるメソッドを持つ

• プリミティブ型に対してリファレンス型と呼ばれることもある

Page 22: Fundamental Java

java.lang.Object のメソッドjava.lang.Object のメソッドequals 同一チェックに使う

※原則としてオーバーライドするhashCode同一チェックに使う※原則としてオーバーライドする

toString 文字列表現を返す ※用途は様々wait スレッド制御用メソッド

※通常はConcurrency Utilitiesを経由して使用する(オーバーライド不可)

notifyスレッド制御用メソッド※通常はConcurrency Utilitiesを経由して使用する(オーバーライド不可)notifyAll

スレッド制御用メソッド※通常はConcurrency Utilitiesを経由して使用する(オーバーライド不可)

clone コピー(最近は使われない)finalize 後処理(通常はオーバーライドしない)

Page 23: Fundamental Java

Object o = new Object();

Page 24: Fundamental Java

Object o = new Object();

Page 25: Fundamental Java

Object o = new Object();右辺と同じクラス

orスーパークラス

or実装インタフェース

Page 26: Fundamental Java

Object o = new ArrayList();

Page 27: Fundamental Java

キャスト

Object o = new ArrayList();• objの定義はObject、実体はArrayList

• アクセスは定義を通じて行う• 実体への直接アクセス→キャスト

ArrayList list = (ArrayList) o; • キャスト=サブクラスの定義でアクセス• キャスト後は実体に直接アクセス可能

Page 28: Fundamental Java

プリミティブ型

• クラスではないデータ型

• 対応するクラス(ラッパー)を持つ

• auto-boxing/unboxing:プリミティブ型とラッパーの相互変換

Page 29: Fundamental Java

プリミティブ型 ラッパークラスboolean Boolean

byte Bytechar Charactershort Short

int Integerlong Longfloat Float

double Double

Page 30: Fundamental Java

配列

• 同じクラスorプリミティブ型の連続

• 演算子 [ ] で要素にアクセスする

• 内部的にはjava.lang.Arrayクラス

Page 31: Fundamental Java

Object[ ] o = new Object[8];o は Objectの配列

(要素数は指定しない)配列の要素数は 8(必ず定数=後で変更不可)

配列の場合、左辺と右辺は同じクラス

Page 32: Fundamental Java

その他の重要なトピック

• Generics (J2SE 5.0)

• Annotation (J2SE 5.0)

• Project Coin (Java SE 7)

• Collections Framework (J2SE 1.2)

• New I/O (J2SE 1.4 & Java SE 7)

• Concurrency Utilitites (J2SE 5.0 & Java SE 7)