06/06/05 19:40:33
>>261
そんなこと言ってると
あれも入れろこれも入れろで収拾付かなくなるから。
263:デフォルトの名無しさん
06/06/05 19:49:14
Entry回せばいいじゃん、極一部のクラスのためだけにそんな馬鹿な仕様取り入れるかよ
Collectionはデータ構造に関するJavaの主要フレームワークの根元だから特別視されるだけだ
264:デフォルトの名無しさん
06/06/05 20:08:49
try-open-finally-closeも特別扱いしてほしい。
265:デフォルトの名無しさん
06/06/05 20:13:57
try-finallyデストラクタを強制するためにも
openとcloseは例外を投げる設計にしたほうがいいんだよな
>>264
どんな感じの?
266:デフォルトの名無しさん
06/06/05 20:40:25
>>262
そのくせプロパティやらXML直書きやらは導入されるんだ。
そっちのほうが収拾つかんわ。
267:デフォルトの名無しさん
06/06/05 20:44:59
>>266
Map の foreach なんて generics+プロパティ導入で e.key と e.value で済むんだから
わざわざ入れなくてもいいだろ。
268:デフォルトの名無しさん
06/06/05 22:08:03
クロージャが出来るそうだから、
foreach(aMap, クロージャ);
でいいよ。
269:デフォルトの名無しさん
06/06/06 01:47:50
クロージャは導入必至。
オヤジJavaプログラマの「クロージャは苦労じゃ」のネタは既に
あるものとして色々なバリエーションが考えられてるからです。
どんなものでもイイが、上のネタを生かすために簡単なものであっては困る事だけは確かだ。
270:デフォルトの名無しさん
06/06/06 02:25:33
クロージャの正しい概念ってどんなの?
ECMAScriptだとthis参照を遅延生成メソッド内に埋め込むやり方で使ってるよね
でもJavaのthisってコンテキスト参照じゃなくてインスタンス参照でしょ?
271:デフォルトの名無しさん
06/06/06 02:44:45
XMLリテラルがどういう利点があるかわからないんだけど。
272:デフォルトの名無しさん
06/06/06 03:11:42
>>271
構造を持ったデータを簡単に作れることじゃないの?
今までせこせこ、ListとかMapとか組み合わせてたような奴
273:デフォルトの名無しさん
06/06/06 03:28:52
アノテーションにxmlリテラルが使えると、外部xmlファイルが必要なくなるのは嬉しいか嬉しくないか微妙。
274:デフォルトの名無しさん
06/06/06 08:35:14
>>270
URLリンク(foldoc.org)
の1かな。
Javaに実装するなら、new Callable() { ... } あたりを楽に書ける
シンタックスシュガーとして実装がいいんじゃない。
つまり、ローカル変数はfinalなもののみアクセスできる。
>>36 のようなことがやりたければ、
final int[] sum = { 0 }
で切り抜ける。
275:デフォルトの名無しさん
06/06/06 20:11:40
使い勝手が悪そう
276:デフォルトの名無しさん
06/06/07 04:21:46
ヒアドキュメントすら否定するのにXMLリテラルは受け入れるJava厨乙
277:デフォルトの名無しさん
06/06/07 05:45:45
>>276
受け入れてないよ。だからヒアドキュメント否定するんだろ。
278:デフォルトの名無しさん
06/06/07 05:49:46
とか言いながら、いざ実装されるとマンセーするのがいつものパターン。
279:デフォルトの名無しさん
06/06/07 07:45:12
ヒアドキュメントはイラン。
ところで、クロージャーって、単なるシンタックスシュガーじゃなくて、スクリプト言語用のバイトコード拡張を利用する構文じゃないのかな。
280:デフォルトの名無しさん
06/06/07 11:05:11
>>279
それは激しい・・・
ヒアドキュメントと変わらんじゃないですか
スクリプト言語のシンタックスがわからない以上・・・・
281:デフォルトの名無しさん
06/06/07 11:13:26
>>279
それはまず無い。スクリプト言語用のバイトコード拡張(invokedynamicだったか)は、
クロージャの実装に使えるようなものじゃない。クロージャが単なる匿名クラスの
シンタックスシュガーになるんじゃないだろうというのは同意だが、クロージャは、
別にバイトコードを拡張しなくても、既存のコードの互換性を保った形で追加できるはず。
282:デフォルトの名無しさん
06/06/07 11:41:58
invokedynamic(JSR292)は、
そもそも動的メソッド呼び出しだけだから、
Funarg問題を解決してくれるようなもんじゃないしね。
# Hotswappingの方向で進んでいるからslot参照も付くんだろうが。> JSR292
どういう実装するかよりも、どういう仕様になるかの方が…
たぶん、inner anonymous classの参照しているlocal変数、実引数、
例外処理ハンドラ引数がfinalでなければいけないという制約が
closureの場合は外れるかどうか。
Inner anonymous classを使った実装になるのは確実でしょ?
後はsyntax sugerでしょうね。
Closure出来たら、コレクションも新しくしないとねw
283:デフォルトの名無しさん
06/06/07 11:45:10
>>280
三行とも意味がわからん…w
Groovyの文法は既に定義されているし
284:デフォルトの名無しさん
06/06/07 12:21:26
>>282
281だが、
> たぶん、inner anonymous classの参照しているlocal変数、実引数、
> 例外処理ハンドラ引数がfinalでなければいけないという制約が
> closureの場合は外れるかどうか。
外れると思うなあ。じゃなきゃ、セマンティクスとしては
今までとほとんど変わらないんだから、わざわざクロージャ
を追加するなんて言い方はしないでしょ。あと、細かいが
実引数は仮引数の間違いでは?
> Inner anonymous classを使った実装になるのは確実でしょ?
> 後はsyntax sugerでしょうね。
実装としては、Inner anonymous classを使うのに近いものに
なるだろうが、仕様としては単なるInner anonymous classの
シンタックスシュガーになるってことは無いと思う。
285:デフォルトの名無しさん
06/06/07 12:35:22
>>261
なにも考えずに下手に導入するとC#やC++の二の舞となるぞ。
どうしてもそういう機能が欲しければ
C++やC#で実装して貰うように頼むか自分で実装するという手もありだな
286:デフォルトの名無しさん
06/06/07 12:41:34
ああ、実引数の間違いね。
Closureを実装するにあたって、
JVMの仕様を変えるという話は出てきてないから、
ほとんどsyntax sugarみたいなもんなはずだけどね。
というかinner anonymous classがほとんどclosureみたいなもんだし。
finalが外れるとしても、primitive typeの扱いはどうするのか…
287:デフォルトの名無しさん
06/06/07 12:43:31
>>285
つーかクロージャができる今となっては>>268でいいでしょ。
拡張forは黒歴史だ。
288:デフォルトの名無しさん
06/06/07 12:51:02
>>286
JVMの仕様を変えないでも、「本物の」クロージャは実装できるよ。
あと、キャプチャされる変数がprimitive typeかどうかは、クロージャ
実装するにあたっては、特に関係無いはずだけど、何か問題ある?
289:デフォルトの名無しさん
06/06/07 13:10:14
outer classのslotは、
closureに埋め込んだouter class instansの
thisを介して参照すれば書き換え可能だけど、
引数はちょっと面倒じゃない? > primitive
Method内でclosureが使われる時、
first class closureが外に持ち運び出されれて使われる時、
複数のclosureからprimitive typeが参照される時の扱いなど。
まあコンパイラが頑張れない問題ではないけれど。
そういうprimitive typeは、
別のinner anonymous classでwrappingすればいいんだから。
290:デフォルトの名無しさん
06/06/07 13:38:10
ローカル変数も基本型だとスタックフレームにあるから、
オブジェクトでラップしとかないといけないよね。
外に持ち出して複数のクロージャから参照されるかもしれないから。
291:デフォルトの名無しさん
06/06/07 19:17:14
>>289
それは、クロージャからouter classのフィールドを参照しているか
outer scopeのローカル変数を参照するかによる違いであって、
primitive typeかどうかは関係無いのでは?クロージャから
outer scopeのローカル変数を参照可能で、かつ、クロージャから
その変数が変更可能なようにする場合、基本型かどうかに関わらず、
オブジェクトでラップする必要が生じると思うんだが。
292:デフォルトの名無しさん
06/06/07 19:54:33
>>283
あのースクリプト言語ってGroovyだけじゃないんですが・・・
スクリプト言語への対応って言語の定義はされてなくて、APIの定義なんですよ。
おそらくそこを勘違いされていますよね?
今あるスクリプト言語だけじゃなくて将来出てくる言語もこのAPIに沿ってライブラリを
用意すれば使えるっていうフレームワークです。
293:デフォルトの名無しさん
06/06/07 19:57:25
今までずっとコンパイル言語はデリゲート、スクリプトはクロージャって漠然と思ってたけど
もしかしてもっと高尚な概念だったのか?w
294:デフォルトの名無しさん
06/06/07 20:04:53
スコープがどこにあるかで変わるような気もするが
デリゲートっていうのはクロージャーよりもっと大きな範囲を表すことばじゃないか?
295:デフォルトの名無しさん
06/06/07 20:05:00
>>293
別に高尚というほどのものではないが、ある言語がコンパイル言語かスクリプト言語
かどうかと(この区別の仕方も問題大有りだがそれは置いとく)、その言語がクロージャ
を持っているかどうかは全く関係が無いことは確か。あと、デリゲートってたぶんC#の
デリゲートのことを言ってると思うんだが、あれはMS用語であって、C#のあの機能に
対する用語としては全く一般的じゃない。
296:デフォルトの名無しさん
06/06/07 20:09:16
D言語もdelegateだろ?そのうち次世代標準になると思うが
297:デフォルトの名無しさん
06/06/07 20:30:15
>>296
逆に言えばC#,Dしか無いんだと思うが。しかも、時系列からして、D言語で
delegateって呼んでるのは、C#での呼称をまねたんだろう。次世代標準に
なるかは知らないけど、delegateはあまりセンスがいい機能だとは思えん。
298:デフォルトの名無しさん
06/06/07 21:55:27
delegateといえばそんな名のproxyを思い出すのはもうおじちゃん世代なんでしょうか・・・
299:デフォルトの名無しさん
06/06/07 22:47:03
>>291
outer scopeのローカル変数を参照している場合、
クロージャオブジェクトとは別のオブジェクトでさらにラップする必要があるでしょ。
複数のクロージャから共有される場合は必ず。
基本型じゃなければ、実はポインタが指しているわけだから、
複数のクロージャオブジェクトから共有するのは自然にできるけれど。
300:デフォルトの名無しさん
06/06/07 22:49:22
プログラミング言語で、"delegate"を最初に聞いたのは"actor"かな。
301:デフォルトの名無しさん
06/06/07 23:20:27
>>299
> outer scopeのローカル変数を参照している場合、
> クロージャオブジェクトとは別のオブジェクトでさらにラップする必要があるでしょ。
> 複数のクロージャから共有される場合は必ず。
これは特に異論を言ったつもりは無い。というか、クロージャのセマンティクスを
考えれば、至極当然だわな。
> 基本型じゃなければ、実はポインタが指しているわけだから、
> 複数のクロージャオブジェクトから共有するのは自然にできるけれど。
これはおかしい。クロージャから共有しているのは、ローカル変数その
ものであって、変数の値じゃないのだから、ローカル「変数」に対する
変更をクロージャ間で共有するためには、基本型じゃなくても
クロージャオブジェクトとは別のオブジェクトでラップする必要があるはず。
302:デフォルトの名無しさん
06/06/08 00:12:04
「これはおかしい」以降が分かりません。
ヒープに浮いているオブジェクトを共有していれば十分かと。
303:デフォルトの名無しさん
06/06/08 00:38:40
>>302
クロージャによって共有されるのは、参照型変数が指している先の
オブジェクトじゃなくて(もちろんオブジェクトも共有されるけど)、参照型変数
そのものなので、オブジェクトだけが共有されても変数そのものが共有されないと、
クロージャAで参照型変数aの指している先を変更した後(ここで、オブジェクトの
中身を書き換えるのではないことに注意)、別のクロージャBから同じ変数aを
参照したときに、クロージャAによって変更される前のaの参照先を指している、
というようなことになってしまう。
304:デフォルトの名無しさん
06/06/08 06:54:29
>>302
>>32 の
int sum = 0;
list.each(delegate(int i){
sum += i;
});
で、sum が java.lang.Integer、クロージャの中が
sum = new Integer(sum.intValue() + i);
だった場合に、オブジェクト共有じゃだめでしょ。
305:デフォルトの名無しさん
06/06/08 08:13:48
Javaなら「クロージャいらね、無名クラスで十分」でお願いします。
そしてクロージャが実装されたあかつきには「やはりクロージャは便利だ、すばらしい」でお願いします。
306:デフォルトの名無しさん
06/06/08 08:21:39
まぁ、使ってみなきゃわからない便利さってのもあるしな
307:デフォルトの名無しさん
06/06/08 09:15:16
>>305
さすがにクロージャに関しては、無名クラスで十分というのは
あり得ない気がする。特に無名クラスを制御構造の抽象化
(内部イテレータなど)に使うのは、冗長過ぎる。複数のメソッドを持っている
オブジェクトの場合は、無名クラスの方がいい場合もあるとは思うけど。
308:デフォルトの名無しさん
06/06/08 09:16:38
>>305
あいかわらず分析力のないwww
309:デフォルトの名無しさん
06/06/08 12:16:34
>>308
別に分析なんてしてないんじゃない?
Java vs ○○系のスレで何度も起きていることを
そのまま書いただけでしょ。
310:デフォルトの名無しさん
06/06/08 13:29:23
は? 意味がわかりませんな
あんたのいってることは
311:デフォルトの名無しさん
06/06/08 14:37:40
分からないならレスしなくていいよ。
もうちょっと勉強してからどうぞ。
312:デフォルトの名無しさん
06/06/08 14:39:51
くだらん煽りだ
313:デフォルトの名無しさん
06/06/08 14:40:54
>>312は>>310宛
314:デフォルトの名無しさん
06/06/09 03:16:58
★ネタは分かりやすく★
>>305 は
Javaユーザが、Generics導入前には「いらね」と言っていたのに
導入されたら「Genericsネ申」と褒め立てるJavaユーザをクロージャにも当てはめ
シニカルな笑いにしたネタ( ´ー`)y-~~
>>308 は
それをむしろJavaユーザの立場から自嘲的に笑いにしたネタ
もしくは、単に>>305 の諧謔を理解せず笑ったノ(´д`*) レス
>>309 は
それをJavaユーザに対する真っ向非難と受け止めた
瞬間湯沸かしレスヽ(`Д´)ノ
>>310
もう喧嘩と聞いちゃ黙っちゃいられない江戸っ子レス
(゚∀゚ )三 三( ゚∀゚)
>>311
それに便乗した野次馬
( ´・∀・`)ヤレヤレー
そんな感じですかね。
315:デフォルトの名無しさん
06/06/09 08:43:32
>>314
つまり、TemplateイラネをGenericsイラネにいまだに脳内変換してるバカってことか。
だれもGenerics神とか言ってねぇし。
スマソ、>>314自体が、そういうバカを装ったネタだったか。
316:デフォルトの名無しさん
06/06/09 10:13:17
>>313
いやどうみても>>311宛なんだが
317:デフォルトの名無しさん
06/06/09 10:14:20
>>315
まさにその通りだ。
たまにこのスレにでてくる馬鹿はC#厨とかC言語厨とかの
類だろう
318:デフォルトの名無しさん
06/06/09 13:15:36
Javaに要望されていたのはC++のtemplateじゃなくて、たんにparameterized typingじゃないの?
その意味でいえば、templateもgenericsも同じようなもんだけど。
あれか、templateイラネといっていた手前、genericsが導入されて引っ込みがつかないから
「genericsはtemplateとは違う、tempalteはいらないけどgenericsはマンセー」
といっしょうけんめい言ってるだけか。
大事なのは型引数がつかえることであって、コード生成なのかただのキャストなのかは
あんまり関係ないんだけど。
319:デフォルトの名無しさん
06/06/09 13:25:58
>>318
だから、導入したときにgenericsって名前にしたんだろ
320:デフォルトの名無しさん
06/06/09 23:16:20
俺の記憶じゃ、入れる前はどんなものか決まってなくて
C++のtemplate「みたいなの」が入るってことになってて勝手にワイワイやってたと思い
321:C++厨
06/06/09 23:32:26
C++風なのは入れないというのが暗黙の合意だったと思われ
あまり型システムは詳しくないけど、
Modula-3とかOberonの流れを汲むんじゃないの?
多重継承やオペレーターオーバーロードなし。特殊化なんてもちろんない。
322:デフォルトの名無しさん
06/06/09 23:54:27
タイプセーフenumパターンによるenumの実装は俺からしてみれば懸命だったと思うけど
ifよりswitchだみたいな風潮がまだあるのか、余り普及して内容に思える
323:デフォルトの名無しさん
06/06/10 00:05:13
タイプセーフenumの実現も可変長引数の実現も拡張forの実現も
みなGenericsのお陰で可能になったことなんだよ。
Genericsを導入するまでこれら三つを導入するわけにはいかなかった。
324:デフォルトの名無しさん
06/06/10 00:06:11
>>322
どういうこと?
enumはswitchでかけるし
325:デフォルトの名無しさん
06/06/10 03:17:28
次世代Javaスレなのに5.0で導入された機能の話ばっかりでつまらんので、
投下してみる。
JavaにContinuation(継続)機構は必要か?
URLリンク(blogs.sun.com)
俺はあんまり良く知らないんだけど、SchemeとかRubyにはContinuationという
機能がある。これは言うなれば、メソッドを呼び出す時に「おまえ、自分の処理
が終わったらこれを呼べよな」とクロージャを渡してしまう感じだろうか。
もちろんクロージャは(ちょっと前に話題に出てたけど)その時のスタック状態
さえも保持してるので(スコープから外れても、クロージャ内ではまだローカル
変数にアクセスできる、とか)、一種のlongjumpとして働くってことですな。
(というか、そこまでしか分からんかった....)
リターン値を見てから処理を決めて....という処理が不要になって、プログラムは
シーケンシャルにどんどん突き進めるという利点と、呼び出し元じゃなくても一気に
復帰できる上に、その時のスタック状態まで復元してしまうという、いわば「スタック
フレームごとあとで使うから保存しちゃえ」という強力な機能なんだってな。
なんだかContinuation-based Web Serverとかいうものもあるらしい。
で、この機能がJVM(JavaじゃなくてJVMだよ)に必要かどうかという議論。
リンク先ブログの人は、「ウェブアプリはAJAXとかで遷移の少ない方向へ移って
いってる過渡期で、移行が完了したらContinuation-based Web Serverの利点は
過渡期の遺物になっちゃう可能性があるし、JVMの大改造が必要だしセキュリティ
モデルに影響を与えるからイラネ」といってる模様。
いろんなサイト見て、Continuationは便利そうだが、正直分かりにくいし使いどころ
が難しい気がするので、俺もイラネ、という感じだな。
326:デフォルトの名無しさん
06/06/10 03:43:38
JVMみたいなスタックマシンには継続は辛い。
欲しい新機能は、switchの代替になるようなパターンマッチング。
ラベルにGOTOするんじゃなく、値を返す奴がいい。
int result = match<Integer>(obj) {
A : execute(); return 0;
B : return -1;
default : return 1;
}
って感じの。
327:デフォルトの名無しさん
06/06/10 06:24:44
>>325
細かいところだけど、ちょっとツッコミをば。
> これは言うなれば、メソッドを呼び出す時に「おまえ、自分の処理
> が終わったらこれを呼べよな」とクロージャを渡してしまう感じだろうか。
これは、継続渡しスタイル(Continuation Passing Style)と呼ばれるテクニックで、SchemeとかのContinuation
とは違う。SchemeとかRubyにある継続ってのは、call/ccと呼ばれるもので、1引数の関数を引数としてcall/cc
を呼び出してあげると、その関数を「call/ccの呼び出しが終わった地点に制御を移動するような関数」を
引数として呼び出してくれるという感じ。Javaっぽい文法で書くと、大体下のような感じになる。
このプログラムっぽいものを実行すると、ABCBCと表示される。
Continuation process() {
Continuation result = null;
System.out.print("A");
call_cc(new Function(){
public void call(Continuation c){
result = c;
}
});
System.out.print("B");
System.out.print("C");
return result;
}
...
first = true;
Continuation c = process();
if(first){
first = false;
c.jump();
}
System.out.println();
328:デフォルトの名無しさん
06/06/10 10:34:32
その前にproper tail call optimization可能なVMかな。
329:デフォルトの名無しさん
06/06/10 10:57:52
>>324
コンパイラがifに展開するんだとさ
int&switchによる高速さはenum&switchにはない
330:デフォルトの名無しさん
06/06/10 11:15:29
>>329
Enum.ordinal() 使ってint型にして switch するだけなんだけど。
この話も Mustang にも Dolphin にも関係ないね。
331:デフォルトの名無しさん
06/06/10 11:17:43
ん?実装が変わったのか?
332:デフォルトの名無しさん
06/06/10 11:29:36
>>329
>>330
俺もifに展開してると思ってた(というか、記憶が正しければ、
1.5のαかβではほんとにifに展開してたはず)のだが、今の実装は
確かにswitchを使うみたいだね。下のコードをコンパイルして、
逆アセンブルしてみたら、確かにEnum.ordinal()を使ってswitchする
コードに展開されてた。
public class TestEnum {
enum AnEnum {A, B, C}
public static void main(String[] args){
AnEnum a = AnEnum.A;
switch(a){
case A: System.out.println("A"); break;
case B: System.out.println("B"); break;
case C: System.out.println("C"); break;
}
}
}
333:デフォルトの名無しさん
06/06/10 18:15:07
>>332
実際にどう実行されるかは JVM 側のオプションでも変わって来るんじゃなかったっけ?
334:デフォルトの名無しさん
06/06/10 18:43:02
>>323
>タイプセーフenumの実現も可変長引数の実現も拡張forの実現も
>みなGenericsのお陰で可能になったことなんだよ。
なんで?
for (String str: list) {
...
}
を
for (Iterator $it = list.iterator(); $it.hasNext(); ) {
String str = (String)$it.next();
...
}
に展開するだけだと思うんだけど、Generics関係なくね?
335:デフォルトの名無しさん
06/06/10 18:59:16
>>324
おまえはtype safeという意味がわからんのか?
336:デフォルトの名無しさん
06/06/10 18:59:49
>>320
おれの記憶だとparameterised typingが希望されてて、その例としてC++のテンプレートが挙げられていた。
C++のテンプレートそのままが欲しいやつっていたのかな。欲しかったのはあくまで型引数がつかえることじゃない?
でも昔はGenericsとかGeneric Programmingという言葉はあまり浸透してなかったから、
話としては「テンプレートみたいなのが欲しい」という表現がよく使われていた。
つまりC++のテンプレートが欲しいんじゃなくて、型引数が欲しかったということ。
だから
>>172
>いっておくがC++のtemplateとJavaのgenericsとはまったく別もんだよ。
のようなのには、なんというか話がずれてるように思える。
どっちもparameterized typingなんだからおんなじじゃん?実現方法を問題にしてるんじゃないんだよ。
C++のtemplateは否定してJavaのgenericsは肯定してるやつらって。
まあいつものことか。
337:デフォルトの名無しさん
06/06/10 19:12:04
>>336
templateを否定してgenericsを肯定してるやつらは
template固有の話を問題にしているんだから、
>>336と話が合うはずがないよ。
とオモタ。
338:デフォルトの名無しさん
06/06/10 19:15:50
>>336
実現方法を問題にしてたんだよ。
339:デフォルトの名無しさん
06/06/10 19:18:29
6.0って構文に関するなんかって変わるっけ?
5.0と7の間にあるバージョンだから、印象が薄すぎて・・・
340:デフォルトの名無しさん
06/06/10 19:23:50
5と7の間だとなぜ薄いのかよく分からない
341:デフォルトの名無しさん
06/06/10 19:33:15
そらおまえ、GenericsだのXMLリテラルだのキモイ仕様てんこもりじゃないか
342:デフォルトの名無しさん
06/06/10 19:37:36
>>335
流れおかしくないか?
343:デフォルトの名無しさん
06/06/10 19:44:29
>>340
5と7は変更が大きいからね。
6はもともと5.1になる予定だったわけだし。
344:デフォルトの名無しさん
06/06/10 19:55:18
5.0は言語仕様の変更は大きいけどAPI的に1.4とくらべてたいした進化はない
せいぜいコンカレントまわりくらい
6は結構大きい変更が多いので楽しみ
中でもSwingの大規模修正はびっくりなくらいでは?
345:デフォルトの名無しさん
06/06/10 19:57:32
あのバタ臭い見た目は何とかして欲しいけどな。
346:デフォルトの名無しさん
06/06/10 20:22:20
デフォルトのLAFはSystemLAFでいいようなきがするな
347:デフォルトの名無しさん
06/06/10 20:22:49
お前はバタ子さんに恨みでもあるのか
348:デフォルトの名無しさん
06/06/10 23:06:59
>>344
Swingの大規模修正ってどんなの?
あんまり詳しくないので純粋に聞いてみる。
最近Swingに興味を持ったもので....
349:デフォルトの名無しさん
06/06/10 23:50:35
>>334,335
foreachに関してはともかくtype safe enumは
Genericsのおかげで「簡単になった」。
タイプセーフの実装は、自分で色々書けば出来たよ。
Effective Javaとか読んでみないか?
350:デフォルトの名無しさん
06/06/10 23:53:57
>>348
えーっと、漏れは>>344じゃなくて何が大きいか何とも言えないが、
個人的に助かってるのは
・GroupLayoutの搭載
・WindowsLAFの改善
・サブピクセルAAレンダリング
あたりかな?中では最適化がかなりゴロゴリありそうだけどよくしらない。
351:デフォルトの名無しさん
06/06/11 00:05:12
>>349
type safe enumを定義するのに、Genericsはほとんど使わないわけだが・・・。
352:デフォルトの名無しさん
06/06/11 00:06:10
enum A{ ONE, TWO, THREE}
のどこでGenericsがいるのだろうか。
353:デフォルトの名無しさん
06/06/11 00:19:01
>>351
>>352
Java 5.0のAPIドキュメント見ればわかるけど、列挙型の基底クラスである
java.lang.Enumの定義自体にGenericsが使われているよ。
354:デフォルトの名無しさん
06/06/11 00:23:07
>>353
Effective Javaのtypesafe enumの実装みたことあるのか?
355:デフォルトの名無しさん
06/06/11 00:37:25
>>350
一番大きいのはAWTスレッドがとまっていてもウインドウが描画されることかと
あとはJava2DでOpenGLパイプラインがLinux系でデフォになるようでクライアント分野も
DirectX使ってるWindowsに速度的に追いつくかなと
ただ、5.0のOpenGLサポート見てると非常に期待が出来ないのだけれども
JOGL使ってるなら大丈夫かな
つーかJOGL標準APIにしてください
>>354
そういうこといってるわけじゃないだろ?たぶん
356:デフォルトの名無しさん
06/06/11 00:49:22
>>354
そりゃもちろん見たことある。というか、何故Effective Javaのtypesafe enumの
話になる?Java 5.0のtypesafe enumがEffective Javaのそれが元になっている
のは知ってるが、全く同じというわけじゃない。
357:デフォルトの名無しさん
06/06/11 01:00:42
>>356
そりゃGenericsがなくてもtypesafe enumが作れるからだろ
GenericsがないとJava 5.0と全く同じものはつくれないけど
typesafe enum自体はつくれる
Genericsのおかげで作れたなんて変だって話でしょ
358:デフォルトの名無しさん
06/06/11 01:18:45
>>357
いや、そりゃtypesafe enum自体はGenericsが無くても作れるけど、
Enum同士のcompareToによる比較などが型安全にできないでしょ?で、>>349は
そういうのを指して
> foreachに関してはともかくtype safe enumは
> Genericsのおかげで「簡単になった」。
と言っていると思ったんだが。あ、もちろん>>323の言っている
ことは変だと思ってるけど、>>351や>>352は>>349に対する言及
だと思ったので。
359:デフォルトの名無しさん
06/06/11 02:07:13
Generics とか enum とか、Tigerで追加された機能の話題はこっちでやったら?
【JavaFive】C#からJ2SE5.xへ進化【TigerShot】
スレリンク(tech板)
360:デフォルトの名無しさん
06/06/11 02:50:30
いいんじゃないの?ここで。
361:デフォルトの名無しさん
06/06/11 03:31:27
Generics とかは現行世代の機能だから次世代スレでやるのは筋違いでしょ。
362:デフォルトの名無しさん
06/06/11 04:28:00
流れってもんも大切だし、極端に筋違いなわけではないし、そもそもこのスレの「次世代」というのは、Mustangスレの次スレをTigerスレでやろうかという意見があったときに、じゃあ次世代Javaというスレをたててまとめてというのがあったわけだし。
363:デフォルトの名無しさん
06/06/11 04:29:13
それに、enumとかGenericsとかについて意見が食い違うという時点で、次世代ということにしてもいいと思うわけで。
364:デフォルトの名無しさん
06/06/11 08:59:34
>>358
compareTo以外に何かある?
365:デフォルトの名無しさん
06/06/11 13:03:25
なんか一人genericsが嫌いなやつがいるようだな
366:デフォルトの名無しさん
06/06/11 15:11:08
>>325
それはWeakest Post Conditionという奴か?
ならば、Template Method パターンまたはアスペクト指向で
実現できまいか?
367:デフォルトの名無しさん
06/06/11 15:15:06
>>334
展開する前の前処理にGenericsが関与してるに1バイト
368:デフォルトの名無しさん
06/06/11 15:23:10
>>351-352
EnumクラスのJavadocを見ると
Enum<E extends Enum<E>>
使われて無くはない。
Genericsが使われているかいないかで
Javaのenumの仕様がかなり異なってくる。
C/C++のようなtype unsafeなenumにするわけにはいかないから
Genericsを導入するまでenumを導入するわけには
いかなかった理由がよくわかる。
369:デフォルトの名無しさん
06/06/11 15:24:19
>>357
Genericsのお陰で作りやすくなった
以前より比較的正しいenum実装ができるように
なった、とでも言うべきだろう。
370:デフォルトの名無しさん
06/06/11 15:29:58
>>364
equals(), clone(), hashCode(), toString(), valueOf()
371:デフォルトの名無しさん
06/06/11 15:47:30
>>362
そのMustangの話題ですらないわけだが。
372:デフォルトの名無しさん
06/06/11 15:55:01
今後はもうベンチマークに期待できなくなってくるのかな
Swing周りの改良は今後も進むかもしれないけど、業務では変わらない?
JVM統合の流れになっていくのかな
373:デフォルトの名無しさん
06/06/11 16:14:19
>>367
くわしく
374:デフォルトの名無しさん
06/06/11 17:15:01
>>372
業務でSwing使えばいいじゃない
すでに社内システムはWEBアプリは衰退していてリッチクライアントが普及してきているよ
不特定多数ならWEBアプリだけど、開発効率が段違いにわるいので
コスト増が問題になってるという感じ
375:デフォルトの名無しさん
06/06/11 20:23:42
今更であれだけど、Genericsっていいの?
コンテナに間違ったモノ突っ込むなんてバグはもとから経験無いけどなぁ。
376:デフォルトの名無しさん
06/06/11 20:50:16
キャストが要らないからそのままメソッド呼べたり、すっきりするってのが一番の恩恵でしょ。
377:デフォルトの名無しさん
06/06/11 20:58:09
自分だけで作ってるとあまり恩恵はないね
他人の作ったコード呼ぶ部分でListとだけ書かれてると困るので助かる
JavaDocとか整備されてないライブラリとかで泣きながらソースよんで苦労することが減った・・・
List<Map<Key,Value>>とか業務系だと頻繁に使うしね
大規模開発こそ結合部のドキュメント系が必要なのに整備されている率が低い傾向にあるのはどういうことだろう
ウォーターフォールの出来上がってくる設計書類にそんなものがまったくないという
少人数でライトウェイトな開発していればまずインターフェース作りましょうとかドキュメントは
大事なところだけ書いてあとはJavaDocにガンガン記述していきましょうとかそういうのが多いな
とりあえず何も考えなくてもよくなるEnumはかなり恩恵があるのは確かだが
378:デフォルトの名無しさん
06/06/11 21:09:27
>>370
valueOf はそうだけど、他は関係ないような気がするよ。
379:デフォルトの名無しさん
06/06/11 21:13:13
>>377
そのList<Map>構造の部分、今度はXMLになるかもね
また構造わかんねwwww
380:デフォルトの名無しさん
06/06/11 21:16:08
>>375
例えばMapでキーや値の型を仕様変更した場合に、
根っこの一箇所変えれば
コンパイルエラーがどこを直せばいいか教えてくれるのが楽。
ってのもある。
381:デフォルトの名無しさん
06/06/11 21:18:59
>>372
JVM統合って何?
382:デフォルトの名無しさん
06/06/11 21:23:26
-serverオプションが消えるとか
383:デフォルトの名無しさん
06/06/11 21:36:46
>>375
間違ってダウンキャストしなくて済むし
いちいちドキュメントにこの型にはこれ以外入れるなとか
書かなくて済む。
384:デフォルトの名無しさん
06/06/11 21:38:12
>>378
Enumの中に入れ子になっているオブジェクトの型が一致しなかったら
あれなのでequals()とか、hashCode()も重要
385:デフォルトの名無しさん
06/06/11 23:04:03
業務系のソフトウェアでは、Mapの中にMapが入っていて、しかもそのMapの要素は
Listが3つ、なんてざらにある。
で、そのListに何が入っているのかはドキュメント化されてないし、うっかりしてると
Mapを入れるべきところにListを入れてしまったり....と、orzになる機会は山ほどある。
genericsについていろいろ言われているようだけど、Collectionフレームワークの型
安全性を高めるという点について「イラネ」と言ってたヤツを俺はしらないな。
Goslingタンもそこをとても重視していたみたいだよ。ソースが見つからないがそんな
こと言ってた。
386:デフォルトの名無しさん
06/06/11 23:19:53
genericsいらないって言っていた馬鹿は探せばいるだろ。
どんな馬鹿でもいるもんだから。
そんな馬鹿が手のひらを返してgenerics便利だと言ったところで一体なんだというのだ?
387:デフォルトの名無しさん
06/06/11 23:21:55
しかし今頃この話題が出てきたということは6が出そうなこの時期に
やっと5.0つかった開発がスタートしはじめているということだろうか
388:デフォルトの名無しさん
06/06/11 23:24:02
>>386
何でもない
いや、それがこの話の結論のはずなんだが
それで納得できない暴れたい盛りのやんちゃ坊主がたくさんいてな・・・
前向きでない議論は無駄。
現行Genericsの不備点を挙げて、こうなればいいのに・・・とかいう話ならまだ広がるんだが・・・
389:デフォルトの名無しさん
06/06/11 23:31:53
>>387
そろそろドカティもJava5に入り始めるんじゃない?
390:デフォルトの名無しさん
06/06/12 00:03:01
>>389
・)ノシ
1.3で開発してるドカティが来ましたよ
こんな太古のアプリ改造するくらいなら新規で作れよそもそも設計からして腐ってんだからさぁとか言いながらコード書いてますよ
5で書きたいよぅ>>377が言ってる問題にぶちあたりまくりで元からバグバグなコードいじる度にビクビクしなきゃならんのは嫌だ
391:デフォルトの名無しさん
06/06/12 00:18:57
>>390
そういうなおいらは去年ようやく1.1から1.4へのUpgradeに成功した
2年ほど前に出した見積がようやく日の目を見たって所だ
392:デフォルトの名無しさん
06/06/12 00:26:07
保守的な奴らが居るとうんざりするときあるな
1.4.2で作ってるんだが、_??の部分までぴったり合わせるよう指定が来る
いやいや、それってバグフィクスのバージョンだろと突っ込みたくでも突っこめない
仮にバグっててもそれのお陰でうまく動いてるのを当てにするんだろうな
393:デフォルトの名無しさん
06/06/12 00:27:19
>>391
なんか生き残れるのか心配になるようなローペースさだな。
394:デフォルトの名無しさん
06/06/12 00:50:10
>>389
J2SE5.0使ったシステム2つうけてるけど、ついていける人とついていけない人がやはり現れますな
勉強し理解する人は5.0すごくよくなってるといい、勉強しないで分からないというだけの人は
なんでこんなバージョンにしたの?といってくる
知的労働者なんだからまったくついていけないようだったら首を切るのを勧めたほうがいいだろうね
そういうのはだいたいCOBOLメンテしてきてVBやってる人に多いかと思えばそんなことはなく
COBOLもしってCもやれてJavaもきっちりしってる人も割と多い
言語の得て不得手をしっかりと理解できているかどうかはが大事
逆にJavaやCでずっとWEBアプリ業務でやってきましたという人種でもかなり危険なやつらが多い
1メソッド数百行をスコープ範囲狭めることなく平気で書くのが特徴だから分かりやすいといえばそうなのだが
395:デフォルトの名無しさん
06/06/12 01:34:52
>>392
涙が出るほど共感を覚えるが、スレ違いではあるまいか
396:デフォルトの名無しさん
06/06/12 01:46:24
雑談スレだし、いいんでないの?
397:デフォルトの名無しさん
06/06/12 02:19:45
いったいいつから雑談スレに.....orz
398:デフォルトの名無しさん
06/06/12 03:55:55
_XXを気にするなんて、まともな所なら常識だろ。
_XX変えたらテストやり直し。保守的とかじゃなくてブロの常識。
399:デフォルトの名無しさん
06/06/12 04:23:10
まともなところとかまともじゃないところとかは関係ないと思うな。
常識かどうかも。
そこまでの信頼性が求められるかどうかだと思われ。
信頼性もとめるなら、まだJava2SE5.0は使えないんじゃないかな。
400:デフォルトの名無しさん
06/06/12 04:32:56
ただ、障害が出たときのサポートと、サポート期間考えると最新使わないわけにもいかない
5年単位の利用期間に対して、それ以前にSUNのサポートが切れるJVM使うのもできないし・・・
1.4.1のGCのバグで散々な目にあったよ・・・orz
しかし、Tigerはそろそろ使えるようになってると思うんだが・・・
Mustangが出るってのに2世代前しか信頼できないって状況はないんじゃない?
というか、信頼性なんて自分たちで確かめるもんだし。
401:デフォルトの名無しさん
06/06/12 05:56:32
ハイエンドのサポートはSunだけじゃないからな。
自分達で確かめれる程度の信頼性なら、自分達で確かめればいいと思う。
402:デフォルトの名無しさん
06/06/12 06:13:52
使う範囲で信頼できれば十分だからね。
403:デフォルトの名無しさん
06/06/12 10:58:35
>>398
それにかかるコストを誰が払っていると思っているんだ。
誰も払わなければやるだけ無駄でSunに踊らされているだけだろ。
ちょっとバージョンアップしたくらいでまたそのバージョンに
遭わせて無駄に過剰テストして無駄に管理を厳しくするのは
コストの無駄。テストの自動化もできない奴がそういうことをしたがる。
404:デフォルトの名無しさん
06/06/12 11:09:35
自分の常識が世の中全体の常識と思ってるヤツがいるな。
405:デフォルトの名無しさん
06/06/12 11:24:21
>>403
問題が出てからの対処で良いならその考え方もあるが
何でか知らないが開発会社に全てのコストを押し付ける顧客が多すぎるよな
やって欲しいならそれに見合う金を払えってんだ
406:デフォルトの名無しさん
06/06/12 12:30:30
>>403
おまいは、安かろう(品質)悪かろうのシステムしか経験がないのかも知らんが、
それを一般化するなよ。>>399の言う通り、どこまで品質が求められるかどうかがポイント。
自分の基準で過剰テストだの無駄だの、安物PGにしか見えないからあまり言わない方がいいよ。
だいたい、テスト自動化となんの関係があるんだか…。
407:デフォルトの名無しさん
06/06/12 13:19:56
>>406
ひとこと言わせて貰うと、お前は考え方が古い。
20年くらい前のCOBOLerが大好きながむしゃら管理手法で
やっている。
Java5でないとうごかない製品ももうすでにかなり出ている。
すでにJava5は実績としてはかなりのものだ。
408:デフォルトの名無しさん
06/06/12 13:39:06
もはや Generics の話題ですらないな。
説教したい/されたいならマ板でどーぞ。
409:デフォルトの名無しさん
06/06/12 13:45:06
おれはJavaSE5が使えんとは書いてないが…。
運用トラブルリスクはそっちのけで安価・短期が最優先という考え方もアリだろう。
だが、システムの必要品質を確保するのに、古いも新しいもない。全然理屈になってないよ。
そんな事言ってると、底辺PGとバレるから気を付けた方がいいぞ。
というか、テスト自動化されてんなら、テストやり直しに何でファビョってんの?
410:デフォルトの名無しさん
06/06/12 15:26:14
商用アプリサーバのSE5のサポートって
最近じゃない?
やっとベンダにとって、サポートコストがぺイするレベルに枯れてきたって事か。
411:デフォルトの名無しさん
06/06/12 15:34:32
どっちがファビョってるんだか。
たまにJavaすれにVBあがりのドトネト厨が
割り込んで来ることがあるけどそれ系の厨かなw
412:デフォルトの名無しさん
06/06/12 15:36:07
>>410
商用じゃなきゃ信用できない
なんていったらLinuxがアップデートされるたびに
過剰テストにものすごく無駄に時間をかける羽目になるんだが。
Java5の枝番号が変わっただけでその都度細かいテストするのも
まさに効率悪い。
413:デフォルトの名無しさん
06/06/12 16:19:10
全員スレタイ見直してくれ・・・頼む・・・orz
414:デフォルトの名無しさん
06/06/12 17:28:41
まあ、この手の素人PGが次世代Javaのバグ出しをしてくれて、
堅いシステムにも使える様にしてくれる、と言うことで。
415:デフォルトの名無しさん
06/06/12 18:04:05
素人PGがまともにBugParade登録出来るとも思えないけど。
Genericsの現実的な使いどころって、
コンテナ(ぽい)オブジェクトの中身の明示以外どんなのがある?
416:デフォルトの名無しさん
06/06/12 20:10:02
>>412
おまえ、ハイエンドの品質の厳しさわかってる?
417:デフォルトの名無しさん
06/06/12 20:10:44
>>413
次世代Java厨の動向
418:デフォルトの名無しさん
06/06/12 20:15:15
>>415
type safe enumだろ (以下ループ
419:デフォルトの名無しさん
06/06/12 20:38:31
>>415
Observer/Observableを型安全に使えるようにするとか。
残念ながらJava5のそれは、Generics対応になってないが。
あとは、コンテナと無関係ではないが、型に依存しないアルゴリズム
のライブラリ化とか。C++のtemplateみたいに、今までできなかったことが
できるわけじゃないので、今まで型安全にできなかったこと(Object型で代用して
いたこと)を型安全に行えるようにする、というのが主な使い道じゃないかなあ。
420:デフォルトの名無しさん
06/06/12 21:30:17
仮定のない品質など議論する意味はない。
>>419
俺もそう思う。
Objectを突っ込みまくっていた部分を見直して
綺麗なロジックが書きやすくなるという部分かな、と。
アスペクトとまでは行かないけれど、ロジックだけを切り出して
実装できるのも、何という機能というわけじゃないけど面白い。
言ってみれば、Map,ListなどGenericsの恩恵を直に受けたライブラリは
そのMap,Listという振る舞いを型に依存しないで実装できたいい例だったということだから。
421:デフォルトの名無しさん
06/06/12 23:09:20
で、ながれを戻そうとしてもなぜ現世代Javaの動向に戻るんだ?
次世代はどうした。
422:デフォルトの名無しさん
06/06/12 23:39:48
んじゃ次世代らいく・・・
お馬さんのJava2Dレンダリングどーなってるの?
Windows版はデフォはDirectXのまま?
あいかわらずほとんどの描画がアクセラレーションきかないの?
423:デフォルトの名無しさん
06/06/13 02:31:28
>>421
次世代Javaプログラマの動向
424:デフォルトの名無しさん
06/06/13 10:33:25
そもそもJavaプログラマの定義なんて曖昧。
煽ってる奴やJavaが嫌いな奴はJavaプログラマ=Javaしかできないプログラマと
脳内変換して話を進めたがるから話が当然噛み合わないわけだし。
実際に、Javaの仕事をするときにJavaしか知らないでは、まったく
仕事ができないものだが。
425:デフォルトの名無しさん
06/06/13 10:35:03
>>424
実際にJavaしか知らないって奴がいっぱい居るじゃん
まあそういう奴はJavaすら知らないって事が多いけど
426:デフォルトの名無しさん
06/06/13 11:04:30
だから
Javaしか知らない奴
という表現は論理的に矛盾していると
427:デフォルトの名無しさん
06/06/13 12:17:24
続きはマ板で。
本当に底辺野郎じゃなければ
もっと融通が利いているはず。
428:デフォルトの名無しさん
06/06/14 00:10:18
なんだが、Genericsを否定したい奴がいちゃもんつけてるようにしか見えないな。
彼の主張は「C++Templateはいらないと言ってい他奴がGenericsは欲しいと言いだした」
ということらしいがな。
彼の脳内ではC++Template == Generics
でないと気が済まないようだ。
429:デフォルトの名無しさん
06/06/14 00:34:43
もうGenericsは入ったんだから便利に使おうぜ。
それよか、久々にMustang案内入れるか・・・
Mustang b87
URLリンク(download.java.net)
URLリンク(www.java.net)
changeを見ると壊れてんのかな?と思うが新しいフィーチャーはない。
Java SE 6.0 Release 1 Developer Preview 3
URLリンク(connect.apple.com)
Appleも追従してDeveloperPreviewを出してきている
こちらはb82ベース
NewFeatureは
* Applet support (plug-in)
* Java Web Start
* Java SE 6 Java Preferences utility
PowerPCのJITはまだらしい。
430:デフォルトの名無しさん
06/06/14 01:12:23
>>429
> PowerPCのJITはまだらしい。
というかMacはもう…
431:デフォルトの名無しさん
06/06/14 10:30:43
えーと、CocoaにはJavaAPIの新規追加はもうない、って話かしら?
432:デフォルトの名無しさん
06/06/14 11:04:34
PowerPC終了でしょう?
433:デフォルトの名無しさん
06/06/14 12:31:07
>>428
どうしてもtemplate!=genericsにしたいようだが
parameterized typeという点ではどっちも同じ
仕組みが違うのはあたりまえ
434:デフォルトの名無しさん
06/06/14 12:37:43
Javaから見たらgenerics≒templateで良いじゃないか
435:デフォルトの名無しさん
06/06/14 13:04:04
>>433
いや、違いすぎるだろ。
C++ templateはかなり独特だから。
436:デフォルトの名無しさん
06/06/14 13:32:58
>>428 >>433 >>435
3人ともtemplate!=genericsと言ってるのに論争になるのワロス
437:デフォルトの名無しさん
06/06/14 13:49:42
ところで、>>1のマルチタスクの実現ってのはどうなったんだ?
既に実装済み?
438:デフォルトの名無しさん
06/06/14 14:26:33
>>436
template<genericsとtemplate>genericsとtemplate>>>genericsじゃ論争になるだろ
439:デフォルトの名無しさん
06/06/14 14:38:50
template<genericとtemplate> generics
と区切ってしまい、何のことかわからんくなってた。
440:デフォルトの名無しさん
06/06/14 15:55:59
それぞれどういう意図で発言しているかがつかみずらいが、
もし、templateとgenericsが実現の仕組みが**多少**違うくらい
で、同じようなものだと思っている人がいるとしたら、もうちょっと
(C++の)templateのことを勉強した方がいいと思った。実際、
templateとgenericsはある程度までは同じ目的で使えるが、
かなり違うセマンティクスを持っている。優劣をここで述べる
つもりは無いが、それだけは確かだ。
441:デフォルトの名無しさん
06/06/14 16:19:17
>>439
おまえまだgenericsに慣れてないな。
「genericsとtemplate」を扱えるtemplate<?>型のgenericsという変数を宣言しているのだよ。
442:デフォルトの名無しさん
06/06/14 17:00:18
お前ら、頼みがある。Genericsに関しては既に実装された機能だから、他のところでやってくれないか。
せっかく新ネタ持ってきてくれてる人がいるのに、いつまでも粘着しないでおくれ。
443:デフォルトの名無しさん
06/06/14 17:06:45
>>442
劣勢だな。
流れだし、いいんでねぇの?
444:デフォルトの名無しさん
06/06/14 17:22:21
>>443
マ板的なネタで盛り上がるぐらいなら閑散としてたほうがマシ。
445:デフォルトの名無しさん
06/06/14 17:39:26
そうかなぁ
446:デフォルトの名無しさん
06/06/14 18:25:45
>>438
templateクラスがgenericsとtemplate型をパラメータに持って
と思ったらなんだその文法わ
447:デフォルトの名無しさん
06/06/14 18:48:06
6のSwingはWindowsOSにも恩恵はありますか?
448:デフォルトの名無しさん
06/06/14 19:31:09
恩恵ってなんですか
449:デフォルトの名無しさん
06/06/14 19:36:55
トレイが使えるようになる。
Desktop#browse, mail, edit, open, printなどができた。
450:デフォルトの名無しさん
06/06/14 19:40:37
レンダリングに関しては別にって感じですか。
まあそれらの機能だけでも十分かもしれませんね。
451:デフォルトの名無しさん
06/06/14 20:06:43
>>449
全部 AWT の機能だけど。
452:デフォルトの名無しさん
06/06/14 21:00:43
Genericsとかの話用にスレ立てた。
何かすっきりしないと思ったんだよね。
現世代Javaの動向 1
スレリンク(tech板)
【JavaFive】C#からJ2SE5.xへ進化【TigerShot】
スレリンク(tech板)
はどうすんだって話はあるけど、ま、Mustangリリース後は、
ここがDolphinの話題になって、現世代にMustangが含まれる、でいいかと思って
453:デフォルトの名無しさん
06/06/14 21:13:48
>>447
フォントのAAがヒントに従ってかかるようになった。
5のswing.aatext=trueのように、UI Gothicにまでかかることはなく、tahomaなんかには
なにもしなくてもAAがかかる。
454:デフォルトの名無しさん
06/06/14 21:24:23
( ゚д゚)、AAだと!
455:デフォルトの名無しさん
06/06/14 21:28:53
>>453
ビットマップ情報使えるサイズの場合はアンチエイリアスかからないだけなんでは?
456:デフォルトの名無しさん
06/06/14 23:31:36
個人的にはAAはどうでもいいかな。
browseとトレイはありがたいね
457:デフォルトの名無しさん
06/06/15 11:50:22
>>452
スレ違いを文句いいながら、板違いのスレ建てるわけか。
458:デフォルトの名無しさん
06/06/15 14:13:46
無駄に重複してるだけに見えるがな
459:デフォルトの名無しさん
06/06/15 23:07:20
一時的なスレ違いのために、永続的な重複スレを建てるヤツ
460:デフォルトの名無しさん
06/06/16 10:08:20
たいてい重複スレのほうが長生きするんだよね。レスがないから。
461:デフォルトの名無しさん
06/06/17 00:01:52
Mustang beta2
URLリンク(java.sun.com)
Top 10 Things You Need to Know
1. Web Services
簡単にWebService書けるようになってな、アノテーションで簡単やねん
2. Scripting
PythonとかRubyとか使えるし、みんな使えよ
3. Database
JDKにApacheDerby入るで。@Query(sql="select * from user")とかのアノテーションでSQL埋め込めるし。
4. More Desktop APIs
沢山デスクトップ用改良入ったから期待しとけよ。
JTableとかソートとかフィルタとかできんねよ、すごいやろ?
5. Monitoring and Management
何も考えんでもモニタとかできるようになったで。
Jhatっちゅうヒープ分析ツールも入れといたさかいにあんじょう使うてや。
6. Compiler Access
JSPとかPHP作る人には便利になったやろうなぁ。うごいとる時にコードの
コンパイル動的してJavaCodeにできるんや。
7. Pluggable Annotations
アノテーション自分で付けれるようになってみんなニコニコだお( ^ω^)
8. Desktop Deployment
GUI綺麗に簡単になったで。まぁそれはそのゴニョゴニョや。
9. Security
XML署名とか入ったり、セキュリティの管理簡単になったの。
10. The -ilities: Quality, Compatibility, Stability
まぁ、なんや、みんな、これまで通りよろしゅうな
462:デフォルトの名無しさん
06/06/17 00:28:51
VMで動いてるんだからVMwareみたいにSuspend/Resumeできればいいのに
463:デフォルトの名無しさん
06/06/17 07:03:58
>JDKにApacheDerby入るで。
うわぁマジで?俺も使ってるけど標準はやりすぎだろ…
HSQLのが速いし組み込む目的ならこっち
464:デフォルトの名無しさん
06/06/17 07:20:30
HSQLDBは、通らないSQLが多いからなぁ。
まあ、IBMの政治力の勝利ってことでしょう。
DB2互換だし。
465:デフォルトの名無しさん
06/06/17 07:22:48
Apache Derbyじゃなくて「Java DB」が組み込まれるということになってるけどね。
NetBeans5.5のメニューが「Derby DB」から「Java DB」に変わったときから気になってた。
466:デフォルトの名無しさん
06/06/17 07:25:44
DerbyといえどSQL92に完全準拠してるわけではないよな
JVMのベンダー互換が崩れるきっかけになりそうでやだな
JDOQLだかに準拠させる規格でもあるのかな
467:デフォルトの名無しさん
06/06/17 08:09:14
JDOはもう死んでるでしょ。
それを言うならJPQL(旧EJB-QL)かな。
IBMの意図はわかるけど、Sunの意図がわからない。
468:デフォルトの名無しさん
06/06/17 10:05:42
PersistenceAPIのためだろ
469:デフォルトの名無しさん
06/06/17 10:44:55
OJB&Derbyで標準化して、実際使うときはHibernate&HSQLにするということだね
470:デフォルトの名無しさん
06/06/17 10:51:17
HSQLDBはスタンドアロン用だからな
まったくターゲットが違うしJDBCドライバサポートが1.0レベルだったようなきが
HSQLDBの後継のやつはシンプルさが失われてるらしいのがちと心配
スタンドアロンアプリで付属DBとしてならHSQLDBのほうが楽かと
Windowsの業務系スタンドアロンパッケージのほとんどがMSDE使ってるのと同じような感じで
あちらは将来MSSQL鯖にかえるのが目的にもなってるが
471:デフォルトの名無しさん
06/06/17 13:38:37
Mustang b88
URLリンク(download.java.net)
URLリンク(www.java.net)
MSVC 2005 Expressでのビルドエラーが解消されている。
只でビルド環境そろえられるって素晴らしい。
日本語ドキュメントのレビューがしたい方はこちら
URLリンク(jdk-api-ja.dev.java.net)
472:デフォルトの名無しさん
06/06/18 12:58:55
>>471
俺は、
> 6382711JComboBox incorrectly rendered with alternate WinXP theme
がうれしい。
473:デフォルトの名無しさん
06/06/18 20:27:38
>>461
> 1. Web Services
> 簡単にWebService書けるようになってな、アノテーションで簡単やねん
Java EE絡みのものがなぜかJava SEでできると?
> 3. Database
> JDKにApacheDerby入るで。@Query(sql="select * from user")とかのアノテーションでSQL埋め込めるし。
これは凄い。なんでHSQLDBじゃなかったんだろう。
機能性の高さからかな? 採用されたのは背後でIBMの関与でもあったのかな?
Appletからメモリ上にテーブルを作成してクエリ呼び出すようなことできるのかな?
> 9. Security
> XML署名とか入ったり、セキュリティの管理簡単になったの。
簡単になるのか。Javaのポリシーファイルはなんだかイマイチだったのか
嬉しいかも。
署名がXMLってどういうこと? genkeyで作るものはバイナリでは?
ポリシーファイルがXMLになるだけ?
474:デフォルトの名無しさん
06/06/18 20:28:51
>>466
> DerbyといえどSQL92に完全準拠してるわけではないよな
> JVMのベンダー互換が崩れるきっかけになりそうでやだな
そのうちSQL92互換になってゆくのではないかと。
SQL99互換になればいいんだけどねえ
475:デフォルトの名無しさん
06/06/18 20:43:02
Mustanggが出たとき、
HSQLDBを搭載しているJBossはどのような動きを
示すのか?
HSQLDBをJBossから外してゆくのかな?
476:デフォルトの名無しさん
06/06/18 20:46:49
BEAは面白くないだろうなJava6シリーズは。
477:デフォルトの名無しさん
06/06/18 21:04:14
>>473
XML署名ってRFC3075のことでしょ。
URLリンク(www.w3.org)
URLリンク(www.ietf.org)
この辺り、XMLで統一的に扱えるように。
URLリンク(www.w3.org)
URLリンク(www.w3.org)
URLリンク(www.w3.org)
URLリンク(www.w3.org)
478:デフォルトの名無しさん
06/06/19 00:58:30
>>473
SEでWEBサービスが、というのはクライアントの話だろ?
JDBCやRMI、クライアントのソケットと同じでは?
479:デフォルトの名無しさん
06/06/20 12:55:00
XMLパージングとJavaオブジェクトマッピングを、
アノテーションを使って簡単に。ってことみたいだな。
今時クライアントサイドでも色々やりたいしな。
480:デフォルトの名無しさん
06/07/02 18:41:14
Bata2 に ApacheDerby って入ってるの?
インストールしてみたけど、
どこにあってどう使うのかがわからん。
481:デフォルトの名無しさん
06/07/02 19:42:57
>>480
さぁ?アレ適当に訳したから。
原文は、
final Mustang development kit(JDKだね) will(だからまだかも) co-bundle....
ってなってるからまだ入ってないかもよ。
482:デフォルトの名無しさん
06/07/02 20:00:33
URLリンク(www.javalobby.org)
β2ってb84だったような・・・
483:デフォルトの名無しさん
06/07/02 22:15:01
URLリンク(journal.mycom.co.jp)
の辺りの記事では
Beta2 に入ってるっぽく書いてあるんだけど、
URLリンク(www.in-vitro.jp)
のように
%JAVA_HOME%/db
には入ってなかった
484:デフォルトの名無しさん
06/07/03 01:10:44
せっかくweekly buildされてんだから、β2にこだわらず、最新build使うってのがいーんじゃない?
485:デフォルトの名無しさん
06/07/03 02:50:44
b90 のインストールに失敗するんだよね
「変換するときにエラーが発生しました。
指定された変換のパスが有効であることを確認してください」とかいわれる。
jdk-6-rc-bin-b90-windows-i586-30_jun_2006.exe って奴を
3回落としてきてるんだけど、3回とも同じメッセージが出て駄目だった。
b89 だったらインストールできるんだけど。
486:デフォルトの名無しさん
06/07/03 03:10:10
>>485
漏れも出る。
インストーラのアイコンも変わってるし、
何か派手な事またしてんのかなーっと思って、b89入れ直しました
487:デフォルトの名無しさん
06/07/04 09:31:22
b90でRhino削除されてないか?
488:デフォルトの名無しさん
06/07/04 20:51:34
時給1000円でJava教えてくださるかたを募集します
場所 所沢(池袋・高田馬場から直通)
よろしくおねがいします
i-want-to-study-java@hotmail.co.jp
489:デフォルトの名無しさん
06/07/05 02:20:38
コンビニのバイトより安いですが、よろしくお願いします。
490:デフォルトの名無しさん
06/07/05 02:42:38
この時給って事は、その分、生徒が夏帆みたいな子なんだよな?
491:デフォルトの名無しさん
06/07/07 20:39:21
URLリンク(jdk-api-ja.dev.java.net) で
APIドキュメントの翻訳進行中
492:デフォルトの名無しさん
06/07/12 00:26:45
b90でコケて(?)以来、snapshotがとまったな。
493:デフォルトの名無しさん
06/07/12 02:29:38
>>492
いや、forumではannualだからビルドねーよ、とのこと
SUNWは7月から会計年度始まるからな
494:デフォルトの名無しさん
06/07/12 03:01:13
>>492
> There won't be a promoted build on July 6th because of 4th-of-July holidays. [July 3, 2006]
495:デフォルトの名無しさん
06/07/12 08:41:36
>>490
所沢に行くとチーマーに拉致監禁されて
出会い系サイト作らされてry
496:デフォルトの名無しさん
06/07/12 09:46:35
>>488-489
なんだその安すぎる時給は。なめとんのかゴルァ!
時給5000円以上じゃないと絶対に引き受けない。
497:デフォルトの名無しさん
06/07/12 10:12:48
>>496
毎回手作りケーキと紅茶が付くとしても?
498:デフォルトの名無しさん
06/07/12 10:14:23
>>497
だれの手作りかによる
まずは写真とプロフィール(略
499:デフォルトの名無しさん
06/07/12 10:37:40
>>497
割に合わんな。毎日同じもん食っても飽きる。
毎日中華丼やキムチ食わされたらさすがにキレる。
そんな子供だましなことに乗せられる騙される奴は餓鬼や新人や新卒くらい。
そんな給料で結婚子育て生活ができるとでも思っているのか!!!!!!!!!!!!
二人の子どもを大学院に行かせる金も用意できないだろがゴルァ!
授業料がいくらかかると思っているのか貴様!
ケーキが100円、紅茶が150円だとして、時給1000円
だとしても、
一日8時間勤務だとしたら、日給8250円相当にしかならない。
500:デフォルトの名無しさん
06/07/12 17:52:25
>>499より>>498に賛同する。
人間、夢を持てよ。
501:デフォルトの名無しさん
06/07/12 17:59:56
>>499
ケーキが欲しいんじゃない、人はケーキの向こう側に夢を見るんだよ
502:デフォルトの名無しさん
06/07/12 18:18:09
>>499
> ケーキが100円
「手作り」ということを忘れている。Priceless
503:デフォルトの名無しさん
06/07/12 18:27:45
そうか・・・・
>>499 は今が幸せなんだな・・・・
手作りケーキがタダのケーキとして扱える位に・・・ちくしょう・・・orz
こんな小さな幸せでも拾いたいのは不幸せということか・・・
504:デフォルトの名無しさん
06/07/12 18:35:16
小さなことを幸せに感じることができるのは幸せなことだと思うぞ。
505:デフォルトの名無しさん
06/07/15 11:51:22
うーん、jdk-6-rc-bin-b91-windows-i586-13_jul_2006.exe もインストール失敗する。
いろいろ弄って、
C:\Documents and Settings\username\Application Data\Sun\Java\jdk1.6.0\jdk1.6.0.msi
を使うと英語版のインストーラが起動して、インストールできるっぽい。
っても、無理やり動かしてるからちゃんとインストールできてるかちょっと不安だけど。
ちなみに、エラーメッセージ出た直後に OK 押してインストーラ終了させちゃうと、
ファイルが揃ってない事があった。そのまま OK 押さずに放置して
~\Application Data\Sun\Java\jdk1.6.0 に 12個 52M のファイルが
出来るのを待つのがコツっぽい。12個 52Mってのは b91 の場合ね。他は知らん。
b91 とか b90 とか普通に exe でインストールできてる人いるんだろうか?
506:デフォルトの名無しさん
06/07/15 23:11:22
>>500-502
相手が男だったら夢も潰れるよ。
それだったら高い給料から
差し引いて自分の金でケーキを買って食べるよ。
ついでに彼女にケーキをプレゼントする。
ケーキもらって喜ぶのは男より
女の子のほうだからな。
男はケーキより金のほうがいいに決まってる。
ケーキの上や中に不味いものや嫌いなものや
むさ苦しい男の手垢によって付着した黄色ブドウ球菌が
入っていたらそれだけで嫌な気分になるどころか
食中毒を起こして治療費負担が増大するからな。
それだったら自分でケーキを買った方がマシ。
>>497はせいぜい女を騙して働かせるんだな。
507:デフォルトの名無しさん
06/07/15 23:12:17
>>504
線香花火のように長続きしない幸せだ。
そんなことで幸せを感じるのは貧乏人や女だけ。
馬鹿な経営者に洗脳されて長時間労働させられて
幻覚を見ているだけだ。
508:デフォルトの名無しさん
06/07/15 23:44:57
幸せを感じる力は一種の才能
埋もれるほどの財を得ても他人を呪い明日の裏切りに怯える悲惨な人生もある
509:デフォルトの名無しさん
06/07/16 00:40:55
>>499=>>506は人格障害気味だな。
結婚子育てとか言ってるけど、無縁じゃないの?
510:デフォルトの名無しさん
06/07/16 12:28:52
>>508
カーネギーやナポレオンヒルやロックフェラーはそんなに悲惨かね。
堀江被告みたいなバカじゃあるまいし。
511:デフォルトの名無しさん
06/07/16 12:29:40
>>509
うーむ、そうやって人を見た目で判断しちゃ逝けないなー
512:デフォルトの名無しさん
06/07/16 14:13:59
>>506
何かいやな事があったんだな・・・強く生きていこうぜ・・・
で、俺もb90,b91のインストール状況は気になる。
b90で、
Eliminate installshield dependency for JDK offline msi installer
って言ってる変更が気になるんだよな・・・
513:デフォルトの名無しさん
06/07/16 18:44:24
会社で給与交渉や重労働のことで
都合が悪くなると昇給する代わりに
飯を奢って食わせてどうにか凌ぐ社長って奴じゃね?
半年に一回5000円の飯奢って貰うんだったら
昇給として月収5万アップして貰って自分の金で
伊勢海老なりフランス料理なり食った方がましってことだろう。
514:デフォルトの名無しさん
06/07/17 11:45:34
Rhinoの質問していいでしょうか。
JDK6にむけてRhinoの勉強をしているんですが、int値がかってにdouble値になって困ってます。
具体的には、int値をもつ変数に対して演算をすると、int + int => double になります。
import org.mozilla.javascript.*;
public class RhinoTest {
public static void main(String[] args) {
Context context = Context.enter();
Scriptable scope = context.initStandardObjects();
String code = "var x = 3;¥n"
+ "var y = 3 + 2;¥n"
+ "var z = x + 2;¥n"; // int + int が double になる
context.evaluateString(scope, code, "(filename)", 1, null);
String[] varnames = { "x", "y", "z" };
for (int i = 0; i < varnames.length; i++) {
String var = varnames[i];
Object value = scope.get(var, scope);
String cname = value.getClass().getName();
System.out.println(var + ": class=" + cname + ", value=" + value);
}
}
}
実行結果:
x: class=java.lang.Integer, value=3
y: class=java.lang.Integer, value=5
z: class=java.lang.Double, value=5.0 # ← doubleになってる
どなたか、解決方法を教えていただけないでしょうか。よろしくお願いします。
515:デフォルトの名無しさん
06/07/17 11:51:56
ECMAScriptの数値型って浮動小数点型しかないから、
むしろxとyがint型なのがおかしい気がする……
516:デフォルトの名無しさん
06/07/17 16:38:11
>>515
ありがとうございます。
>ECMAScriptの数値型って浮動小数点型しかないから、
そうなんですか。初めて知りました。
それだとすごく困りました。どうしよう。
517:デフォルトの名無しさん
06/07/17 17:25:42
Excelも浮動小数点しかないから誤差だしまくりだし
イコールでの数値判定は危険
だが、Excelは使われてる
もちろんそれが困る用途もあるが
要は用途による割り切りかたかと
518:デフォルトの名無しさん
06/07/17 20:15:34
>>517
誤差がどうとかではなくて、型が勝手に変わってしまうのを問題にしています。
JavaScriptを設定ファイルがわりに使おうと思ってたんですけど、型が勝手に変わるとなんぎします。
x = 1;
y = x + x;
で y が double になってしまうなんて。
for (i = 0; i < n; i++) {
...
}
で i がdoubleだなんて。
どうしたものやら。
519:デフォルトの名無しさん
06/07/17 20:55:17
時給1000円でJava教えてくださるかたを募集します
場所 所沢(池袋・高田馬場から直通)
よろしくおねがいします
i-want-to-study-java@hotmail.co.jp
教える対象は超初心者です。
専門学校などでJavaを勉強されていて夏休みだけ教えたいという方も歓迎です
520:デフォルトの名無しさん
06/07/17 21:12:37
==使わない限りDoubleでさほど問題ないのでは?
521:デフォルトの名無しさん
06/07/17 21:36:03
>JDK6にむけてRhinoの勉強をしているんですが
なんかRhinoがJava6から脱落したみたいなレスがどっかにあったような…。
522:デフォルトの名無しさん
06/07/17 21:40:01
>>519
夏帆クラスの女の子の手作りケーキは付くのか付かないのか、
それが問題だと(ry
523:デフォルトの名無しさん
06/07/17 21:45:18
>>521
>>487 ただし、b90インスコに失敗するので試せてない
524:デフォルトの名無しさん
06/07/17 22:04:31
b91 だと Rhino あるよ。rt.jar の中っぽいけど。
525:デフォルトの名無しさん
06/07/17 22:41:51
>>520
JavaScript側で設定した変数の値を、Java側にとってこようとしています。
そのため、JavaScript側でintを設定したつもりなのに、Java側に渡るとDoubleになっているのは困る訳です。
526:デフォルトの名無しさん
06/07/17 22:54:10
scriptでは常にDouble
精度速度保障のために値が変更されなければintのまま扱ってるだけだろうな
定数だけという感じで
だからJavaではDoubleをすべてvalueofで拾うのが正しそうだが
527:デフォルトの名無しさん
06/07/18 18:12:28
>>525
ウチで試したら、代入したときからDoubleみたい。
というか、何か呼び出し方が違うなぁ・・・・Binding使ってるから変換されてる?
この挙動から推察すると、JavaとのインターフェースではDoubleになるのが仕様なのでは?
/*ソースはインデントの為、半角→全角変換しています*/
package script;
import javax.script.*;
public class TypeTest {
public static void main(String[] args) {
try {
ScriptEngine se = new ScriptEngineManager().getEngineByName("js");
Bindings bdg = se.createBindings();
bdg.put("x", null);
se.setBindings(bdg, ScriptContext.ENGINE_SCOPE);
Object res;
res = se.eval("var x = 1;");
System.out.println("JS Binding:"
+ bdg.get("x").getClass().getName() + ":"
+ bdg.get("x"));
} catch (ScriptException e) {
e.printStackTrace();
}
}
}
結果:
JS Binding:java.lang.Double:1.0
528:デフォルトの名無しさん
06/07/21 17:58:47
b90以降インストール出来ない件は
やはりバグでした。b94でfix予定。
URLリンク(bugs.sun.com)
回避策は、
jdk*.exe /lang=1033
としてインストーラを起動。
英語版として起動させるという手段らしいです。
529:デフォルトの名無しさん
06/07/22 23:13:33
Java5のGenericsなクラス、Genericsによって
型指定されたクラス(たとえばList<String>とか)を
クラス図で記述できるUMLモデリングツールがほしい。
Jude3.0では対応していなかった。
530:デフォルトの名無しさん
06/07/23 12:58:22
Judeはいまだに5.0未対応か
1.4系のSystemLAFはぜんぜん似てないからちとな
531:デフォルトの名無しさん
06/08/08 09:03:43
>>528
b94の変更点一覧によると、インストーラの不具合は予定通り修正されたようだな。
532:デフォルトの名無しさん
06/08/09 02:17:11
>>531
いっぺん、アンインストールのときにエラーがでるかもしれんけど
気にせず2回目実行すれば大丈夫だな
533:デフォルトの名無しさん
06/08/09 19:38:40
そーいや、7月に Dolphin プロジェクト始まるとか言ってなかったっけ?
534:デフォルトの名無しさん
06/08/16 16:38:37
>>533
チェックしたら7/21にビルド始まってた
URLリンク(download.java.net)
ビルドサイクルは、まだ確立されてなさげだけど
535:デフォルトの名無しさん
06/08/16 16:47:24
>>534
追記:
ベースになってるのがb90-b93らしいので
>>528 の回避策を使わないとインストールできませんので。
536:デフォルトの名無しさん
06/08/20 17:29:10
Javaは引数の参照渡しができない
とんでもない駄作
537:デフォルトの名無しさん
06/08/20 17:35:07
536は引数の参照渡しができないとスワップもできない駄プログラマ
538:デフォルトの名無しさん
06/08/20 17:49:09
Javaは参照の値渡しをしているだけだ。
参照そのものは渡せない。だからライブラリが作りやすいのに。
539:デフォルトの名無しさん
06/08/20 19:12:00
> 536
問題なし。
void hoge(int[] a){
a[0]=a[0] * 2;
}
void main(){
int[] lap = {2}
hoge(lap);
int v = lap[0];
System.out.println(v);
}
540:デフォルトの名無しさん
06/08/21 14:08:50
C言語風だな。
541:デフォルトの名無しさん
06/08/21 14:59:40
>>539
Arrayでラップか、でもその場合つづりはwrapじゃないか?
542:デフォルトの名無しさん
06/08/21 15:06:53
>>522
STARDUST OFFICIAL SITE
URLリンク(www.stardust.co.jp)
こんな子がでたらそりゃどきどきするわな。
ただし時給1000円だと、こんなかわいい女の子と仲良くなった途端
仕事辞めちゃうもんだなw
543:デフォルトの名無しさん
06/08/21 18:51:32
>>542
こんなかわいい女の子がプログラミングに興味持つのだろうか?
周りを見回すと、数少ない女はみんな…ry
誰かかわいい女の子がいる職場知ってる?
544:デフォルトの名無しさん
06/08/21 19:04:01
可愛いってのはそれだけで才能だからな。それを活かせるのは
プログラムするところじゃないだろう。本人が好きなら分らんけど、
そうなる可能性は奇跡のように小さいだろうね。
545:デフォルトの名無しさん
06/08/21 22:03:24
peter ahe のブログみてたら クロージャの文法っぽいpdf が落ちてた。
URLリンク(blogs.sun.com)
クロージャ変換というのが提案されてて、
java.lang.Runnable みたいに 1つしかメソッドを持たない interface と
同じシグニチャを持つ クロージャは変換可能になるみたい。
(void() 型のクロージャは Runnable にも変換できるらしい?)
ただこれ、java.uril.concurrent.Executor executor = ...;
execurot.execute( (){ System.out.println("test"); } ); は
コンパイラが暗黙に Runnable の匿名クラス作ればOKっぽいけど
例えば Runnable と似たようなインターフェイス
interface MyInterface{ void method(); } があったときに
void() closure = (){ System.out.println("test");
Runnable r = closure;
MyInterface m = closure;
とかされた時どーすんのかな? とか思った。
あと、null が正式に型に昇格する事も検討されてるらしい。
null.class とかできるようになるとか?
546:デフォルトの名無しさん
06/08/21 22:30:15
nullがクラスになったらどういう事が出来るようになるの?
547:デフォルトの名無しさん
06/08/21 22:47:37
reflection とか型推論とか通常は値を返さない関数のように動くクロージャに必要って書いてあるけど、
よくわからん。
548:デフォルトの名無しさん
06/08/21 23:04:29
あ、判った。匿名クロージャは引数型は必要だけど戻り値型を書かなくていいらしい。
で匿名クロージャで return 文を書かずに、その匿名クロージャが中途完了する場合
(必ず例外投げる場合とか?)は戻り値型が null になるって事らしい。
正常完了する場合とか、引数無しの return がある場合は戻り値型 が void になるって書いてあった。
549:デフォルトの名無しさん
06/08/21 23:08:15
それって、戻り値が「必ず」nullになるんなら、nullじゃなくてvoidにしたらなんで駄目なんだろうか。
550:デフォルトの名無しさん
06/08/21 23:14:42
戻り値が必ず null になる場合に void にしたら拙いじゃん。
Object closure() ってのがあって、
そのつもりで (){ return null; } って匿名クロージャ書いて
戻り値型を void にされたら適わん。
551:デフォルトの名無しさん
06/08/21 23:16:05
あれ?
nullが型になるってことは、そういう場合は
Null closure()
って書かないといけないってことなのかと思ったんだけど。
552:デフォルトの名無しさん
06/08/21 23:20:07
よーするに、中途完了する匿名クロージャは、
値を返すクロージャと型の互換性が無いと拙いって事では無いかと。
値を返すメソッドを持った interface を書いて、
実際には必ず例外投げる匿名クラスを作りたいとする。
匿名クラスの場合は戻り値型があるから良いけど、
匿名クロージャは明示的に戻り値型を書けないっぽいので。
戻り値型を null にしておけば、どんな戻り値型のクロージャとも
互換性ができるのでは無いかと思う。たぶん。
仮にそーだとすると、null は void の上位クラスって感じになるのかな?
553:デフォルトの名無しさん
06/08/21 23:25:47
void の上位クラスっつーか、null は void と Object の上位クラスって感じか……
554:デフォルトの名無しさん
06/08/21 23:38:53
>>545には、そんな難しい事書いてない。
値nullが存在する限り、値nullには型が必要ってだけ。
closureの文法では陽に書く場合があるので、これを機会に導入。
もともと型推論的には必要だったもの。
555:デフォルトの名無しさん
06/08/22 03:54:04
>>553
その辺はSubtypingのところに書いてあるな。
> A function type T is a subtype of function type U iff all of the following hold:
> ・Either
> ・The return type of T is either the same as the return type of U or
> ・Both return types are reference types and the return type of T is a subtype of the return type of
U, or
> ・the return type of U is void.
(以下、引数型や例外に関しての条件が続く)
以下の条件の全てをみたすなら関数型Tは関数型Uの下位型である。
・以下の何れか
・Tの戻り型がUの戻り型と同じ
・二つの戻り型が共に参照型であり、Tの戻り型がUの戻り型の下位型である
・Uの戻り型がvoidである
(以下、引数型や例外に関しての条件が続く)
556:デフォルトの名無しさん
06/08/22 04:20:12
Referencing names from the enclosing scope のところ見ると、
匿名クラスの時みたいに final 付けろって書いてあるね。
557:デフォルトの名無しさん
06/08/22 12:30:17
>>556
逆、逆。
匿名クラスのように、finalを*付けなくていい*と書いてある
テキトーに訳してみると
>> We do not propose a rule that requires referenced variables be final,
>> as is currently required for anonymous class instances.
現在、匿名クラスのインスタンスに対して要求されているような、参照される
変数がfinalでなければならないという制約は提案しない
>> The constraint on anonymous class instances is also relaxed to allow
>> them to reference any local variable in scope.
また、匿名クラスに対する制約も緩和され、スコープ内のどんなローカル変数も
参照できるようになる
558:デフォルトの名無しさん
06/08/22 12:35:56
>>545
> 例えば Runnable と似たようなインターフェイス
> interface MyInterface{ void method(); } があったときに
> void() closure = (){ System.out.println("test");
> Runnable r = closure;
> MyInterface m = closure;
> とかされた時どーすんのかな? とか思った。
closureをラップするクラスをそれぞれの代入に対して、自動生成すればいいんでない?
Runnable r = new Runnable_closure_bridge(closure);
MyInterface m = new MyInterface_closure_bridge(closure);
みたいな感じで
559:デフォルトの名無しさん
06/08/22 19:35:52
>>557
あ、本当だ。嘘ついてすまん。
このスレの >>12 とかでも話題になってる変数の扱いとか、
どーなるんだろね? 後は VM に変更なしで実装できるんか?とか。
560:デフォルトの名無しさん
06/08/22 21:36:40
>>559
基本的には、ほとんどの機能はVMに変更なしで、コンパイラのみで
実装できると思う(ただし、クラスファイルフォーマットの変更は必要か?)
ただ、クロージャの中からそれを囲む関数をreturnする機能
(Non-local transferの部分)はVM変更なしでやるのはつらそう
簡単に実装するには、例外を使えばいいだろうけど、それだと性能出ないだろうし
561:デフォルトの名無しさん
06/08/22 21:38:12
>>560
自己レス
> クロージャの中からそれを囲む関数をreturnする機能
クロージャの中からそれを囲む関数の外側へreturnする機能、の間違いだ
562:デフォルトの名無しさん
06/08/22 22:11:08
Non-local transferは、p.5-6に記述がある。
その中でも>>560が心配しているケースはUnmatchedNonlocalTranser例外になる。
563:デフォルトの名無しさん
06/08/23 17:50:22
URLリンク(journal.mycom.co.jp)
Javaにクロージャだって。
564:デフォルトの名無しさん
06/08/23 17:57:58
上を見てみろ
565:デフォルトの名無しさん
06/08/23 18:05:27
('A`)
566:デフォルトの名無しさん
06/08/23 18:49:28
苦労じゃ
567:デフォルトの名無しさん
06/08/23 19:07:55
くだらん
568:デフォルトの名無しさん
06/08/23 19:49:51
で、結局このクロージャ内からローカル変数は参照できるの?
それとも引数渡し?
569:デフォルトの名無しさん
06/08/23 22:18:36
馬も出てないのになぜjdk7の仕様を気にするのか・・
570:569
06/08/23 22:23:10
あ、ごめんここ次世代スレだった
スレ間違った
571:デフォルトの名無しさん
06/08/23 22:29:11
ん?なんでスレ違い?Java6はもうすぐ出るしここでもいいような・・・
572:デフォルトの名無しさん
06/08/24 00:48:51
Java6は、メンテナンスリリース色が高いからな。
今後も、偶数バージョンは小変更、奇数バージョンは大変更という感じになるみたい
573:デフォルトの名無しさん
06/08/24 01:01:50
だが、あいかわらず5.0update8でエンバグとかやらかしてるからなんとも・・・
Java2DのOpenGLがWin環境でもちゃんと動作するようになってるかが見もの
574:デフォルトの名無しさん
06/08/24 17:32:21
Java7でクロージャの導入か。
いまいちクロージャって理解できていないのだが、
「外側のメソッドのローカル変数にfinal がついていなくてもアクセス可能な匿名クラス」
が仮に認められたら、これはクロージャ?
575:デフォルトの名無しさん
06/08/24 20:48:36
>>574
ちょっと違うとおもう。
それよりもマルチスレッド下でローカル変数束縛するとスタック上の実体をコピーで解決するつもりだったらアウトだし
ローカル環境を生かしておくとGCでメモリ断片化激しくなりそうとか厭な考えがよぎっちゃうんだけど、どういう風にするつもりなんだろう?
HotSpotがSelf由来だと考えればなにか考慮されているのだろうけど、関連論文とか乗っかっている書き込みとか見かけた人いる?
576:デフォルトの名無しさん
06/08/24 21:00:11
スコープを変数化するのがクロージャって感じかな。
ECMAScript触ってると特にそう思う。
577:デフォルトの名無しさん
06/08/24 21:03:03
クロージャからのローカル変数のアクセスは暗黙的に排他すんじゃないの?
それよりスレッドにクロージャを渡すような使い方は俺はしたくねーな
578:デフォルトの名無しさん
06/08/24 21:19:25
スタックを保存してヒープにもってくとかそんな感じ?よーわからんなぁ。
スクリプトだとthisの扱いがいつでもmixinって感じで使いにくいから
クロージャ使わないとデリゲートにならないんだよな
579:デフォルトの名無しさん
06/08/24 21:52:28
文書読んでみたが、並行性については特に何もやる気ないみたいだね
必要なら今まで同様プログラマが対処しろって感じ
580:デフォルトの名無しさん
06/08/24 22:47:06
Java in the BoxさんとこにJava 6では
「Server VM と Client VM の動的な変更」がサポートされるとあるんだけど
これってSwingとかで文字列置換メソッドは
Server VMでJITコンパイルできるとかそんなん?
581:デフォルトの名無しさん
06/08/24 23:46:44
クロージャはifやforの{}が引数と戻り値持った感じだと思う
>>577
Rubyやってると割と普通な気がするんだが、どの辺がいやなの?
582:デフォルトの名無しさん
06/08/25 00:13:18
匿名クラスでコンストラクタ定義できればそれだけでいいんだけどな。
583:デフォルトの名無しさん
06/08/25 00:23:38
そんなことより、Genericsの仕様、
さらなる変化は無いのか?
パラメタライズドクラスを作るのが大変なんだが。
タイプセーフなため、配列と違って、List<Integer>はList<Number>のサブクラスにはできんし。
<>の中にさらに<>を入れ子に書いてとクラス設計が難しい。
パラメタライズされたクラスの継承でのパラメータの扱いといい、
慣れるのが大変。
584:デフォルトの名無しさん
06/08/25 01:32:15
解ってないんだけど、ローカル変数ってもともとスレッド毎でしょ?
マルチスレッドで、何の問題があるの?
スコープ抜けたときにスタックからヒープにコピーすればいいだけじゃん?
585:デフォルトの名無しさん
06/08/25 03:48:23
クロージャってC++にも追加されるんでしょ?
流行ってるね
586:デフォルトの名無しさん
06/08/25 06:38:13
>>584
そのスレッドで、Runnableなオブジェクトを作って
クロージャを引き渡したらどうなると思う?
そういうこと。
また、今のListener系のような使い方をした場合、
マルチスレッドになるのは目に見えてる。
ただ、先の文書ではそこらへんは保証しないみたい。
主張を読むと、そういう場合は、今まで通り匿名クラスを使うか、
Javaで既に用意されてる並行性の仕組みを使えってこと。
なぜなら、そんなのを必要としない大多数の開発者には
パフォーマンスが落ちるだけで有り難迷惑だから。
587:デフォルトの名無しさん
06/08/25 06:47:06
>>583
つワイルドカード
List<Integer> ints = new ArrayList<Integer>();
...
List<? extends Number> nums = ints; //OK
588:デフォルトの名無しさん
06/08/25 10:19:17
>>587
List<T extends Number> nums = ints;
はだめなのか
589:デフォルトの名無しさん
06/08/25 10:25:11
>>588
public <T> void aMethod() {
List<T extends Number> nums;
//
}
とかならTが型パラメータと分かるので可能だが、そうでなく唐突に
Tが出ても未定義シンボルになる。
590:デフォルトの名無しさん
06/08/25 10:26:20
と思ったら出来なかったorz
591:デフォルトの名無しさん
06/08/25 10:45:45
>>582
いや、普通にできるが。
592:デフォルトの名無しさん
06/08/25 21:40:02
インスタンスイニシャライザではダメなんですたぶん
593:デフォルトの名無しさん
06/08/25 21:52:34
>>589
うーむ。Tの定義ってメソッドの頭かクラス宣言の後だったんだね。
継承使うとき、どうりで変だと思った
class A<T> implements SuperA {}
という表記はうまくいっても
class A implements SuperA<T> {}
はうまくいかず未定義といわれる。
当然、
class A implements SuperA<T extends Number> {
は怒られる
class A implements SuperA<?> {
も怒られる。
594:デフォルトの名無しさん
06/08/25 23:08:22
変なのはおまいの頭だと思うよ…
595:デフォルトの名無しさん
06/08/25 23:21:55
いきなりむかつくこといいやがったなおめえ。
確かにgenericsにはまだまだ慣れていないが、
情報が少なすぎていつもGenericsで悪戦苦闘して
こっちは大変なんだよ。
しかし、Genericsでパラメタライズされたクラスを
作ってる奴は少ないんだな。
2chでも稀なほうか。
C++Templateとは似てるようで違うためか、
使いこなせない奴も多いもんだな。
596:デフォルトの名無しさん
06/08/25 23:34:05
>>595
情報とか言う以前に仕様書を読めよ。
あと
class A implements SuperA<T> {}
なんか A を使うときにどうやって T が型パラメタか
普通のクラスか見分けるんだよ。少なくとも
class A<T> implements SuperA<T> {}
とやらないとパラメタ指定できないだろ。
597:しろうと
06/08/25 23:59:55
ちょっと質問なんですが、クロージャが実現できると、何がウレシイのでしょうか?
実行時評価するわけじゃなくて匿名インナークラスのSyntaxSugar+α程度のもの
でしかないのなら、別にどっちでもいいんじゃねえのとおもうんだが。
ここのところ、大々的に言語仕様かえるといっといて、結局やってることは
プリコンパイラにどっちでもいいだろという機能を追加してる程度のケース
が多いようなのだけど、どういう圧力からそういう結論になるのでしょうか。
後方互換を保つために妙な妥協して、あるべき論と掛け離れた中途半端な仕様
を差し込むくらいなら、何もしないほうがいいと思うのは私だけデスカ?
598:しろうと
06/08/26 00:09:24
>>595
別に無理に使わなくても、ちょっと頑張れば同じことができてたから
じゃないの。
おいらの場合、コードがコンパイラ依存になるのが嫌なので、当分セ
コセコデリゲートクラスとか自作して頑張ってくつもりです。
599:デフォルトの名無しさん
06/08/26 00:15:01
関数型のメリットは多いよ
・delegateの実装が楽(クロージャ)
・スクリプトフレームワークの拡張がしやすくなる
・継承では補いきれない差分プログラミングが可能(保守性向上)
600:デフォルトの名無しさん
06/08/26 00:17:08
>>597
> どういう圧力からそういう結論になるのでしょうか
VMにでかい機能を追加すると遅くなるだろ。
しかしGenericsの仕様はいくらなんでもあれだが。
601:デフォルトの名無しさん
06/08/26 00:20:42
>>598
Javaは私企業のプロダクトだから結局C#対抗な訳よ
マイクロソフトに負けたくないっていうSunの言語オタの意地とオナニー
602:デフォルトの名無しさん
06/08/26 00:22:15
.classみたいな感じで.methodってできるようになったら良くない?
ってとっくに議論され、破棄されたんだろうが。。。
いまでもリフレクションでできるけど面倒なんだよね。
メソッドにアノテーションつけた時に参照するのも
obj.getClass().getMethod("method1").getAnnotation(anno);
とかだぜ。タイプセーフの意味がない。
これが
method1.method.getAnnotation(anno);
となりすっきり。。。
603:しろうと
06/08/26 00:24:17
>>601
Javaもめでたくオプソになるらしいし、そのうちC#コンパイラとか
出るんでねえのかなとか思う毎日。…って、APIのサポートがむずいかな。
604:デフォルトの名無しさん
06/08/26 00:26:39
ECMA標準のC#なら余裕だろ
SUNもJava VMを.NET化させるつもりだし
605:デフォルトの名無しさん
06/08/26 00:29:14
Sunっていつも後手後手だよね
606:デフォルトの名無しさん
06/08/26 00:30:09
夏休みもそろそろ終わりなのになぁ。。。
607:デフォルトの名無しさん
06/08/26 00:32:42
>>605 ???
夏だな
608:デフォルトの名無しさん
06/08/26 00:36:37
もうJavaもおわりだなと感じる今日この頃
609:デフォルトの名無しさん
06/08/26 00:37:49
JavaOneの聴講者数は年々増加の一途なのだが
610:デフォルトの名無しさん
06/08/26 00:38:56
>>608
そう思われる様になってからが華
611:デフォルトの名無しさん
06/08/26 00:40:26
>>609
それに比例して、馬鹿がますます増えてきたな。
612:デフォルトの名無しさん
06/08/26 00:41:08
Java人口の増加と先進性は反比例
613:デフォルトの名無しさん
06/08/26 00:42:48
>>602
Hoge.classがClass.forName("Hoge")の言語糖衣だと知った時はショックでした。
614:デフォルトの名無しさん
06/08/26 00:47:55
>>597の感想はもっともだよな
後方互換を気にしながらC#の後追いしてるくらいなら
新たな言語環境を提案してくれないかな
もっともSunにもIBMにも無理そうだな
615:デフォルトの名無しさん
06/08/26 00:49:30
>>613
ちがくないか?
Class<Hoge> c = Hoge.class;
と
Class<?> c = Class.forName("Hoge");
でしょ?オレが間違って覚えてるのか。。。?
616:デフォルトの名無しさん
06/08/26 00:49:58
> 新たな言語環境を提案してくれないかな
100%ぽしゃるから。今の時代はライブラリ>言語仕様
617:デフォルトの名無しさん
06/08/26 00:58:11
>>615
日本語は間違って覚えてるね。
618:デフォルトの名無しさん
06/08/26 01:00:31
>>615
でそのGenericsも糖衣な訳だが
619:デフォルトの名無しさん
06/08/26 01:02:44
Javaの欠点はGUIライブラリの貧弱さ
620:デフォルトの名無しさん
06/08/26 01:04:00
>>619
Swingの実装感は.NETのライブラリとたいして変わらんと思うが。
問題は性能なのか?
621:デフォルトの名無しさん
06/08/26 01:06:06
>>618
そういえばそうか
でも.classリテラルはforName()とは使用場面が異なると思うんだが
それでも糖衣っていうのか。
622:デフォルトの名無しさん
06/08/26 01:08:42
>>621
Hoge.classはコンパイラ通すとClass.forName("Hoge")に
コンパイルされるってこったよ。
623:デフォルトの名無しさん
06/08/26 01:11:59
>>620
クライアントアプリを作るにはまだまだ
たとえるならXToolkitレベル
標準のFontChooserとかGridControllerとかなんで出てこないんだろ
624:デフォルトの名無しさん
06/08/26 01:13:48
>>623
目指すはVBなわけですな…かくてまた馬鹿が増えるのかorz