関ジャバに行ってきたメモ
関ジャバの集いに参加してきました。
簡単にですが、以下Pomeraでメモった内容をアップ。
■最初のご挨拶
1年6回はやる、たとえ参加者がいなくとも!
次回は1月後半
詳しくはJUGGUGで告知
■2010年Javaの旅
・Java7の存在意義
【Javaを取り巻く環境】
 GAE/J. Android(DalvikVM), OpenJDK, Oracle
 JCPではなくこれからはGoogleがJavaを牽引?
・OpenJDK 
JDK7,OpenJDKはほぼ同一ソース
 ソースの参照や改変依頼が容易になる?
 OOS化がJDK7のリリース遅れを生み出している
Oracleによる買収
1.Modularity
・public is too public
特定モジュールの中だけで使いたいものだけアクセス指定したい。
→moduleキーワード導入
 muduleクラス,moduleメソッドはそのモジュールからのアクセスのみ。
・JARの依存が複雑
JARの依存を動的解決(Mavenのようにとってくる)
ビルド担当者、デプロイ担当者が難色?はまりそう。
2.動的言語対応
・JRuby遅い
 動的言語はコンパイル時に型が決まらないから
 理由:呼び出すメソッドが不明確。実行時に解決する必要があるため。
・invokedynamicの導入
要するに高速なリフレクション
JVM上で動く言語の開発者、大喜び
3.その他(たくさん)
tryを使ってclose不要に
数値リテラルの改善
数値にバイナリ
ListやMapの初期化を簡単に記述
ListやMapの宣言を簡単に
Map
・fork/joinフレームワーク
複数スレッドの動機
新しいファイルシステム
→ファイル属性の変更・取得
→ファイルの更新管理
→ディレクトリのウォーキング
■G* in Action
githubにも公開しています
GroovyはJSR241仕様
開発環境
 groobysh
 groovyConsole
 GroovyEclipse ・・・2.0から良くなった。おすすめ。
 
List
 each
 eachWithIndex ・・・インデックス付で
 find ・・・List内のマッチング
 findall 
 collect
 *.upperCase
File I/O
 .text
 .getText('UTF-8')
 .write
 <<
 .toURL().text でHTMLページの情報が取得できる
SQL も簡単に使えるよ
COM
 MSオフィスなどを操作できる
POI
 @Grab group,module,version
  実行時にlibraryをダウンロードしてくれる
UnitTestも簡単 GroovyUnitTestみたいなのがある
フレームワークとか
 Grails
  プラグイン豊富
 Gaelyk
  GAE/J Groovy tool kit
 Griffon
  Swing, JavaFX
Groovyインアクション読書会
11/21 場所:クロノスさんとこ
■テストのニュージェネレーション
・JUnit3
 いわゆるユニットテスト
弱点:
 ステートレス
 例外テストが複雑
例)
try{ fail(); }catch(Exception expected){ assertTrue(true); }
引数が渡せない
・TestNG
 ユニットテストにとどまらない
 TestNGについての情報は作ってるCedricさんとこのブログ参照してね
 →  Otaku, Cedric's blog 注目は「おたく」らしいです
 JUnit4はTestNGからインスパイアされた
・TestNG
 ステートフル
 @Test
 @BeforeMethod/@AfterMethod
 @BeforeClass/@AfterClass
 @BeforeTest/@AfterTest
 @BeforeSuite/@AfterSuite
 expectedExceptions ={RuntimeException.class}
設定ファイル(xml)
→テストプログラムと実行方法を分離する
データ駆動テスト
DataProvider
@Test(dataProvider = "add") public void verifyAdd(int a, int, int expected){ ... @DataProvider(name = "add") public Object[][] data(){ return new Object[][]{{1,2,3}, {2,3,4}}; }
マルチスレッドテスト
 @Test(invocationCount = 5, threadPoolSize = 3)
 テストを並列実行できる
 テストのグループ化
 テストに依存関係を持たすことができる
 @Test(groups = "first")
 @Test(groups = "second", dependsOnGroups= "first")
 @AfterGroup
 XMLを書く必要あり
・JUnit4
 @BeforeClass/@AfterClassはstatic
 @Test(expected = java.lang.RuntimeException.class) 
 JUnit4で引数
 コンストラクタから渡すしかない
まとめ
 各テストは独立すべき?
 →ユニットテストではそう。