Java Programs


このページでは、私が趣味で作ったJavaのプログラムを公開しています。

見えるようになっているものはすべて、無償で使用していただいて構いません。

コメント、バグ報告、リクエスト、その他お問い合わせは電子メールでどうぞ。


Applet  Application  Library Other Required

Applet

Scale Converter

(download)

日米で一般に使用される単位を相互変換します。

現在サポートしているのは、長さ・面積・体積・重さ・温度です。

そのうち衣料の号数なども扱うかもしれません。

進化シム・String World

(download)

簡単な進化シミュレーションです。文字列を進化させて、最終目標の文字列まで変化していくのを観察できます。ま、あんまり楽しいもんでもありませんね。

アプリケーションとしても動きます。候補数を増やすとアプレットでは見えなくなってしまうので、単体で動かしたほうがいいです。

JDK1.1以上で動作。

進化シム・Mating World
(開発予定)

StringWorldでは、生物間の交配の仕組みがありませんでした。私の勉強不足で、交配の利点を、遺伝子プールにバリエーションをもたらすもの、程度にしか認識していなかったためです。

・・が、仮想的に遺伝子間の順序を導入し、交配時に、遺伝子のブロックごとの交換を行うことで、個々の遺伝子としてだけでなく、遺伝子のセットとしての最適化をはかれるというメリットを知りました。実に興味深い。

で、作ってみるつもりです。いつになるか、ちょっとわかりませんが。

WebColors

(download)

まあよくありそうな気がしますが、webページの配色を決めるためのサポートアプレットです。単体のアプリケーションとしても動作するので、ダウンロードして使うほうが早くていいかも。

JDK1.1以上、jviewでも動作します。

PhotoView
写真などのイメージを表示するアプレットです。90度回転、明るさの調節ができます。拡大・縮小などサポートの予定(あくまで予定)。
PhotoMoovie

CyberShotでは、「動画」を撮れます。といっても、記録されているのは4コマを1枚に収めた静止画で、それを連続表示することで動画に見せています。CyberShotに付属のソフトではこれを動画として再生できたのですが、これが無い環境では、ただの連続静止画です。ということで、これを再生するツールを作りました。

また、一定時間ごとに同じ被写体を撮った写真をこれで再生すれば、微速度撮影ビデオのような面白いものになるでしょう。

(注:CyberShotに関する私の情報は3年ほど前のものです。現行版では違うかもしれません。)

Application

Clippen2
(公開準備中)

(screen shot)

コーディング等の支援ツールです。編集中のコードをperl/awkなどのスクリプトで気楽に処理できます。クラスのメンバ変数だけずらずら書いて、あとはクリック一発でアクセサメソッドを自動生成するとか。あるいはちょっと変わった使い方としては、コーディング中に、ここだけviエディタのキーボードマクロで処理したいなあ、なんて時に、選択範囲だけviに転送して処理して、viを終了後、同じ選択範囲にそのままペーストすれば修正完了、など。

編集中の内容に限らず、ファイル対象の処理にもコマンド・スクリプトのランチャーとしても使えます。

JDK/JRE1.1以上およびjview用。

Properties
Editor

Javaプログラム用のpropertiesファイルを書くためのツールです。

JDK/JRE1.1以上およびjview用。

ThumbNailer
(公開準備中)

イメージを読み込み、サイズを変更したり減色したりして、また書き出します。バッチ処理用なので、GUI無しのコマンドラインツールです。イメージの書き出しや減色処理を自前でやっているので、外部ライブラリは不要です。ただし、入力はJPEG/GIF、出力はGIF限定。

JDK/JRE1.1以上およびjview用。

ThumbNailer2
(公開準備中)

イメージを読み込み、サイズを変更したり減色したりして、また書き出します。バッチ処理用なので、GUI無しのコマンドラインツールです。サポートフォーマットはJPEG/GIF/PNG/TIFF/PICT/BMP/XPMなど。

JDK/JRE1.1以上およびjview用、JIMIが必要。

Imageneer
(公開準備中)

(screen shot)

イメージを処理するツールです。サイズの変更、さまざまなフィルタリングなど。無限undo/redoもサポートしています。多彩なグラフィックフォーマットを読み書きできます (JPEG/GIF/PNG/TIFF/PICT/BMP/XPMなどなど)。このページにあるスクリーンショットはすべて、クリップボードにキャプチャーしたのをpaintでBMPにセーブし、ImageneerでPNGまたはJPEGにしたものです。

JDK/JRE1.1以上およびjview用、SwingおよびJIMIが必要。ただし、Drag&DropはJava2環境でしか使えません。

Imagecon
(開発中)

複数のイメージを読み込み、一つに合成するためのツールです。アニメーションなどを作るのにいいかも。そこそこ出来ているのですが・・まだ、わざわざ公開するほどのものでもないか。

JDK/JRE1.1以上およびjview用。

JacDraw
(開発中)

いわゆるドローツールです。とりあえず、幾何学図形、グラフィック、文字列をオブジェクトとしてキャンバス上に配置し、またマウスでそれらを選択したり動かしたり変形させたりは出来ているので、とりあえず基本的なところは押さえているといえるでしょう。そうそう、レイヤーもサポートしてます。

JDK/JRE1.2以上用。

Java Omega
(開発中)

開発と言うより、移植ですね。数あるRogue like gameの多くは、色々なプラットフォームでコンパイルできるようにされています。でも、Javaにしちゃえばプラットフォーム依存コードを切り分ける手間も無いし、#ifdefの嵐にする必要もありません。

てことで、Javaに移植しちゃおうかな、と。ホントはNetHackにしようかと思ったんですが、NetHackは巨大なので、とりあえず私が2番目に好きなOmegaにしました。

もっとも、いつ完成するかは謎です。

jviewでも動くことを目標に作っています。

Exif reader
(開発予定)

デジカメの写真のフォーマットであるexifは、jpegの拡張版ですが、撮影日付など様々な情報がファイル内に保存されています。それを簡単に読み出して一覧にできれば、写真の管理にとっても便利。ということで、それを読み出すツールを作る予定です。

jviewでも動くことを目標に作ります。

Library

ColorQuantizer
(公開準備中)

イメージの減色処理を行います。基本的にRGBの3色としての処理で、透過値(alpha値)は無視しますが、完全に透明な色に関してだけは、減色後も透明なままに保ちます。

JDK/JRE1.1以上およびjview用。

ConsoleFrame

Javaプログラムの標準出力・エラー出力をトラップし、独立したウィンドウ内に表示します。WWWブラウザのJava Consoleのようなものです。

Windowsではjre.exe、java.exeやjview.exeはDOS窓を一つ作ってしまいますが、なかなかうっとうしいものです。jre_w.exe、java_w.exeやwjview.exeなら余計な窓を開きませんが、エラーメッセージなどが出力されても見ることが出来ません。また、Windows9x系ではDOS窓でスクロールバックができないので、例外発生時のスタックトレース情報などが流れすぎてしまう、という不都合もあります。

これを使えば、こういう問題も解決です。

JDK/JRE1.1以上およびjview用。

MemoryMeter
(公開準備中)

(screen shot)
(api doc)
(jar archive)
(source)

Javaプログラムのメモリヒープサイズおよび使用メモリの量を監視し、折れ線チャートに表示するウィンドウです。これでメモリの使用状況、ガーベージコレクションの発生頻度などをチェックすれば、適切なメモリサイズの指定など、パフォーマンス改善に役立つかもしれません。

もっとも、Java側で使用可能なヒープサイズは、実行環境自体がOSのメモリ空間に占めるサイズと同じというわけではありませんので注意。

JDK/JRE1.1以上およびjview用。

PropertiesReporter
(開発予定)

Javaプログラムでは、起動時に必ず決まったシステムプロパティが実行環境によって設定されます。起動時のカレントディレクトリ、実行環境のバージョンなどです。

実行時にこれらの情報を表示するウィンドウを作る予定です。どう考えても簡単そうなのでついつい後回し。

JDK/JRE1.1以上およびjview用。

ThreadSnapper
(開発中)

Javaではシステムが最初からマルチスレッドをサポートしており、そもそもユーザプログラムがマルチスレッドを使っていなくてさえ、システム自体がマルチスレッドで動作しています。

で、ある時点で生きているスレッドおよびスレッドグループの一覧を表示するクラスを作っています。リアルタイムはネイティブコードを書いてJava仮想マシンのデバッガ用インターフェースでも使わないと無理そうなので、あくまでもある時点でのスナップショットです。

私はシビアなスレッド管理が必要なプログラムなぞ書いちゃいないのですが、まあシステム自体の状態を調べるには欠かせない部分かな、と。

JDK/JRE1.1以上およびjview用。

SystemInspector
(開発中)

上の4つのクラスは基本的に組み込み用の部品ですが、既存のJavaプログラムで使用するために、上の4つを組み込んだ、汎用Javaアプリケーションローダーを作っています。

基本的に、引数に渡されたクラス名を検索し、正しいシグニチャを持ったmainメソッドを検索・実行すればいい・・だろうと読んで試したところ、一通りうまく動いてるようです。PropertiesReporterが未実装なので、これもまだ完成しませんが。

JDK/JRE1.1以上およびjview用。

Sorter

JDK1.1ベースの実行環境では、データのソートはコアライブラリに含まれていません。当然不便なので、配列とVectorをソートするクラス群を作りました。とりあえず、quick sort/merge sort、その他いくつかが実装されてます。Object汎用に出来ないので、ヒープソートとか分布数えソートとかは作ってません。

JDK/JRE1.1以上およびjview用。

統合アーカイバDLLラッパー
(開発予定)

Windows上では、日本では各種さまざまな圧縮・解凍用のDLLが、統合アーカイバプロジェクトによって整備され、それらを使ったアーカイバが大量に作られ、公開されています。

一方、JavaではコアライブラリがZIP形式の読み書きを一応サポートしてはいますが、その他ではLHAの移植版がほそぼそとひそかに存在している程度です。

といって、すべて自分で実装する気にもならないので、とりあえずラッパーを作る気になりました。JNIで、と思っていたんですが、どうせDLLなのでWindowsオンリーだし、Windows上で最もインストール率の高いJavaランタイムといえば間違いなくjviewなので、RNIにしようかと予定しています。J/Directなら、DLLの関数の呼び出しも簡単だし。

jview専用。

LockFile
(公開準備中)
(source/class)

JDK1.1ベースでは、ファイルをロックする仕組みがありません。複数のプロセスや複数のスレッドからファイルを共有する上で大問題です。まあ、スレッドだけなら単純にアクセスの口を限定して、そこで制御すればいいわけですが。

ということで、JDK1.1で使えるファイルロックの仕組みを作りました。ただし、JDK1.1では「ファイルが無いときだけファイルを作る」といった仕掛けが無いので、通常行われる、「ロックファイルがあればロックされている」式の判定は使えません。そこで、あらかじめ「ロックされてない」ことを示すファイルを置いておき、それをリネームすることでロックを示します。つまり、余計なファイルをあらかじめ置いておかなければならないわけで、あまり美しくない解決です。無念。いいアイデアがあったら教えてください。

JDK/JRE1.1以上およびjview用。

Other

DDBJ/GenBank Parser
(開発予定)

JavaCC用のグラマーファイルです。DDBJ/GenBank(DNA配列のデータベース)のデータを読み取り、分解して利用しやすい形でオブジェクトのツリーに組み立てます。使用には当然JavaCCが必要です。

現在Feature/Qualifier部分のlocation部分のみ出来ています。

Required

JRE 1.1

SUNのJRE1.1のページです。

JRE 1.1.8 (IBM) 速度やメモリ管理などの優秀さで非常に評価の高い、IBMのJREはここから入手可能です。JDK1.1ベースの実行環境としては、これを最もお勧めします。
Java2 Runtime Environment Standard Edition

SUNのJRE1.2のページです。JDK1.2ベースの実行環境であれば、あまり他に選択肢はありません。もうすぐ、劇的な速度向上を行ったバージョン1.3が正式公開の予定です(2000/03/15現在)。

すでに1.3の公開候補版(Release Candidate 1)はしばらく前からJava Developer Connectionで公開されています。かなり安定している上、とりわけSwingの動作がものすごく速い(PentiumIIIの450MHzではネイティブコードのGUIとまったく変わりません)ので、JDCに登録(無料)する気のある方にはお勧めできます。

Swing 1.1.1 JavaのAWTを補完・強化するGUIライブラリです。Java2には標準で含まれていますが、JDK1.1ベースの実行環境には含まれていないので、必要な場合は別途入手する必要があります。
JIMI

JDK1.1ベースのプログラムで使える、イメージ処理ライブラリです。元々Activated Intelligenceという会社の製品でしたが、SUNに買収されて公開されています(ただしライセンスの問題でGIFの書き出し機能は削除されています)。

JavaCC パーザジェネレータです。Java用のものではたぶんもっとも普及しているでしょう。無料。元はSUNのテスト部門で開発・公開していましたが、現在はMetamataに移管されています。グラマーファイルの書式は実にわかりやすくきれいで、しかも中に直接Javaのコードを埋め込んでいけます。簡単で分かりやすい上にえらく強力。お勧めです。

ホームへ戻る