Java

Oracle JDBC Driver 10g の罠(追記)

Oracle問い合わせの結果バグレポートが来ました。やっぱりバグですのね。分かっちゃいたけど、9iから10gへのクラス変更によるバグってデグレ試験抜けてるんじゃないか?かなり綺麗にクラス構成が変わったのは褒めるとしてやっぱりユーザとしては動きにバグ作…

Oracle JDBC Driver 10g の罠

8i→9i→10gとJDBCドライバを使ってきてましたが、今回の問題もほどよくキツイ。 DATE型カラムをPreparedStatementで検索した結果、9iではjava.sql.Timestampで取れていたのに、10gではjava.sql.Dateで返却されるため、時分秒が欠落してしまう。 ここでもう一…

Oracle JDBC の ScrollableResultSetの実装

気付かなかった…。そう性能評価でやけにメモリを食べられていると思ってチェックしたら…。 そう、どうしてもScrollableなResultSetが必要で、ResultSet#beforeFirst等のメソッドを使用する必要があったので、PreparedStatementを作成する時にTYPE_SCROLL_INS…

業務プログラミング

最近特にフレームワーク開発のプロジェクトに参加しておりますが、元々業務システムを作成する立場でもあったため双方についてよく見えてきました。業務システムを作成する上でどのようなフレームワークであるべきか?どういう風に使われたら楽か?というこ…

バッチフレームワーク

私は最近(約3年間)バッチフレームワークに縁がある。最初某プロジェクトで2人(+アドバイザ2人)で作成したJavaバッチフレームワーク。オンラインバッチ、夜間バッチとあるが、すべてWebLogic+Oracleとよく見かける構成上で動作するようにEJB(Stateless Sessio…

JDK1.4.2_08リリースでのJavaWebStartの修正点調査 その後

実際この修正点に書かれている内容で、業務アプリがエラーと問題処理票が上がってます。08にすれば直るのかどうか?まず再現の仕方がバグパレードを見ても分かりません。それが直るのかどうか、これもバグパレードを見ても分かりません。アプリで故障が起き…

JDK1.4.2_08リリースでのJavaWebStartの修正点調査

http://java.sun.com/j2se/1.4.2/ja/ReleaseNotes.html いつのまにか08がリリースされていましたね。JavaWebStartな私は、リリースノートを見て以下の2点をチェック。 6189594-javawebstart download_engine Java Webstart アプリケーションの起動が遅すぎ…

AIX Javaオプション

今注目しているのは、"-Xquickstart"オプション。約1分ぐらいのJavaアプリに対してどれだけ有効なのか検証しなきゃなりません。 比較的繰り返し処理が少ないJavaプログラムには、このオプションがかなり効く場合がありました。実行速度が実質50%〜80%になり…

マルチプロセスでのFile#createTempFile

一時ファイル作成のために、File#createTempFileを使用していたが、多重で起動されるJavaプロセス間での一意性保証がされないため失敗 orz。マルチスレッドでは、synchronizedかけられているため問題は無いが、マルチプロセスで深く考えていなかったためバグ…

UI動作確認テスト

テストというか自動で動作するツール検証をしています。でかい規模の開発になるとリリース毎に主要画面を全て動作確認すること自体が偉く手間になってしまいます。 リグレッションしたい内容は2点。 リリースミスがないか? デグレってないか? 自動でやっ…

SwingとOSの時間の差違によるバグ

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4976596 http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6207371 1.4から新たに追加されたInputEvent#getWhen。これがEventを時間で処理しようとするとハマル・・・。OSの時間を1分進めてみると、…

JavaWebStartの理解

またJavaWebStartを理解するために、色々調査をしておりましたが、面白いですね。 "javaws.exe [URL/JNLPFile]"を実行するとjavaw.exe(1)でJavaVMがデフォルトで起動する。 JNLPファイルにHeapサイズ指定等があると、今の実行しているjavaw.exe(1)から指定さ…

Java Web Startで起動しているアプリにプロファイラをかける

JavaWebStart上で動いた時のみ発生するような故障は、解析がすごく大変ですよね。 一応、その方法のメモを残します。JavaWebStartは、javawsから起動されるjavaw上でアプリケーションが実行されているので、まずEclipseからjavawsを起動する必要がある。 Ecl…

JavaWebStart上でのアプリデバッグ中

まず、デバッグの方法が・・・。

CDS(共有アーカイブ)をちょっと確認

ClientVMを使用してシリアルガベージコレクタを使用した場合のみの機能らしいが、同じマシン上でさらに多くのアプリケーションを同時に実行できるようになるということで、なかなかいいんじゃないでしょうかね。 簡単に下記のコマンド叩くと"classes.jsa"が…

一段落したからJ2SE1.5.0_01でも〜StringBuilder

今更ですが(^_^;) 仕事でJDK5.0を導入するのは、きっとP.P系が対応してからだからまだまだかなぁ〜と思いつつ、そろそろやってみようかと。 さて、J2SE1.5.0_01をダウンロードしてインストールしてみる。そろそろ新機能について理解を深めておかないと置いて…

EclipseのOutOfMemoryError

テストを実行しようとしたら、「要求されたプロジェクトにエラーがあります。起動を続行しますか?」と聞かれる。あれ?さっきまでコンパイル成功してたのに・・・。と赤×のソースを見ると・・・ orz 画像見えにくいですが、「-内部コンパイルエラー java.la…

案外便利かもしれないcom.sun.javaws.jardiff.JarDiff

Java Web Startを散々いじってきましたが、ふと「Jarの差分が知りたい」と思った時、JarDiffクラスが使えるんじゃないか思った訳で、これが案外便利かもしれない。 javawsは、J2SEに入ってるので自動的にインストールされているはずの%JAVA_HOME%\jre\javaws…

今までのパフォーマンスコーディングは既に古いかもしれない(続・補足)

StringBuffer http://d.hatena.ne.jp/yasuff11/20050126#p1 周りから聞いて初めてオレンジニュースに載ってるのを知りました。ビックリした(^_^;) 先月書いた内容では、コードも何も無くて突っ込まれて当然でした。あの時はある神の言葉が「文字列結合は"+"…

J2SE v 1.4.2_07 SDK

http://java.sun.com/j2se/1.4.2/ja/download.html J2SE v 1.4.2_06を適用するかどうかを検討していたところで_07が出てしまいました。単純には適応できないのでまた精査必要です。

double-checked lockingに引っかかる

http://www-6.ibm.com/jp/developerworks/java/020726/j_j-dcl.html 2002年5月の記事。synchronizedをいかに少なくするかを検討していたところ、記述したらdouble-checked lockingイデオムはダメですとEclipseに怒られる。・゜・(ノ∀`)・゜・。 あきらめて、…

今までのパフォーマンスコーディングは既に古いかもしれない

性能向上するためにJavaプログラムを見直ししてる日々。今は昔こう書けばパフォーマンスが上がるという定説は通用しないのを実感した。特に下記2点については使えない@J2SE1.4.2。 文字列結合にはStringBufferを使いましょう メソッドの修飾子によって速度…

HashMapと性能

HashMapはObjectをキーにObjectを入れる簡単に扱える入れ物というイメージがある。ゆえに多用してしまう傾向がある(実際便利だし・・・)。 性能的な注意点は1つ。当たり前だが、HashMap生成時にできる限りサイズ指定でインスタンス化して欲しい。これだけで…

性能プロファイリング中

http://enerjy.com/ja/home.htm http://sourceforge.net/projects/eclipsecolorer/ PCの性能もしょぼいのですが、EnerjyをEclipseプラグインとして使用しています。☆さんが購入してくれました(゜〜゜)ありがたやぁ。フリーのEclipse profilerを今まで使用し…

Java Web Start (Client側) の問題解決方法

あまり使われていないのか、完璧すぎて問題が全く無いのか?ネットにほとんど情報が無いですね。J2SE1.4.2では問題が発生するのにJ2SE1.5では問題が出ないとか様々な問題が発生しています。最近良く見るエラーは・・・。 「XXXは、署名されていません。」「…

Java Web Start に苦戦中

・・・

DBサーバへのトラフィック

DBサーバへのネットワークトラフィックって思ったよりも性能劣化させますね。やっぱりDB更新を頻繁に行うアプリは、DBサーバ上に配置するほうがいいみたい。周知の事実だが目に見えて分かった。 PreparedStetementを使用してbindするたびに、データベースへ…

あなたは見た目の悪いソースをレビューする気になりますか?

なんのためにEclipseのソースフォーマットがあるのか?CheckStyleがあるのか?コーディング規約があるのか?分かってない奴が多い。ソースレビューで「そんなどうでもいいこと」と平気で言う奴はろくでもない。きっとそいつ自信が書くソースも汚いんだと思う…

Statement#addBatchによる性能向上3

Oracle独自の拡張メソッドが、バッチ処理の結果をうまく取得できるはずという願いをかけてやってみました。 キーとなるクラスメソッドは、OraclePreparedStatementのsetExecuteBatch、executeUpdate および sendBatch。対象のOraclePreparedStatementに対し…

Statement#addBatchによる性能向上2

まず、Oracle依存したくないので、標準のStatementで実験しているのですが、途中でエラーが発生してしまうと、そのレコード特定のための情報が全く無いことが分かりました。失敗するとBatchUpdateExceptionがthrowされるのですが、その例外からgetUpdateCoun…