java
ByteBuffer は便利 DataInputStream の readFully みたいに指定サイズを Byte バッファに読み込んで ByteBuffer にして返すメソッド。 この時のデータはリトルエンディアン import java.nio.{ByteBuffer,ByteOrder} ..snip.. def read[S
build.xml に findbugs の設定をしてソースコードのバグパターンチェックを行う。 .. <taskdef name="findbugs" classpath="lib/findbugs-ant.jar" classname="edu.umd.cs.findbugs.anttask.FindBugsTask"/> ... <target name="findbugs" depends="make"> </target></taskdef>
ImmutableBiMap の inverse メソッドを使用してキーと値を反転させて値からキーも取得できる。 import com.google.common.collect.ImmutableBiMap; import com.google.common.collect.BiMap; ..snip.. private static final BiMap<Integer,String> bimap = ImmutableBiMap.of</integer,string>…
Function Function で List の要素を変換して、ループの記述無しで新しい List を作成する。 変換する条件は Function の applyメソッドに記述する。 import java.util.List; import com.google.common.base.Function; import com.google.common.base.Joiner…
java でテンポラリファイルを作成してくれるメソッドがあった。 File#createTempFile 指定ディレクトリで新しい空のファイルを生成する。 そのファイル名には引数で指定した接頭辞、接尾辞が使用される。 このメソッドが正常に復帰する場合、以下が保証され…
同パッケージ内の他の class の static 定数の参照 通常、他の class の static 定数(final 変数)を参照する場合は class名.定数名 ですが同パッケージ内にある他の class の static 定数を参照する場合は class 名の指定がなくてもコンパイルエラーにならな…
FindBugs の @NonNull アノテーションで引数や戻り値が null でないことを明示すると、可読性もよくなるし、間違って null の引数を指定したり、null を返すコードを書くと、FindBugs の指摘が入るので、不要な null チェックの冗長なコードが減少する。 imp…
java JDK 6でジェネリクスの要素をもつコレクションの生成は長ったらしく冗長。 import java.util.ArrayList; import java.util.List; import java.util.HashMap; import java.util.Map; .. final List<String> list = new ArrayList<String>(); final Map<String, Integer> map = new HashMap<String, Integer></string,></string,></string></string>…
Google の guava-libraries の 不変(immutable)なコレクション。 普通に HashMap 等を使うほうが簡単だがオブジェクトの状態が変わらないので、 状態に依存しないコレクション操作ができて、状態の変化によるバグを防止できる。 複数のオブジェクトで同じコ…
昨日 trang を使った時に発生した ConcurrentModificationException は いっしょに ダウンロードしたソースファイル(src.zip)を見てみると com/thaiopensource/relaxng/input/xml/Inferrer.java 内にある 下の拡張 for 文(for (Name elementName : outputQue…
スキーマの種別は指定する拡張子で判断してくれるようだ。 比較的単純な XML だと問題なくスキーマを作成してくれたが 巨大で複雑な(1500行くらいある)XMLを指定すると、ConcurrentModificationException が発生した。 $ java -jar trang.jar foobar.xml foo…
本格的に仕事で Scala を使用することはないのですが、Java のプログラム内で scala の Tuple を使ったりしています。 値を保持するだけのために新規クラスなんかを作成する必要が なくなり結構、便利です。 import scala.Tuple3; .. private Tuple3<String,Integer,Boolean> getData</string,integer,boolean>…
RubyはJavaより生産性が高い故に、JavaからRubyに移行するのでしょうか 果たして、本当にRubyの生産性は高いのでしょうか? 2008/03/25 Rubyの「生産性10倍」とか「プログラミングが面白くなる」とかの宣伝 2007/11/12 JavaとRubyの間にある、ベルリンの壁 20…
悩まされていたjavaアプリケーションのメモリエラーは、javaアプリケーションから外部コマンドを実行するために使用していたRuntime.exec() に原因があることがわかった。 これは、動作環境が unix 系 (使用していたのは Linux ) の場合に起こるようです。Ru…
javaアプリケーションのメモリエラーに悩まされていたので リソースチェックや監視ツールを調べていてjconsoleという監視ツールがあるのを知りました。 これは、j2SE5.0からデフォルトで付属するようになったJMX準拠の監視ツールです。 javaアプリケーション…
System.out.println( (new Exception()).getStackTrace()[1].toString() ); デバッグ時はこれで、どこから呼ばれているかがわかる。
2〜3年前に作りかけていたSWTアプリケーションを最近見つけた。その頃にSWTを知り、これからのjava GUIがおもしろいかもとXMLエディターもどきをつくりかけていたのを思い出した。 本業がいそがしくなり、中断したままになっていた。 また、いじりたくなり…
ブラウザ等で入力された文字列がシステムでエンコード可能かどうかチェックする処理 必要になったので調べてみました。 import java.nio.charset.Charset; import java.nio.charset.CharsetEncoder; /** * 文字列がエンコード可能かどうかチェックする * @pa…
最近、べンダー主催のjavaの認定試験 SCJP(Sun Certified Programmer for the Java 2 Platform)について社内から問い合わせがあった。わたしが受験したのは、確か、2年半ぐらい前で、SCJPの1.2を受験して、みごと一発で合格したのでした。(←結局、自慢か?…
J2SE5.0のenum型は、if文で直接、整数値と比較するとコンパイルエラーとなりますが、switch文では、使用可能です。 ... public enum Hoge { HOGE, BOOK, NOTE, PEN }; public boolean isPaper( Hoge hoge ) { switch ( hoge ) { case BOOK: case NOTE: retur…
javaで定数を使う時は、使用する定数が定義されているクラス又はインタフェースのパッケージをimportします。そしてクラス名.定数名として使用が可能になります。クラス名が長いと、ソースが見づらいし、記述も煩わしくなります。 J2SE5.0では定数名だけの記…
J2SE5.0より前のjavaでは、定数は public static final int HOGE = 1; public static final int HOGEHOGE = 2; などとしていました。この場合の問題は、定数がただのint型ということです。この定数を使用するメソッドは、HOGEでも、ただの1でも型(int)として…
クライアントからサーバへのファイルの送信(ファイルアップロード)
サーバからクライアントへのファイルの送信(ファイルダウンロード)
連続動作のテストを、まる1日やっていると、200件目ぐらいでOutOfMemoryError が発生し、それ以降、メモリ不足で、処理ができなくなってしまった。対応としては、 使用していない無駄なメンバーフィールドやメソッド変数、バッファがないかチェックして、あ…
開発中のプログラムで、既に登録済みのObserverを、addObserver()メソッドで再度、登録する部分を、発見して、修正しようかと思ったが、既にテストフェーズなので、問題なければ修正はしたくない。 修正しなくとも問題ないか、java の Observableクラスのソ…
javadocを意識して、コメントを入れているが、規約に含まれていないので、内部仕様書として、javadocを活用できていない。各自の意識で、javadocを意識したコメント記述があったり、なかったりなので、javadocを利用して、内部仕様書を、ちゃんと出力できな…
debianでjava GUI アプリケーション(AWT/Swing)を起動すると、日本語が文字化けします。
http://java.sun.com/j2se/1.5.0/ja/docs/ja/index.html JDK5.0 外部バージョン番号が 5.0 で、内部バージョン番号は 1.5.0です。 で、通称は、JDK5.0。言語仕様も拡張されています。 (2004年9月30日 J2SE 5.0 FCS リリース) Java 2 Platform Standard Editi…
ServerSocketのコンストラクタで、最大接続数を指定できる。 public SeverSoctet( int ポート番号, int バックログ); ポート番号...指定するポートのサーバソケットを作る。ポート番号0を指定すると、空いている適当なポート番号のサーバソケットを作成する…