- PR -

もうお試しになられましたか? J2SE 1.5.0 Tiger

投票結果総投票数:172
試した 58 33.72%
まだ 114 66.28%
  • 投票は恣意的に行われます。統計的な調査と異なり、投票データの正確性や標本の代表性は保証されません。
  • 投票結果の正当性や公平性について、@ITは一切保証も関与もいたしません。
投稿者投稿内容
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2004-01-22 18:49
どうも、Wataです。
引用:

さくらばさんの書き込み (2004-01-22 14:27) より:
盛り上がりませんね やっぱり、それほど興味ないのでしょうか。

言語仕様ばかり取りあげられていますが、それ以外にも (略) なんてものもあります。

私的にはソフトウェアの管理関連の API の充実がうれしいです。


さくらばさんが書き込みしたら盛り上がり始めました。
言語仕様以外にもいろいろありますよね。
個人的には、Swingでポップアップメニューが簡単に使えるようになったことが気に入ってます。JComponent#setPopupMenu(JPopupMenu)
あとこの会議室でも話題にあったと思うけど、javaの最前面ウィンドウができるようになったみたいです。
引用:

・printf, scanf 相当の簡易フォーマット


scanfはjava.util.Scannerですよね。
printfはjava.text.MessageFormat.format()ですか?
個人的にはjava.io.PrintWriterにprint(String pattern, Object... arguments)なんてのも追加されると思っていたのですが...。まぁ、たいした手間じゃないですね。


引用:

ponさんの書き込み (2004-01-22 15:40) より:
enum試しましたがEnum.VALUESが無いみたいなのですが・・・
values()というstaticメソッドはありましたが。
変わったんでしょうか?


values()という配列を返すメソッドに替わった模様です。
# かぶってしまいました

しかし、Java in the Box はいつも情報が早くて参考になります。


[ メッセージ編集済み 編集者: Wata 編集日時 2004-01-22 18:54 ]
さくらば
大ベテラン
会議室デビュー日: 2002/11/12
投稿数: 145
投稿日時: 2004-01-23 04:29
こんにちは、さくらばです。

引用:

ukさんの書き込み (2004-01-22 16:28) より:
引用:

unibonさんの書き込み (2004-01-22 15:13) より:
私が将来 1.5 の機能で最初に使うのは何だろう。Generics かな? でも、古いバージョンで動かなくなるので、常用するにはなかなか踏ん切りが付かない...


Genericsを使ってもバイトコードは変わりませんよ。ターゲットVMのデフォルトは1.2のまま
だと思いますけど。



Generics の Early Access 版は J2SE 1.3 などでもそのまま動いたのですが、
残念ながら J2SE 1.5 アルファのクラスファイルだと J2SE 1.4 以降でない
と動作しません。

そのまま実行してしまうとUnsupportClassVersionError が発生して
しまいます。

次のように書けば J2SE 1.2 でも動作するようです。

javac -source 1.5 -target 1.2 XXXXXXX.java


[ メッセージ編集済み 編集者: さくらば 編集日時 2004-01-23 04:59 ]
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2004-01-23 09:17
unibon です。こんにちわ。

引用:

さくらばさんの書き込み (2004-01-23 04:29) より:
次のように書けば J2SE 1.2 でも動作するようです。

javac -source 1.5 -target 1.2 XXXXXXX.java


ukさん、さくらばさん、ありがとうございます。
互換性を保てるとは知りませんでした。

ただ、(以下は質問と言うわけではありませんが)、
Generics で使う型の情報をクラスファイルのどこにどうやって、
互換性を保ったまま保存しているのだろう、
という疑問があります。
もしかしたら、ソースコードAをコンパイルする際に、
ソースコードAが依存しているソースコードBが必要、
とかそういうことはないですよね。
#踏ん切りがついたので、自分で使ってみて調べてみます。
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-01-23 11:45
引用:

unibonさんの書き込み (2004-01-23 09:17) より:
Generics で使う型の情報をクラスファイルのどこにどうやって、
互換性を保ったまま保存しているのだろう、
という疑問があります。


型チェックはコンパイル時だけ必要なので、バイトコードに残す必要はありません。
だから1.5のコレクションクラスのコード自体は基本的に変わっていないと思います。
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2004-01-23 12:35
引用:

ukさんの書き込み (2004-01-23 11:45) より:
型チェックはコンパイル時だけ必要なので、バイトコードに残す必要はありません。
だから1.5のコレクションクラスのコード自体は基本的に変わっていないと思います。


私も、バイトコードには型パラメータの情報はないと最初は思ったのですが、
バイトコード内にその情報が無いとすると、コンパイル時にも利用できませんよね。
ちなみに以下のコードを
コード:
import java.util.*;
public class GenericsTest {
   public static void main(String[] args){
      ArrayList list = new ArrayList();
      list.add("ABC");
   }
}

-source 1.5でコンパイルすると、
コード:
GenericsTest.java:5: 警告: raw 型 java.util.ArrayList のメンバとしての add(E) の呼び出しは未確認です。
		list.add("ABC");
                      ^
警告 1 個

となります。
annotationもそうですけど、バイトコードには拡張データを積める仕様があるのですかね?
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-01-23 12:56
引用:

Wataさんの書き込み (2004-01-23 12:35) より:
私も、バイトコードには型パラメータの情報はないと最初は思ったのですが、
バイトコード内にその情報が無いとすると、コンパイル時にも利用できませんよね。


書き込みにあるコードだと同一ソース内ですから型チェックはコンパイラの拡張のみで可能ですよね。

ただし別クラスでクラスファイルのみの場合だと、やはり型情報は必要ですね…
バイトコード内の型定義はやはり拡張されていると考えたほうがいいのでしょうね。
#時間があれば仕様も当たってみます
Wata
ぬし
会議室デビュー日: 2003/05/17
投稿数: 279
投稿日時: 2004-01-23 13:12
引用:
書き込みにあるコードだと同一ソース内ですから型チェックはコンパイラの拡張のみで可能ですよね。

java.util.ArrayListは別クラスですよ
さくらば
大ベテラン
会議室デビュー日: 2002/11/12
投稿数: 145
投稿日時: 2004-01-23 13:56
こんにちは、さくらばです。

引用:

ukさんの書き込み (2004-01-23 12:56) より:

ただし別クラスでクラスファイルのみの場合だと、やはり型情報は必要ですね…
バイトコード内の型定義はやはり拡張されていると考えたほうがいいのでしょうね。
#時間があれば仕様も当たってみます



JSR-14 の仕様書を読んでみると、Backward Compatibility を保ちながら Generics を扱えるように、
シグニチャを変更したと書いてあります。普通は ArrayList であれば Ljava/util/ArrayList;
と記述されますが、ArrayList<String> は Ljava/util/ArrayList<Ljava/lang/String;>; と
なっています。

ついでに ArrayList<? extends T> は Ljava/util/ArrayList<+T;>;
ArrayList<? super T> は Ljava/util/ArrayList<-T;>; のようです。

# javap -s でシグネチャ出力させても Ljava/util/ArrayList; としか出力されませんが

JSR-14 http://jcp.org/en/jsr/detail?id=14

スキルアップ/キャリアアップ(JOB@IT)