関ジャバに行ってきたメモ
関ジャバの集いに参加してきました。
簡単にですが、以下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で引数
コンストラクタから渡すしかない
まとめ
各テストは独立すべき?
→ユニットテストではそう。