タグ

Javaに関するrryuのブックマーク (49)

  • 内部クラスはエンクロージングインスタンスが無くてもインスタンス化できるのは仕様? - 地平線に行く

    id:backpaper0さんが内部クラスはエンクロージングインスタンスが無くてもインスタンス化できる?と書かれていました。 Inner.class.getConstructor(Outer.class).newInstance((Outer) null); 実行してみたところ、確かにインスタンス化できました。 でも、これってバグなんでしょうか?仕様なんでしょうか? id:backpaper0さんは「わからない」、これを検証したid:ryoasaiさんは「バグに近い」としています。 そこで、調べてみました。 内部クラスのコンストラクタ まず、内部クラスの挙動を確認してみました。 id:ryoasaiさんの検証コード(普通のSI会社では評価されにくいのだけど、多くのシステムは研究熱心な技術者の小さな発見と工夫の積み重ねによって支えられているのでは? - 達人プログラマーを目指して)を改良し、

    内部クラスはエンクロージングインスタンスが無くてもインスタンス化できるのは仕様? - 地平線に行く
    rryu
    rryu 2011/05/02
    結局JLSの15.9.3にはPrimary.newというかqualified class instance creation expressionへの言及がざっくり抜けているだけな感じがしてきました。
  • 普通のSI会社では評価されにくいのだけど、多くのシステムは研究熱心な技術者の小さな発見と工夫の積み重ねによって支えられているのでは? - 達人プログラマーを目指して

    昨晩遅く、id:backpaper0さんの以下のツイートが目にとまりました。 staticでない物の内部クラスは暗黙で外側のインスタンス(エンクロージングインスタンス)のthisにアクセスできる仕様なので、newを使った普通のインスタンス化の方法では決して外部のインスタンスが存在しない状態でnewできないようになっています。つまり、内部クラスのインスタンス化にはエンクロージングインスタンスの存在が前提となるというのが私が長年Javaのコードを書いてきた中での常識でした。 実際、エンクロージングインスタンスの外側で内部クラスのインスタンスを作成する場合、以下のようにnew演算子の前にエンクロージングインスタンスを書かなくてなならない仕様となっているため、これがnullでは決して内部クラスが生成できないように構文上工夫されています。 public class Outer { private

    普通のSI会社では評価されにくいのだけど、多くのシステムは研究熱心な技術者の小さな発見と工夫の積み重ねによって支えられているのでは? - 達人プログラマーを目指して
    rryu
    rryu 2011/05/02
    JLSの15.9.4にPrimary.newのPrimaryはコンストラクタ呼び出し前に評価されnullチェックされるとあるので、呼び出し側がnullでないことを保証するという仕様なのだと思う。
  • Javaフレームワークの比較検討資料公開 - 矢野勉のはてな日記

    Java仕事で各種フレームワークを比較検討したので、比較用に作った参考資料を公開します。ちなみに現在私は、ドワンゴさんの社内システム開発をお手伝いしてまして、その一環で調べたものです。会社資料じゃなく、私の資料ということでブログで公開してよい、むしろしとけ、とのことなので公開しときます。 今回の案件向けにアプリケーションを画面層コンテナ層データアクセス層に分けて、それぞれフレームワークを選ぶのが目的です。コンテナ層はDIコンテナのうちいずれか、データアクセス層はO/Rマッパーを選ぶことになります。 太枠の範囲が選定対象です。よくに出てくる杓子定規な階層図とは変えてあります。 次のものを比較検討しました。画面層SAStrutsApache Wicket(ほかにもTeedaとかClick Frameworkとかももともとは候補にあったが、調査が追いつかないので二つに絞った)コンテナSeasa

    rryu
    rryu 2011/04/13
    意外とよくまとまっているっぽい。。
  • Sign in - Google Accounts

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

    rryu
    rryu 2011/04/11
    ディスパッチャのみのウェブアプリケーションフレームワーク。アノテーションでパターンやパラメータを指定できるのが特徴。
  • Slim3 pluginでScenic3の使い方 - やさしいデスマーチ

    Slim3には簡単にプロジェクトを作成する為に使えるEclipse pluginがあります。@tomotaro1065 さんが中心になって作られていますが、ご厚意でScenic3の対応もしていただいています。ですが、自分で使ってみて使い方が解らないのではないか?と気付きました。そこで、Scenic3の仕組みを含めてチュートリアルを書く事にします。内容は後でドキュメントに反映させるつもりです。 Scenic3ってなにさ? scenic3は t2 frameworkのようなPageクラスをslim3で実現するslim3の拡張ライブラリです。 Scenic3はSlim3を薄くラップしたライブラリで、Slim3の設計思想である「"Simple" and "Less Is More"」を踏襲しつつ、1つのPageクラスに複数のアクションメソッドを記述できるようになります。spin-upへの影響は最小

    Slim3 pluginでScenic3の使い方 - やさしいデスマーチ
    rryu
    rryu 2011/04/11
    アクション単位でクラスを作らなければならないSlim3に、T2フレームワークのページモデルを融合させてひとつのクラスに複数アクション記述できるようにしたもの。
  • Java SE 6 じゃじゃ馬ならし StAX

    ストリーミングで XML - StAX 第 3 の刺客? 今まで、Java で XML を扱うのには 3 種類の方法がありました。 DOM SAX JAXB JAXB はちょっと毛色が違うので、単に XML をパースするならば DOM か SAX です。 ところが、Java SE 6 では新たにもう 1 つパーサが追加されました。 それが今回紹介する Streaming API for XML、通称 StAX です。StAX は JCP の JSR-173 で策定されており、BEA がスペックリードになっています。 さて、この 3 つのパーサの違いというのは何なのでしょう。よく説明されるのが、 DOM - オブジェクトモデル SAX - プッシュモデル StAX - プルモデル というものです。 DOM がオブジェクトモデルというのはすぐに分かりますね。DOM ツリーとしてヒープに持つわけ

  • VM Spec The Structure of the Java Virtual Machine

    Java Language and Virtual Machine Specifications Java SE 26 Released March 2026 as JSR 401 The Java Language Specification, Java SE 26 Edition HTML | PDF Preview feature: Primitive Types in Patterns, instanceof, and switch The Java Virtual Machine Specification, Java SE 26 Edition HTML | PDF Java SE 25 Released September 2025 as JSR 400 The Java Language Specification, Java SE 25 Edition HTML | PD

  • JavaはCより速かった — ありえるえりあ

    http://blog.liris.org/2009/03/java.html 仕事をせずに遊んでいる人のコードを、家のJava(Java6)で試してみました。 シェルで動かして、グラフはgnuplotです。ハイテク満載です。 $ seq 1 100 |xargs -n 1 java test |tee /tmp/java-cl.out $ seq 1 100 |xargs -n 1 java -server test |tee /tmp/java-sv.out 横軸は同時スレッド数、縦軸が時間(ミリ秒)です。要は低い方が速くて優秀です。 クライアントVMとサーバVMの差がすごいです。と言うか、サーバVMが優秀すぎます。と言うか、サーバVMの数値は変です。トータルでまわるループ数が線形に増えているはずなのに、処理時間があまり増えていません。 試しにと思って、Cのコードと比較してみました(コ

    rryu
    rryu 2009/03/11
    total += iがアトミックに実行できればsynchronizedは要らなくなってしまうので、2つの変数を更新するとかすればまた結果が変わるかも。
  • グレーゲーム