タグ

2010年9月5日のブックマーク (4件)

  • [Android編]短命なオブジェクトを作ってはいけない

    Android上のアプリケーションはJava言語で開発できるが、PCやサーバー向けのJava仮想マシンとは異なる「Dalvik仮想マシン」上で動作する。Dalvik仮想マシンは、モバイル向けに特化されているのが特徴である。 Androidアプリケーションの開発では、Javaの開発現場で培ってきた資産やノウハウを生かすことができる。だが、基的にPC上で動作させるJavaアプリケーションと同様に考えてしまうと、思わぬ落とし穴に陥ることになる。 そこで、主にメモリー管理の面からJava仮想マシンとDalvik仮想マシンの違いを見ていくことにする。 両者とも、メモリー管理はガベージコレクタ(GC)が担当する。ヒープ領域に空きがない場合、不必要なオブジェクトを回収して空き領域を作るのがGCの役割である。Java仮想マシンでは「世代別GC」という方式を採用しているが、Dalvik仮想マシンは「マーク

    [Android編]短命なオブジェクトを作ってはいけない
  • Eclipse3.5のコンパイラに致命的なバグ有り

    昔も書いたが、EclipseのJavaコンパイラとJDKのjavaコンパイラは別物。 昨日、原因究明に到るまで半日要したのだが、 Eclipse3.5のJavaコンパイラ(ecj)に致命的なバグがあることを発見した。 簡単に説明すると、 『非publicな親クラスから引き継いだpublicメンバーを、異なるパッケージにおいて子クラス経由でリフレクションで呼び出すとエラーになる』 というもの。まあコードを見たほうが早いので、下のコードを見るべし。 サンプルコード NonPublicParent.java package foo; class NonPublicParent { public void aMethod() { System.out.println("method1"); } } PublicChild.java package foo; public class PublicC

    Eclipse3.5のコンパイラに致命的なバグ有り
  • JUnit4.7 の新機能 Rules とは〜その2 - A Memorandum

    先日は、@Ruleの使い方として、VerifierとTemporaryFolderについて見てきました。日はその他のRuleについて見ていきます。 Timeoutルール org.junit.rules.Timeout は、全てのテストメソッドに、同じタイムアウト時間を設定します。コンストラクタにてミリセカンドでタイムアウトを設定します。 @Rule public MethodRule globalTimeout= new Timeout(20); @Test public void testInfiniteLoop() { for (;;) { ・・・ } TestNameルール org.junit.rules.TestNameルールは、テストメソッドの名前を取得可能にするルールです。以下の例では、testA というテストメソッド名が評価されています。まあ、何に使うの?という所はあります

    JUnit4.7 の新機能 Rules とは〜その2 - A Memorandum
  • JUnit4.7 の新機能 Rules とは - A Memorandum

    Rules とは JUnit4.7から@Ruleアノテーションが追加されました。@Ruleアノテーションは、org.junit.rules.MethodRuleインターフェースのサブクラスによって定義された振る舞いをテストメソッドに追加します。 MethodRuleの組み込み実装クラス MethodRuleの具象クラスとして、以下のクラスが提供されています。 MethodRule ├ Verifier : オブジェクトの状態が不正な場合にテストを失敗させる │ └ ErrorCollector : 1つのテストメソッドの複数のエラーを集集する ├ ExpectedException : スローされた例外について柔軟なアサーションを行う ├ ExternalResource : サーバの起動停止などの外部リソースの操作を行う │ └ TemporaryFolder: テストメソッド前に一時フ

    JUnit4.7 の新機能 Rules とは - A Memorandum