タグ

javaに関するvoidy21のブックマーク (275)

  • コンストラクタ内でのthis参照リーク問題 - やさしいデスマーチ

    GUIの設計パターン」のコメントで指摘があったので補足しておきます。 Javaのコンストラクタは思った以上に複雑で、希に困った状況を引き起こします。その1つの例が「コンストラクタ内でthis参照リーク」問題です。次のようなコードがあった時、どうなるか予想できるでしょうか? class Bar { Foo foo = null; Bar() { } } public class Foo { Bar bar = null; final String finalObj; Foo(Bar bar) { bar.foo = this; if (true) throw new RuntimeException(); this.finalObj = "OK"; } public static void main(String[] args) { Bar bar = new Bar(); try { F

    コンストラクタ内でのthis参照リーク問題 - やさしいデスマーチ
    voidy21
    voidy21 2011/03/21
  • Big Sky :: 最近のjavaコンパイラはconstなStringを結合して最適化...しない

    public class foo { final static String bar = "a" + "b"; public foo() { } public String bar(String baz) { return "a" + "b" + baz + "c" + "d"; } } コンパイルしてデコンパイル # javac -version javac 1.6.0_24 # javac foo.java # jad foo.class // Decompiled by Jad v1.5.8e. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.geocities.com/kpdus/jad.html // Decompiler options: packimports(3) // Source File Na

    Big Sky :: 最近のjavaコンパイラはconstなStringを結合して最適化...しない
    voidy21
    voidy21 2011/03/07
  • 業務系のJavaプログラマーが知っておくべき10個のBad Partsとその対策 - 達人プログラマーを目指して

    Java: The Good Partsののタイトルに触発されて、逆にJava言語の使いにくい部分をいくつかピックアップしてみました。Java EEなどの業務系のアプリケーションプログラマーの視点で書いていますので、別の立場ではここで指摘している事項が必ずしもBad Partではないという指摘もあるかもしれませんし、他にもいろいろなポイントがあると思いますが、とりあえず、私の独断で思いついたものを10個説明したいと思います。 1.標準APIのチェック例外が扱いにくい Java言語のチェック例外は当にGood Partなのか? - 達人プログラマーを目指してでも取り上げましたが、Bad Partの第一番目として標準APIのチェック例外が扱いにくいという点を指摘させていただきたいと思います。チェック例外については、理屈上コンパイラーによって例外の処理をプログラマーに強制させることができるす

    業務系のJavaプログラマーが知っておくべき10個のBad Partsとその対策 - 達人プログラマーを目指して
    voidy21
    voidy21 2011/02/28
  • Javaパフォーマンス計測 文字列操作編 - プログラマーの脳みそ

    前回でパフォーマンス計測に用いるタイマーについての理解を深めたので、やっとパフォーマンスの計測を始めることができる。 今回のテーマはJavaの文字列連結だ。タイムリーだね。 文字列連結についての基礎知識 Javaの文字列連結についての言語仕様まわりは Stringの連結はそう簡単なものではない - じゅんいち☆かとうの技術日誌 が詳しい。しかし、パフォーマンス計測がなっちゃない。パフォーマンスの計測はそう簡単なものではない。 currentTimeMillis()で計測しておいて plusTime:14780, concatTime:7053, sbuilderTime:7, sbufferTime:13 とか、その7とか13の有効数字はいくつだっての*1。 そんなわけで、計測方法を工夫してみよう。二重ループとし、内側を1000回、それを500回繰り返す。ループが1回まわる間に1回ずつSy

    Javaパフォーマンス計測 文字列操作編 - プログラマーの脳みそ
    voidy21
    voidy21 2011/02/24
  • @IT Special:Javaシステム開発のテスト現場、このままで良いのか?

    単体テスト効率化ソリューション 「Agitator +Agitar Management Dashboard」 Javaシステム開発のテスト現場、 このままで良いのか? IDE(統合開発環境)や各種フレームワークの登場で、プログラミングの速度や効率化は年々向上している。しかし、品質向上における各種テストに関しては、人手、いわゆるマンパワーによるところが大きい。このテストをいかに効率良くかつ正確に行うかが、プロジェクトの成否を決めるだろう。ここでは、ソフトウェアにおける最小単位のテストである単体テストにフォーカスし、バグを早期発見できる単体テスト効率化ソリューションを紹介しよう 開発者の多くは、システムの大規模化・短納期化に直面し、プログラムを実装するのが精いっぱいで、システムの品質を確保するのに苦労しているのではないだろうか。システムの納品間際になってテスターを大量投入したり、徹夜を繰り返

  • タスクを並行で実行するために必要なこと 〜基礎編〜 - かとじゅんの技術日誌

    スレッドセーフの話も語ればキリがないのですが、そろそろ「タスクを並行に実行する」話題にいってみましょう。この手の記事は結構あるし、書籍の内容をまるまるというわけにいかないので、独断と偏見でポイントを絞って軽く解説する感じで書いてみます。とりあえず、ThreadクラスとExecutorクラスあたりから。 この書籍のP129あたりです。 Java並行処理プログラミング ―その「基盤」と「最新API」を究める― 作者: Brian Goetz,Joshua Bloch,Doug Lea出版社/メーカー: ソフトバンククリエイティブ発売日: 2006/11/22メディア: 単行購入: 24人 クリック: 419回この商品を含むブログ (163件) を見る 並行処理のアプリケーションには、「良いスループット」と「良い応答性」の両方が必要と書かれています。スループットは、単位時間あたりの処理能力のこ

    タスクを並行で実行するために必要なこと 〜基礎編〜 - かとじゅんの技術日誌
    voidy21
    voidy21 2011/02/15
  • 2011/01/22 Javaソースコードリーディング 第2回

    SHUJI@000 @shuji_w6e 例えば、JavaでのテストをGroovyなどの表現力の高い言語で書くのは素晴らしいことだが、サンプルコードとしての価値が低くなる #tddbc 2011-01-22 10:43:28 close_yutori @kimukou2628 @shuji_w6e Groovy自体の学習コストが高いという事でしょうか? 所詮JavaのテストFw(Spock,JUnit)を使ってスクリプトっぽく書けるだけなので、javaでテストケース書いても変わらない気がします<まあGroovy経験者って募集じゃ人が集まらないかもとは 2011-01-22 10:53:15

    2011/01/22 Javaソースコードリーディング 第2回
    voidy21
    voidy21 2011/02/15
  • jXLSを使ったExcelテンプレートをSpring MVCのビューとして利用する方法 - 達人プログラマーを目指して

    jXLSを使ってJSPと同様の方法でExcelファイルを生成する 業務アプリケーションでは好むと好まざるとにかかわらず、Excelファイルの入出力を行う必要がある場合が多くあります。JavaからExcelファイルの読み書きを行うOSSのライブラリーはいくつかありますが、中でもApache POIが有名です。以前は不安定だったり、機能が限られていたりしたところもあるのですが、長い時間をかけて現在ではかなり安定して使えるライブラリーになっています。 ただし、POIの最大の問題点は、提供されているAPIがあまりにも低水準であることです。単純なExcelファイルの帳票を作成するだけでも、多重ループを書きながらセルごとに値を転記するような面倒なコーディングが必要になります。 Excelのテンプレートファイルを作成しておき、そこに値をバインドすることでExcel帳票を生成するようなケースでは、jXLS

    jXLSを使ったExcelテンプレートをSpring MVCのビューとして利用する方法 - 達人プログラマーを目指して
    voidy21
    voidy21 2011/02/14
  • 国产成人18黄网站_伊人久久大香线蕉午夜_成人免费看的A级毛片_亚洲欧美日韩精品久久_爆乳2把你榨干哦在线观看

    国产成人18黄网站,伊人久久大香线蕉午夜,成人免费看的A级毛片,亚洲欧美日韩精品久久,爆乳2把你榨干哦在线观看,国产成人AV乱码免费观看,国产AⅤ精品一区二区三区久久

  • Java

    JavaDevelop modern applications with the open Java ecosystem.The Java programming language is a high-level, object-oriented language. It is rapidly evolving across several fronts to simplify and accelerate development of modern applications.

    Java
    voidy21
    voidy21 2011/02/11
  • Slim3でDIコンテナっぽくテストする方法 - テツ日記

    2週間ほど前に、急遽SAStruts+Seasar2+S2JDBCの現場のヘルプに呼ばれました。 ところがテツさん、Seasar2はおろかDIコンテナ自体やったことなくて、大急ぎで勉強する羽目になりまして。 今も勉強しながら作業しているんですが、そんな中ふと「あれ、Slim3でもDIっぽく作れるのでは…?」という考えが浮かんできました。 思い立ったら早速検証! まずは、DI(Dependency Injection)についてのおさらい 例えばとあるメソッドを public int getCount(){ Foo foo = new Foo(); Bar bar = new Bar(); return foo.getCount() + bar.getCount(); } みたいに作ると、Foo#getCount()はDatastoreにアクセスしていて、Bar#getCount()はURLフ

    Slim3でDIコンテナっぽくテストする方法 - テツ日記
  • JMockitは理想的なモックフレームワーク - かとじゅんの技術日誌

    テストを書いているとモックオブジェクトを使う機会が多いと思います。そのモックオブジェクトは自前で作るよりは、JMockやMockito*1などのフレームワークを利用した方が楽でしょう。 今回は機能的に、ほぼ最強と思われるJMockitを紹介します。 これが、他のモックフレームワークとの機能比較です。 MockingToolkitComparisonMatrix - jmockit - A feature matrix comparing several mocking toolkits. - Project Hosting on Google Code 機能が多ければ使いやすいか。そんなことはないと思います。しかし、これは使いやすいかもと周りの人からお勧めがあったので、実際に使ってどんなところが使えるのか検証してみたので、書いてみます。あと、最後にScalaで使えるか試してみました。 あ、

    JMockitは理想的なモックフレームワーク - かとじゅんの技術日誌
    voidy21
    voidy21 2011/02/07
  • GAE/JでHTTPSの利用を強制するときの注意点とTips - Kengo's blog

    Google App EngineではHTTPSを使うことができます。また、web.xmlにsecurity-constraintを記述することによって、HTTPSの利用を強制することもできます。 設定方法については公式サイトに載っているのですが、HTTPSの強制をCronやTask Queueと併用する場合に1点注意する必要があります。 これらのサービスはサーブレットにHTTPでアクセスするため、対象がHTTPSの利用を強制されている場合に403 Forbiddenで返されてしまうのです。このためCronやTask Queueから使うサーブレットについてはHTTPSを強制せず、HTTPの許可を保つ必要があります。 とは言え「CronやTask Queueで使わないURLをピックアップして、それ以外をsecurity-constraintに登録」というのは面倒で漏れも出そうです。楽できない

    GAE/JでHTTPSの利用を強制するときの注意点とTips - Kengo's blog
  • 「Java 6 でIVSを比較すると何が起こるか」の記事の誤り - Cafe Babe

    以下の記事に誤りが散見されるが,それが広まるのは望ましくないので,ここで誤りを指摘しておく. 「Java 6 でIVSを比較すると何が起こるか」(yanok.net) まず,Javaの文字列の同一性判定の話である. これは想像通りですね。単にcharの列を比較しただけの結果になっています。つまり、見た目の区別がつかなくても容赦なく別々の文字列として扱っています。これが何をもたらすかというと、Stringクラスで比較しているプログラムに対しては、"与" と "与[0E0100]" と "与[0E0102]" を、見た目の区別がないにもかかわらず、人が入力し分けてやらないと困ることになるということです。 Java言語でUnicode文字列が同一性を判定するには,いくつかの方法がある. java.lang.String#equals()…単なるUnicode文字シーケンスの同一性を判定する ja

    「Java 6 でIVSを比較すると何が起こるか」の記事の誤り - Cafe Babe
    voidy21
    voidy21 2011/01/14
  • SI業界(日本)のJavaプログラマーにはオブジェクト指向より忍耐力が求められている? - 達人プログラマーを目指して

    私自身は10年以上も前(JDK1.1の頃)にSJC-Pの認定を取って以来、Javaプログラミング関連の認定試験は受けていないのですが、昨日たまたまネットを検索して、SJC-Pとは別にJavaプログラミング能力認定試験という試験が存在していることを知りました。結構メジャーな認定試験のようですので、現役のJavaプログラマーJavaプログラマーを目指している学生さんで、今後受験に向けて勉強されている方々も多くいらっしゃるのではないかと思います。 試験は難易度に応じて3級から1級までランクが分かれており、2級まではJava言語の知識に関する筆記試験ですが1級の試験では実際のプログラムの修正を行う能力が実技試験として課せられます。試験範囲は以下で公開されています。 Javaプログラミング能力認定試験(試験範囲) 私は(自分で言うのも変ですが)、Javaプログラミングについてはこの道15年近くのキ

    SI業界(日本)のJavaプログラマーにはオブジェクト指向より忍耐力が求められている? - 達人プログラマーを目指して
  • slim3でjspのスクリプトレットでもHot Reloadingする方法 - あおうさ@日記

    slim3のHotReloadingでClassCastExceptionのエラーが発生した - あおうさ@日記の続き。 解決方法をid:higayasuoさんに教えてもらったので下記のようにした。 BlogDao.class public List<Blog> findAll() { List<Blog> blogList = from().getResultList(); return (List<Blog>)this.pm.detachCopyAll(blogList); // シリアライズできるようにdetachする } IndexController.class List<Blog> blogList = new BlogDao().findAll(); requestScope("blogList", blogList); ViewHelper.class public sta

    slim3でjspのスクリプトレットでもHot Reloadingする方法 - あおうさ@日記
  • Java言語で固定要素のListを初期化する際のイディオム - 達人プログラマーを目指して

    Generics(総称型)のプログラミングはJava言語(バージョン5以降)で最も習得が困難な文法*1の一つです。私自身、時々どうやって文法エラーを修正すべきか悩むこともあるくらいで、実際かなり複雑です。Genericsの導入は賛否両論なので、実際Javaに導入したのは間違いだったという議論もある一方で、静的な型安全性を重視するプログラマーもいます。 好き嫌いはともかくとして、Javaプログラマーとしては、一度きちんとGenericsの正しい使い方(=使い勝手のよい総称型やメソッドの正しい定義方法)について勉強しておいてもよいと思います。 Java Generics and Collections: Speed Up the Java Development Process 作者: Maurice Naftalin,Philip Wadler出版社/メーカー: O'Reilly Media

    Java言語で固定要素のListを初期化する際のイディオム - 達人プログラマーを目指して
    voidy21
    voidy21 2010/12/27
  • BytemanによるJava黒魔術 - nekop's blog

    クリスマスも近いですね。さて、クリスマスといえばどういうわけか黒魔術への需要が一気に高まる時期のようですので、Java Advent Calendar -ja 2010の12月20日はJavaの黒魔術をお送りします。昨日はid:celitanでした。 今日紹介する黒魔術はバイトコードインジェクションツールであるBytemanです。 この前ですね、お仕事で「HTTPレスポンスのヘッダが勝手に想定外のものに書き換わる」という不思議現象の相談を受けたんですね。Servletの中ではsetHeader("Foo", "bar")ってしてるのに、実際のレスポンスは"Foo: hoge"とか返ってる。アプリのJavaソース調べてもそんなことしてなさそうだし、Tomcatのソース見てもsetHeader()呼び出しでは何のログも出さないっぽいのでログを有効にしても原因がわからなさそう。なんだこれはとか思

    BytemanによるJava黒魔術 - nekop's blog
    voidy21
    voidy21 2010/12/21
  • OracleとApple、OpenJDK Project for Mac OS Xを発表

    2010年11月12日、カリフォルニア州レッドウッド・ショアーズおよびクパティーノ、OracleApple®は日、OpenJDK project for Mac OS® Xを発表しました。Appleは、32ビットおよび64ビットHotSpotベースのJava仮想マシン、クラスライブラリ、ネットワーキングスタックそして新しいグラフィカルクライアントのためのファウンデーションを含む、Mac OS XにJava SE 7を実装するために必要なほとんどの主要コンポーネント、ツールおよびテクノロジーを提供します。OpenJDKにより、AppleJavaテクノロジーをオープンソースデベロッパが利用できるようになるため、彼らがこのプロジェクトにアクセスして貢献できるようになります。 「拡大しつつあるOpenJDKコミュニティーにAppleが参加し、重要な貢献をしてくれることを歓迎するとともに嬉しく

  • 単体テスト勉強会 - やさしいデスマーチ

    札幌Javaコミュニティの勉強会の最近のテーマは主に3つ。 言語の基礎 単体テスト GAE 今回は単体テストの基礎ということで、どのように単体テストをすれば効果的か?という点をテーマにやりました。資料はこちら。 Unit testView more presentations from Shuji Watanabe. 当日に書いたコードはこちら。ただし、これは正解ではないです。あくまで1つの例でしかないのでご注意ください。 Bitbucket ワークショップスタイルで、実際に考えて手を動かしてディスカッションしながらだったので、あまりブログでまとめるのが難しい所です。 追記 これだけスライドから転記。 assertThat(${actual}, is(${expected})); ${assert:importStatic ('org.junit.Assert.*')} ${matcher

    単体テスト勉強会 - やさしいデスマーチ