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]]
- [[Javadoc/Japanese]]
-- 日本語訳で修正した方が良さそうなもの。
- [[Javadoc/Nitpick]]
-- 翻訳元から修正した方が良さそうなもの。
- [[Javadoc/Typo]]
-- Typo、変換ミスなど。

* JRuby [#a5d5a253]
- [[JRuby+Swing - てんぷらメモ@はてな>http://d.hatena.ne.jp/aterai/searchdiary?word=%2a%5bJRuby%5d]]

----
- JRuby One-Liner で、UIManagerのDefaults.keySetを一覧表示する
 > jruby -rjava -e "javax.swing.UIManager.lookAndFeelDefaults.keySet.each{|o| p o}"

----
 > chcp
 現在のコード ページ: 932

 > jruby -J-Dfile.encoding=UTF-8 -rjava -e 'p java.net.URLEncoder.encode("日本語","UTF-8")'
 > jruby -J-Dfile.encoding=UTF-8 -rjava -e "puts java.net.URLEncoder.encode('日本語','UTF-8')"
 > jruby -J-Dfile.encoding=UTF-8 -rjava -e 'puts java.net.URLEncoder.encode(""日本語"",""UTF-8"")'
 > jruby --1.9 -U -rjava -e 'puts java.net.URLEncoder.encode("日本語","UTF-8")'
 > jruby -J-Dfile.encoding=UTF-8 -ruri -e 'puts URI.encode("日本語")'
 %E6%97%A5%E6%9C%AC%E8%AA%9E

 > jruby --1.9 -rjava -e 'puts java.net.URLEncoder.encode("日本語","MS932")'
 > jruby --1.9 -ruri -e 'puts URI.encode_www_form_component("日本語")'
 %93%FA%96%7B%8C%EA

----
- JRuby 1.7.0.preview1 で以下のようなArgumentErrorが発生する場合、-J-Dfile.encoding=UTF-8 でOK?
-- [http://jp.rubyist.net/magazine/?0010-CodeReview Rubyist Magazine - あなたの Ruby コードを添削します 【第 1 回】 pukipa.rb]
-- wiki以下のsplitを行う対象ファイル(この例ではsrc)がUTF-8

#code{{
lines = src.rstrip.split(/\r?\n/).map {|line| line.chomp }
}}

 C:\pukiwiki2markdown>jruby p2m.rb wiki
 ArgumentError: invalid byte sequence in Windows-31J
    split at org/jruby/RubyString.java:4643
  to_html at p2m.rb:45
     main at p2m.rb:219
     each at org/jruby/RubyArray.java:1611
     main at p2m.rb:214
   (root) at p2m.rb:234

 C:\pukiwiki2markdown>jruby -J-Dfile.encoding=UTF-8 p2m.rb wiki
 wiki/2010-04-12-swing-leaftreecelleditor.markdown
 wiki/2007-06-18-swing-leftclippedcombobox.markdown
 ...
 C:\pukiwiki2markdown>jruby -E UTF-8 p2m.rb wiki
 wiki/2011-07-18-swing-listmouseselection.markdown
 ...

----
- JRuby + SWT のサンプル
-- [http://www.rubyinside.com/jruby-swt-future-cross-platform-ruby-desktop-app-development-298.html JRuby + SWT = Future Cross Platform Ruby Desktop App Development?]
--- via [http://www.javalobby.org/java/forums/t84113.html:title=Frankengui? Using SWT and Ruby for your GUIs]

* 「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用)に変換します。

- [[Java API Doc の「日本語、英語」をブックマークレットで切り替える>Tips/APIDocEnJa]]
-- JavaのAPIドキュメントをブックマークレットを使って、日本語と英語で切り替えます。

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

* 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
 
 この機能を使用できない実行環境もあるため、この機能はテスト目的だけに使用してください。

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

#comment