So-net無料ブログ作成

Java読書会へ明日は参加します [Java]

最後に参加したのが2006年1月なので、約3年振りにJava読書会に参加します。

http://www.javareading.com/bof/



KOIT クリスマスソング [インターネット放送]

今年もKOITは、クリスマスソングの季節が来ました。

http://www.koit.com/

クリスマスまで、24時間、様々なクリスマスソングが放送されます。

以前にも書きましたが、KOITは、1991年5月から2年間過ごしたPalo Alto, CA(米国)で聞いていたFM放送局です。

http://yshibata.blog.so-net.ne.jp/2007-10-02

『Effective Java 第2版』届きました [Java]

ej2e.jpg

土曜日の午前中に、出版社から『Effective Java 第2版』が(翻訳契約に含まれる)5冊届きました。Amazonの発売予定日は、11月27日になっていますが、おそらく次の三連休中には書店によっては並ぶのではないかと思います。

英語版が今年5月のJavaOneで先行発売されてから、約半年後に日本語版を出すことができました。初版と同様に、翻訳版に関しては日本語版が最初に出版されたのではないかと思っています(出版社に確認していませんが・・・)。

英語版での第3刷(third printing)までに見つかった誤りは、日本語版では修正されています。また、本文を補足するための「訳注」も10個ほど新規に追加しています。しかし、やはり、初心者には内容的に難しいかもしれません。時間があれば、「Effective Java 第2版を読む」と題したブログを書いていきたいと考えています(本当に書けるかは約束はできませんが・・・)。

初版を手にとって読み始めた時にはJoshua Blochの名前も知りませんでした。しかし、初版の翻訳を通して、電子メールのやり取りをして、2002年の12月に初めて会って(拙著『プログラマー現役続行』のp.48の写真)以来、何度か会って話をしています。

彼の著書である『Effective Java』の初版、第2版、それに、『Java Puzzlers 罠、落とし穴、コーナーケース』を翻訳することで、私自身は多くの事柄を学びました。第2版を日本の多くのソフトウェアエンジニアが読まれて、日本のソフトウェア業界のレベルアップに多少なりとも結びつけばと思っています。

『Effective Java 第2版』 Amazon.co.jpで予約可能 [Java]


Effective Java 第2版

Effective Java 第2版

  • 作者: Joshua Bloch
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2008/11/27
  • メディア: 単行本(ソフトカバー)


Amazon.co.jpで予約注文できるようになりました。また、出版社のホームページにも紹介されています。

出版社紹介ページ

『Effective Java 第2版』目次を掲載しました [Java]

私のホームページに目次を掲載しました。トップページの『Effective Java 第2版』の表紙画像をクリックしてください。

http://www001.upp.so-net.ne.jp/yshibata/



+= 複合代入演算子と文字列 [Java]


Java Puzzlers 罠、落とし穴、コーナーケース

Java Puzzlers 罠、落とし穴、コーナーケース

  • 作者: ジョシュア・ブロック
  • 出版社/メーカー: ピアソン・エデュケーション
  • 発売日: 2005/11/14
  • メディア: 大型本



土曜日にJoshua Blochと話をした際に、『Java言語仕様第3版』での言語仕様の変更により、『Java Puzzlers』のパズルを一部書き直す必要があるということでした。それで、調べてみました。

『Java言語仕様第2版』までは、以下のコードは文法エラーでした。
Object o = new Object(); o += "test";

なぜならば、15.26.2節「複合代入演算子」には、次の定義が記述されていたからです。
左手側オペランドがString型であれば右手側オペランドはどのような型でも構わない +=をのどいて、すべての複合代入演算子では双方のオペランドがプリミティブ型でなけれればならない。

E1 op= E2形式の複合代入式では、E1が一度だけ評価される点を除き、E1型をTとしたE1 = (T)((E1) op (E2))と等価なものになる。暗黙のうちに行われるT型へのキャストは、好投変換(§5.1.1)、あるいはプリミティブ型のナローイング変換(§5.1.3)となることに注意されたい。

しかし、リリース1.5でオートボクシングが導入された際に、この記述は『Java言語仕様第3版』では次の記述だけとなりました。
E1 op= E2形式の複合代入式では、E1が一度だけ評価される点を除き、E1型をTとしたE1 = (T)((E1) op (E2))と等価なものになる。

つまり、o += "test";は、次のように解釈される訳です。
o = (Object)((o) + ("test"));

このコードは文法的には正しいですから、o += "test";も正しいことになります。しかし、最新のJava 6 Update 10のコンパイラでも、o += "test";は、コンパイルエラーとなります。

Bug Databaseを見ると、これは言語仕様のバグではなく、コンパイラのバグとして認識されているようで、Java 7で修正されるようです。

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4741726

ということで、「パズル10 トウィードルディ(Tweedledee)」 は、Java 7がリリースされた時には、書き直す必要があることになります。

簡単なデジタル時計(2) [Google Web Toolkit]

先日、Google Web Toolkitを使用して簡単なデジタル時計を作成したと書きました。

http://yshibata.blog.so-net.ne.jp/2008-10-25

それから毎日、少しずつ改良しています。最新版(V1.10)では、表示されているデジタル時計をホップアップとして切り離すためのチェックボックスが、プロパティダイアログに追加されています。ポップアップとして切り離されたデジタル時計はマウスで移動させることができます。切り離されたデジタル時計の中をダブルクリックすると、プロパティダイアログが開きます。

http://www001.upp.so-net.ne.jp/yshibata/

開発は、MacBook上でEclipseを使用しています。MacOS X(バージョン10.5.5)には、Subversionも最初から入っていますので、ソースコードの管理に使用しています。

『Jaywalk Ballad Best』 [音楽]

Jaywalkはデビュー当時(私がまだ学生だった頃)から聞いていますが、バラードベストが出たので買いました。


JAYWALK Ballad Best

JAYWALK Ballad Best

  • アーティスト:
  • 出版社/メーカー: 徳間ジャパンコミュニケーションズ
  • 発売日: 2008/11/05
  • メディア: CD



学生だった頃、一度だけ(北九州市)小倉のライブハウスに聞きに行ったことがありますが、普通のコンサートは行ったことがないですね。ボーカルの中村耕一さんとは、その時一度話をさせてもらたのと、その後お会いしたのは確か5、6年前に一度だけです。

Jaywalkを昔から聞いている人にはお勧めのアルバムです。

『Effective Java 第2版』まもなく発売 [本]


Effective Java 第2版

Effective Java 第2版

  • 作者: Joshua Bloch
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2008/11/27
  • メディア: 単行本(ソフトカバー)


9月24日に翻訳が終了したことを書きました。

http://yshibata.blog.so-net.ne.jp/2008-09-24

翻訳作業が終了してからしばらく経過しましたが、今月下旬の23日の週には書店に並ぶかと思います。私にとっては、7冊目の技術書の翻訳本になります。自著も含めると、10冊目となります。

『Pragmatic Thinking & Learning -- Refactor Your Wetware』 [本]


Pragmatic Thinking and Learning: Refactor Your

Pragmatic Thinking and Learning: Refactor Your

  • 作者: Andy Hunt
  • 出版社/メーカー: Pragmatic Bookshelf
  • 発売日: 2008/09
  • メディア: ペーパーバック



Andy Huntの新著が届いたので、読み始めました。著者からの本の紹介がAmazon.comで見ることができます。

http://www.amazon.com/gp/mpd/permalink/m2CE2U00HG978U