SlideShare a Scribd company logo
1 of 49
Java7 再入門講座
 2012/02/25 第2回 岡山Javaユーザ会
岡山Javaユーザ会 吉田貴文(@zephiransas)
その前に...
お気づきだろうか?
JavaOneの
  スピーカーが
 3人もこの会場に
いるということを!
第2回
岡山Javaユーザ会
   勉強会
JavaZero
Dai☆Tokai 2012
Twitterのトレンドにものった!
Diamond Sponsor
以上!
本題へ
入ろうぜ
今
  Java5
使ってる人?
いま
Java7を押さえて
  おくべき理由
Javaの歴史は
進化と革命の
    歴史
Java7は進化
Java8は革命
来るべき
Java8の革命に
   備えよ!
JDKリリース状況

• Windows & Linux
 • JDK 1.7.3
• Mac OS X
 • 正式版はまだ
 • JDK7 Developer Preview
IDE対応状況

• Eclipse
 • 3.7.1 Indigo SR1で対応
• IntelliJ
 • 10.5以降でFull Support
Java7 Main Feature
Java7 Main Feature

• Project Coin
Java7 Main Feature

• Project Coin
• NIO.2 (More New APIs for Java Platform)
Java7 Main Feature

• Project Coin
• NIO.2 (More New APIs for Java Platform)
• InvokeDynamic
Java7 Main Feature

• Project Coin
• NIO.2 (More New APIs for Java Platform)
• InvokeDynamic
• Fork/Join framework
Java7 Main Feature

• Project Coin
• NIO.2 (More New APIs for Java Platform)
• InvokeDynamic
• Fork/Join framework
Project Coin
switch構文でのString
• 条件部分にStringを使えるようになった
• 今までは、数値のみ
String s = “”;
switch(s) {
case “hoge”:
  doHoge();
  break;
case “foo”
  doFoo();
  break;
default:
  doDefault();
}
数値表現形式の追加
• バイナリ表記
 • 2進数表記の追加
int a = 0b011001;
System.out.println(a);   //25


• アンダースコア表記
 • _で分割して表記
 • 先頭と最後にはNG
long a = 123_456_789;
System.out.println(a);   //123456789
long b = 0b011_001;      //バイナリ表記との合わせ技
System.out.println(b);   //25
int c = _123_456         //コンパイルエラー
例外のマルチキャッチ(1)
• 複数の例外を1つのcatchブロックでキャッチ
class ExceptionA extends Exception{}
class ExceptionB extends Exception{}

class MultiCatch {
  public static void test(int a) {
    try {
      if(a == 1) {
        throw new ExceptionA();
      } else {
        throw new ExceptionB();
      }
    } catch(ExceptionA | ExceptionB ex) {
      System.out.println(ex.getClass());
    }
  }
}
例外のマルチキャッチ(2)
• 例外に継承関係がある場合は注意
• 標準例外の継承関係が曖昧だとハマる
class ExceptionA extends Exception{}
class ExceptionB extends ExceptionA{}

class MultiCatch {
  public static void test(int a) {
    try {
      if(a == 1) {
        throw new ExceptionA();
      } else {
        throw new ExceptionB();
      }
    } catch(ExceptionB | ExceptionA ex) {        //コンパイルエラー
            System.out.println(ex.getClass());
        }
    }
}
例外の再送(1)
• tryブロック中にcatchした例外を再送する
• Java6とかだと・・・
class ReThrowTest {
  public static void test(int a) throws Exception {
    try {
      if(a == 1) {
                                  throws ExceptionA, ExceptionB
        throw new ExceptionA();
                                          とか書けない!
      } else {
        throw new ExceptionB();
      }
    } catch(Exception ex) {
      System.out.println(ex.getClass());
      throw ex;
    }
  }
}
例外の再送(2)
    • Java7では
class ReThrowTest {
  public static void test(int a) throws ExceptionA, ExceptionB {
    try {
      if(a == 1) {                   メソッドが本来throwsしたい
        throw new ExceptionA();
                                          例外を記述できる
      } else {
        throw new ExceptionB();
      }
    } catch(Exception ex) {
      System.out.println(ex.getClass());
      throw ex;
    }
  }
}
ジェネリクスの<>記法
 • <> = ダイヤモンド
 Map<String, Object> map1 = new
 HashMap<String, Object>();
 Map<String, Map<String, Object>> map2 =
  new HashMap<String, Map<String,
  Object>>

 • Mapとかでネストすると、右辺が冗長!
Map<String, Object> map1 =
 new HashMap<>();
Map<String, Map<String, Object>> map2 =
 new HashMap<>();
リソースを含むtry構文(1)
• tryブロックでAutoClosableなクラスを使う
• finallyでcloseとかが不要になる(自動でclose)
InputStream input = new
FileInputStream(“hoge.txt”);
try {
  doHoge(input);
} catch(Exception e) {
  System.out.println(e);
} finally {
  input.close();
}

 • finallyでcloseしてた
リソースを含むtry構文(2)
• Java7だと
try (InputStream input = new
FileInputStream(“hoge.txt”);) {
  doHoge(input);
} catch(Exception e) {
  System.out.println(e);
}

 • tryブロックを抜けたタイミングで
   InputStream#closeが自動で呼び出される
 • closeで発生した例外もcatchできる
NIO.2
NIO.2とは?
• ファイル操作用に新規に追加されたAPI
• パフォーマンスの改善(高速に動作)
• ファイルシステム関連
 • FileSystem クラス
 • HDD等、デバイスの情報を取得
• ファイル、ディレクトリ操作関連
 • Path インターフェース
 • PathsクラスとFilesクラス
• もう、Commons IOとか使わなくてもいい!
押さえておくべきは
 PathsとFiles
FileSystemクラス
• 取得方法
FileSystem fs = FileSystems.getDefault();

• getFileStores
 • ストレージの容量などが取得できる
• getPath
 • Pathを生成できる
Pathsクラス
• 基本はget
Path path1 = Paths.get(“/User/hoge/fuga.txt”);
Path path2 = Paths.get(“/User/hoge”, “fuga.txt”);


• java.io.Fileからも生成できる
File file = new File(“/User/hoge/fuga.txt”);
Path path = file.toPath();


• ここで生成したPathをFilesで使う
Filesクラス(1)
• ファイル作成
Files.createFile(path1);

• ファイル削除
Files.delete(path);

• ファイルコピー
Files.copy(path1, path2);

• ファイル移動
Files.move(path1, path2);
Filesクラス(2)
• 存在チェック
Files.exists(path);

• テンポラリファイル作成
Files.createTempFile(“prefix”,”suffix”);

• シンボリックリンク
Files.createSymbolicLink(path1, path2);
Filesクラス(3)
• テキスト読み書き
List<String> data =
    Files.readAllLines(path1, StandardCharsets.UTF8);

Files.write(path2, data, StandardCharsets.UTF8);



• バイナリ読み書き
byte[] data = Files.readAllBytes(path1);

Files.write(path2, data);
Filesクラス(4)
• 1行づつでもtry-with-resourceとかで簡単
try(BufferedReader reader =
  Files.newBufferedReader(path,StandardCharsets.UTF_8)) {
	    String line;
	    while((line = reader.readLine()) != null) {
	    	 System.out.println(line);
	    }
} catch(Exception e) {
	    System.out.println(e);
}
非同期チャネルAPI


• 非同期アクセスを実現するAPI群
 • AsynchronusSocketChannel
 • AsynchronusServerSocketChannel
 • AsynchronusFileChannel
 • AsynchronusDatagramChannel
Fork/Join Framework

• 大きなタスクを小さい粒度に分割
• 小さなタスクを並列で処理
 • マルチコア対応
• 櫻庭さんのIT Proの記事を参考に
 • http://itpro.nikkeibp.co.jp/article/
    COLUMN/20110627/361738/
まとめ
• Project Coinで記述の幅が広がった
 • 例外周りの処理が、便利に
 • ダイヤモンド、(゚д゚)ウマー
• NIO.2でファイル操作が便利&高速
 • グッバイ、Commons IO
• Java7は、早めに導入しておくが吉
 • どうしても無理・・・?
ご清聴
 ありがとう
ございました

More Related Content

What's hot

Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習JPCERT Coordination Center
 
Ruby勉強会@札幌 "Rubyist入門講座"
Ruby勉強会@札幌 "Rubyist入門講座"Ruby勉強会@札幌 "Rubyist入門講座"
Ruby勉強会@札幌 "Rubyist入門講座"Koji SHIMADA
 
from old Java to modern Java
from old Java to modern Javafrom old Java to modern Java
from old Java to modern Java心 谷本
 
C#を始めたばかりの人へのLINQ to Objects
C#を始めたばかりの人へのLINQ to ObjectsC#を始めたばかりの人へのLINQ to Objects
C#を始めたばかりの人へのLINQ to ObjectsFumitaka Yamada
 
DBFlute2017フェスLT資料
DBFlute2017フェスLT資料DBFlute2017フェスLT資料
DBFlute2017フェスLT資料shogokataoka
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2Masatoshi Tada
 
Unit test in android
Unit test in androidUnit test in android
Unit test in androidTatsuya Maki
 
JavaのGenericsとは?
JavaのGenericsとは?JavaのGenericsとは?
JavaのGenericsとは?Kenji Nakamura
 
ゆるふわJava8入門
ゆるふわJava8入門ゆるふわJava8入門
ゆるふわJava8入門dcubeio
 
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~Fujio Kojima
 
Java scriptによるテスト駆動開発
Java scriptによるテスト駆動開発Java scriptによるテスト駆動開発
Java scriptによるテスト駆動開発Hidekazu Nakamura
 
Java8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみるJava8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみるShinya Mochida
 
LINQソースでGO!
LINQソースでGO!LINQソースでGO!
LINQソースでGO!Kouji Matsui
 
from old java to java8 - KanJava Edition
from old java to java8 - KanJava Editionfrom old java to java8 - KanJava Edition
from old java to java8 - KanJava Edition心 谷本
 
Introduction to JShell #JavaDayTokyo #jdt_jshell
Introduction to JShell #JavaDayTokyo #jdt_jshellIntroduction to JShell #JavaDayTokyo #jdt_jshell
Introduction to JShell #JavaDayTokyo #jdt_jshellbitter_fox
 
ジェネリクスの基礎と クラス設計への応用
ジェネリクスの基礎とクラス設計への応用ジェネリクスの基礎とクラス設計への応用
ジェネリクスの基礎と クラス設計への応用nagise
 
LINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XMLLINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XMLShinichiAoyagi
 

What's hot (20)

Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習Javaセキュアコーディングセミナー東京第3回演習
Javaセキュアコーディングセミナー東京第3回演習
 
Project lambda
Project lambdaProject lambda
Project lambda
 
Ruby勉強会@札幌 "Rubyist入門講座"
Ruby勉強会@札幌 "Rubyist入門講座"Ruby勉強会@札幌 "Rubyist入門講座"
Ruby勉強会@札幌 "Rubyist入門講座"
 
講座Java入門
講座Java入門講座Java入門
講座Java入門
 
from old Java to modern Java
from old Java to modern Javafrom old Java to modern Java
from old Java to modern Java
 
C#を始めたばかりの人へのLINQ to Objects
C#を始めたばかりの人へのLINQ to ObjectsC#を始めたばかりの人へのLINQ to Objects
C#を始めたばかりの人へのLINQ to Objects
 
DBFlute2017フェスLT資料
DBFlute2017フェスLT資料DBFlute2017フェスLT資料
DBFlute2017フェスLT資料
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
 
Unit test in android
Unit test in androidUnit test in android
Unit test in android
 
JavaのGenericsとは?
JavaのGenericsとは?JavaのGenericsとは?
JavaのGenericsとは?
 
ゆるふわJava8入門
ゆるふわJava8入門ゆるふわJava8入門
ゆるふわJava8入門
 
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~
 
Java scriptによるテスト駆動開発
Java scriptによるテスト駆動開発Java scriptによるテスト駆動開発
Java scriptによるテスト駆動開発
 
Java8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみるJava8のstreamをダラダラまとめてみる
Java8のstreamをダラダラまとめてみる
 
LINQソースでGO!
LINQソースでGO!LINQソースでGO!
LINQソースでGO!
 
from old java to java8 - KanJava Edition
from old java to java8 - KanJava Editionfrom old java to java8 - KanJava Edition
from old java to java8 - KanJava Edition
 
Introduction to JShell #JavaDayTokyo #jdt_jshell
Introduction to JShell #JavaDayTokyo #jdt_jshellIntroduction to JShell #JavaDayTokyo #jdt_jshell
Introduction to JShell #JavaDayTokyo #jdt_jshell
 
ジェネリクスの基礎と クラス設計への応用
ジェネリクスの基礎とクラス設計への応用ジェネリクスの基礎とクラス設計への応用
ジェネリクスの基礎と クラス設計への応用
 
Introduction of Python
Introduction of PythonIntroduction of Python
Introduction of Python
 
LINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XMLLINQ 概要 + 結構便利な LINQ to XML
LINQ 概要 + 結構便利な LINQ to XML
 

Similar to Java7再入門講座

Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜JustSystems Corporation
 
ClassLoader Leak Patterns
ClassLoader Leak PatternsClassLoader Leak Patterns
ClassLoader Leak Patternsnekop
 
Javaプログラミング入門【第7回】
Javaプログラミング入門【第7回】Javaプログラミング入門【第7回】
Javaプログラミング入門【第7回】Yukiko Kato
 
Xtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うXtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うTatsumi Naganuma
 
Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義JPCERT Coordination Center
 
(call/cc (lambda (cont) (cont 知見)))
(call/cc (lambda (cont) (cont 知見)))(call/cc (lambda (cont) (cont 知見)))
(call/cc (lambda (cont) (cont 知見)))Susisu
 
Java SE 7 InvokeDynamic in JRuby
Java SE 7 InvokeDynamic in JRubyJava SE 7 InvokeDynamic in JRuby
Java SE 7 InvokeDynamic in JRubyHiroshi Nakamura
 
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」yoshiaki iwanaga
 
pi-12. 時間, スリープ, 疑似乱数, タイマー
pi-12. 時間, スリープ, 疑似乱数, タイマーpi-12. 時間, スリープ, 疑似乱数, タイマー
pi-12. 時間, スリープ, 疑似乱数, タイマーkunihikokaneko1
 
Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義JPCERT Coordination Center
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1Susisu
 
Java8から17へ
Java8から17へJava8から17へ
Java8から17へonozaty
 
明日から使える Java SE 7
明日から使える Java SE 7明日から使える Java SE 7
明日から使える Java SE 7Yuichi Sakuraba
 
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 HyのすすめLispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 HyのすすめSatoshi imai
 
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]David Buck
 
Valhalla Update JJUG CCC Spring 2019
Valhalla Update JJUG CCC Spring 2019Valhalla Update JJUG CCC Spring 2019
Valhalla Update JJUG CCC Spring 2019David Buck
 
ji-3. 条件分岐と場合分け
ji-3. 条件分岐と場合分けji-3. 条件分岐と場合分け
ji-3. 条件分岐と場合分けkunihikokaneko1
 

Similar to Java7再入門講座 (20)

Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
 
ClassLoader Leak Patterns
ClassLoader Leak PatternsClassLoader Leak Patterns
ClassLoader Leak Patterns
 
Javaプログラミング入門【第7回】
Javaプログラミング入門【第7回】Javaプログラミング入門【第7回】
Javaプログラミング入門【第7回】
 
Java基礎
Java基礎Java基礎
Java基礎
 
Xtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使うXtend - Javaの未来を今すぐ使う
Xtend - Javaの未来を今すぐ使う
 
Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義Javaセキュアコーディングセミナー東京第3回講義
Javaセキュアコーディングセミナー東京第3回講義
 
(call/cc (lambda (cont) (cont 知見)))
(call/cc (lambda (cont) (cont 知見)))(call/cc (lambda (cont) (cont 知見)))
(call/cc (lambda (cont) (cont 知見)))
 
Java SE 7 InvokeDynamic in JRuby
Java SE 7 InvokeDynamic in JRubyJava SE 7 InvokeDynamic in JRuby
Java SE 7 InvokeDynamic in JRuby
 
Clojrue 13 testing
Clojrue 13 testingClojrue 13 testing
Clojrue 13 testing
 
第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」第三回ありえる社内勉強会 「いわががのLombok」
第三回ありえる社内勉強会 「いわががのLombok」
 
pecl-AOPの紹介
pecl-AOPの紹介pecl-AOPの紹介
pecl-AOPの紹介
 
pi-12. 時間, スリープ, 疑似乱数, タイマー
pi-12. 時間, スリープ, 疑似乱数, タイマーpi-12. 時間, スリープ, 疑似乱数, タイマー
pi-12. 時間, スリープ, 疑似乱数, タイマー
 
Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1
 
Java8から17へ
Java8から17へJava8から17へ
Java8から17へ
 
明日から使える Java SE 7
明日から使える Java SE 7明日から使える Java SE 7
明日から使える Java SE 7
 
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 HyのすすめLispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
Lispmeetup #53 PythonベースのLisp方言、 Hyのすすめ
 
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
JDK 13 New Features [MeetUp with Java Experts! @Gaienmae/Dojima 2019]
 
Valhalla Update JJUG CCC Spring 2019
Valhalla Update JJUG CCC Spring 2019Valhalla Update JJUG CCC Spring 2019
Valhalla Update JJUG CCC Spring 2019
 
ji-3. 条件分岐と場合分け
ji-3. 条件分岐と場合分けji-3. 条件分岐と場合分け
ji-3. 条件分岐と場合分け
 

More from Takafumi Yoshida

cucumber-jvmで受け入れテスト
cucumber-jvmで受け入れテストcucumber-jvmで受け入れテスト
cucumber-jvmで受け入れテストTakafumi Yoshida
 
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理Takafumi Yoshida
 
Javaから見たRubyの世界
Javaから見たRubyの世界Javaから見たRubyの世界
Javaから見たRubyの世界Takafumi Yoshida
 
なれる!SE 読んでみた
なれる!SE 読んでみたなれる!SE 読んでみた
なれる!SE 読んでみたTakafumi Yoshida
 
GlassFishとJavascriptで始めるWebsocket
GlassFishとJavascriptで始めるWebsocketGlassFishとJavascriptで始めるWebsocket
GlassFishとJavascriptで始めるWebsocketTakafumi Yoshida
 
初めてのJavaOne~ところで俺のiPhoneどこいった~
初めてのJavaOne~ところで俺のiPhoneどこいった~初めてのJavaOne~ところで俺のiPhoneどこいった~
初めてのJavaOne~ところで俺のiPhoneどこいった~Takafumi Yoshida
 
Glassfishで始める モテる!簡単クラスタ入門 Ver1.5
Glassfishで始める モテる!簡単クラスタ入門  Ver1.5Glassfishで始める モテる!簡単クラスタ入門  Ver1.5
Glassfishで始める モテる!簡単クラスタ入門 Ver1.5Takafumi Yoshida
 
Glassfishで始める モテる!簡単クラスタ入門
Glassfishで始める モテる!簡単クラスタ入門Glassfishで始める モテる!簡単クラスタ入門
Glassfishで始める モテる!簡単クラスタ入門Takafumi Yoshida
 

More from Takafumi Yoshida (11)

cucumber-jvmで受け入れテスト
cucumber-jvmで受け入れテストcucumber-jvmで受け入れテスト
cucumber-jvmで受け入れテスト
 
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
 
Lightfish触ってみた
Lightfish触ってみたLightfish触ってみた
Lightfish触ってみた
 
Javaから見たRubyの世界
Javaから見たRubyの世界Javaから見たRubyの世界
Javaから見たRubyの世界
 
はじめよう!Github
はじめよう!Githubはじめよう!Github
はじめよう!Github
 
なれる!SE 読んでみた
なれる!SE 読んでみたなれる!SE 読んでみた
なれる!SE 読んでみた
 
Play with Playframework
Play with PlayframeworkPlay with Playframework
Play with Playframework
 
GlassFishとJavascriptで始めるWebsocket
GlassFishとJavascriptで始めるWebsocketGlassFishとJavascriptで始めるWebsocket
GlassFishとJavascriptで始めるWebsocket
 
初めてのJavaOne~ところで俺のiPhoneどこいった~
初めてのJavaOne~ところで俺のiPhoneどこいった~初めてのJavaOne~ところで俺のiPhoneどこいった~
初めてのJavaOne~ところで俺のiPhoneどこいった~
 
Glassfishで始める モテる!簡単クラスタ入門 Ver1.5
Glassfishで始める モテる!簡単クラスタ入門  Ver1.5Glassfishで始める モテる!簡単クラスタ入門  Ver1.5
Glassfishで始める モテる!簡単クラスタ入門 Ver1.5
 
Glassfishで始める モテる!簡単クラスタ入門
Glassfishで始める モテる!簡単クラスタ入門Glassfishで始める モテる!簡単クラスタ入門
Glassfishで始める モテる!簡単クラスタ入門
 

Java7再入門講座

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. \n
  30. \n
  31. \n
  32. \n
  33. \n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. \n
  42. \n
  43. \n
  44. \n
  45. \n
  46. \n