TITLE:Java Tips
RIGHT:Posted by &author(aterai); at 2011-01-25

* Java Tips [#t866d432]
#contents(big)

** 概要 [#y77453b1]
Java のデバッグ(Swing)、Java用のバッチファイル、API-doc 翻訳などに関するメモをまとめています。

* Swing debug agent[#l59af361]
- [[Swingコンポーネントの再描画をJXLayerのDebugPainterを使ってデバッグ>Tips/DebugPainterAgent]]
-- JXLayer のDebugPainter を使ってコンポーネントの再描画を可視化する javaagent を作成してデバッグを行います。

- [[SwingアプリケーションのLookAndFeelを外部から切り替える>Tips/LookAndFeelDebugAgent]]
-- SwingアプリケーションのLookAndFeelを agent を使って外部から切り替えてデバッグします。

* Javadoc 翻訳 [#h4010d75]
[[Javadoc]]に移動

* JRuby [#rd5be1f5]
[[JRuby]]に移動

* 「Java Swing Hacks」本のレビュー [#ef1cba4d]
- [http://d.hatena.ne.jp/aterai/20060502 「Java Swing Hacks」本のレビュー - てんぷらメモ@はてな]
-- [http://d.hatena.ne.jp/aterai/searchdiary?word=%2a%5bSwing%20Hacks%5d 記事一覧]
-- [http://d.hatena.ne.jp/aterai/archive?word=%2a%5bSwing%20Hacks%5d タイトル一覧]

* Java その他 [#i6c38ca4]
- [[環境変数JAVA_HOMEを変更して使用するJDKを切り替える>Tips/SetJAVA_HOME]]
-- 環境変数 JAVA_HOME を変更するバッチファイルを作成して、コマンドプロンプトで使用するJDKを切り替えます。

- [[Rhinoでgoogle-prettify.jsを実行する>Tips/GooglePrettifyRhino]]
-- Rhinoでgoogle-prettify.jsを実行し、ソースコードをハイライトされたHtml(google sites用)に変換します。

- [[JNIでJFrameのHWNDを取得>Tips/JNI_HWND]]
-- JNI(Java Native Interface) で JFrame(SunAwtFrame) の HWND(ウィンドウハンドル) を取得します。

- Java API Doc の「日本語、英語」をブックマークレットで切り替える
-- [[Java API Doc の「日本語、英語」をブックマークレットで切り替える>JavaScript/APIDocEnJa]]に移動

* Java メモ [#afdfdb63]

** 環境変数 [#n357d6c7]
- http://cr.openjdk.java.net/~gbenson/zero-08/raw_files/new/hotspot/src/share/vm/utilities/vmError.cpp
#code{{
// List of environment variables that should be reported in error log file.
const char *env_list[] = {
  // All platforms
  "JAVA_HOME", "JRE_HOME", "JAVA_TOOL_OPTIONS", "_JAVA_OPTIONS", "CLASSPATH",
  "JAVA_COMPILER", "PATH", "USERNAME",

  // Env variables that are defined on Solaris/Linux
  "LD_LIBRARY_PATH", "LD_PRELOAD", "SHELL", "DISPLAY",
  "HOSTTYPE", "OSTYPE", "ARCH", "MACHTYPE",

  // defined on Linux
  "LD_ASSUME_KERNEL", "_JAVA_SR_SIGNUM",

  // defined on Windows
  "OS", "PROCESSOR_IDENTIFIER", "_ALT_JAVA_HOME_DIR",

  (const char *)0
};
}}

** コマンドプロンプトからデフォルトのロケールを変更 [#p9b18e96]
 > javac -J-Duser.language=en Test.java

 > java -Duser.language=en Test

- [http://java.sun.com/javase/technologies/core/basic/intl/faq_ja.jsp#set-default-locale Java 国際化 FAQ]
 アプリケーションの外部からデフォルトのロケールを設定できますか。
 
 使用している Java プラットフォームの実装によって異なります。通常、初期のデフォルトロケールは、ホストオペレーティングシステムのロケールによって決まります。Sun の JRE のバージョン 1.4 以降では、コマンド行から user.language、user.country、および user.variant の各システムプロパティを設定することで、初期のデフォルトロケールを変更できます。たとえば、初期のデフォルトロケールとして Locale("th", "TH", "TH") を選択するには、次のコマンドを使用します。
 java -Duser.language=th -Duser.country=TH -Duser.variant=TH MainClass
 
 この機能を使用できない実行環境もあるため、この機能はテスト目的だけに使用してください。

** コード整形 [#k1323c34]
個人的な好みと習慣で、Javaのソースコードのインデントは、エディタでは4space、Webサイトにソースコードを表示する場合は2spaceにしているので、xyzzy などのエディタから以下のように整形。

 astyle --style=java --mode=java --indent=spaces=2
 astyle --style=java --mode=java --indent=spaces=2 Hoge.java

Markdown 形式の Stack Overflow などにソースコードを貼り付ける場合は、以下のようにして、行頭にタブ(またはスペース4つ)を追加。

 astyle --style=java --mode=java --indent=spaces=2 | sed -e "s/^\(.*\)$/\t\1/"
 astyle --style=java --mode=java --indent=spaces=2 | sed -e "s/^\(.*\)$/    \1/"

** ソースコードのコピー [#c8b1879b]
[[JavaScript/pre2textarea]]に移動

* コメント [#k546af30]
- [[Nitpick]]を[[Javadoc]]以下に分割して移動。 -- [[aterai]] &new{2011-11-11 (金) 16:57:12};

#comment