パスワードを忘れた? アカウント作成

bluecrowさんのトモダチの日記みんなの日記も見てね。 スラッシュドットのストーリを選ぶための補助をお願いします。

2853862 journal
Java

bluecrowの日記: JunkUtil 1.1.0 の新規リリース

日記 by bluecrow

おめでとう! JunkUtil は記念すべきバージョン1.1.0のリリースを迎えました。

これは懸念事項となっていた、crypt パッケージのインターフェースの変更に伴うものです。
後方互換性を重視してきた JunkUtil にとって、この変更は一定の痛みを伴うものですが、いずれ避けては通れない道でもありました。

リリースの間隔がしばらく空いてしまいましたが、今後も JunkUtil は最も怠惰なJavaライブラリであるべく、リリースを続けてゆく所存です。
よろしくお願いいたします。

2012/04/29 1.1.0
・FileUtil#readFileを改善。
・MD5およびDESクラスをstaticメソッド化。Stringではなくbyte[]を返すように変更。
・上記インターフェースの更新に伴い、1.1.0とする。

793029 journal
Java

bluecrowの日記: JunkUtil開発の経緯について

日記 by bluecrow

自分の長年のJavaプログラミングで多くの障害になってきたのは、とにもかくにもライブラリの不足であった。PerlやPHPなら、そこにあって当然のクラスが、メソッドが、全く用意されていないという問題であった。

通称Commons(旧Jakarta Commons、現Apache Commons)の登場で、その状況は好転に向かったかに思えたが、俺の視点から見れば、それは五十歩百歩であった。ほとんどのライブラリはベータバージョンで開発が停止しており、ドキュメントの量と和訳は不十分であり、それらの詳しい使い方を包括的に解説したサイトは一向に現れなかった。
結局、その都度英語を読み、ライブラリの使い方に習熟せねばならないというのが、それが嫌なら、車輪の再発明(無駄な努力)をせねばならないというのが、Javaプログラマの悲しい現実であった。

俺には、JavaでCatを実装するのに、Grepを実装するのに、なぜあれほどぐちゃぐちゃしたコードが必要とされるのかが分からなかった。OOPLであるということは、煩雑さを許容するということなのだろうか。俺は「それは違う」と思う。少なくとも、Javaプログラマはgrepもどきを以下のようにシンプルに書くことが許されて然るべきだ。

List lines = FileUtil.readLines("readFile.txt"); //行の全読み込み
DataDumper.dumpList(System.out, new LzList(lines).grep("^B").list()); //Bで始まる行のダンプ

(これは一見無意味なプログラムだが、巨大なバッチファイルの一部だけを取り出して処理するためには、どうせこれと似たような処理が必要になる)

そうして、数年の月日が流れた。若かった俺は、世界(にいるであろう自分より優秀な人間)を信じて待った。きっとどこかの誰かが、俺の満足のいく完璧なライブラリを公開するだろうと。
実際、Apache CommonsやGoogleはそういう種類のライブラリを公開したかもしれない。しかしそれはやはり根本的に不完全で、俺が思っていた「簡単さ」を実現するものではなかった。上記のようなコードを書くことはできなかった。特にListとMapについては、まともな実装は皆無に近かった。

ファイルを一気読みしてListに格納するメソッドは現れなかった。
PerlのOptGetsのJava版は現れなかった。
PerlのConfigのJava版は現れなかった。
PerlのData::DumperのJava版は現れなかった。
ListやMapを集合論的に処理するライブラリは(それはサーブレットのパラメータを処理するための基礎となる)現れなかった。
俺の欲しいものは、結局誰も与えてくれなかった。

もう一度言おう。PerlのモジュールやPHPの関数のような、あるいはワンライナのような、それを呼べばたちまち仕事が終わる類のライブラリは、Javaには存在しない。
それはJavaがJavaらしくあるために必要なことだったが、現実にコードを書くプログラマの観点から見れば、単なる悪夢でしかなく。スクリプト言語の簡単さは常に羨望の的であった。

Javaはそれでも使われ、書かれた。ServletとJSPは、あるいはXMLは、Strutsという巨大で不気味なフレームワークと拡張タグに支配され、本来は不要であるはずのぐちゃぐちゃしたコードと記述で荒廃していた。
GUIアプリケーションはJFrameにメニューとショートカット・キーをつけるのもままならず、画面にはボタンが溢れていた。業務アプリでは未だにCSVの読み込みとExcelの出力(素のPOIは使いづらい)に苦労していた。

業務アプリの世界では、JavaはCOBOLの置き換えに使われた。無数のバッチが書かれ、無数のWEB帳票が書かれた。デファクトスタンダード。しかしだからどうだというのだろう。Javaは依然として小回りの利かない言語であり続けた。俺は苛立った。

統失という病気になり、俺は仕事のかわりに時間を手に入れた。労働はもはや難しかった。俺は膨大な余暇を、何かで埋め合わせなければならなかった。その時間を、オープンソースに割くことは妥当なことに思われた。なぜなら、相応に年を取った俺は、世界を信じて待つことの無意味さを理解していたからである。
俺はまずなによりも、自分のために、Javaを「簡単にする」ためのコードを書くことにした。

オーケー。分かっている。JunkUtil(ジャンク・ユーティリティ)は始まったばかりのプロジェクトだ。まだ機能は洗練されておらず、まだきっと多くのクラスとメソッドを追加する余地がある。俺の掲げる理想には程遠く、未来の行先は不透明だ。

だがこのプロジェクトは既に開始された。もう後戻りはできない。その名の通りJunk(ゴミ屑)と呼ばれても、車輪の再発明と呼ばれても、かまわない。俺はJavaを少しでも「簡単」にするために、その膨大な時間を投資しようと決めたのだ。

http://sourceforge.jp/projects/junkutil/

434973 journal
Java

bluecrowの日記: 【Java】JunkUtil公開【ライブラリ】

日記 by bluecrow

地元で就職できなくて暇なので、JunkUtilというプロジェクトを始めました。

http://www.arkhamsoft.jp/junkutil/

現状、以下が主なクラスです。

junkutil.common

 StringUtil……標準のStringクラスに不足している機能の補完
 FileUtil……ファイルの内容をListやStringで取得、書き出し
 NullUtil……各種nvl関数
 OptGets……引数の解析(バッチプログラムを作る際に効果的)
 DataDumper……なんでも見やすくダンプ表示(デバッグに効果的)
 Config……Iniファイルの読み込み(自動エンコード判別機能つき)

junkutil.set

 LzList、LzMap……orやand、setやmargeなど、パワフルな操作が可能に

junkutil.excel

 CSV……MS-CSV、TSVを解析
 ExcelUtil……Excelの読み書き

junkutil.gui

 LzLookAndFeel……外観を簡単に変えられるクラス
 LzMenu……メニューとアクションを手軽に関連付けできるようにしたクラス
 LzCallBack……LzMenuと共に使えるコールバック
 LzFrame, LzDialog……Escキーでのクローズに対応したクラス

typodupeerror

あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall

読み込み中...