Java

超高速なloggerを作ってみたくて

超高速なLoggerに唐突に興味を持つ。 Log4J2が非常に高速であり、性能を気にするなら、基本的にはLog4J2を使えば良いが、柔軟性を捨ててでもより高速なLoggerは作れないかと考えてみた。 なお、kotlin/jvm(java8)で実装。 参考資料は、以下のページ。 logg…

generics

import java.util.ArrayList; public class Test> { public E test(){ return new ArrayList(); } } なんでこのプログラムのコンパイルが通らないのか、誰か教えてくださいorz

お手軽GUI構築ツールキットに向けて

swingでGUIを書いていると、似たようなコードを大量生成しなければならないのが苦痛になってくる。そこで、お手軽にGUIを構築するためのツールキットを準備中。 機能的には、次な感じ。 GUI構築の自動化 永続化の自動化 言ってしまうと、処理するデータをデ…

Java2D 文字列の描画

文字列の描画が遅い。 いや、遅いわけではない。ただ、int配列を大量に生成しているために、頻繁にFullGCが発動する。そのために、アニメーションで文字列を扱うと、カクカク言い出す。もちろん、NewSizeを大きくとれば、そんなには気にならなくなるけど。 …

OOWeb

http://ooweb.sourceforge.net/ を使って少し遊んでた。 ちと、現状だと微妙。マッピングまでは面白かった。けど、あまりにもできることが少ないうか、楽しむまでには至らない。 あと、HTTP.redirectがリダイレクトしてくれないんだけど、バグ?

ミルク

掲示板システムが動作するように機能を追加する.まあ,簡易サーバ的な機能群を繋げるだけで掲示板が作れるよ,みたいなものを作ってみた.が,設定ファイル書くのめんどくせー.これは,早々にGUIで配線できるようにしないと駄目だと思った今日この頃です.…

ミルク

グラフシミュレータの名前を改めて,「ミルク」というよく分からない名前で,プログラム名称で開発を行ってしまった...まあ,名前に深い意味はない.ただ,なんとなくだ. 最新版のグラフシミュレータは,軽量データフロー処理コンテナ(なんだそりゃ)に…

NIOとFileOutputStream

2時間ぐらいかけてマイクロベンチマークを計ってたんだけど,データ追記だけを行うなら,あんまり性能が変わらなかった... ???

JFreeChart(2)

前回,簡単な円グラフの表示をテストしたので,今回は,そこに登場するクラスを,APIドキュメントを読みながら,勉強する. ChartFrame JFreeChartをコンストラクタで受け取れるようにするためだけのJFrameのサブクラス. コンストラクタ初期化以外には機…

JFreeChartの練習・円グラフ(1)

サンプルプログラム import javax.swing.JFrame; import org.jfree.chart.ChartFrame; import org.jfree.chart.JFreeChart; import org.jfree.chart.plot.PiePlot; import org.jfree.data.DefaultKeyedValues; import org.jfree.data.general.DefaultPieData…

Swingにおけるアニメーションの実験(その1)

何でアニメーションが必要かは置いておいて,アニメーションをどうやってさせようかと考えていた.まず,アニメーションの進行がFPSに同期するか,実時間に同期するかでクラス構成が若干変化する.快適性を考えると,実時間に同期したほうが良いだろうと…

Swingにおける画面描画の高速化

3D表示ソフトにおいて,画面描画の高速化に取り掛かる.今までは,何も考えずにBufferedImageを作って,そこに書き込んで,描画していた.だけど,GraphicsConfiguration.createCompatibleImage()を利用すると,何も考えないBufferedImageに対して30%ほ…

ImageBrowser

URLを指定すると,そこに表示されている画像のみを表示するというソフトを作ってみた.オプションで,そこから辿れるリンク先にある画像も可能な限り表示することが可能. 現在適当にデバッグ中.

HTMLParserライブラリの勉強中

http://htmlparser.sourceforge.net/ お題その1: Parserオブジェクトを使ってみる プログラム import org.htmlparser.*; import org.htmlparser.util.*; public class ParserTest { public static void main( String[] args ) throws ParserException { //…

マウスイベントの扱い

マウスイベントを自力で子コンポーネントに対して配送したかったのですが、できない。 Container.getMouseEventTargetが、配送先コンポーネントを決定しているところまでは探り当てた。だけどこのメソッド、プライベート宣言されてやがる。おかげでオーバー…

getPreferredSizeについて

相変わらずこの問題をちょこちょこっと調べています。 問題を整理してみると… JScrollPane.getPreferredSize()が、期待する値を返さない場合があるということです。getPreferredSize()は、そのコンポーネントが表示されるために必要な表示領域の大きさを返し…

packの怪

packを繰り返し行うと、なぜか1ドットづつ増えたり減ったりする。 なんで〜 と思ったら、丸め誤差の関係だったらしい…orz どうするかな。

getPreferredSizeの問題点

いろいろ考えた結果、getPreferredSizeが諸悪の根源のような気がしてきた。 通常、getPreferredSizeの値を見て、レイアウトマネージャーなり、なんなりが、そのコンポーネントのサイズを決定します。でも、どの程度割り当てられる可能性があるのか→じゃあ、…

JFrame.pack〜

JFrameにてpackしたときに、ウィンドウサイズが大きすぎると、ウィンドウがタスクバーのしたに潜りこんでしまう… 仕方ないので、こういう回避をすることに。 final JFrame test = new JFrame(){ public Dimension getPreferredSize(){ Dimension d = super.g…

JScrollPaneとWindow.pack

JScrollPaneの子供のサイズを変更する(setPreferredSize)。 そうすると、内容に応じて、スクロールバーが出たり消えたり。ここまでは良い。 次に、Window.packする。すると… スクロールバー分だけウィンドウが大きく表示されてしまう。 なんとかならんかな…

3次元簡易CAD

このレンダリングエンジンは、座標演算から画面描画までフルスクラッチで、しかもピュアJavaよろしくで書いています(だからライン書くのも一苦労)。チューニングのおかげで結構速く動いています。 先週末に先輩からこれを.Netに移植したらと言われ、そのと…

3DCADモドキ

いま、3DCADもどきを作ってます(画面参照)。まだワイヤーフレームを表示する程度のすげーショボイバージョンですが、少しずつ機能を付け足しているという段階です。 いちおう、Javaで、自前で3Dレンダリングを行ってます。Java3D/2Dを一切使ってな…

描画の続き

やはり縮小表示したときがかなり重い。ということで、縮小表示したときの描画はオフスクリーン上にあるバッファを用い、拡大表示したときにはリアルタイムで描画するという戦略を取ることにする(明日試す)。一応、1ピクセル1バイトの256色表示で、最…

高速描画

いろいろ分けあって、Javaで高速描画についていろいろと実験してました。 というより、ツールのプロトタイプを開発してたら、GUI部分がめちゃくちゃ重たくて、にっちもさっちもいかないという状態です。(この手の世界はよく知らなくて…) 何が原因かをいろ…

piccolo 1.1

8月1日付で、バージョンアップされてますた。が、ChangeLog読んでみたものの、久しぶりだから何がなにやら思い出せねー。 http://www.cs.umd.edu/hcil/piccolo/index.shtml

FindBugsを使う

http://findbugs.sourceforge.net/index.html にある、FindBugsというツールを使ってみました。そしたら、summaryのトップで、 Type Checked Count Bugs Percentage Outer Classes 118 131 111.02% Inner Classes 34 24 70.59% Interfaces 31 0 0.00% Total …

Javaの性能調査・その1

100万頂点、200万ラインセグメントを扱うにはどれくらいのメモリ量が必要か調べる。Point2D.Doubleを使って、100万頂点は30Mbyte、Line2D.Doubleを使って、200万ラインセグメントは90Mbyteなので、トータルで110Mbyteほど必要…(なお、オブジェクトは配列に…

デッドロック

やっぱり、リファクタリングをするなら、きちんとテストコードを書いておこう。 ここ2日間ぐらいかけて、研究用ツールの作成をしていました。と言っても、プログラム内のTODOタスクを一つずつこなしていっただけです。スレッドセーフ化したり、実行時例外を…

ambiguousで怒られた

このエラーで初めて怒られました。 Super.method( interfaceA ) と Sub.method( interfaceB ) で、引数として C implements interfaceA, interfaceB を渡していたのが原因っぽそうです。 クラス図がだいぶ複雑になってきているから、やはり根本的に設計を見…

Jlint

http://www.willowriver.net/products/download_jlint.php Java用のlint。.classファイルを静的解析して、スレッドの競合とか、データフロー解析とかを行ってくれるらしい。