2008/01/25

さらにさらに続報: Java6 on MacOS X

いつのまにかちょっと検索するとsoylatteの情報が沢山手に入るようになってますね。
その中から、個人的に試した範囲でまとめときます。


  1. SoyLatte: Java 6 Port for Mac OS X 10.4 and 10.5 (Intel)をダウンロード&ダブルクリック
  2. ターミナルで open /usr/local を実行
  3. ファインダーで1のsoylatte16-i386-1.0.1 を /usr/local にインストール


これでsoylatteのインストールは完了です。AWTやSwingを使う場合、以下の設定が必要。
ただし、僕の環境では以下の設定を行った後デスクトップにハードディスク以外のアイコンが表示されないようになり、ファインダーの左のショートカットのアイコンもおかしくなったので、他に設定が必要かも。.MacOSXを違う名前にし、再起動するとなおりました。


  1. ターミナルで mkdir ~/.MacOSX を実行
  2. ~/.MacOSXに以下の内容でenvironment.plistを作成

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
    <key>DISPLAY</key>
    <string>:0.0</string>
    </dict>
    </plist>

    (/Developer/Applications/Utilities/Property List Editorを使うと簡単に作れます。)
  3. 一旦ログアウトし、再ログイン
  4. X11(アプリケーション/ユーティリティ/X11)を起動


これでAWT、Swingも使えるようになります。ただしこのままだと日本語が出ないので、下記の設定を行います。


  1. ターミナルで mkdir /usr/local/soylatte16-i386-1.0.1/jre/lib/fonts/fallback を実行
  2. ターミナルで open /usr/local/soylatte16-i386-1.0.1/jre/lib/fonts/fallback を実行
  3. 一般利用者向けIPAフォントのダウンロードからフォントをダウンロードして解凍し、ipa*.ttfをfallbackにコピー


これで日本語が表示されるようになります。
X11上で表示されるLAFはGTKなので、これをOSXぽくするために、Quaquaをインストールします。


  1. Quaqua Look And Feelをダウンロード(試したのはバージョン4.2)して解凍し、/usr/local/soylatte16-i386-1.0.1/jre/lib/extにlibquaqua.jnilibとquaqua.jarをコピー

  2. LAFを選択できないアプリでも、Javaの起動オプションに -Dswing.defaultlaf=ch.randelshofer.quaqua.QuaquaLookAndFeel を足せば、Quaquaを使わせることが出来ます。


上記の設定で、AquaっぽいLAFでJava6が使えるようになります。

JConsoleもこのとおり。

2007/11/26

さらに続報: Java6 on MacOS X

Java 6 Port: Developer Preview Release 2 for Leopard and Tiger
FreeBSD用JavaをベースにしたJava6のMacOS Xポート。GUIにはX11を使ってて、32bit(i386)版がTiger、Leopard用、64bit(amd64)版がLeopard用に公開されてます。
但しライセンスはJRLで、OpenJDK(のGPL with Classpath Exception)でダウンロードできるようになるのはまだ先のよう。

2007/11/01

続報: Java6 on MacOS X

Update on 2007/11/26: Javalobby News Letter 20071031へのリンク追加

Javalobby News Letter 20071031より。

さらに状況は悪化してるようです。

・AppleのJavaフォーラムで、ユーザがJava6が出るのが遅いという不満を言ってたスレッドが消されてる。
・LeopardのJava5はJava2Dレンダリングが遅くなっている(apple.awt.graphics.UseQuartz=trueすれば速くなる。Fabrizio Giudici's Blog)。
・Goslingが自身のブログ(Solaris and OS X))で、もうAppleのJavaは諦めたって発言してる。(その後のエントリSolaris and OS X (continued)で、MacのJavaは悩みの種の一つと発言。完全に投げたわけではない?)

Goslingの2番目のエントリ(Solaris and OS X(continued))で述べられてるように、AppleのJavaチームは凄く頑張ってるんだけど、Appleの興味がJava以外に移ってて、そもそも開発リソースがあまり割かれてないのかもしれない。

ここはSunがJava6、Leopard用のJava5の開発に対してもっと支援して欲しいところなんだけど、Appleが独力での開発にこだわってるそうな。ややこしい状況だなぁ。

2007/10/31

Java6 on MacOS X

最近MacOSXのJava6について何も聞かないなぁと思ってたんですが。

LeopardのJavaについて - 矢野勉のはてな日記

上記ページによると、LeopardにもJava6が含まれてなくて、ADCのサイトでダウンロードできたJava6開発版も無くなってるとのこと。実際ADC行ってみると無くなってました。

一体どうなってるのやら。
つい最近Office動かすためにJava6開発版削除したとこなのに(Rosettaが起動しなくなったトラブルのメモ参照)。
パッケージ置いとくんだった。

2007/10/30

AspectJ1.6

長らく音沙汰の無かったAspectJ1.6のリリースプランですが、ようやくアナウンスが出ました。
http://www.eclipse.org/aspectj/plans_new.php
今んとこM1、finalのリリースが予定されていますが、まだリリース日の情報は無し。

https://bugs.eclipse.org/bugs/buglist.cgi?query_format=adva...
現在1.6.0M1、1.6.0にターゲットされてるバグは77個。
全部手つかず。1.5.4も手つかずが多いし、開発が追いついてないような気がする。

around executionが適用されたメソッドの変数情報が欠落する - その後

http://takao.blogspot.com/2007/02/around-execution.html
このエントリのその後。

https://bugs.eclipse.org/bugs/show_bug.cgi?id=173978
上記バグによると、AspectJ1.5.4にターゲッティングされたとのこと。
ただし、AspectJ6に持ち越しかも。
AxisでWebサービス化するメソッドにaround executionを適用すると悲惨なことになるので、早く直して欲しいんだけども。

2007/06/30

trac通知メールのJIS(ISO2022JP)化

tracの通知機能はUTF-8 + Base64でメールを送るんだけど、古いメーラーで読めなかったり、SPAMと判別されやすかったりするらしいので、JIS化。
ここにあったパッチではうまくいかなかった(デフォルトエンコーディングがUTF-8だからかな)ので、自作。
なかなかうまくいかなくて、ものすごく強引なコーディングになってますが、今のところ正常に動いてます。今見るともっと効率的にかける部分もあるので、も一回見直さないといけないかも。

trac 0.10.4-ja-1向けです。自己責任でどうぞ。

--- notification.py.orig 2006-12-09 19:06:16.000000000 +0900
+++ notification.py 2007-06-29 17:50:38.000000000 +0900
@@ -172,7 +172,13 @@
self._charset = Charset()
self._charset.input_charset = 'utf-8'
pref = self.env.config.get('notification', 'mime_encoding').lower()
- if pref == 'base64':
+ if pref == 'iso-2022-jp':
+ self._charset.header_encoding = BASE64
+ self._charset.body_encoding = None
+ self._charset.output_charset = 'iso-2022-jp'
+ self._charset.input_codec = 'utf-8'
+ self._charset.output_codec = 'iso-2022-jp'
+ elif pref == 'base64':
self._charset.header_encoding = BASE64
self._charset.body_encoding = BASE64
self._charset.output_charset = 'utf-8'
@@ -289,6 +295,7 @@
def send(self, torcpts, ccrcpts, mime_headers={}):
from email.MIMEText import MIMEText
from email.Utils import formatdate, formataddr
+ from email import base64MIME
body = self.hdf.render(self.template_name)
projname = self.config.get('project', 'name')
public_cc = self.config.getbool('notification', 'use_public_cc')
@@ -297,7 +304,7 @@
headers['X-Trac-Version'] = __version__
headers['X-Trac-Project'] = projname
headers['X-URL'] = self.config.get('project', 'url')
- headers['Subject'] = self.subject
+ headers['Subject'] = base64MIME.header_encode(self.subject.encode('iso-2022-jp'), 'iso-2022-jp', maxlinelen=1024)
headers['From'] = (projname, self.from_email)
headers['Sender'] = self.from_email
headers['Reply-To'] = self.replyto_email
@@ -345,7 +352,10 @@
headers['Cc'] = ', '.join(pcc)
headers['Date'] = formatdate()
# sanity check
- if not self._charset.body_encoding:
+ if self._charset.output_charset == 'iso-2022-jp':
+ body = unicode(body, 'utf-8').replace(u'\uff5e', u'\u301c')
+ body = body.encode('utf-8')
+ elif not self._charset.body_encoding:
try:
dummy = body.encode('ascii')
except UnicodeDecodeError:

2007/05/08

Javaと並列処理と関数型言語

「Javaに並列処理と関数型言語の要素を」、ティム・ブレイ氏 - @IT

時代はCPUの高速化より、マルチコア化に進んでいるので、Java言語もそれに対応して並列処理や関数型言語の要素を取り込むべきということらしい。(JavaやC++などの手続き型言語より関数型言語の方が並列化しやすい。)

最後の方になにやら物騒なことが書いてあるけど、Java言語にどう取り込むかよりも、JVMレベルでどうサポートするかの方がでかい気がする。

Erlang

twitterブームの陰で注目を集める“Erlang” - @IT
記事的にはいろいろツッコミどころがありますが、Erlangはおもしろそう。
そろそろ関数型言語も押さえとかないといけないかな。
Jaskellか、Kawaあたりから始めてみようかな。

2007/03/20

JBuilder2007 Free Edition!!

CodeGear | Trial and Free Versions - Borland
EclipseベースのJavaIDE、JBuilder2007の無償版、Turbo JBuilder 2007が出ました!
日本語へのローカライズも行われてます。やるねぇBorland。いや、CodeGearか。
ライセンスに関しては、特に制限はない模様。Turbo版に特別なライセンスは記述されていないので、Developer版等と同様に使えそう。インストール後のレジストレーションも必要ありません。但しWindows版のみ。

入ってる内容は以下の通り。
Subclipse:
・SVNチームプロバイダCore

FindBugs:
・FindBug Plug-in

Spring IDE for Eclipse:
・Spring IDE

Mylar Technology Project:
・Mylar Plug-in

JBuilder:
・JBuilderプロジェクトのインポート
・Maven2.0インテグレーション拡張機能
・RDB InterBaseプラグイン
・XPlanner用Mylarコネクター

Borland(TM) CaliberRM Eclipse Client 2006:
・CaliberRM Eclipse Client

Web Standard Tools:
・Dali Java Persistence API(JPA) Tools
・J2EE Standard Tools(JST)
・Web Standard Tools(WST)

BIRT Example:
・Apache Commons Codes
・BIRT Chart Context-sensitive Help
・BIRT Chart Framework
・BIRT Chart Runtime
・BIRT Context-sensitive Help
・BIRT Example
・BIRT Report Designer
・BIRT Report Runtime
・Business Intelligence and Reporting Tools
・Lowagie Itext
・Mozilla Rhino
・W3C Sac

Eclipse Data Tools Platform Model Base
・Eclipse Data Tools Platform
・(Data Tools Platform関連他5個)
・Eclipse Java Devlepment Tools

TPTP Platform Samples
・TPTPに加え、EMFやGEF、Visual Editorなど

よく使われるフリーのプラグインに加え、CaliberRMのクライアントやInterBaseやMaven対応ってとこ。
まぁ、EclipseのCodeGearセレクションプラグイン集って感じで、独自機能は少しです。
ただ僕が常用してるうち、AJDTとPropedit以外のプラグインはほぼそろってるので、なかなか快適。