[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends-ml 12151] (議事録)J2SE 5.0 Tiger 第3回



高橋(徹)です。

参加された皆様お疲れ様です。
柴田さん、参加いただきましてありがとうございます。

議事録です。今回宿題が多いですので、皆様ご協力お願いいたします。

なお、本の残りが少ないので、次回時間が余ることが予想されます。
余った時間で実施するネタを募集します。今持っている案は以下です。
- JavaOne 2005 TokyoのJava Puzzlerからクイズを実施
- Javaメモリモデル詳解

−−−−−−−−−−−−−−−−−−−−−−−−−−−−−
「Java 2 Standard Edition 5.0 Tiger」を読む会 第3回議事録

日時:2005年11月19日(土) 10:00〜17:00
場所:高津市民館 第6会議室
参加者(敬称略, 朗読者*、書記**):
       根本、高橋(智)、和田、吉本*、村山、村上、岩室*、遠藤、岡沢、
       柴田、江本、門脇、小棚木、高橋(徹)**

■第7章 アノテーション
□7.1.3 @SuppressWarningsアノテーション

脚注4ではJ2SE 5.0 Update2ではサポートされていないとあるが、Tigerでもい
ずれサポートされるという話がある。現時点でUpdate5がリリースされている。
	[宿題] Update 5で対応しているか調べる

[脱線]LinuxのJDK、SMP機上では不安定かも

□7.2 アノテーション型宣言

脚注5で、'@'と'interface'の間に空白を入れられる
	[補足]Perlでも、'$'と変数名の間に空白を入れられる
	[補足]++演算子も間に空白入れられる

[質問]バイトコード構造体はアノテーション導入によって変更されたか?
	→VMの仕様としては追加されたattributeは読み飛ばさねばならない
	[宿題]仮想マシン仕様の違いの有無を調べる
	[宿題]バイトコード構造体の違いの有無を調べる

□7.2.7 デフォルト値の指定

[質問]@RequestForEnhancementのdefaultを削除して、
RequestForEnhancement.classだけを再コンパイルして配布(置き換え)すると
どうなるか?
	→ 利用側にはインライン展開されないので、何らかのエラーが
	出るのではないか?
	[宿題]何が発生するか調べよう

□7.4.1 標準メタアノテーション

[質問]package-info.javaはコンパイルされクラスになるのか
	[宿題]package-info.javaの謎を解明すべし

□7.4.2 @Retentionアノテーション

[質問]@Retentionjを省略したときにデフォルトでRetentionPolicy.CLASSが指
定されたと見なす仕様はどこで定義されているか?
	[宿題]調べる

□8.1.3 複数要素アノテーションの読み取り

[質問] rfe = m.getAnnotation(RequestForEnhancement.class)でキャストな
しに代入しているが不要なのか?
	→ p.102の宣言でジェネリクスとなっているのが分かる。このよ
	うに、TigerのAPI設計では引数にFoo.class(クラスオプジェクト)を
	取るものが多用されている。特にGet系メソッドにおいて1つのメソッ
	ドで複数の型を返すことができる。(トークン)

□8.2 アノテーション処理ツール(apt)

[質問]ソースファイルが生成されるとあるが、テンポラリなものか?
	→永続的に作られる

□8.2.2 ファクトリーの作成

[質問]supportedAnnotationsフィールドがfinalでunmodifiableCollectionに
なっているのはなぜ?
	→イミ的なもの(不変)

[補足]Java SE 6(Mustang)ではアノテーションで以下の変更がある
   ・javacコマンドでaptの処理ができるようになった
   ・ファクトリを作らずプロセッサだけでよい
     envはprocessメソッドの引数で渡すようになった
   ・supportAnnotationsフィールドは@SupportedAnnotationTypeで記述可能
以下URL参照
http://blogs.sun.com/roller/page/darcy?entry=jsr_269_in_mustang_build

□9.1.2 予約語

[質問]nullは予約語にないが?
	→リテラルです。trueやfalseも予約語ではなくリテラル。

□9.1.3 浮動小数点リテラル

[補足]0x1.4p0の表記は、C99に合わせたもの

[質問]C99対応コンパイラってあるの?
	→ GCCでは対応。8割程度の適合性という話あり。

□9.2.1 例外連鎖

[補足]JDK1.3までなら自分で定義した例外クラスに保持する。既存の例外につ
いては手を入れられなかった。

□9.3 アサーション

[補足]JDK 1.4ではデフォルトではassert予約語が無効なので、-source 1.4を
コンパイルオプションに指定する必要があった。JDK 5.0ではデフォルトで5が
指定されているのでassertは有効。

□9.4.4 Stringクラス

[質問]contentEquals(StringBuffer sb)、contentEquals(CharSequence cs)と
別
出しされているのはなぜ?
	→実装では、sbをsynchronizeしてから(CharSequence)にキャストし
	てcontentEqualsを呼び出している。
	→StringBufferの場合はシステム側で同期を保証するが、それ以外は
	アプリケーション側で同期を保証するということではないか?

[質問]部分文字列を取り出すとき、中途半端な位置を指定すると下位代理
や上位代理が分れて不完全な文字列が返ってくるのか?
	→現状おそらくそうである
	→将来なんらかのインジェクションやXSS等のセキュリティ脆弱性の
	原因になるのではないだろうか?

★連絡事項
次回は、p.131の9.6 メモリモデルから。
著者の柴田さんより、Joshuaのサイン入リ本を1冊寄贈いただきました。次回
書記の方に贈呈いたします。

--
TAKAHASHI,Toru
torutk@xxxxxxxxxxxx