次世代Javaの動向 2
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/05/18(木) 01:03:42前スレ
【Java】次世代Java・J2SE1.6の動向【Mustang】
http://pc8.2ch.net/test/read.cgi/tech/1081698555/
関連スレ
【JavaFive】C#からJ2SE5.xへ進化【TigerShot】
http://pc8.2ch.net/test/read.cgi/tech/1094891986/
http://www.itmedia.co.jp/news/articles/0404/07/news018.html
マルチタスク実現へJava言語改良
Sun幹部によると、2005年に一般リリース予定の「J2SE 1.6」には、
Javaバーチャルマシン(JVM)のアプリケーション共有を強化する「分離」機能が備わり、
ローカライズコンピューティング処理実行のための分離が可能になるという。
米Sun Microsystemsは、Javaバーチャルマシン(JVM)内部での
アプリケーションマルチタスク実現に向けてJava言語の改良に取り組んでいる。
カリフォルニア州サンノゼで開催のClusterWorld Conference & Expoで4月6日、同社幹部が明らかにした。
SunのJavaアーキテクト、ムラリ・カウンディンヤ氏によると、
今秋β版が登場し、2005年に一般リリース予定の「J2SE 1.6」には、
JVMのアプリケーション共有を強化する「分離」機能が備わる。
この機能によってローカライズコンピューティング処理実行のための分離が
可能になり、第2のJVMを要求することなくJVM内部でマルチタスクが行えるようになるという。
またJ2SE 1.6では、Javaプログラム間の高速通信を可能にする
Sockets Direct Protocolのサポートが計画されている。カウンディンヤ氏によると、
J2SEに施された改良は、その後間もなくJ2EEにも組み込まれる予定。
0002デフォルトの名無しさん
2006/05/18(木) 01:05:40以下のスレは、埋まったら今度はこのスレを本スレとしませんか?
【JavaFive】C#からJ2SE5.xへ進化【TigerShot】
http://pc8.2ch.net/test/read.cgi/tech/1094891986/
0003デフォルトの名無しさん
2006/05/18(木) 01:10:170004デフォルトの名無しさん
2006/05/18(木) 01:15:46マ板とは区別できるだろうと期待したい。
馬鹿には馬鹿しか集まらないが、
知的な議論が交わされれば
オッサン共はこちらを荒らすことは無いだろう。
もしこっちがあれたらム板のC言語やC++スレ、C#スレまで
荒れることになる恐れがあるので。
0005デフォルトの名無しさん
2006/05/18(木) 03:23:27Tiger JDK5.0
ttp://java.sun.com/j2se/1.5.0/ja/docs/ja/index.html
言わずもがな、リリース最新バージョン
Mustang JDK6.0
ttp://java.sun.com/javase/6/docs/index.html [beta]
ttps://mustang.dev.java.net/ [weekly binary snapshot]
ttp://java.sun.com/javase/webnotes/6/version-6.html [Version6 or 1.6?]
おお、JavaOne期間でロゴ変わってる
Dolphin JDK7
ttps://dolphin.dev.java.net/
まだ、できてない、2006年春スタート予定だったはず。
>>1 の話ってちょいと昔のかなぁ、と思いつつ・・・
BercelonaプロジェクトのMVMの話、どうなってんだろ、と思い出した
つ ttp://research.sun.com/projects/barcelona/mvm/
まだまだ研究レベルで、実際はDolphinで載ればいい方かな、と思ってんだけど。
Dolphinは、言語スペックに大幅改修入るみたいだし、なんとか一緒に入るのかな?
実現されればWebサーバ側で、JVMがデーモンのように上がってる、なんて事になったりして・・・
0006デフォルトの名無しさん
2006/05/18(木) 19:22:03Dolphinは2008年半ばだそうな。
0007デフォルトの名無しさん
2006/05/18(木) 19:41:51Windows版だけ、6月無理とか、制限あったりとかしそうな悪寒。
0008デフォルトの名無しさん
2006/05/18(木) 20:02:090009デフォルトの名無しさん
2006/05/18(木) 20:03:170010デフォルトの名無しさん
2006/05/18(木) 20:17:37現状、Vista公開β候補版でボロボロなので。
0011デフォルトの名無しさん
2006/05/18(木) 22:17:28>Mustangの次のバージョンのJava SEはDolphin(Java SE 7)である。DolphinではJavaプ
>ラットフォームがエコシステムへと発展する方向での拡張を目指すという。具体的にど
>のような拡張が行われるのかは現在議論が重ねられている最中だが、現時点では次
>のような新機能の追加が発表されている。
>
>プロパティのサポート
>メソッドリファレンスのレポート
>クロージャのサポート
>言語レベルでのXMLのサポート
>JVM上で動作する動的言語のサポート
>スクリプト言語サポートの拡張
>モジュール化のサポート
>Swingアプリケーション開発のためのツールの充実
Dolphinってこんなに変わるのかよ。プロパティ・サポートとかクロージャのサポートって、
かなり大きな変更のように思うが...
0012デフォルトの名無しさん
2006/05/18(木) 23:47:51なるんだろうな。
ttp://d.hatena.ne.jp/akiramei/20060503/p2
VM自体がクラス前提になっているから、猛烈にクソなものが平気で
出てくる。
0013デフォルトの名無しさん
2006/05/19(金) 00:00:07なんでいきなり言い切ってるんだろうか....
C#がクソな実装したからってJavaがそうなるとは限らんだろうに。
実際、いままでJavaの実装で、このC#のようなクソな実装ってあったか?
おれはもしJavaで同じことやったら、実行速度上のデメリットがあっても、
ソースコードとの一致を取って、ループの度に匿名インスタンス生成を
選択するんじゃないかと思う。
それがMS一社で決めてるC#と、コミュニティで決めてるJavaの違いじゃ
ないかと。
0014デフォルトの名無しさん
2006/05/19(金) 00:27:05Genericsみたいにもめても、何とかなるんじゃない?
0015デフォルトの名無しさん
2006/05/19(金) 01:49:07Generics
0016デフォルトの名無しさん
2006/05/19(金) 01:53:580017デフォルトの名無しさん
2006/05/19(金) 01:56:46イレイジャのこと言ってるんだけど、妥当な妥協ポイントだと思うよ。
おかげでcommonsとかそのまま使えてるわけで。
0018デフォルトの名無しさん
2006/05/19(金) 03:37:39この新機能ってJSRで言うとどれなのかリストあるのかね?
0019(・∀・)キタコレ!!
2006/05/19(金) 12:01:51http://japan.cnet.com/news/ent/story/0,2000056022,20114107,00.htm
0020デフォルトの名無しさん
2006/05/19(金) 12:19:320021デフォルトの名無しさん
2006/05/19(金) 13:21:220022デフォルトの名無しさん
2006/05/19(金) 17:31:280023デフォルトの名無しさん
2006/05/19(金) 17:34:01会場盛り上がったよ
>>21
明日出てくるよ
0024デフォルトの名無しさん
2006/05/19(金) 20:21:37---今,JavaVMにどんな機能が求められているのか
環境の変化に対応しなければならない。それは「サーバー仮想化」という動きだ。
VMwareやXenなどのHypervisor技術に基づいた仮想化ソフトを利用するケースが増えている。
一つのハードウエア上で多くのアプリケーションを動作させることになるが,
単に動作させるだけでなく,アプリケーション間の干渉がないようにすることが求められている。
そのためにはアプリケーションごとにリソースを制御しなければならない。
---リソースの割り当てはOSが担うのではないのか
その通り。だが汎用OS(WindowsやLinuxなど)では力不足だ。実行時に(プロセスごとの)
優先順位を付けることはできるが,一定量の(メモリー,CPU,ネットワーク帯域などの)
リソースをアプリケーションに確実に割り当てることはできないのが実情だ。状況によっては,
メモリー上のデータがディスクに書き出されてしまうこともある。そうなれば性能は大きく低下する。
---そうした問題をどうすれば解決できるのか
“汎用OSを利用しない”というアプローチがある。それを当社では進めている。ハード
ウエア上でHypervisor(技術に基づいたソフト)を動作させ,その上にJavaVM専用のOS
「Bare Metal」(開発プロジェクト名),さらにその上でJavaVMを動作させる。そのよう
な動作環境において,JavaVMごとにリソースを確実に割り当てるという方法だ。汎用OSを
利用しないので確実にリソースを割り当てることが可能だ。JavaVMから見るとBare Metal
はOSに見えるが,汎用OSの機能は備えず,一つのJRockitプロセスを動作させるのに必要
な機能のみ提供する。
http://itpro.nikkeibp.co.jp/article/NEWS/20060519/238478/
0025デフォルトの名無しさん
2006/05/19(金) 21:08:00つまりどうなるの?
VMとOSの間に仮想化ソフトをかますってこと??
0026デフォルトの名無しさん
2006/05/19(金) 22:31:440027デフォルトの名無しさん
2006/05/19(金) 23:05:29>>13
なんかあちこちで勘違いされてるっぽいけど、C#2.0の匿名デリゲートの
仕様は、(レキシカル)クロージャとして妥当だよ。レキシカルクロージャは、
(実行時ではなく)生成時の環境をキャプチャするので、>>12のリンク先の
ような挙動は、極めて普通。Schemeのlambda式によるクロージャや、
RubyのProcオブジェクトによるクロージャの挙動と基本的には同じ。
0028デフォルトの名無しさん
2006/05/19(金) 23:22:58始まっている議論が参考になると思う。
0029デフォルトの名無しさん
2006/05/19(金) 23:32:53離れててコンピュータの都合に合わせているもののように思う。
0030デフォルトの名無しさん
2006/05/19(金) 23:53:35そういう考え方ができないとは言わないけど、歴史的に見れば、逆だと思う。
プログラマの都合に合わせるためにできたのが、レキシカルスコープ。
初期のプログラミング言語のほとんどが、グローバルスコープしか無い
のに対して、最近の言語のほとんどがレキシカルスコープを採用している
のも、それを示していると思う。
0031デフォルトの名無しさん
2006/05/20(土) 00:00:49プロパティサポートとか次世代の話続けて
0032デフォルトの名無しさん
2006/05/20(土) 00:16:20と思うけど、どうやって取り入れるんだろうね。簡単に考え付くのが、Groovy
みたいにx.hoge -> x.getHoge()、x.hoge = y -> x.setHoge(y)とコンパイラが
変換するというもの。これなら言語仕様の変更は最小限で済みそうだし、
Java VMも変更する必要が無い。ただ、プロパティと同名のフィールドが
あった場合にどちらを優先するか、とかいくつか考えることはあるが。
0033デフォルトの名無しさん
2006/05/20(土) 00:34:59すまん、Perlでいえばlocalとmyを逆に考えて書いてしまった....
レキシカル=ローカル だよな。
しかし>>12の例で言えば、
delegate { Console.Write ("{0} ", i); };
ってのは、ループカウンタ i の値をクロージャというもんのコンストラクタに渡したような
もんであり、 i という変数を渡したわけじゃないんじゃないか?
i がそのまま参照として渡されたような印象をうけるC#の動作の方に違和感があるん
だけど。
0034デフォルトの名無しさん
2006/05/20(土) 00:36:55おれはGroovyの@Propertyみたいなのを採用するのかな、と思う。
>>32のいうように、x.hogeとかいう部分はあくまでx.getHoge()のままで、
getter/setterの定義を「@Property hoge」みたいな感じで定義できる、
とかシンタックスシュガー的なもんなのかなあ、と。
0035デフォルトの名無しさん
2006/05/20(土) 00:40:53共有ライブラリで、外部に提供する関数名を限定できるみたいに、
どのクラス、どのメソッドをエクスポートするか定義できるようになる
みたい。
パッケージにスーパーパッケージみたいなものを定義できて、そのなかに
複数のパッケージをまとめて、しかも外部から見えるのはこのクラスとこの
クラスね、とかやれるみたいだね。
Perlのモジュールと似たような感じかな?
一番よくわからん項目は「メソッドリファレンス」かなあ。これなんだろ。
おれは>>11に載ってる項目よりも、NIO2がいつになったら出るのかもう、
待ちくたびれるっつうの。はやくJavaからファイルのメタデータにアクセス
できるようにしてくれよ。
0036デフォルトの名無しさん
2006/05/20(土) 00:59:44> delegate { Console.Write ("{0} ", i); };
> ってのは、ループカウンタ i の値をクロージャというもんのコンストラクタに渡したような
> もんであり、 i という変数を渡したわけじゃないんじゃないか?
レキシカルクロージャと言った場合、一般的には、まさにiという変数
そのものを渡すようなものを指す。もっと知りたい場合は、Schemeや
Rubyなどの、クロージャを持っている他の言語について調べてみると
良いと思う。
ちなみにこのような仕様になっていることによって、どんなメリットがある
かというと、例えば、次のような「制御構造」を抽象化したライブラリを
作れるという点が挙げられる。JavaやCなどの言語では、制御構造は
あくまで組み込みのものだけど、クロージャがある言語では、新しい
制御構造を提供するライブラリを簡単に作ることができる。
int sum = 0;
list.each(delegate(int i){
sum += i;
});
Console.WriteLine(sum);// listの要素の合計を出力
0037デフォルトの名無しさん
2006/05/20(土) 01:05:540038デフォルトの名無しさん
2006/05/20(土) 01:18:59あ、なるほど、sumという外側のローカル変数そのものが渡っているというイメージね。
参考になったよ。逆に言えば、もともとアクセスできるものを引数で渡している>>12の
例が、ちょっと使い方を誤ってるということかな。
0039デフォルトの名無しさん
2006/05/20(土) 02:10:42E4Xみたいなもんが乗るのかな?
0040デフォルトの名無しさん
2006/05/20(土) 02:24:26なんか、文字通りJavaのソースの中にXMLをそのままかけるらしいぞ。
イメージ的には
XML data = <test><dataset><key name="test"><value>test</value></key></dataset></test>
とかそのまま書けるって感じというか。
正直、まだ利点を見いだせない。シンプルなjavaを複雑にしてないだろうか?
0041デフォルトの名無しさん
2006/05/20(土) 02:28:51誰がつかうんだろう
0042デフォルトの名無しさん
2006/05/20(土) 02:29:20あって、いままでいろんなものでそれぞれリスナを作ってたところを、
そういう共通的なRunnableを使って実装する、というイメージなのかな、
という気がした。
inputFile.eachLine( closure(String line) { 行の処理 });
ってなことだよね?
0043デフォルトの名無しさん
2006/05/20(土) 02:29:390044デフォルトの名無しさん
2006/05/20(土) 02:31:34またパ...
0045デフォルトの名無しさん
2006/05/20(土) 02:37:03なんたら.execute(
new Runnable() {
public void run() {
ほげほげ
}
});
って長くてうざかったし、そのシンタックスシュガーを提供してくれる
だけでもうれしいかな。
Wicketだとこの手の書き方大量にするんで....
);
0046デフォルトの名無しさん
2006/05/20(土) 04:18:37こんなの初心者はついていけないぞ。教えきらん。
>>34
俺もそう思う。たんにgetter/setterの定義を書かなくて済むようになるだけで、
x.getXxx() が x.xxx と書ける訳じゃないと思う。そこまで気が利くとは思えん。
>>36
その例は「制御構造」とはいわないのでは?いうのかな?
>>40
はげどう。JSONサポートならほしいけど、XMLサポートはいらね。
>>43
うおー超はげどう。ヒアドキュメントはだれも要求しないのか?
0047デフォルトの名無しさん
2006/05/20(土) 04:46:50いや、 x.xxxだったらpublicのフィールドあったときかぶっちゃうじゃない記法www
0048デフォルトの名無しさん
2006/05/20(土) 05:48:38publicのフィールドがあればそっちをつかう、なければsetter/getterを使う、というルールでいいんじゃない?
あるいは逆に、setter/getterがあればそれをつかい、なければフィールドを探すか。
どっちにしろ、どうルールを決めるかの問題。
いらないけどね。
それより、配列や文字列の長さをELからも参照できるようになってほしい。
str.getLength()じゃなくてstr.length()だから、ELからはstr.lengthとは参照できない。
関数使わなきゃいけないのなんてかっこわるい。全然オブジェクト指向じゃない。
0049デフォルトの名無しさん
2006/05/20(土) 08:55:32だからべつにgetやsetをかくと重複していますというエラーがでればいい
isをどうするかは今でも同じ話だしな
互換性を考えればコレしかないかと
どのみちIDEの機能で意識はしてないけど、プロパティ扱いでまとめてくれると見やすいからね
折りたためるようになってくれればいい
0050デフォルトの名無しさん
2006/05/20(土) 09:32:17その例は「レキシカル」クロージャの有益な例にはなってないよね。
クロージャの有益な例というだけで。
>>30
それは少し極端かな。両方の理由があった。
効率のいい実装、デバッグしやすい意味など。
0051デフォルトの名無しさん
2006/05/20(土) 09:45:30そのlengthもプロパティで解決だね。
>>35
メソッドリファレンスは、
単純な(doAction()のみなど)Listenerを設定する時に、
extends 〜Listenerなクラスを定義しなくても、
既存のクラスのメソッドをそのまま指定できるんでしょ、たぶん。
C++でいうところのstd::mem_fun_refじゃないかと。
boost::signalsと一緒に使ったりする。
0052デフォルトの名無しさん
2006/05/20(土) 11:16:08そいで for (XML d : test.dataset[0].key) { System.out.println(d.key.value); }
とかアクセスできたらまんまE4Xじゃないか。俺的には超OK。
0053デフォルトの名無しさん
2006/05/20(土) 11:59:4736だけど、例として挙げたプログラムだと、レキシカルクロージャの特徴で
あるキャプチャされた変数が無限の寿命を持つという点を生かしてない
という話かな?確かにその通りではあるんだけど、それを生かしたプログラムは、
Schemeではよく出てくるけど、C#ではオブジェクトがあればほとんどの場合、
代用できてしまうので微妙かなと思う。
0054デフォルトの名無しさん
2006/05/20(土) 12:02:43その例を見て思ったんだが、もしかして、プロパティの導入目的は、
言語レベルでのXMLのサポートを、より効果的に行うためなのかも。
0055デフォルトの名無しさん
2006/05/20(土) 13:00:54そう。あとdynamic bindingでも、lexical bindingでも同じ意味。
Schemeのようなクロージャは強力すぎるけど、
C++の式テンプレートくらいの機能は欲しいなあ。
C#の匿名メソッドは、>>12のページにあるように、
引数に与えられた式を使ってクラスを定義するみたいだから、
変数や関数の参照は、名前呼び出し風って事になるのかな。ちょっと使いにくそう。
> オブジェクトがあればほとんどの場合、代用できてしまう
まさに式テンプレートですね。
Javaに式テンプレート入れると、型システムのルールが、
クロージャの引き数のところだけ変わるから無理そうだけれども…
0056デフォルトの名無しさん
2006/05/20(土) 15:32:18>そう。あとdynamic bindingでも、lexical bindingでも同じ意味。
確かにそうだね。というわけで、dynamic bindingじゃできない例を作ってみた。
クロージャの話でよく出てくる古典的な例なので、またかよって思うかもしれんが、
そこは見逃してくれるとありがたい。Converterってのは、.NET Framework 2.0
で入ったdelegate型で、ある型を受け取って別の型(同じ型でもいいけど)を返す
メソッドを表す型ね。
using System;
class TestLexicalClosure {
/* カウンタを作って返すメソッド */
static Converter<int, int> Counter(int start){
return delegate(int n){ return start += n; };
}
static void Main(string[] args){
Converter<int, int> counter = Counter(0); //カウンタを作る
Console.WriteLine(counter1(1)); // => 1が表示される
Console.WriteLine(counter1(2)); // => 3が表示される
}
}
> 引数に与えられた式を使ってクラスを定義するみたいだから、
> 変数や関数の参照は、名前呼び出し風って事になるのかな。ちょっと使いにくそう。
これは意味がよくわからなかった。もうちょっと詳しく言ってくれるとありがたい。
0057デフォルトの名無しさん
2006/05/20(土) 15:34:320058デフォルトの名無しさん
2006/05/20(土) 16:49:510059デフォルトの名無しさん
2006/05/20(土) 17:32:29class TestLexicalClosure {
int _start;
/* カウンタを作って返すメソッド */
static Converter<int, int> Counter(int start){
_start = start;
return delegate(int n){ return _start += n; };
}
じゃなくてもいいの?
http://blogs.msdn.com/abhinaba/archive/2005/10/18/482180.aspx
http://ant0x.udap.jp/material/mat_AnonymousMethod.htm
http://www.divakk.co.jp/blog/aoyagi/archive/2005/10/27/7038.aspx
とか読むとめまいしてくるんだけど…
結論としてはC#のanonymous methodと同じものならJavaにはいらない。
0060デフォルトの名無しさん
2006/05/20(土) 17:57:0055のコードで大丈夫。実行して、ちゃんと動作することも確認した。
あと、59のコードだと、複数のCounter()を複数回呼んで、複数個の
カウンタを作っても、カウンタの値が共有されてしまうので、まずい。
ポイントは、匿名デリゲートから参照されている外側のローカル変数は、
それが宣言されたスコープを抜けても生きているということ。
>とか読むとめまいしてくるんだけど…
>結論としてはC#のanonymous methodと同じものならJavaにはいらない。
俺はむしろC#のanonymous method的な振る舞いじゃないと嫌だなあ。
あと、anonymous method(というかクロージャ)の振る舞いに関して、
どの辺がめまいがすると感じた?
0061デフォルトの名無しさん
2006/05/20(土) 18:39:43なぜそうなるかは実装側の都合という状態
0062デフォルトの名無しさん
2006/05/20(土) 18:43:16>>59の二つ目のページ読むとそんな感じなんだが。
>>56では、Counter()が一番内側のブロックだから、
引数は変換されたクラスのメンバ変数になるってこと?
0063デフォルトの名無しさん
2006/05/20(土) 20:30:15>>59の3番目のリンク先は、仕様書のバグということで問題だと
思うが、1番目と2番目のリンク先の挙動は、本当に問題無いよ。
実装側の都合でそうなっていると勘違いしているようだけど、
レキシカルクロージャになるように匿名delegateを実装したら
そのような実装になったというだけのこと。あと、1番目のリンク先
の人はレキシカルクロージャという概念を勘違いしてて、コメント
欄で突っ込まれまくってる。
>>62
実装としては、一番内側のブロックが…とかいうのではなく、匿名
デリゲートから匿名デリゲートの外側のローカル変数を参照していた
場合、参照されている変数をメンバ変数として持つクラスが生成される
ということ。
0064デフォルトの名無しさん
2006/05/20(土) 20:37:29いや、なぜそうなるか、は昔からいわれてたけど
それが本当に書く人が理解でき照るかというのとは別だと思う
書いた本人ならまだしも、他人のコードをさらっと斜め読みして
結果を予想できるかという割れると厳しいかも
0065デフォルトの名無しさん
2006/05/20(土) 20:45:13> それが本当に書く人が理解でき照るかというのとは別だと思う
それは確かにその通りだけど、このスレではなんか、匿名delegateの
セマンティクスが実装の都合だという風に誤解されてるようなので、
それは違うんだと言いたかった。
> 書いた本人ならまだしも、他人のコードをさらっと斜め読みして
> 結果を予想できるかという割れると厳しいかも
レキシカルクロージャという概念に馴染みの無いユーザが驚く可能性は
あるかもしれないけど、よっぽどトリッキーな使い方をしてない限り、
どう動くかというのは、簡単に予想できるんじゃないかなあ。
0066デフォルトの名無しさん
2006/05/20(土) 21:19:49static D[] F() {
D[] result = new D[3];
int x;
for (int i = 0; i < 3; i++) {
int y = i * 2;
x = i * 2;
result[i] = delegate { Console.WriteLine(x + y); };
}
return result;
}
だと、[4 6 8](=[0 2 4]+[4 4 4])なんだろ?
変換結果のILはどうなるんだ?
メソッドb__0()は、xとyをどうやってaccessするんだ?
別のインスタンス内にあるはずだが…(宣言のある場所で閉じ込めるインスタンス生成)
それとも「一番内側の」ブロックで生成するインスタンスに全部含めるのか?
そうすると[8 8 8]か?
0067デフォルトの名無しさん
2006/05/20(土) 21:48:530068デフォルトの名無しさん
2006/05/20(土) 22:27:16ILを含めると長くなるので、その辺は省略して、宣言だけ示すと、大体こんな感じになる。
DisplayClass3のフィールドとして、DisplayClass1のフィールドを持っているので、b__0(匿名
デリゲートのコード本体)からはxとy両方にアクセスできる。
class <>c__DisplayClass1 {
public int x;
}
class <>c__DisplayClass3 {
public DisplayClass1 <>8__locals2;
public int y;
void <F>b__0(){/* 匿名デリゲートの中身が入る */}
}
というわけで、結果は[4 6 8]で正しい
0069デフォルトの名無しさん
2006/05/20(土) 22:36:350070デフォルトの名無しさん
2006/05/21(日) 03:36:44>>12の参照先とほぼ同じ書いてみてやっと分かった。
def closures = []
for( i in 0..10) {
closures[i] = { println i }
}
for( c in closures) {
c()
}
結果は同じように10がずらっと表示された。
これは、closuresに入っている各クロージャは、クロージャ外側の変数 i に
そのままアクセスできるわけだけど、実際に実行されるc()の段階では、
i は既に10になっちゃってるから、これがずらっと表示されると考えて
やっとしっくりきた。
>>56は
def makeCounter( start) {
return { n -> return start += n }
}
def closure = makeCounter(0)
println( closure(1))
println( closure(2))
ってな感じなんで、つまりクロージャから参照された変数 start は、変数自体がスコープを
越えてもクロージャ内では普通につかえるし、クロージャがある限り存在しつづける、と。
インナークラスがエンクロージングクラスのインスタンス変数にアクセスできるようなもん
だけど、クロージャにはクロージャのスコープがあるので、一度クロージャが使った変数は
クロージャ内で存在し続ける、ということか。
0072デフォルトの名無しさん
2006/05/22(月) 23:01:22どういう機能なわけ。まだ曖昧にも決定してない?クロージャって単語だけが歩いてる?
0073デフォルトの名無しさん
2006/05/23(火) 03:13:410074デフォルトの名無しさん
2006/05/25(木) 06:26:42JavaでのサブピクセルAAレンダリングはJavaのレンダリング使うからか
リモートデスクトップ経由でも有効だね
ピクセルの構成が一致してないとつらいとは思うが
0075デフォルトの名無しさん
2006/05/26(金) 01:39:14obj.setWidth(obj.getWidth() + 1)) なんて書かなくてもよくなりてぇえええ
0076デフォルトの名無しさん
2006/05/26(金) 04:15:52obs.width = obj.width +1 ;
になるわけか・・・・
なんか、VBのProcedureみたい。(VB4の知識で書いてます悪しからず)
0077デフォルトの名無しさん
2006/05/26(金) 06:14:57ほんとにそうなるの?
おれはgetter/setterの定義を書かなくて済むようになるだけだと思ってた。
ソースきぼん。
0078デフォルトの名無しさん
2006/05/26(金) 08:33:46むしろそっちがソースキボン。
getter/setter だけなんて、中途半端じゃん。
0079デフォルトの名無しさん
2006/05/26(金) 09:09:56いや、ソースはない。「プロパティがサポートされる」と聞いて、どうせgetter/setterが自動生成される程度で、getXxx()/setXxx()は使わないといけないのだろうと思った。それだけ。
0080デフォルトの名無しさん
2006/05/26(金) 13:25:01getter/setterの定義よりも、それらにアクセスするコードを書く回数の方が
圧倒的に多いので、getter/setter自動生成だけだと、新しい言語機構を
導入するメリットが少なすぎる。だから、たぶんアクセスするときの便宜も
図られるんじゃないかなあ。
0081デフォルトの名無しさん
2006/05/26(金) 13:54:31obs.width++;
0082デフォルトの名無しさん
2006/05/26(金) 15:16:13ライトアクセスとリードアクセスを区別して grep できないのはやだなぁ。
0083デフォルトの名無しさん
2006/05/26(金) 18:35:27呼び出し階層の検索でいけるんじゃないの? たぶん。
あ、ごめん、これはEclipseの話だな。。。
0084デフォルトの名無しさん
2006/05/26(金) 23:12:33obs@widthとかobs->widthとかなんか特殊な構文が追加なのかも
getsetかかせるよりはいいけどね
0085デフォルトの名無しさん
2006/05/26(金) 23:26:41C/C++ で使われてる -> よりは @ に賛成。
Character.isJavaIdentifierStart('@') も false 返すみたいだし、
やろうと思えばできるのかな?
あと、JSR 295 見ると、converter や validator 使って何かやるみたいね?
obs@width = "120"; とかやると勝手に StringToIntegerConverter を
使ったコードを挿入してくれるのかな? とか妄想してみる。
0086デフォルトの名無しさん
2006/05/27(土) 00:14:26operator.のoverload。
Property Binding API, Method Biding APIなんかも。
0087デフォルトの名無しさん
2006/05/27(土) 11:49:33Javaにそんな気の利いたことを望んではいけない。
ヒアドキュメントすらない言語だ、「互換性」を楯にして、最小限の使用追加だけですませるだろう。
しかしほんとに後付けの機能がふえるよな。もうぜんぜんシンプルな言語じゃなくなった。
0088デフォルトの名無しさん
2006/05/27(土) 11:58:45それでもプロパティはEODでは?
用意するほうはIDEがやってくれるけど使うほうが原始的杉
Genericsは開発効率がよくなりバグが大幅に減るすばらしいものだが
落ちこぼれるやつが多数いる
この程度でおちこぼれるのならそいつはこの業種向いてないとは思うのだが
ひとつの判断材料にはなるかも
lockはsynchronizedのように専用構文がないと厳しいような
なんでもそうだが資源解法でfinallyあてにするのは苦しいよな
0089デフォルトの名無しさん
2006/05/27(土) 12:01:11やまほどあるので、基本的にはシンタックスシュガーになるんだろうな。
obj.prop = xxx とか書くにしても、バイトコード上では setProp(xxx)になってるとか。
0090デフォルトの名無しさん
2006/05/27(土) 12:07:390091デフォルトの名無しさん
2006/05/27(土) 12:21:18俺はC++も好きなタイプなので、
Javaの言語領域で機能増えるのは嬉しい気持ちもある反面、
やりすぎて失敗しないのを祈りたい気持ち。
既に十分複雑だからね。抱えているプログラマ層を考えると。
0092デフォルトの名無しさん
2006/05/27(土) 13:03:030093デフォルトの名無しさん
2006/05/27(土) 13:36:500094デフォルトの名無しさん
2006/05/27(土) 17:59:29めったに使わないもののためにコンパイラ作りにくくすることもない。
0095デフォルトの名無しさん
2006/05/27(土) 19:15:47なんでヒアドキュメントかっていうと基本的に書く側の都合じゃない
そこに書きたいっていう。
視認性は悪くなるし文法なんて無茶苦茶。
あれを使いたくなる理由は、簡易テンプレートエンジンとして使えるからだと思うんだけど
テンプレート処理がしたいんだったらIDEとか開発ツールのアシストで
何とかなると思うんですけどね。
ScriptingAPIと同じ扱いでいいんじゃないかと思う。
あれも構造が類推できないスクリプト言語がソースにヒアドキュメント形式で生で埋め込まれてたらと思うとぞっとする・・・
0096デフォルトの名無しさん
2006/05/27(土) 19:54:22ちょっとまて、ヒアドキュメントごときでなんでコンパイラが作りにくくなるのだ?
あんなの、字句解析部をちょこっといじれば済む機能だぞ。
おまえ、コンパイラの作り方もわかってないだろ。
>>95
ヒアドキュメントで済むことをIDEとか開発ツールのアシストを使わなきゃいけないということに疑問をもたないのか。
HTMLページをまるごと埋め込むのならアホだけど、テストデータとその期待値を埋め込むのなら
ヒアドキュメントはすごい便利なんだけど。
つーか、「そんな機能必要ない」「IDEのサポートがあれば十分」とかいってるやつらって、実際その機能が追加されたら「これはEoDを実現するすばらしい機能だ」とか言い出すんだろ。
Genericsだって、最初は「C++のテンプレートは複雑だから同じような機能はJavaには必要ない」とか揃っていってたくせに、いざ実装されるとみんなGenericsマンセーなんだよな。
プロパティだって、今までgetterとsetterはEclipseが自動生成してくれるから問題ないとか言ってたくせに、それが実装されると「これは便利だ」とか言い出すんだぜ、絶対。
Javaにない機能は「そんなの必要ない」と言い切り、実装されれば「すばらしい進化だ」と手のひらを返す。ほんと学習しねーよな。
>>93
なんで国際化が必要なん?ふつうにStringリテラルと同じ扱いでいいじゃん。
0097デフォルトの名無しさん
2006/05/27(土) 20:01:410098デフォルトの名無しさん
2006/05/27(土) 20:02:14だから当時「いらない」と言ってた人たちは恥ずかしくなって黙ってしまって、
今度は別の人が別の機能に「いらない」といってる、くらいの想像力はないのか?
実際まったく同じ人だったらキモイだろう。
ヒアドキュメントはあれば便利だと思う。
一方でコンパイルされたバイトコードの中(つまりはclassファイル)の中に
そのヒアドキュメントの内容が埋め込まれるんだったらダサすぎなのでペケかな。
0099デフォルトの名無しさん
2006/05/27(土) 20:04:24> 最初は「C++のテンプレートは複雑だから同じような機能はJavaには必要ない」とか
そんな阿呆な事言ってた奴は居るのか?
少なくとも俺は聞いたこと無いぞ。
erasure よりマシな実装方法もあったんじゃないの? って話なら結構聞いたけど。
010098
2006/05/27(土) 20:07:46さほどヘンでもないか。
しかし一方で、ヒアドキュメントってドキュメント中に変数値を簡単に
埋め込めないとあまり使い道がないと思うんだがどうだろうね。
式言語っぽく${変数名}なんてのを採用すると、式言語パースが必要に
なるかな。
0101デフォルトの名無しさん
2006/05/27(土) 20:15:06何のためのフォーマッタだ
0102デフォルトの名無しさん
2006/05/27(土) 20:25:120103デフォルトの名無しさん
2006/05/27(土) 20:43:44そういうことなら、ドキュメントの生成とその中の文章の埋め込みまで
やっちゃわないと駄目ね
>>96
そのアホが出てくるからコードのメンテナンス性が落ちちゃうんだよなぁ
でもそれは、コーディング規約でやらないようにさせるっていうのなら
ツール用意して・・・・っていう話と比べてもどっちもどっちだと思うが
他の言語で利用されて便利なヒアドキュメントのいいところだけをJavaらしく取り込んでくれれば
いいとは思う。
特殊なコメント記法を入れて、コメントを識別子つけて参照できるようにするってのはどうかな?
/***
<html><body>
ほげひげは、${age}歳です
*/
あ、名前つけんのどうしよう
それよりは、特殊な改行付き文字列定義をかけた方がいいか・・・・
String document = '''
<html>ほべー
げれげれー
</html>''';
うーん、ターミネータがきめうちなだけのヒアドキュメントになったぞ。
0104デフォルトの名無しさん
2006/05/27(土) 23:11:41> なんで国際化が必要なん?ふつうにStringリテラルと同じ扱いでいいじゃん。
そりゃそうだよね。
javacのソースの文字コード、
Shift_JISがディフォールトなのそろそろやめてくれないかな…
0105デフォルトの名無しさん
2006/05/27(土) 23:13:48なにいってるの?
0106デフォルトの名無しさん
2006/05/27(土) 23:40:47一致している予感。
0107デフォルトの名無しさん
2006/05/27(土) 23:41:29LANG=ja_JP.UTF-8
export LANG
0108デフォルトの名無しさん
2006/05/27(土) 23:59:04どこのJDKよ?
0109デフォルトの名無しさん
2006/05/28(日) 00:09:320110デフォルトの名無しさん
2006/05/28(日) 00:13:00そうだね。Genericsに関しては、初期の頃からJavaプログラマの間でも、
Javaの欠点として言われていたし、Javaを拡張してGenericsを導入して欲しいという
提案も比較的初期の頃からあった。まあ、最近になってJavaにかぶれた人で、
ひょっとしたらそういう人は居るかもしれんが、ごく少数だろう。
0111デフォルトの名無しさん
2006/05/28(日) 00:47:29仕事でコード書くときは、普通レポジトリ中のロケール合わせて
ビルドオプションにもそれ入れておくでしょ?
まぁあの書き方からして>>106をしてるっぽいんだが・・・・
>>110
複雑でいらねっていわれてたのは、ポインタと演算子のオーバオードだという記憶だねぇ
それが、今度はとうとう . 演算子をオーバロードすることになるわけか・・・
0112デフォルトの名無しさん
2006/05/28(日) 01:26:570113デフォルトの名無しさん
2006/05/28(日) 01:46:46Java 5がでたときのインタビューかなんかでも、演算子のオーバーロードは
Javaを複雑にするので入れたくない、とSunの誰かが答えてたはず(ソース見つからず)
プロパティを obj.prop = value で設定できるようになったとしても、それはオーバーロード
とは言わんと思うし(シンタックス・シュガーだよね)
Dolphinでオーバーロードをサポートするとか言う発表があったんだっけ?
0114デフォルトの名無しさん
2006/05/28(日) 03:11:55Gosling自身が「いらない」と言っていたんだけど。Bill Joyは「parameterized typeがあればどんなにいいだろう」といってたけどな。
つか、ほんとに聞いたことないのか。それはいくらなんでも世界狭すぎだろ。
あれか、恥ずかしい過去はなかったことにしたがってる連中か。
EJBのときとかわんねーな。あれも推進派だった連中が今は「やっぱりEJB2は複雑だったよな、アノテーションマンセー」だもんな。自分たちがどれだけEJBを押し付けてきたのか忘れたらしい。
foreach文もそうだよな。foreach文なんていらね、Iteratorパターン最高といってたヤシばかりだったのにな。
ほんと恥ずかしい過去はなかったことにしたいらしい。
0115デフォルトの名無しさん
2006/05/28(日) 03:23:360116デフォルトの名無しさん
2006/05/28(日) 03:48:27EJB2じゃないけど、Strutsだって「あれは壮大なネタだろ」とか言ってたくらいで、全般的に
冗長なフレームワークは嫌われてたように思うが。
genericsでは何度か見たが、一方でMapがタイプセーフでないことに苦しめられたって
意見もあったわけで、バランスは取れてただろ。
Java言語をシンプルなままにしておきたいという希望は俺にもある。一方で、書くのが楽に
なって欲しいという希望もある。一人の中でもせめぎ合いがあるんだから、スレ内でどっちの
意見が出たって不思議には思わんがね。
0117デフォルトの名無しさん
2006/05/28(日) 03:56:09ヒアドキュメントがあると、文脈自由文法じゃなくなってしまうからJavaCCとかのパーサージェネレータで作りにくくなるよ。
0118デフォルトの名無しさん
2006/05/28(日) 05:33:15EJB2が複雑という意見はあった。しかし、それは一部の開発者のみ。EJBを推進する連中のほうがずっと多かった(理由は「それが標準だから」だとさ)。
Strutsだって同じだろ。雑誌記事みればわかるじゃん。どれもEJBマンセー、Strutsマンセー。
EJBやStrutsを明確に批判したのはRodやTateなどごく一部。日本じゃ皆無。
>>117
単純なヒアドキュメントは字句解析だけで実現できる。パーサはいじる必要ない。
つうかな、これだけ機能がごちゃごちゃ増えてるのに、ちょっと文法たすだけなのがなんで問題なんだ。
今のJavaはコンパイラ作るのがすごい面倒な言語になったけど、それは機能が増えたせいで構文解析よりあとが大変になったからだろ。
それにくらべたら、構文解析までなんて簡単。ヒアドキュメントの追加ぐらいわけない。
ほかにずっと大きな問題があるのを見ないふりして、「パーサジェネレータで作りにくくなる」なんてささいな問題をとりだすなよ。
0119デフォルトの名無しさん
2006/05/28(日) 06:11:10少なくとも、ヒアドキュメントは「ずっと大きな問題」じゃないな。
0120デフォルトの名無しさん
2006/05/28(日) 06:38:50つ ttps://mustang.dev.java.net/
時代は貴方を求めています。言い出しっぺの法則ってことでヨロピク
0121デフォルトの名無しさん
2006/05/28(日) 08:04:100122デフォルトの名無しさん
2006/05/28(日) 09:46:04GoslingがGenericsをいらないと言っていたというのは、信じがたいのだが。ソース希望。
Java House MLのアーカイブやその他の場所で引用されていた過去のGoslingの発言を見る限りでは、
Genericsの導入には前向きだったように思える。
あと、世界狭すぎなのは自分の方なのかも、って考えは無いのかね。
0123デフォルトの名無しさん
2006/05/28(日) 09:53:24Rubyにあるような、式を埋め込めるヒアドキュメントはパーザをいじる必要があるけどな。
実際のところ、ヒアドキュメントはあれば便利だろうし、使うだろうけど、そこまでこだわる
程の機能か?あと、そんなにヒアドキュメントが本当に欲しければ、こんなところで
ぐちぐち言ってるよりも公式に提案した方が良いかと。Genericsやその他の言語拡張だって、
要望が多かったから取り入れられたわけだし、ヒアドキュメントも場合によっては取り入れられる
こともあるかもしれん。
0124デフォルトの名無しさん
2006/05/28(日) 10:07:39C++のtemplateの特殊化やC++,CLOSなどのgeneric functionだろ。
operator overloadはかなり初期から批判的。
Bill JoyとGoslingが"暴力沙汰"になりそうになったのは、
Billがgenericsはゆっくり考えることにして、generics抜きでJavaをshippingしようとしたから。
Goslingは、進行はJCP任せだけど、collectionのreliabilityを増すと積極的。
C/C++に対する大きなアドバンテージと考えているから。> reliability
http://www.gotw.ca/publications/c_family_interview.htm
0125デフォルトの名無しさん
2006/05/28(日) 10:24:43本題からはずれるのだが、C++のgeneric function(=テンプレート関数のことか?)
とCLOSのそれ(=マルチメソッド)は全く意味合いが異なるのでは。前者は静的に
呼び出しが決定され、後者は動的に呼び出しが決定されるので。
0126デフォルトの名無しさん
2006/05/28(日) 10:44:44「関数テンプレート」が正式名称な。C++03で間違っている部分も修正。
0127デフォルトの名無しさん
2006/05/28(日) 10:51:28全くというと言いすぎだったかもしれんが、少なくとも意味が異なるのは事実。
Javaのメソッド **オーバーロード** とメソッド **オーバーライド** が異なるのと同じ。
関数テンプレートが正式名称というのは、知らんかった。すまん。
0128デフォルトの名無しさん
2006/05/28(日) 10:56:49クラスに属さない多相型の関数のことを言っているのは自明だよ。
性的なw特殊化はわざわざ別に書いているし。
0129デフォルトの名無しさん
2006/05/28(日) 12:10:38言いたいことがよくわからないのだが、C++には関数テンプレートとは
違う、"generic function"があって、それは、CLOSのように、実行時に
オブジェクトの型に応じて、動的にディスパッチしてくれるのか?
0130デフォルトの名無しさん
2006/05/28(日) 12:49:01意味不明って言っても仕方ないじゃないの?
一般名詞としての"generic function"は、C++のWGでも出ているよ。
例えば、http://www.research.att.com/~bs/evol-issues.html
generic programmingで使うparametric polymorphismを持った関数が"generic function"。
知らないのはよっぽどうとい人だと思われ。
0131デフォルトの名無しさん
2006/05/28(日) 18:45:57いや、"generic function"をCLOSの意味に制限したいわけ
じゃなくて、CLOSのそれとC++のそれは意味が異なる機能なのに、
124が
> C++,CLOSなどのgeneric function
と、C++とCLOSのgeneric functionが同じ機能かのように言っていたので、
つっこんだだけ。
0132デフォルトの名無しさん
2006/05/28(日) 22:01:40ヒアドキュメントはあくまで例のひとつ。
「そんな機能いらね」といってたくせにそれが実装されると意見を180度変えるJava屋さんが多すぎてうざいというのが主張内容。
JCPに提案しろとかポイントはずれてる。
0133デフォルトの名無しさん
2006/05/28(日) 22:29:35> C++とCLOSのgeneric functionが同じ機能かのように言っていたので、
FUDかよw
0134133
2006/05/28(日) 22:52:36http://www.osl.iu.edu/publications/prints/2003/comparing_generic_programming03.pdf
結局propertyは>>86の言うように、JSR245なの?
0135デフォルトの名無しさん
2006/05/28(日) 23:22:33132だが、いい加減しつこいかもしれんが、どの辺がFUDなんだ?
0136デフォルトの名無しさん
2006/05/28(日) 23:25:08間違えた。「132だが」は、「131だが」ね。
0137デフォルトの名無しさん
2006/05/29(月) 00:35:52確かにポイントがずれてたかもしれん。
でも、結局、
> 「そんな機能いらね」といってたくせにそれが実装されると意見を180度変えるJava屋さんが多すぎて
というのは、そんなに居るかなあとしか自分は思えない。あなたの
周りはそういう人ばっかりだったのかもしれんが、全体として
どうだったかというのは、ソースが無い以上、わからんし。
0138デフォルトの名無しさん
2006/05/29(月) 08:50:44技術の話でぶつかるならともかく!!!!
0139デフォルトの名無しさん
2006/05/29(月) 08:59:23いらね。
0140デフォルトの名無しさん
2006/05/29(月) 09:10:290141デフォルトの名無しさん
2006/05/29(月) 12:41:52JSR 245のexpression languageのところだけ、
つまり JSR-000245 JavaServer Pages 2.1 FR から抜き出された
JavaServer Pages 2.1 Expression Language Specification
だけ入るんじゃないのかな。property関係のところは。
1.6 Operator [] and .
The EL follows ECMAScript in unifying the treatment of the . and [] opeartors.
expr-a.idenfitifer-b is equivalent to expr-a["identifier-b"]; this is, the
indentifier identifier-b is used to construct a literal whose value is
the identififer, and then [] operator is used with that value.
(以下、式を評価する時のルール;略)
java.elのELResolver.getValue()辺りのインターフェースは
どうなるのか知らないが。もともとJSPのproperty用だからさ。
0142デフォルトの名無しさん
2006/05/29(月) 16:53:15まさに、すぐ下にいるじゃん。>>139,140
今まで幾度となく同じことが繰り返されてきたし、これからもおんなじ。
0143デフォルトの名無しさん
2006/05/29(月) 16:58:390144デフォルトの名無しさん
2006/05/29(月) 17:34:370145デフォルトの名無しさん
2006/05/29(月) 17:49:01ヒアドキュメントなど、間違いなく不要。
0146デフォルトの名無しさん
2006/05/29(月) 23:48:08自分ならヒアドキュメントで書きたくなるような文字列はコードと分離するけど。
0147デフォルトの名無しさん
2006/05/30(火) 01:46:32今を受け入れるか、Javaを使わないしかないだろ。
おれはヘタレなのでMapに想定していないオブジェクトをつっこんじゃって、
キャストで落ちるなんてことをよくやってたからGenericsはすごくありがたい
けど、なけりゃないで、無いんだからどうしようもないから受け入れてただけ。
Genericsがないからまともなコードが書けません、なんて仕事では言えない
んだし。
0148デフォルトの名無しさん
2006/05/30(火) 02:42:090149デフォルトの名無しさん
2006/05/30(火) 05:26:340150デフォルトの名無しさん
2006/05/30(火) 06:57:54ま、俺も>>146と同じでどっちでもいいや。どうせ使わないだけだし。
0151デフォルトの名無しさん
2006/05/30(火) 09:27:590152デフォルトの名無しさん
2006/05/30(火) 09:31:370153デフォルトの名無しさん
2006/05/30(火) 09:32:360154デフォルトの名無しさん
2006/05/30(火) 09:34:55List<Map<String,Object>>とかだとListとだけかかれるとソース追わないと中身確認できないのはきつい
ドキュメントでしっかり書いてくれるところならいいがListとだけかいているとぶち殺したくなる
もう1.4時代にはもどれんよな
0155デフォルトの名無しさん
2006/05/30(火) 09:48:47Groovyには、式を埋め込める複数行文字列リテラルがあるよ
こんな感じ
def i = 100
println """
Hello ${i}
"""
これをヒアドキュメントと言っていいかは正直わからんの
だが、機能的には、文字列の終端となる記号を自由に指定
できないことを除いて、ほぼ同等だと思う
0156デフォルトの名無しさん
2006/05/30(火) 15:45:10こんなもの、保守やデバグを考えるとぞっとする
チームで禁止しても絶対使う奴が出てくるから嫌だ
0157デフォルトの名無しさん
2006/05/30(火) 16:54:310158デフォルトの名無しさん
2006/05/30(火) 17:55:570159デフォルトの名無しさん
2006/05/30(火) 18:06:250160デフォルトの名無しさん
2006/05/30(火) 20:21:24てかコンパイラ機能ってクラスキャッシュ直ぐ満杯になる欠点とかないの?
0161デフォルトの名無しさん
2006/05/30(火) 23:03:08そんなことされると、さらにgkbr
0162デフォルトの名無しさん
2006/06/02(金) 02:54:34コンパイルオプションでヒアドキュ封じができるようになればちょうどいい感じで導入できないかね?
プロジェクトで使う人もこまんないんじゃない?
0163デフォルトの名無しさん
2006/06/02(金) 07:44:25というかそこまでして導入するもんでもない。
0164デフォルトの名無しさん
2006/06/02(金) 17:03:39言語として加わるのか、
XML対応としてXMLの属性にgetValue/setValueするAPIがJDKに加わるのかどっち?
関連JSRは、
JSR 227: A Standard Data Binding & Data Access Facility for J2EE(TM)
JSR 245: JavaServer(TM) Pages 2.1
JSR 252: JavaServer Faces 1.2
JSR 295: Beans Binding
あたり? Expression Language周辺
0165デフォルトの名無しさん
2006/06/03(土) 22:35:13なんだからPerlの q!文字列!やPHPの'文字列\n$変数'と'文字列$変数'との
違いを表してるブツみたいだな。
PHP的なものならまだしもPerlのq!文字列!みたいな
混乱するブツになるのは避けてもらいたいところだよな。
ダブルクォーテーションが無いだなんて、
あれ使う前に何か宣言でもするのかな
0166デフォルトの名無しさん
2006/06/03(土) 22:37:29そのまんま@Propertyアノテーションとして使えばいいやんか
0167デフォルトの名無しさん
2006/06/03(土) 22:39:21C#みたいな表向きは set/getと書くだけでプロパティが使えるが
実際には内部ではプロパティ変数名がたとえばtest のとき実際にはGet_test(), Set_test()
というメソッドが定義されているとコンパイラに解釈されるという奴でどうにかなるんだろう。
ただし、このときGet_test(), Set_test()という名前のメソッドを定義するとC#ではエラーになるが。
0168デフォルトの名無しさん
2006/06/04(日) 01:52:45そういう暗黙の定義が適用されるのは、
対XMLデータとか、シリアライゼーションとか、
定義をクラスライブラリ側が持っているケースでしょ?
それは既にBeansやServer PagesのELであるよね。
JavaDocのtagもpropertyが増えてる。
Dolphinのは、言語がproperty採用するって事なんじゃないのかな?
要するに、setter/getterはプログラマが記述して、
フィールド参照がsetter/getterに置き換わるヤツ。
0169デフォルトの名無しさん
2006/06/04(日) 01:56:45遅レスながら激しく同意。ほんとJavaには呆れる。
0170デフォルトの名無しさん
2006/06/04(日) 02:11:29> >>40
> PHP的なものならまだしもPerlのq!文字列!みたいな
> 混乱するブツになるのは避けてもらいたいところだよな。
例えばの話だが
"<p id=\"hoge\" onmouseover=\"hige('fuga')\" class=\"hage\">";
q{<p id="hoge" onmouseover="hige('fuga')" class="hage">};
どっちが見易いかっつう話だ。
q{}とは違うが正規表現の場合も考えてみ。JavaよりC#の@の方がまだマシだろうに。
0171デフォルトの名無しさん
2006/06/04(日) 10:21:22そんな書き方するのがいやだったら
インクリメントできるメソッドを定義したほうがいいんじゃないのか?
0172デフォルトの名無しさん
2006/06/04(日) 10:24:18いっておくがC++のtemplateとJavaのgenericsとはまったく別もんだよ。
比較サイトでも似て非なるものであると書いてある。
よって全然手のひらを返したことにはならんよ
0173デフォルトの名無しさん
2006/06/04(日) 10:25:14ヒアドキュメントは下手な奴が使うとソースコードを読みにくくするからな。
Perl厨が書いたコードみたいにな。
0174デフォルトの名無しさん
2006/06/04(日) 10:27:07C++ templateの重要な特性である、コンパイル時プログラミング
ができるという機能をJava genericsは持って無いし、別物と言って
良いだろうね。
0175デフォルトの名無しさん
2006/06/04(日) 10:27:51だからC++のテンプレートはJavaのGenericsと全く
同じではないと何度言ったら(ry
だからあれほど言ったものを
0176デフォルトの名無しさん
2006/06/04(日) 10:28:250177デフォルトの名無しさん
2006/06/04(日) 10:30:19>>114はGoslingが「C++Templateの機能すべてはいらない」と
言ったのを勝手に「Genericsはいらない」と誤認しているだけなんだよ。
恥ずかしい奴だから
0178デフォルトの名無しさん
2006/06/04(日) 10:32:21いらねーよ、こんなの。
0179デフォルトの名無しさん
2006/06/04(日) 10:34:18ま、Perlそっくりそのままのヒアドキュメントが実装されたら
あれだな。
XMLのCDATAセクションみたいなのがJavaソースコードに紛れるのかね
だとしたらJavaソースコードがまるっきりXML文書の一部になる?
0180デフォルトの名無しさん
2006/06/04(日) 10:38:02お前らがforeachが無いんですけど(^^;;とか騒ぐから
0181デフォルトの名無しさん
2006/06/04(日) 10:38:10便利だよ
0182デフォルトの名無しさん
2006/06/04(日) 10:38:44そんなことをするんだったら別ファイルに書くか
JSPやカスタムタブライブラリやJSFやApache Struts
やJakarta Velocityを使うがな
0183デフォルトの名無しさん
2006/06/04(日) 10:40:42もっと決定的な違いがあるよ。
C++厨がJava Genericsではこれができないと
愚痴を零している数々の機能。
多重継承ができないからといってブツブツ文句をいうC++厨が
いるようにJava GenericsがC++Templateとはあまりにも
違うことに文句をつけている変な奴がまだまだいるのさ
0184デフォルトの名無しさん
2006/06/04(日) 10:48:11JSFやApache Strutsはヒアドッキュメントの代替にならない件
0185デフォルトの名無しさん
2006/06/04(日) 10:48:59「いらねーよ、こんなの。」と言ってたものが
今までも、そしてこれからも追加されていくわけやね。
0186デフォルトの名無しさん
2006/06/04(日) 10:55:380187デフォルトの名無しさん
2006/06/04(日) 10:55:580188デフォルトの名無しさん
2006/06/04(日) 10:59:16XMLリテラルはいらねーともいるとも言ってない晴天の霹靂
0189デフォルトの名無しさん
2006/06/04(日) 11:00:130190デフォルトの名無しさん
2006/06/04(日) 11:01:03> Java GenericsがC++Templateとはあまりにも違うことに文句をつけている変な奴
ただ、Java Genericsは、Java仮想マシンの互換性を保つために、いろいろと
面倒な仕様になっているので、文句を付けられても仕方無いと思える部分もある。
特にC#のGenericsと比べると、その部分が際立つ。
0191デフォルトの名無しさん
2006/06/04(日) 11:01:350192デフォルトの名無しさん
2006/06/04(日) 11:05:46デスクトップに目を向けています!なんてよくいえたものだ>5.0
1.4のほうがクライアントサイドで大幅によくなってたが、5.0ほとんどかわってねーし
6もほとんどかわってねーな
グループレイアウトが標準になるくらいか
0193デフォルトの名無しさん
2006/06/04(日) 11:06:46しかも亀が多い
0194デフォルトの名無しさん
2006/06/04(日) 12:02:18けっこうスッキリするけどね
0195デフォルトの名無しさん
2006/06/04(日) 12:03:07日曜だけ見る奴とかいるんでね?
0196デフォルトの名無しさん
2006/06/04(日) 12:03:54foreachはないけどfor(;;)やfor(;)はあるってことで
GenericsはあるけどC++Template相当のものはすべては無いってことで
「否定していた癖にJavaにforeachやGenericsが出た」と主張した奴は
馬鹿って事で
0197デフォルトの名無しさん
2006/06/04(日) 12:04:55で、処理中にインデックスがいると分かり、for (int i = 0; i <
に書き直したり。これがアホくさい。言語レベルで今何番目か
分かるようにしてほしい。
0198デフォルトの名無しさん
2006/06/04(日) 12:05:48それでも今Perl臭いヒアドキュメントの必要性は
感じないな。
JSFやStrutsがヒアドキュメント代わりになるというより、
>>170のようなHTMLコードをいちいちJavaコードの中に
埋め込むというくだらないことをしなくて済むという観点から
>>184の主張が現れている。
0199デフォルトの名無しさん
2006/06/04(日) 12:08:02追加されるっていっても過去の言語にあるものとは
違うモノだから。
enumだってそうだし。
C/C++のenumはJavaのenumとは似て非なるものであって
Genericsが登場したからこそ実現できたものであって
C/C++のenumとくらべたら断然機能的で優れている。
よってC/C++のenumとJavaのenumとはまったく別のものである。
だから、かつてJavaにeumがいらないという発言があったのは
「Javaの新しいenumが要らない」というのではなく
「C/C++で実装されている仕様のenumが要らない」ということだったのだ。
0200デフォルトの名無しさん
2006/06/04(日) 12:08:33みんなって誰?
あれの需要はそんなにあるとは思えないな
0201デフォルトの名無しさん
2006/06/04(日) 12:09:54ハードウェア方面にまでPureJavaをサポートするのは
まだまだ先だろ。
JiniやらJava Communication API をどうにかしないと
0202デフォルトの名無しさん
2006/06/04(日) 12:10:26それはありうる。
>>193 >>195
というか偶然ともいえるだろう。
0203デフォルトの名無しさん
2006/06/04(日) 12:11:43それはIteratorの意味が無いとちゃうか?
何番目を知りたいかだなんて使い方が間違ってると思うぞ。
アルゴリズムや作りたいものによるが、
コレクションの分割とか考えるといいかと
0204デフォルトの名無しさん
2006/06/04(日) 12:17:10interface RandomAccessとinterface Collectionは別の機能だ
0205デフォルトの名無しさん
2006/06/04(日) 12:18:04間違ってるか? というか、拡張 for 使いまくった?
えーと、そうだ、おまい今まで組んだものはループは全部 Iterator か?
例えば、画面に行No出力する場合はどうする?
JSTL とかテンプレート言語が無い場合ね。
0206デフォルトの名無しさん
2006/06/04(日) 12:20:21俺もインデックスが必要になるのがあとで必要になって書き直したりするよ
でも、イテレータパターンであることを言語的に保証するものだからありでは?
インデックスだと中身まで見ないと流れが把握できない
>>201
キーボードやマウスと同じ一般的な入力インターフェースなんだが
ついでにMSXのようにキーボードもジョイスティック0番とかでつかえるようにしておけば
コードを分ける必要もなくていいのだが
同人ソフトとかでJava製の物がほとんどない原因のひとつでは?
フルスクリーン等は1.4でサポート、じゃヴぁSoundは1.3でサポートされやっと使い物になってきたが
インターフェースがないのではね
1.1時代+JNIでなんでもできるということはなかったはずだし
JNIも万能ではない(スタックサイズ制限で引っかかる)からね
VM自体のリコンパイルが必要になるし、さすがにそれは現実的ではないだろう
0207デフォルトの名無しさん
2006/06/04(日) 12:25:27を例に示されてもワカラネw
分かるのが普通か?
0208デフォルトの名無しさん
2006/06/04(日) 12:26:280209デフォルトの名無しさん
2006/06/04(日) 12:28:51PadListenerみたいな標準インタフェース用意して、メーカー側が対応するSPIをサイトに置いとけばいいじゃん
0210デフォルトの名無しさん
2006/06/04(日) 12:33:21> 何番目を知りたいかだなんて使い方が間違ってると思うぞ。
それは言い過ぎだろw
けどループ構造は代えずにカウンタ一つ用意すればいいだけだよな。
0211デフォルトの名無しさん
2006/06/04(日) 12:34:44http://sourceforge.net/projects/javajoystick/ にあるが、
標準でサポートしろって事でしょ。
けどジョイスティックはそもそもインターフェースが統一されているとは言いがたいし…
0212デフォルトの名無しさん
2006/06/04(日) 12:38:53カウンタを用意するとループのスコープの外に変数を作ることになる。
なんかいや。
0213デフォルトの名無しさん
2006/06/04(日) 12:43:47何番目か意識することなく取り出すのが目的なんだから
カウンタ使いたければふつうにfor( ; ; )すればいいだけ
>>211
2軸32ボタンまではOSレベルで標準サポートされてるはずだ
0214デフォルトの名無しさん
2006/06/04(日) 12:46:49とれればいい。freemarker のように。
0215デフォルトの名無しさん
2006/06/04(日) 12:50:12Iteratorのコードの場合、カウンターが必要なら拡張for使わなくてもIteratorかカウンタ変数かどちらかがスコープの外に出る件
0216デフォルトの名無しさん
2006/06/04(日) 12:54:040217デフォルトの名無しさん
2006/06/04(日) 13:01:36ここで言ってるIteratorは拡張Forのことだという件
0218デフォルトの名無しさん
2006/06/04(日) 13:07:26>>204の言っている意味も理解できないのかよ。
0219デフォルトの名無しさん
2006/06/04(日) 13:13:25> >>201
> キーボードやマウスと同じ一般的な入力インターフェースなんだが
> ついでにMSXのようにキーボードもジョイスティック0番とかでつかえるようにしておけば
> コードを分ける必要もなくていいのだが
Adapterパターンでうまいことラッパークラス作れよw
0220デフォルトの名無しさん
2006/06/04(日) 14:12:33ほとんど外の人がデスクトップ普及熱の根幹である件
0221デフォルトの名無しさん
2006/06/04(日) 14:22:25みんなラッパつくってるだろ
それが面倒だということだろ
0222デフォルトの名無しさん
2006/06/04(日) 14:24:391.4は明らかに今後がんばるんだなぁという光が見えたわけだが
0223デフォルトの名無しさん
2006/06/04(日) 14:39:460224デフォルトの名無しさん
2006/06/04(日) 14:41:346はピュアGUIやスクリプトなど一応の発展はある。
0225デフォルトの名無しさん
2006/06/04(日) 16:28:040226デフォルトの名無しさん
2006/06/04(日) 17:26:49みんなOceanに腰を抜かしたはず
あのセンスに。
たぶん、アレで識者は「これは俺が何とかせねば」と奮起したと思われる。
インデックスが必要ということはカウンターが必要であるということで
コレクションを操作するという事とは別の要素が必要になったということ
繰り返し処理と、カウンタを使うという意味を切り分ける意味で
俺は別にカウンタを用意している。
カウンタも0からスタートさせたい場合や、1からスタートさせたい場合など色々。
もし、繰り返し処理で使うなら、拡張機能をさらに入れたい。それで
・カウンタの初期値
・カウンタのステップ
を決めたいのだが、そうなるとforeachタイプforにさらなる
文法拡張が必要になるなぁ。
for( Object i : list : 0 : 2 ){
}
あ、イテレーションのコンテキストにアクセスするのに文法も必要か・・・
コレは一筋縄じゃいかんねぇ
0227デフォルトの名無しさん
2006/06/04(日) 18:13:09それだよ、それ。そういう拡張が欲しい。
スコープもループ内だしな。
0228デフォルトの名無しさん
2006/06/04(日) 18:29:05もういっそのこと、Schemeのようなマクロを導入して、
そういう拡張は自分で定義してね、とするとか
まあ実際にはあり得ないだろうけど
0229デフォルトの名無しさん
2006/06/04(日) 19:02:34そういうのを要求する人はjavaの拡張を待つまでもなく、もうm4とかの
マクロプロセッサを使ってるんじゃないのかね。
0230デフォルトの名無しさん
2006/06/04(日) 19:07:580231デフォルトの名無しさん
2006/06/04(日) 19:12:50別に、普通に0ベースか1ベースのインデックスさえ手に入れば、
n + m * indexで、nまたはn+mからスタートしてステップmの
カウンタが手に入るじゃないの。
>>228
この程度ならマクロなんて必要なくて、レキシカルクロージャが
導入されていれば、簡単につくれるんだよねえ。
0232デフォルトの名無しさん
2006/06/04(日) 19:38:56関係ないか
0233デフォルトの名無しさん
2006/06/04(日) 19:47:440234デフォルトの名無しさん
2006/06/04(日) 20:25:07いらねー
くだらねー
0235デフォルトの名無しさん
2006/06/04(日) 20:39:03いいんでね?
0236デフォルトの名無しさん
2006/06/04(日) 21:23:130237デフォルトの名無しさん
2006/06/04(日) 21:30:280238デフォルトの名無しさん
2006/06/04(日) 21:53:15レキシカルクロージャがあれば、その程度なら簡単にできる
というのはその通りだが、クロージャだけでは簡単にできない
拡張もある。で、諸々の拡張に対する提案全部を取り入れてたら
きりが無いので、マクロを定義する仕組みだけ用意して、あとは
ユーザが勝手にマクロを作ってねとしたらどうか?というのが228
で言いたかったこと。まあ、マクロは濫用される危険性が大きい
機能でもあるので、Javaのような言語に実際に入ることは無いだろうけど。
0239デフォルトの名無しさん
2006/06/04(日) 21:53:18いいんでね?
0240デフォルトの名無しさん
2006/06/04(日) 21:56:020241デフォルトの名無しさん
2006/06/04(日) 22:16:57http://roumen.name/work/Poland06/Roman_Strobl_JavaSE_6_7_Roadmap.pdf
0242デフォルトの名無しさん
2006/06/04(日) 22:32:282005なんでつかわないのだ
1.2.2でノーマライズとかいてるのもあやしい
1.3.1とかなり違うはずなのだが
0243デフォルトの名無しさん
2006/06/04(日) 23:40:00>カウンタ用意したらイテレータパターンの意味ないだろ
>何番目か意識することなく取り出すのが目的なんだから
>
>カウンタ使いたければふつうにfor( ; ; )すればいいだけ
これはちがうだろ。Iteratorは、データ構造に依存せずに繰り返しのためのインターフェースを提供することが目的。
Iteratorが考えだされるまでは、ListやArrayやTreeといったデータ構造ごとに、繰り返しの操作が異なっていたし、それが当たり前だった。
それがIteratorによって、どれでも同じインターフェースで繰り返しが行えるようになった。
Iteratorの目的は「繰り返し」の抽象化であり、そのこととカウンタとはぜんぜん別の問題。
ListやTreeに対してはIteratorとカウンタの両方を使うべきであり、for(int i=0; i<count; i++)とかするのはバカ。
0244デフォルトの名無しさん
2006/06/04(日) 23:43:40カウンタ用変数を外側に用意すれば?
もちろん{ }で一段スタック入れてスコープ狭める
0245デフォルトの名無しさん
2006/06/04(日) 23:51:24Iterator 大好きなんだな。
別にそこまで無理してデザパタ使わなくてもいいよw
0246デフォルトの名無しさん
2006/06/05(月) 00:10:39//こっちのほうがわかりやすいから
とコメントしてforで回してるソースを見たときは声出してワロタ
0247デフォルトの名無しさん
2006/06/05(月) 00:15:450248デフォルトの名無しさん
2006/06/05(月) 00:21:120249デフォルトの名無しさん
2006/06/05(月) 00:35:13何番目とかの処理を意識させるのは必要ないからな
あなたは何番目ですか?がロジックで必要なら自前で用意するだけ
今までのfor構文でイテレータ使ってたのと同じでこれはかわってないだろ
0250デフォルトの名無しさん
2006/06/05(月) 00:38:23必死だな
0251デフォルトの名無しさん
2006/06/05(月) 02:01:46ワロシュ
0252デフォルトの名無しさん
2006/06/05(月) 02:39:44似たようなもんがJakarta Commons Collectionsになかったか?
0253デフォルトの名無しさん
2006/06/05(月) 02:52:50for(String key,String value : map) { 文 }
みたいな
0254デフォルトの名無しさん
2006/06/05(月) 03:02:43for(Map.Entry entry : map.entrySet() )
0255デフォルトの名無しさん
2006/06/05(月) 09:42:15IteratorはCLUで70年代からある。
0256デフォルトの名無しさん
2006/06/05(月) 11:46:58MapをIteratorに変換するか
MapとListが一緒になった、Jakarta Commons Collectionsにある
あのクラスを使えば医院ジャマイカ?
0257デフォルトの名無しさん
2006/06/05(月) 11:47:34GoFの一つにIteratorパターンがあるからね。
デザインパターンとしてのIteratorは後から出たモノだとおもう
0258デフォルトの名無しさん
2006/06/05(月) 11:51:11それだと、Entryからkeyとvalueを取り出さなきゃいけないじゃん。
253だとその手間が省ける。それが大事。
0259デフォルトの名無しさん
2006/06/05(月) 12:04:530260デフォルトの名無しさん
2006/06/05(月) 12:40:00まあ、あれば便利かもしれんが、そこまで重要な機能ではないわな。
foreachに比べると、使う機会も少ないだろうし。
0261デフォルトの名無しさん
2006/06/05(月) 19:25:26いっしょに導入してくれればよかったんだよ。
そのくらい、ふつうに気がつくだろ。なんで直接Mapが使えないように限定するのかさっぱりわからん。
0262デフォルトの名無しさん
2006/06/05(月) 19:40:33そんなこと言ってると
あれも入れろこれも入れろで収拾付かなくなるから。
0263デフォルトの名無しさん
2006/06/05(月) 19:49:14Collectionはデータ構造に関するJavaの主要フレームワークの根元だから特別視されるだけだ
0264デフォルトの名無しさん
2006/06/05(月) 20:08:490265デフォルトの名無しさん
2006/06/05(月) 20:13:57openとcloseは例外を投げる設計にしたほうがいいんだよな
>>264
どんな感じの?
0266デフォルトの名無しさん
2006/06/05(月) 20:40:25そのくせプロパティやらXML直書きやらは導入されるんだ。
そっちのほうが収拾つかんわ。
0267デフォルトの名無しさん
2006/06/05(月) 20:44:59Map の foreach なんて generics+プロパティ導入で e.key と e.value で済むんだから
わざわざ入れなくてもいいだろ。
0268デフォルトの名無しさん
2006/06/05(月) 22:08:03foreach(aMap, クロージャ);
でいいよ。
0269デフォルトの名無しさん
2006/06/06(火) 01:47:50オヤジJavaプログラマの「クロージャは苦労じゃ」のネタは既に
あるものとして色々なバリエーションが考えられてるからです。
どんなものでもイイが、上のネタを生かすために簡単なものであっては困る事だけは確かだ。
0270デフォルトの名無しさん
2006/06/06(火) 02:25:33ECMAScriptだとthis参照を遅延生成メソッド内に埋め込むやり方で使ってるよね
でもJavaのthisってコンテキスト参照じゃなくてインスタンス参照でしょ?
0271デフォルトの名無しさん
2006/06/06(火) 02:44:450272デフォルトの名無しさん
2006/06/06(火) 03:11:42構造を持ったデータを簡単に作れることじゃないの?
今までせこせこ、ListとかMapとか組み合わせてたような奴
0273デフォルトの名無しさん
2006/06/06(火) 03:28:520274デフォルトの名無しさん
2006/06/06(火) 08:35:14http://foldoc.org/foldoc.cgi?query=closure&action=Search
の1かな。
Javaに実装するなら、new Callable() { ... } あたりを楽に書ける
シンタックスシュガーとして実装がいいんじゃない。
つまり、ローカル変数はfinalなもののみアクセスできる。
>>36 のようなことがやりたければ、
final int[] sum = { 0 }
で切り抜ける。
0275デフォルトの名無しさん
2006/06/06(火) 20:11:400276デフォルトの名無しさん
2006/06/07(水) 04:21:460277デフォルトの名無しさん
2006/06/07(水) 05:45:45受け入れてないよ。だからヒアドキュメント否定するんだろ。
0278デフォルトの名無しさん
2006/06/07(水) 05:49:460279デフォルトの名無しさん
2006/06/07(水) 07:45:12ところで、クロージャーって、単なるシンタックスシュガーじゃなくて、スクリプト言語用のバイトコード拡張を利用する構文じゃないのかな。
0280デフォルトの名無しさん
2006/06/07(水) 11:05:11それは激しい・・・
ヒアドキュメントと変わらんじゃないですか
スクリプト言語のシンタックスがわからない以上・・・・
0281デフォルトの名無しさん
2006/06/07(水) 11:13:26それはまず無い。スクリプト言語用のバイトコード拡張(invokedynamicだったか)は、
クロージャの実装に使えるようなものじゃない。クロージャが単なる匿名クラスの
シンタックスシュガーになるんじゃないだろうというのは同意だが、クロージャは、
別にバイトコードを拡張しなくても、既存のコードの互換性を保った形で追加できるはず。
0282デフォルトの名無しさん
2006/06/07(水) 11:41:58そもそも動的メソッド呼び出しだけだから、
Funarg問題を解決してくれるようなもんじゃないしね。
# Hotswappingの方向で進んでいるからslot参照も付くんだろうが。> JSR292
どういう実装するかよりも、どういう仕様になるかの方が…
たぶん、inner anonymous classの参照しているlocal変数、実引数、
例外処理ハンドラ引数がfinalでなければいけないという制約が
closureの場合は外れるかどうか。
Inner anonymous classを使った実装になるのは確実でしょ?
後はsyntax sugerでしょうね。
Closure出来たら、コレクションも新しくしないとねw
0283デフォルトの名無しさん
2006/06/07(水) 11:45:10三行とも意味がわからん…w
Groovyの文法は既に定義されているし
0284デフォルトの名無しさん
2006/06/07(水) 12:21:26281だが、
> たぶん、inner anonymous classの参照しているlocal変数、実引数、
> 例外処理ハンドラ引数がfinalでなければいけないという制約が
> closureの場合は外れるかどうか。
外れると思うなあ。じゃなきゃ、セマンティクスとしては
今までとほとんど変わらないんだから、わざわざクロージャ
を追加するなんて言い方はしないでしょ。あと、細かいが
実引数は仮引数の間違いでは?
> Inner anonymous classを使った実装になるのは確実でしょ?
> 後はsyntax sugerでしょうね。
実装としては、Inner anonymous classを使うのに近いものに
なるだろうが、仕様としては単なるInner anonymous classの
シンタックスシュガーになるってことは無いと思う。
0285デフォルトの名無しさん
2006/06/07(水) 12:35:22なにも考えずに下手に導入するとC#やC++の二の舞となるぞ。
どうしてもそういう機能が欲しければ
C++やC#で実装して貰うように頼むか自分で実装するという手もありだな
0286デフォルトの名無しさん
2006/06/07(水) 12:41:34Closureを実装するにあたって、
JVMの仕様を変えるという話は出てきてないから、
ほとんどsyntax sugarみたいなもんなはずだけどね。
というかinner anonymous classがほとんどclosureみたいなもんだし。
finalが外れるとしても、primitive typeの扱いはどうするのか…
0287デフォルトの名無しさん
2006/06/07(水) 12:43:31つーかクロージャができる今となっては>>268でいいでしょ。
拡張forは黒歴史だ。
0288デフォルトの名無しさん
2006/06/07(水) 12:51:02JVMの仕様を変えないでも、「本物の」クロージャは実装できるよ。
あと、キャプチャされる変数がprimitive typeかどうかは、クロージャ
実装するにあたっては、特に関係無いはずだけど、何か問題ある?
0289デフォルトの名無しさん
2006/06/07(水) 13:10:14closureに埋め込んだouter class instansの
thisを介して参照すれば書き換え可能だけど、
引数はちょっと面倒じゃない? > primitive
Method内でclosureが使われる時、
first class closureが外に持ち運び出されれて使われる時、
複数のclosureからprimitive typeが参照される時の扱いなど。
まあコンパイラが頑張れない問題ではないけれど。
そういうprimitive typeは、
別のinner anonymous classでwrappingすればいいんだから。
0290デフォルトの名無しさん
2006/06/07(水) 13:38:10オブジェクトでラップしとかないといけないよね。
外に持ち出して複数のクロージャから参照されるかもしれないから。
0291デフォルトの名無しさん
2006/06/07(水) 19:17:14それは、クロージャからouter classのフィールドを参照しているか
outer scopeのローカル変数を参照するかによる違いであって、
primitive typeかどうかは関係無いのでは?クロージャから
outer scopeのローカル変数を参照可能で、かつ、クロージャから
その変数が変更可能なようにする場合、基本型かどうかに関わらず、
オブジェクトでラップする必要が生じると思うんだが。
0292デフォルトの名無しさん
2006/06/07(水) 19:54:33あのースクリプト言語ってGroovyだけじゃないんですが・・・
スクリプト言語への対応って言語の定義はされてなくて、APIの定義なんですよ。
おそらくそこを勘違いされていますよね?
今あるスクリプト言語だけじゃなくて将来出てくる言語もこのAPIに沿ってライブラリを
用意すれば使えるっていうフレームワークです。
0293デフォルトの名無しさん
2006/06/07(水) 19:57:25もしかしてもっと高尚な概念だったのか?w
0294デフォルトの名無しさん
2006/06/07(水) 20:04:53デリゲートっていうのはクロージャーよりもっと大きな範囲を表すことばじゃないか?
0295デフォルトの名無しさん
2006/06/07(水) 20:05:00別に高尚というほどのものではないが、ある言語がコンパイル言語かスクリプト言語
かどうかと(この区別の仕方も問題大有りだがそれは置いとく)、その言語がクロージャ
を持っているかどうかは全く関係が無いことは確か。あと、デリゲートってたぶんC#の
デリゲートのことを言ってると思うんだが、あれはMS用語であって、C#のあの機能に
対する用語としては全く一般的じゃない。
0296デフォルトの名無しさん
2006/06/07(水) 20:09:160297デフォルトの名無しさん
2006/06/07(水) 20:30:15逆に言えばC#,Dしか無いんだと思うが。しかも、時系列からして、D言語で
delegateって呼んでるのは、C#での呼称をまねたんだろう。次世代標準に
なるかは知らないけど、delegateはあまりセンスがいい機能だとは思えん。
0298デフォルトの名無しさん
2006/06/07(水) 21:55:270299デフォルトの名無しさん
2006/06/07(水) 22:47:03outer scopeのローカル変数を参照している場合、
クロージャオブジェクトとは別のオブジェクトでさらにラップする必要があるでしょ。
複数のクロージャから共有される場合は必ず。
基本型じゃなければ、実はポインタが指しているわけだから、
複数のクロージャオブジェクトから共有するのは自然にできるけれど。
0300デフォルトの名無しさん
2006/06/07(水) 22:49:220301デフォルトの名無しさん
2006/06/07(水) 23:20:27> outer scopeのローカル変数を参照している場合、
> クロージャオブジェクトとは別のオブジェクトでさらにラップする必要があるでしょ。
> 複数のクロージャから共有される場合は必ず。
これは特に異論を言ったつもりは無い。というか、クロージャのセマンティクスを
考えれば、至極当然だわな。
> 基本型じゃなければ、実はポインタが指しているわけだから、
> 複数のクロージャオブジェクトから共有するのは自然にできるけれど。
これはおかしい。クロージャから共有しているのは、ローカル変数その
ものであって、変数の値じゃないのだから、ローカル「変数」に対する
変更をクロージャ間で共有するためには、基本型じゃなくても
クロージャオブジェクトとは別のオブジェクトでラップする必要があるはず。
0302デフォルトの名無しさん
2006/06/08(木) 00:12:04ヒープに浮いているオブジェクトを共有していれば十分かと。
0303デフォルトの名無しさん
2006/06/08(木) 00:38:40クロージャによって共有されるのは、参照型変数が指している先の
オブジェクトじゃなくて(もちろんオブジェクトも共有されるけど)、参照型変数
そのものなので、オブジェクトだけが共有されても変数そのものが共有されないと、
クロージャAで参照型変数aの指している先を変更した後(ここで、オブジェクトの
中身を書き換えるのではないことに注意)、別のクロージャBから同じ変数aを
参照したときに、クロージャAによって変更される前のaの参照先を指している、
というようなことになってしまう。
0304デフォルトの名無しさん
2006/06/08(木) 06:54:29>>32 の
int sum = 0;
list.each(delegate(int i){
sum += i;
});
で、sum が java.lang.Integer、クロージャの中が
sum = new Integer(sum.intValue() + i);
だった場合に、オブジェクト共有じゃだめでしょ。
0305デフォルトの名無しさん
2006/06/08(木) 08:13:48そしてクロージャが実装されたあかつきには「やはりクロージャは便利だ、すばらしい」でお願いします。
0306デフォルトの名無しさん
2006/06/08(木) 08:21:390307デフォルトの名無しさん
2006/06/08(木) 09:15:16さすがにクロージャに関しては、無名クラスで十分というのは
あり得ない気がする。特に無名クラスを制御構造の抽象化
(内部イテレータなど)に使うのは、冗長過ぎる。複数のメソッドを持っている
オブジェクトの場合は、無名クラスの方がいい場合もあるとは思うけど。
0308デフォルトの名無しさん
2006/06/08(木) 09:16:38あいかわらず分析力のないwww
0309デフォルトの名無しさん
2006/06/08(木) 12:16:34別に分析なんてしてないんじゃない?
Java vs ○○系のスレで何度も起きていることを
そのまま書いただけでしょ。
0310デフォルトの名無しさん
2006/06/08(木) 13:29:23あんたのいってることは
0311デフォルトの名無しさん
2006/06/08(木) 14:37:40もうちょっと勉強してからどうぞ。
0312デフォルトの名無しさん
2006/06/08(木) 14:39:510313デフォルトの名無しさん
2006/06/08(木) 14:40:540314デフォルトの名無しさん
2006/06/09(金) 03:16:58>>305 は
Javaユーザが、Generics導入前には「いらね」と言っていたのに
導入されたら「Genericsネ申」と褒め立てるJavaユーザをクロージャにも当てはめ
シニカルな笑いにしたネタ( ´ー`)y-~~
>>308 は
それをむしろJavaユーザの立場から自嘲的に笑いにしたネタ
もしくは、単に>>305 の諧謔を理解せず笑ったノ(´д`*) レス
>>309 は
それをJavaユーザに対する真っ向非難と受け止めた
瞬間湯沸かしレスヽ(`Д´)ノ
>>310
もう喧嘩と聞いちゃ黙っちゃいられない江戸っ子レス
(゚∀゚ )三 三( ゚∀゚)
>>311
それに便乗した野次馬
( ´・∀・`)ヤレヤレー
そんな感じですかね。
0315デフォルトの名無しさん
2006/06/09(金) 08:43:32つまり、TemplateイラネをGenericsイラネにいまだに脳内変換してるバカってことか。
だれもGenerics神とか言ってねぇし。
スマソ、>>314自体が、そういうバカを装ったネタだったか。
0316デフォルトの名無しさん
2006/06/09(金) 10:13:17いやどうみても>>311宛なんだが
0317デフォルトの名無しさん
2006/06/09(金) 10:14:20まさにその通りだ。
たまにこのスレにでてくる馬鹿はC#厨とかC言語厨とかの
類だろう
0318デフォルトの名無しさん
2006/06/09(金) 13:15:36その意味でいえば、templateもgenericsも同じようなもんだけど。
あれか、templateイラネといっていた手前、genericsが導入されて引っ込みがつかないから
「genericsはtemplateとは違う、tempalteはいらないけどgenericsはマンセー」
といっしょうけんめい言ってるだけか。
大事なのは型引数がつかえることであって、コード生成なのかただのキャストなのかは
あんまり関係ないんだけど。
0319デフォルトの名無しさん
2006/06/09(金) 13:25:58だから、導入したときにgenericsって名前にしたんだろ
0320デフォルトの名無しさん
2006/06/09(金) 23:16:20C++のtemplate「みたいなの」が入るってことになってて勝手にワイワイやってたと思い
0321C++厨
2006/06/09(金) 23:32:26あまり型システムは詳しくないけど、
Modula-3とかOberonの流れを汲むんじゃないの?
多重継承やオペレーターオーバーロードなし。特殊化なんてもちろんない。
0322デフォルトの名無しさん
2006/06/09(金) 23:54:27ifよりswitchだみたいな風潮がまだあるのか、余り普及して内容に思える
0323デフォルトの名無しさん
2006/06/10(土) 00:05:13みなGenericsのお陰で可能になったことなんだよ。
Genericsを導入するまでこれら三つを導入するわけにはいかなかった。
0324デフォルトの名無しさん
2006/06/10(土) 00:06:11どういうこと?
enumはswitchでかけるし
0325デフォルトの名無しさん
2006/06/10(土) 03:17:28投下してみる。
JavaにContinuation(継続)機構は必要か?
http://blogs.sun.com/roller/page/gbracha?entry=will_continuations_continue
俺はあんまり良く知らないんだけど、SchemeとかRubyにはContinuationという
機能がある。これは言うなれば、メソッドを呼び出す時に「おまえ、自分の処理
が終わったらこれを呼べよな」とクロージャを渡してしまう感じだろうか。
もちろんクロージャは(ちょっと前に話題に出てたけど)その時のスタック状態
さえも保持してるので(スコープから外れても、クロージャ内ではまだローカル
変数にアクセスできる、とか)、一種のlongjumpとして働くってことですな。
(というか、そこまでしか分からんかった....)
リターン値を見てから処理を決めて....という処理が不要になって、プログラムは
シーケンシャルにどんどん突き進めるという利点と、呼び出し元じゃなくても一気に
復帰できる上に、その時のスタック状態まで復元してしまうという、いわば「スタック
フレームごとあとで使うから保存しちゃえ」という強力な機能なんだってな。
なんだかContinuation-based Web Serverとかいうものもあるらしい。
で、この機能がJVM(JavaじゃなくてJVMだよ)に必要かどうかという議論。
リンク先ブログの人は、「ウェブアプリはAJAXとかで遷移の少ない方向へ移って
いってる過渡期で、移行が完了したらContinuation-based Web Serverの利点は
過渡期の遺物になっちゃう可能性があるし、JVMの大改造が必要だしセキュリティ
モデルに影響を与えるからイラネ」といってる模様。
いろんなサイト見て、Continuationは便利そうだが、正直分かりにくいし使いどころ
が難しい気がするので、俺もイラネ、という感じだな。
0326デフォルトの名無しさん
2006/06/10(土) 03:43:38欲しい新機能は、switchの代替になるようなパターンマッチング。
ラベルにGOTOするんじゃなく、値を返す奴がいい。
int result = match<Integer>(obj) {
A : execute(); return 0;
B : return -1;
default : return 1;
}
って感じの。
0327デフォルトの名無しさん
2006/06/10(土) 06:24:44細かいところだけど、ちょっとツッコミをば。
> これは言うなれば、メソッドを呼び出す時に「おまえ、自分の処理
> が終わったらこれを呼べよな」とクロージャを渡してしまう感じだろうか。
これは、継続渡しスタイル(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();
0328デフォルトの名無しさん
2006/06/10(土) 10:34:320329デフォルトの名無しさん
2006/06/10(土) 10:57:52コンパイラがifに展開するんだとさ
int&switchによる高速さはenum&switchにはない
0330デフォルトの名無しさん
2006/06/10(土) 11:15:29Enum.ordinal() 使ってint型にして switch するだけなんだけど。
この話も Mustang にも Dolphin にも関係ないね。
0331デフォルトの名無しさん
2006/06/10(土) 11:17:430332デフォルトの名無しさん
2006/06/10(土) 11:29:36>>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;
}
}
}
0333デフォルトの名無しさん
2006/06/10(土) 18:15:07実際にどう実行されるかは JVM 側のオプションでも変わって来るんじゃなかったっけ?
0334デフォルトの名無しさん
2006/06/10(土) 18:43:02>タイプセーフenumの実現も可変長引数の実現も拡張forの実現も
>みなGenericsのお陰で可能になったことなんだよ。
なんで?
for (String str: list) {
...
}
を
for (Iterator $it = list.iterator(); $it.hasNext(); ) {
String str = (String)$it.next();
...
}
に展開するだけだと思うんだけど、Generics関係なくね?
0335デフォルトの名無しさん
2006/06/10(土) 18:59:16おまえはtype safeという意味がわからんのか?
0336デフォルトの名無しさん
2006/06/10(土) 18:59:49おれの記憶だとparameterised typingが希望されてて、その例としてC++のテンプレートが挙げられていた。
C++のテンプレートそのままが欲しいやつっていたのかな。欲しかったのはあくまで型引数がつかえることじゃない?
でも昔はGenericsとかGeneric Programmingという言葉はあまり浸透してなかったから、
話としては「テンプレートみたいなのが欲しい」という表現がよく使われていた。
つまりC++のテンプレートが欲しいんじゃなくて、型引数が欲しかったということ。
だから
>>172
>いっておくがC++のtemplateとJavaのgenericsとはまったく別もんだよ。
のようなのには、なんというか話がずれてるように思える。
どっちもparameterized typingなんだからおんなじじゃん?実現方法を問題にしてるんじゃないんだよ。
C++のtemplateは否定してJavaのgenericsは肯定してるやつらって。
まあいつものことか。
0337デフォルトの名無しさん
2006/06/10(土) 19:12:04templateを否定してgenericsを肯定してるやつらは
template固有の話を問題にしているんだから、
>>336と話が合うはずがないよ。
とオモタ。
0338デフォルトの名無しさん
2006/06/10(土) 19:15:50実現方法を問題にしてたんだよ。
0339デフォルトの名無しさん
2006/06/10(土) 19:18:295.0と7の間にあるバージョンだから、印象が薄すぎて・・・
0340デフォルトの名無しさん
2006/06/10(土) 19:23:500341デフォルトの名無しさん
2006/06/10(土) 19:33:150342デフォルトの名無しさん
2006/06/10(土) 19:37:36流れおかしくないか?
0343デフォルトの名無しさん
2006/06/10(土) 19:44:295と7は変更が大きいからね。
6はもともと5.1になる予定だったわけだし。
0344デフォルトの名無しさん
2006/06/10(土) 19:55:18せいぜいコンカレントまわりくらい
6は結構大きい変更が多いので楽しみ
中でもSwingの大規模修正はびっくりなくらいでは?
0345デフォルトの名無しさん
2006/06/10(土) 19:57:320346デフォルトの名無しさん
2006/06/10(土) 20:22:200347デフォルトの名無しさん
2006/06/10(土) 20:22:490348デフォルトの名無しさん
2006/06/10(土) 23:06:59Swingの大規模修正ってどんなの?
あんまり詳しくないので純粋に聞いてみる。
最近Swingに興味を持ったもので....
0349デフォルトの名無しさん
2006/06/10(土) 23:50:35foreachに関してはともかくtype safe enumは
Genericsのおかげで「簡単になった」。
タイプセーフの実装は、自分で色々書けば出来たよ。
Effective Javaとか読んでみないか?
0350デフォルトの名無しさん
2006/06/10(土) 23:53:57えーっと、漏れは>>344じゃなくて何が大きいか何とも言えないが、
個人的に助かってるのは
・GroupLayoutの搭載
・WindowsLAFの改善
・サブピクセルAAレンダリング
あたりかな?中では最適化がかなりゴロゴリありそうだけどよくしらない。
0351デフォルトの名無しさん
2006/06/11(日) 00:05:12type safe enumを定義するのに、Genericsはほとんど使わないわけだが・・・。
0352デフォルトの名無しさん
2006/06/11(日) 00:06:10のどこでGenericsがいるのだろうか。
0353デフォルトの名無しさん
2006/06/11(日) 00:19:01>>352
Java 5.0のAPIドキュメント見ればわかるけど、列挙型の基底クラスである
java.lang.Enumの定義自体にGenericsが使われているよ。
0354デフォルトの名無しさん
2006/06/11(日) 00:23:07Effective Javaのtypesafe enumの実装みたことあるのか?
0355デフォルトの名無しさん
2006/06/11(日) 00:37:25一番大きいのはAWTスレッドがとまっていてもウインドウが描画されることかと
あとはJava2DでOpenGLパイプラインがLinux系でデフォになるようでクライアント分野も
DirectX使ってるWindowsに速度的に追いつくかなと
ただ、5.0のOpenGLサポート見てると非常に期待が出来ないのだけれども
JOGL使ってるなら大丈夫かな
つーかJOGL標準APIにしてください
>>354
そういうこといってるわけじゃないだろ?たぶん
0356デフォルトの名無しさん
2006/06/11(日) 00:49:22そりゃもちろん見たことある。というか、何故Effective Javaのtypesafe enumの
話になる?Java 5.0のtypesafe enumがEffective Javaのそれが元になっている
のは知ってるが、全く同じというわけじゃない。
0357デフォルトの名無しさん
2006/06/11(日) 01:00:42そりゃGenericsがなくてもtypesafe enumが作れるからだろ
GenericsがないとJava 5.0と全く同じものはつくれないけど
typesafe enum自体はつくれる
Genericsのおかげで作れたなんて変だって話でしょ
0358デフォルトの名無しさん
2006/06/11(日) 01:18:45いや、そりゃtypesafe enum自体はGenericsが無くても作れるけど、
Enum同士のcompareToによる比較などが型安全にできないでしょ?で、>>349は
そういうのを指して
> foreachに関してはともかくtype safe enumは
> Genericsのおかげで「簡単になった」。
と言っていると思ったんだが。あ、もちろん>>323の言っている
ことは変だと思ってるけど、>>351や>>352は>>349に対する言及
だと思ったので。
0359デフォルトの名無しさん
2006/06/11(日) 02:07:13【JavaFive】C#からJ2SE5.xへ進化【TigerShot】
http://pc8.2ch.net/test/read.cgi/tech/1094891986/
0360デフォルトの名無しさん
2006/06/11(日) 02:50:300361デフォルトの名無しさん
2006/06/11(日) 03:31:270362デフォルトの名無しさん
2006/06/11(日) 04:28:000363デフォルトの名無しさん
2006/06/11(日) 04:29:130364デフォルトの名無しさん
2006/06/11(日) 08:59:34compareTo以外に何かある?
0365デフォルトの名無しさん
2006/06/11(日) 13:03:250366デフォルトの名無しさん
2006/06/11(日) 15:11:08それはWeakest Post Conditionという奴か?
ならば、Template Method パターンまたはアスペクト指向で
実現できまいか?
0367デフォルトの名無しさん
2006/06/11(日) 15:15:06展開する前の前処理にGenericsが関与してるに1バイト
0368デフォルトの名無しさん
2006/06/11(日) 15:23:10EnumクラスのJavadocを見ると
Enum<E extends Enum<E>>
使われて無くはない。
Genericsが使われているかいないかで
Javaのenumの仕様がかなり異なってくる。
C/C++のようなtype unsafeなenumにするわけにはいかないから
Genericsを導入するまでenumを導入するわけには
いかなかった理由がよくわかる。
0369デフォルトの名無しさん
2006/06/11(日) 15:24:19Genericsのお陰で作りやすくなった
以前より比較的正しいenum実装ができるように
なった、とでも言うべきだろう。
0370デフォルトの名無しさん
2006/06/11(日) 15:29:58equals(), clone(), hashCode(), toString(), valueOf()
0371デフォルトの名無しさん
2006/06/11(日) 15:47:30そのMustangの話題ですらないわけだが。
0372デフォルトの名無しさん
2006/06/11(日) 15:55:01Swing周りの改良は今後も進むかもしれないけど、業務では変わらない?
JVM統合の流れになっていくのかな
0373デフォルトの名無しさん
2006/06/11(日) 16:14:19くわしく
0374デフォルトの名無しさん
2006/06/11(日) 17:15:01業務でSwing使えばいいじゃない
すでに社内システムはWEBアプリは衰退していてリッチクライアントが普及してきているよ
不特定多数ならWEBアプリだけど、開発効率が段違いにわるいので
コスト増が問題になってるという感じ
0375デフォルトの名無しさん
2006/06/11(日) 20:23:42コンテナに間違ったモノ突っ込むなんてバグはもとから経験無いけどなぁ。
0376デフォルトの名無しさん
2006/06/11(日) 20:50:160377デフォルトの名無しさん
2006/06/11(日) 20:58:09他人の作ったコード呼ぶ部分でListとだけ書かれてると困るので助かる
JavaDocとか整備されてないライブラリとかで泣きながらソースよんで苦労することが減った・・・
List<Map<Key,Value>>とか業務系だと頻繁に使うしね
大規模開発こそ結合部のドキュメント系が必要なのに整備されている率が低い傾向にあるのはどういうことだろう
ウォーターフォールの出来上がってくる設計書類にそんなものがまったくないという
少人数でライトウェイトな開発していればまずインターフェース作りましょうとかドキュメントは
大事なところだけ書いてあとはJavaDocにガンガン記述していきましょうとかそういうのが多いな
とりあえず何も考えなくてもよくなるEnumはかなり恩恵があるのは確かだが
0378デフォルトの名無しさん
2006/06/11(日) 21:09:27valueOf はそうだけど、他は関係ないような気がするよ。
0379デフォルトの名無しさん
2006/06/11(日) 21:13:13そのList<Map>構造の部分、今度はXMLになるかもね
また構造わかんねwwww
0380デフォルトの名無しさん
2006/06/11(日) 21:16:08例えばMapでキーや値の型を仕様変更した場合に、
根っこの一箇所変えれば
コンパイルエラーがどこを直せばいいか教えてくれるのが楽。
ってのもある。
0381デフォルトの名無しさん
2006/06/11(日) 21:18:59JVM統合って何?
0382デフォルトの名無しさん
2006/06/11(日) 21:23:260383デフォルトの名無しさん
2006/06/11(日) 21:36:46間違ってダウンキャストしなくて済むし
いちいちドキュメントにこの型にはこれ以外入れるなとか
書かなくて済む。
0384デフォルトの名無しさん
2006/06/11(日) 21:38:12Enumの中に入れ子になっているオブジェクトの型が一致しなかったら
あれなのでequals()とか、hashCode()も重要
0385デフォルトの名無しさん
2006/06/11(日) 23:04:03Listが3つ、なんてざらにある。
で、そのListに何が入っているのかはドキュメント化されてないし、うっかりしてると
Mapを入れるべきところにListを入れてしまったり....と、orzになる機会は山ほどある。
genericsについていろいろ言われているようだけど、Collectionフレームワークの型
安全性を高めるという点について「イラネ」と言ってたヤツを俺はしらないな。
Goslingタンもそこをとても重視していたみたいだよ。ソースが見つからないがそんな
こと言ってた。
0386デフォルトの名無しさん
2006/06/11(日) 23:19:53どんな馬鹿でもいるもんだから。
そんな馬鹿が手のひらを返してgenerics便利だと言ったところで一体なんだというのだ?
0387デフォルトの名無しさん
2006/06/11(日) 23:21:55やっと5.0つかった開発がスタートしはじめているということだろうか
0388デフォルトの名無しさん
2006/06/11(日) 23:24:02何でもない
いや、それがこの話の結論のはずなんだが
それで納得できない暴れたい盛りのやんちゃ坊主がたくさんいてな・・・
前向きでない議論は無駄。
現行Genericsの不備点を挙げて、こうなればいいのに・・・とかいう話ならまだ広がるんだが・・・
0389デフォルトの名無しさん
2006/06/11(日) 23:31:53そろそろドカティもJava5に入り始めるんじゃない?
0390デフォルトの名無しさん
2006/06/12(月) 00:03:01・)ノシ
1.3で開発してるドカティが来ましたよ
こんな太古のアプリ改造するくらいなら新規で作れよそもそも設計からして腐ってんだからさぁとか言いながらコード書いてますよ
5で書きたいよぅ>>377が言ってる問題にぶちあたりまくりで元からバグバグなコードいじる度にビクビクしなきゃならんのは嫌だ
0391デフォルトの名無しさん
2006/06/12(月) 00:18:57そういうなおいらは去年ようやく1.1から1.4へのUpgradeに成功した
2年ほど前に出した見積がようやく日の目を見たって所だ
0392デフォルトの名無しさん
2006/06/12(月) 00:26:071.4.2で作ってるんだが、_??の部分までぴったり合わせるよう指定が来る
いやいや、それってバグフィクスのバージョンだろと突っ込みたくでも突っこめない
仮にバグっててもそれのお陰でうまく動いてるのを当てにするんだろうな
0393デフォルトの名無しさん
2006/06/12(月) 00:27:19なんか生き残れるのか心配になるようなローペースさだな。
0394デフォルトの名無しさん
2006/06/12(月) 00:50:10J2SE5.0使ったシステム2つうけてるけど、ついていける人とついていけない人がやはり現れますな
勉強し理解する人は5.0すごくよくなってるといい、勉強しないで分からないというだけの人は
なんでこんなバージョンにしたの?といってくる
知的労働者なんだからまったくついていけないようだったら首を切るのを勧めたほうがいいだろうね
そういうのはだいたいCOBOLメンテしてきてVBやってる人に多いかと思えばそんなことはなく
COBOLもしってCもやれてJavaもきっちりしってる人も割と多い
言語の得て不得手をしっかりと理解できているかどうかはが大事
逆にJavaやCでずっとWEBアプリ業務でやってきましたという人種でもかなり危険なやつらが多い
1メソッド数百行をスコープ範囲狭めることなく平気で書くのが特徴だから分かりやすいといえばそうなのだが
0395デフォルトの名無しさん
2006/06/12(月) 01:34:52涙が出るほど共感を覚えるが、スレ違いではあるまいか
0396デフォルトの名無しさん
2006/06/12(月) 01:46:240397デフォルトの名無しさん
2006/06/12(月) 02:19:450398デフォルトの名無しさん
2006/06/12(月) 03:55:55_XX変えたらテストやり直し。保守的とかじゃなくてブロの常識。
0399デフォルトの名無しさん
2006/06/12(月) 04:23:10常識かどうかも。
そこまでの信頼性が求められるかどうかだと思われ。
信頼性もとめるなら、まだJava2SE5.0は使えないんじゃないかな。
0400デフォルトの名無しさん
2006/06/12(月) 04:32:565年単位の利用期間に対して、それ以前にSUNのサポートが切れるJVM使うのもできないし・・・
1.4.1のGCのバグで散々な目にあったよ・・・orz
しかし、Tigerはそろそろ使えるようになってると思うんだが・・・
Mustangが出るってのに2世代前しか信頼できないって状況はないんじゃない?
というか、信頼性なんて自分たちで確かめるもんだし。
0401デフォルトの名無しさん
2006/06/12(月) 05:56:32自分達で確かめれる程度の信頼性なら、自分達で確かめればいいと思う。
0402デフォルトの名無しさん
2006/06/12(月) 06:13:520403デフォルトの名無しさん
2006/06/12(月) 10:58:35それにかかるコストを誰が払っていると思っているんだ。
誰も払わなければやるだけ無駄でSunに踊らされているだけだろ。
ちょっとバージョンアップしたくらいでまたそのバージョンに
遭わせて無駄に過剰テストして無駄に管理を厳しくするのは
コストの無駄。テストの自動化もできない奴がそういうことをしたがる。
0404デフォルトの名無しさん
2006/06/12(月) 11:09:350405デフォルトの名無しさん
2006/06/12(月) 11:24:21問題が出てからの対処で良いならその考え方もあるが
何でか知らないが開発会社に全てのコストを押し付ける顧客が多すぎるよな
やって欲しいならそれに見合う金を払えってんだ
0406デフォルトの名無しさん
2006/06/12(月) 12:30:30おまいは、安かろう(品質)悪かろうのシステムしか経験がないのかも知らんが、
それを一般化するなよ。>>399の言う通り、どこまで品質が求められるかどうかがポイント。
自分の基準で過剰テストだの無駄だの、安物PGにしか見えないからあまり言わない方がいいよ。
だいたい、テスト自動化となんの関係があるんだか…。
0407デフォルトの名無しさん
2006/06/12(月) 13:19:56ひとこと言わせて貰うと、お前は考え方が古い。
20年くらい前のCOBOLerが大好きながむしゃら管理手法で
やっている。
Java5でないとうごかない製品ももうすでにかなり出ている。
すでにJava5は実績としてはかなりのものだ。
0408デフォルトの名無しさん
2006/06/12(月) 13:39:06説教したい/されたいならマ板でどーぞ。
0409デフォルトの名無しさん
2006/06/12(月) 13:45:06運用トラブルリスクはそっちのけで安価・短期が最優先という考え方もアリだろう。
だが、システムの必要品質を確保するのに、古いも新しいもない。全然理屈になってないよ。
そんな事言ってると、底辺PGとバレるから気を付けた方がいいぞ。
というか、テスト自動化されてんなら、テストやり直しに何でファビョってんの?
0410デフォルトの名無しさん
2006/06/12(月) 15:26:14最近じゃない?
やっとベンダにとって、サポートコストがぺイするレベルに枯れてきたって事か。
0411デフォルトの名無しさん
2006/06/12(月) 15:34:32たまにJavaすれにVBあがりのドトネト厨が
割り込んで来ることがあるけどそれ系の厨かなw
0412デフォルトの名無しさん
2006/06/12(月) 15:36:07商用じゃなきゃ信用できない
なんていったらLinuxがアップデートされるたびに
過剰テストにものすごく無駄に時間をかける羽目になるんだが。
Java5の枝番号が変わっただけでその都度細かいテストするのも
まさに効率悪い。
0413デフォルトの名無しさん
2006/06/12(月) 16:19:100414デフォルトの名無しさん
2006/06/12(月) 17:28:41堅いシステムにも使える様にしてくれる、と言うことで。
0415デフォルトの名無しさん
2006/06/12(月) 18:04:05Genericsの現実的な使いどころって、
コンテナ(ぽい)オブジェクトの中身の明示以外どんなのがある?
0416デフォルトの名無しさん
2006/06/12(月) 20:10:02おまえ、ハイエンドの品質の厳しさわかってる?
0417デフォルトの名無しさん
2006/06/12(月) 20:10:44次世代Java厨の動向
0418デフォルトの名無しさん
2006/06/12(月) 20:15:15type safe enumだろ (以下ループ
0419デフォルトの名無しさん
2006/06/12(月) 20:38:31Observer/Observableを型安全に使えるようにするとか。
残念ながらJava5のそれは、Generics対応になってないが。
あとは、コンテナと無関係ではないが、型に依存しないアルゴリズム
のライブラリ化とか。C++のtemplateみたいに、今までできなかったことが
できるわけじゃないので、今まで型安全にできなかったこと(Object型で代用して
いたこと)を型安全に行えるようにする、というのが主な使い道じゃないかなあ。
0420デフォルトの名無しさん
2006/06/12(月) 21:30:17>>419
俺もそう思う。
Objectを突っ込みまくっていた部分を見直して
綺麗なロジックが書きやすくなるという部分かな、と。
アスペクトとまでは行かないけれど、ロジックだけを切り出して
実装できるのも、何という機能というわけじゃないけど面白い。
言ってみれば、Map,ListなどGenericsの恩恵を直に受けたライブラリは
そのMap,Listという振る舞いを型に依存しないで実装できたいい例だったということだから。
0421デフォルトの名無しさん
2006/06/12(月) 23:09:20次世代はどうした。
0422デフォルトの名無しさん
2006/06/12(月) 23:39:48お馬さんのJava2Dレンダリングどーなってるの?
Windows版はデフォはDirectXのまま?
あいかわらずほとんどの描画がアクセラレーションきかないの?
0423デフォルトの名無しさん
2006/06/13(火) 02:31:28次世代Javaプログラマの動向
0424デフォルトの名無しさん
2006/06/13(火) 10:33:25煽ってる奴やJavaが嫌いな奴はJavaプログラマ=Javaしかできないプログラマと
脳内変換して話を進めたがるから話が当然噛み合わないわけだし。
実際に、Javaの仕事をするときにJavaしか知らないでは、まったく
仕事ができないものだが。
0425デフォルトの名無しさん
2006/06/13(火) 10:35:03実際にJavaしか知らないって奴がいっぱい居るじゃん
まあそういう奴はJavaすら知らないって事が多いけど
0426デフォルトの名無しさん
2006/06/13(火) 11:04:30Javaしか知らない奴
という表現は論理的に矛盾していると
0427デフォルトの名無しさん
2006/06/13(火) 12:17:24本当に底辺野郎じゃなければ
もっと融通が利いているはず。
0428デフォルトの名無しさん
2006/06/14(水) 00:10:18彼の主張は「C++Templateはいらないと言ってい他奴がGenericsは欲しいと言いだした」
ということらしいがな。
彼の脳内ではC++Template == Generics
でないと気が済まないようだ。
0429デフォルトの名無しさん
2006/06/14(水) 00:34:43それよか、久々にMustang案内入れるか・・・
Mustang b87
ttp://download.java.net/jdk6/binaries/
ttp://www.java.net/download/jdk6/changes/mustang-b87.html
changeを見ると壊れてんのかな?と思うが新しいフィーチャーはない。
Java SE 6.0 Release 1 Developer Preview 3
ttp://connect.apple.com/
Appleも追従してDeveloperPreviewを出してきている
こちらはb82ベース
NewFeatureは
* Applet support (plug-in)
* Java Web Start
* Java SE 6 Java Preferences utility
PowerPCのJITはまだらしい。
0430デフォルトの名無しさん
2006/06/14(水) 01:12:23> PowerPCのJITはまだらしい。
というかMacはもう…
0431デフォルトの名無しさん
2006/06/14(水) 10:30:430432デフォルトの名無しさん
2006/06/14(水) 11:04:340433デフォルトの名無しさん
2006/06/14(水) 12:31:07どうしてもtemplate!=genericsにしたいようだが
parameterized typeという点ではどっちも同じ
仕組みが違うのはあたりまえ
0434デフォルトの名無しさん
2006/06/14(水) 12:37:430435デフォルトの名無しさん
2006/06/14(水) 13:04:04いや、違いすぎるだろ。
C++ templateはかなり独特だから。
0436デフォルトの名無しさん
2006/06/14(水) 13:32:583人ともtemplate!=genericsと言ってるのに論争になるのワロス
0437デフォルトの名無しさん
2006/06/14(水) 13:49:42既に実装済み?
0438デフォルトの名無しさん
2006/06/14(水) 14:26:33template<genericsとtemplate>genericsとtemplate>>>genericsじゃ論争になるだろ
0439デフォルトの名無しさん
2006/06/14(水) 14:38:50と区切ってしまい、何のことかわからんくなってた。
0440デフォルトの名無しさん
2006/06/14(水) 15:55:59もし、templateとgenericsが実現の仕組みが**多少**違うくらい
で、同じようなものだと思っている人がいるとしたら、もうちょっと
(C++の)templateのことを勉強した方がいいと思った。実際、
templateとgenericsはある程度までは同じ目的で使えるが、
かなり違うセマンティクスを持っている。優劣をここで述べる
つもりは無いが、それだけは確かだ。
0441デフォルトの名無しさん
2006/06/14(水) 16:19:17おまえまだgenericsに慣れてないな。
「genericsとtemplate」を扱えるtemplate<?>型のgenericsという変数を宣言しているのだよ。
0442デフォルトの名無しさん
2006/06/14(水) 17:00:18せっかく新ネタ持ってきてくれてる人がいるのに、いつまでも粘着しないでおくれ。
0443デフォルトの名無しさん
2006/06/14(水) 17:06:45劣勢だな。
流れだし、いいんでねぇの?
0444デフォルトの名無しさん
2006/06/14(水) 17:22:21マ板的なネタで盛り上がるぐらいなら閑散としてたほうがマシ。
0445デフォルトの名無しさん
2006/06/14(水) 17:39:260446デフォルトの名無しさん
2006/06/14(水) 18:25:45templateクラスがgenericsとtemplate型をパラメータに持って
と思ったらなんだその文法わ
0447デフォルトの名無しさん
2006/06/14(水) 18:48:060448デフォルトの名無しさん
2006/06/14(水) 19:31:090449デフォルトの名無しさん
2006/06/14(水) 19:36:55Desktop#browse, mail, edit, open, printなどができた。
0450デフォルトの名無しさん
2006/06/14(水) 19:40:37まあそれらの機能だけでも十分かもしれませんね。
0451デフォルトの名無しさん
2006/06/14(水) 20:06:43全部 AWT の機能だけど。
0452デフォルトの名無しさん
2006/06/14(水) 21:00:43何かすっきりしないと思ったんだよね。
現世代Javaの動向 1
http://pc8.2ch.net/test/read.cgi/tech/1150286189/
【JavaFive】C#からJ2SE5.xへ進化【TigerShot】
http://pc8.2ch.net/test/read.cgi/tech/1094891986/
はどうすんだって話はあるけど、ま、Mustangリリース後は、
ここがDolphinの話題になって、現世代にMustangが含まれる、でいいかと思って
0453デフォルトの名無しさん
2006/06/14(水) 21:13:48フォントのAAがヒントに従ってかかるようになった。
5のswing.aatext=trueのように、UI Gothicにまでかかることはなく、tahomaなんかには
なにもしなくてもAAがかかる。
0454デフォルトの名無しさん
2006/06/14(水) 21:24:230455デフォルトの名無しさん
2006/06/14(水) 21:28:53ビットマップ情報使えるサイズの場合はアンチエイリアスかからないだけなんでは?
0456デフォルトの名無しさん
2006/06/14(水) 23:31:36browseとトレイはありがたいね
0457デフォルトの名無しさん
2006/06/15(木) 11:50:22スレ違いを文句いいながら、板違いのスレ建てるわけか。
0458デフォルトの名無しさん
2006/06/15(木) 14:13:460459デフォルトの名無しさん
2006/06/15(木) 23:07:200460デフォルトの名無しさん
2006/06/16(金) 10:08:200461デフォルトの名無しさん
2006/06/17(土) 00:01:52ttp://java.sun.com/developer/technicalArticles/J2SE/Desktop/mustang/beta2.html
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
まぁ、なんや、みんな、これまで通りよろしゅうな
0462デフォルトの名無しさん
2006/06/17(土) 00:28:510463デフォルトの名無しさん
2006/06/17(土) 07:03:58うわぁマジで?俺も使ってるけど標準はやりすぎだろ…
HSQLのが速いし組み込む目的ならこっち
0464デフォルトの名無しさん
2006/06/17(土) 07:20:30まあ、IBMの政治力の勝利ってことでしょう。
DB2互換だし。
0465デフォルトの名無しさん
2006/06/17(土) 07:22:48NetBeans5.5のメニューが「Derby DB」から「Java DB」に変わったときから気になってた。
0466デフォルトの名無しさん
2006/06/17(土) 07:25:44JVMのベンダー互換が崩れるきっかけになりそうでやだな
JDOQLだかに準拠させる規格でもあるのかな
0467デフォルトの名無しさん
2006/06/17(土) 08:09:14それを言うならJPQL(旧EJB-QL)かな。
IBMの意図はわかるけど、Sunの意図がわからない。
0468デフォルトの名無しさん
2006/06/17(土) 10:05:420469デフォルトの名無しさん
2006/06/17(土) 10:44:550470デフォルトの名無しさん
2006/06/17(土) 10:51:17まったくターゲットが違うしJDBCドライバサポートが1.0レベルだったようなきが
HSQLDBの後継のやつはシンプルさが失われてるらしいのがちと心配
スタンドアロンアプリで付属DBとしてならHSQLDBのほうが楽かと
Windowsの業務系スタンドアロンパッケージのほとんどがMSDE使ってるのと同じような感じで
あちらは将来MSSQL鯖にかえるのが目的にもなってるが
0471デフォルトの名無しさん
2006/06/17(土) 13:38:37ttp://download.java.net/jdk6/binaries/
ttp://www.java.net/download/jdk6/changes/mustang-b88.html
MSVC 2005 Expressでのビルドエラーが解消されている。
只でビルド環境そろえられるって素晴らしい。
日本語ドキュメントのレビューがしたい方はこちら
ttps://jdk-api-ja.dev.java.net/ja/index.html
0472デフォルトの名無しさん
2006/06/18(日) 12:58:55俺は、
> 6382711JComboBox incorrectly rendered with alternate WinXP theme
がうれしい。
0473デフォルトの名無しさん
2006/06/18(日) 20:27:38> 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になるだけ?
0474デフォルトの名無しさん
2006/06/18(日) 20:28:51> DerbyといえどSQL92に完全準拠してるわけではないよな
> JVMのベンダー互換が崩れるきっかけになりそうでやだな
そのうちSQL92互換になってゆくのではないかと。
SQL99互換になればいいんだけどねえ
0475デフォルトの名無しさん
2006/06/18(日) 20:43:02HSQLDBを搭載しているJBossはどのような動きを
示すのか?
HSQLDBをJBossから外してゆくのかな?
0476デフォルトの名無しさん
2006/06/18(日) 20:46:490477デフォルトの名無しさん
2006/06/18(日) 21:04:14XML署名ってRFC3075のことでしょ。
http://www.w3.org/Signature/
http://www.ietf.org/rfc/rfc3075.txt
この辺り、XMLで統一的に扱えるように。
http://www.w3.org/2000/09/xmldsig#X509Data
http://www.w3.org/2000/09/xmldsig#PGPData
http://www.w3.org/2000/09/xmldsig#SPKIData
http://www.w3.org/2000/09/xmldsig#MgmtData
0478デフォルトの名無しさん
2006/06/19(月) 00:58:30SEでWEBサービスが、というのはクライアントの話だろ?
JDBCやRMI、クライアントのソケットと同じでは?
0479デフォルトの名無しさん
2006/06/20(火) 12:55:00アノテーションを使って簡単に。ってことみたいだな。
今時クライアントサイドでも色々やりたいしな。
0480デフォルトの名無しさん
2006/07/02(日) 18:41:14インストールしてみたけど、
どこにあってどう使うのかがわからん。
0481デフォルトの名無しさん
2006/07/02(日) 19:42:57さぁ?アレ適当に訳したから。
原文は、
final Mustang development kit(JDKだね) will(だからまだかも) co-bundle....
ってなってるからまだ入ってないかもよ。
0482デフォルトの名無しさん
2006/07/02(日) 20:00:33β2ってb84だったような・・・
0483デフォルトの名無しさん
2006/07/02(日) 22:15:01の辺りの記事では
Beta2 に入ってるっぽく書いてあるんだけど、
ttp://www.in-vitro.jp/blog/index.cgi/Mustang/20060620_01.html
のように
%JAVA_HOME%/db
には入ってなかった
0484デフォルトの名無しさん
2006/07/03(月) 01:10:440485デフォルトの名無しさん
2006/07/03(月) 02:50:44「変換するときにエラーが発生しました。
指定された変換のパスが有効であることを確認してください」とかいわれる。
jdk-6-rc-bin-b90-windows-i586-30_jun_2006.exe って奴を
3回落としてきてるんだけど、3回とも同じメッセージが出て駄目だった。
b89 だったらインストールできるんだけど。
0486デフォルトの名無しさん
2006/07/03(月) 03:10:10漏れも出る。
インストーラのアイコンも変わってるし、
何か派手な事またしてんのかなーっと思って、b89入れ直しました
0487デフォルトの名無しさん
2006/07/04(火) 09:31:220488デフォルトの名無しさん
2006/07/04(火) 20:51:34場所 所沢(池袋・高田馬場から直通)
よろしくおねがいします
i−want−to−study−java@hotmail.co.jp
0489デフォルトの名無しさん
2006/07/05(水) 02:20:380490デフォルトの名無しさん
2006/07/05(水) 02:42:380491デフォルトの名無しさん
2006/07/07(金) 20:39:21APIドキュメントの翻訳進行中
0492デフォルトの名無しさん
2006/07/12(水) 00:26:450493デフォルトの名無しさん
2006/07/12(水) 02:29:38いや、forumではannualだからビルドねーよ、とのこと
SUNWは7月から会計年度始まるからな
0494デフォルトの名無しさん
2006/07/12(水) 03:01:13> There won't be a promoted build on July 6th because of 4th-of-July holidays. [July 3, 2006]
0495デフォルトの名無しさん
2006/07/12(水) 08:41:36所沢に行くとチーマーに拉致監禁されて
出会い系サイト作らされてry
0496デフォルトの名無しさん
2006/07/12(水) 09:46:35なんだその安すぎる時給は。なめとんのかゴルァ!
時給5000円以上じゃないと絶対に引き受けない。
0497デフォルトの名無しさん
2006/07/12(水) 10:12:48毎回手作りケーキと紅茶が付くとしても?
0498デフォルトの名無しさん
2006/07/12(水) 10:14:23だれの手作りかによる
まずは写真とプロフィール(略
0499デフォルトの名無しさん
2006/07/12(水) 10:37:40割に合わんな。毎日同じもん食っても飽きる。
毎日中華丼やキムチ食わされたらさすがにキレる。
そんな子供だましなことに乗せられる騙される奴は餓鬼や新人や新卒くらい。
そんな給料で結婚子育て生活ができるとでも思っているのか!!!!!!!!!!!!
二人の子どもを大学院に行かせる金も用意できないだろがゴルァ!
授業料がいくらかかると思っているのか貴様!
ケーキが100円、紅茶が150円だとして、時給1000円
だとしても、
一日8時間勤務だとしたら、日給8250円相当にしかならない。
0500デフォルトの名無しさん
2006/07/12(水) 17:52:25人間、夢を持てよ。
0501デフォルトの名無しさん
2006/07/12(水) 17:59:56ケーキが欲しいんじゃない、人はケーキの向こう側に夢を見るんだよ
0502デフォルトの名無しさん
2006/07/12(水) 18:18:09> ケーキが100円
「手作り」ということを忘れている。Priceless
0503デフォルトの名無しさん
2006/07/12(水) 18:27:45>>499 は今が幸せなんだな・・・・
手作りケーキがタダのケーキとして扱える位に・・・ちくしょう・・・orz
こんな小さな幸せでも拾いたいのは不幸せということか・・・
0504デフォルトの名無しさん
2006/07/12(水) 18:35:160505デフォルトの名無しさん
2006/07/15(土) 11:51:22いろいろ弄って、
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 でインストールできてる人いるんだろうか?
0506デフォルトの名無しさん
2006/07/15(土) 23:11:22相手が男だったら夢も潰れるよ。
それだったら高い給料から
差し引いて自分の金でケーキを買って食べるよ。
ついでに彼女にケーキをプレゼントする。
ケーキもらって喜ぶのは男より
女の子のほうだからな。
男はケーキより金のほうがいいに決まってる。
ケーキの上や中に不味いものや嫌いなものや
むさ苦しい男の手垢によって付着した黄色ブドウ球菌が
入っていたらそれだけで嫌な気分になるどころか
食中毒を起こして治療費負担が増大するからな。
それだったら自分でケーキを買った方がマシ。
>>497はせいぜい女を騙して働かせるんだな。
0507デフォルトの名無しさん
2006/07/15(土) 23:12:17線香花火のように長続きしない幸せだ。
そんなことで幸せを感じるのは貧乏人や女だけ。
馬鹿な経営者に洗脳されて長時間労働させられて
幻覚を見ているだけだ。
0508デフォルトの名無しさん
2006/07/15(土) 23:44:57埋もれるほどの財を得ても他人を呪い明日の裏切りに怯える悲惨な人生もある
0509デフォルトの名無しさん
2006/07/16(日) 00:40:55結婚子育てとか言ってるけど、無縁じゃないの?
0510デフォルトの名無しさん
2006/07/16(日) 12:28:52カーネギーやナポレオンヒルやロックフェラーはそんなに悲惨かね。
堀江被告みたいなバカじゃあるまいし。
0511デフォルトの名無しさん
2006/07/16(日) 12:29:40うーむ、そうやって人を見た目で判断しちゃ逝けないなー
0512デフォルトの名無しさん
2006/07/16(日) 14:13:59何かいやな事があったんだな・・・強く生きていこうぜ・・・
で、俺もb90,b91のインストール状況は気になる。
b90で、
Eliminate installshield dependency for JDK offline msi installer
って言ってる変更が気になるんだよな・・・
0513デフォルトの名無しさん
2006/07/16(日) 18:44:24都合が悪くなると昇給する代わりに
飯を奢って食わせてどうにか凌ぐ社長って奴じゃね?
半年に一回5000円の飯奢って貰うんだったら
昇給として月収5万アップして貰って自分の金で
伊勢海老なりフランス料理なり食った方がましってことだろう。
0514デフォルトの名無しさん
2006/07/17(月) 11:45:34JDK6にむけて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になってる
どなたか、解決方法を教えていただけないでしょうか。よろしくお願いします。
0515デフォルトの名無しさん
2006/07/17(月) 11:51:56むしろxとyがint型なのがおかしい気がする……
0516デフォルトの名無しさん
2006/07/17(月) 16:38:11ありがとうございます。
>ECMAScriptの数値型って浮動小数点型しかないから、
そうなんですか。初めて知りました。
それだとすごく困りました。どうしよう。
0517デフォルトの名無しさん
2006/07/17(月) 17:25:42イコールでの数値判定は危険
だが、Excelは使われてる
もちろんそれが困る用途もあるが
要は用途による割り切りかたかと
0518デフォルトの名無しさん
2006/07/17(月) 20:15:34誤差がどうとかではなくて、型が勝手に変わってしまうのを問題にしています。
JavaScriptを設定ファイルがわりに使おうと思ってたんですけど、型が勝手に変わるとなんぎします。
x = 1;
y = x + x;
で y が double になってしまうなんて。
for (i = 0; i < n; i++) {
...
}
で i がdoubleだなんて。
どうしたものやら。
0519デフォルトの名無しさん
2006/07/17(月) 20:55:17場所 所沢(池袋・高田馬場から直通)
よろしくおねがいします
i−want−to−study−java@hotmail.co.jp
教える対象は超初心者です。
専門学校などでJavaを勉強されていて夏休みだけ教えたいという方も歓迎です
0520デフォルトの名無しさん
2006/07/17(月) 21:12:370521デフォルトの名無しさん
2006/07/17(月) 21:36:03なんかRhinoがJava6から脱落したみたいなレスがどっかにあったような…。
0522デフォルトの名無しさん
2006/07/17(月) 21:40:01夏帆クラスの女の子の手作りケーキは付くのか付かないのか、
それが問題だと(ry
0523デフォルトの名無しさん
2006/07/17(月) 21:45:18>>487 ただし、b90インスコに失敗するので試せてない
0524デフォルトの名無しさん
2006/07/17(月) 22:04:310525デフォルトの名無しさん
2006/07/17(月) 22:41:51JavaScript側で設定した変数の値を、Java側にとってこようとしています。
そのため、JavaScript側でintを設定したつもりなのに、Java側に渡るとDoubleになっているのは困る訳です。
0526デフォルトの名無しさん
2006/07/17(月) 22:54:10精度速度保障のために値が変更されなければintのまま扱ってるだけだろうな
定数だけという感じで
だからJavaではDoubleをすべてvalueofで拾うのが正しそうだが
0527デフォルトの名無しさん
2006/07/18(火) 18:12:28ウチで試したら、代入したときから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
0528デフォルトの名無しさん
2006/07/21(金) 17:58:47やはりバグでした。b94でfix予定。
ttp://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6446356
回避策は、
jdk*.exe /lang=1033
としてインストーラを起動。
英語版として起動させるという手段らしいです。
0529デフォルトの名無しさん
2006/07/22(土) 23:13:33型指定されたクラス(たとえばList<String>とか)を
クラス図で記述できるUMLモデリングツールがほしい。
Jude3.0では対応していなかった。
0530デフォルトの名無しさん
2006/07/23(日) 12:58:221.4系のSystemLAFはぜんぜん似てないからちとな
0531デフォルトの名無しさん
2006/08/08(火) 09:03:43b94の変更点一覧によると、インストーラの不具合は予定通り修正されたようだな。
0532デフォルトの名無しさん
2006/08/09(水) 02:17:11いっぺん、アンインストールのときにエラーがでるかもしれんけど
気にせず2回目実行すれば大丈夫だな
0533デフォルトの名無しさん
2006/08/09(水) 19:38:400534デフォルトの名無しさん
2006/08/16(水) 16:38:37チェックしたら7/21にビルド始まってた
ttp://download.java.net/jdk7/binaries/
ビルドサイクルは、まだ確立されてなさげだけど
0535デフォルトの名無しさん
2006/08/16(水) 16:47:24追記:
ベースになってるのがb90-b93らしいので
>>528 の回避策を使わないとインストールできませんので。
0536デフォルトの名無しさん
2006/08/20(日) 17:29:10とんでもない駄作
0537デフォルトの名無しさん
2006/08/20(日) 17:35:070538デフォルトの名無しさん
2006/08/20(日) 17:49:09参照そのものは渡せない。だからライブラリが作りやすいのに。
0539デフォルトの名無しさん
2006/08/20(日) 19:12:00問題なし。
void hoge(int[] a){
a[0]=a[0] * 2;
}
void main(){
int[] lap = {2}
hoge(lap);
int v = lap[0];
System.out.println(v);
}
0540デフォルトの名無しさん
2006/08/21(月) 14:08:500541デフォルトの名無しさん
2006/08/21(月) 14:59:40Arrayでラップか、でもその場合つづりはwrapじゃないか?
0542デフォルトの名無しさん
2006/08/21(月) 15:06:53STARDUST OFFICIAL SITE
http://www.stardust.co.jp/file/profile/kaho.html
こんな子がでたらそりゃどきどきするわな。
ただし時給1000円だと、こんなかわいい女の子と仲良くなった途端
仕事辞めちゃうもんだなw
0543デフォルトの名無しさん
2006/08/21(月) 18:51:32こんなかわいい女の子がプログラミングに興味持つのだろうか?
周りを見回すと、数少ない女はみんな…ry
誰かかわいい女の子がいる職場知ってる?
0544デフォルトの名無しさん
2006/08/21(月) 19:04:01プログラムするところじゃないだろう。本人が好きなら分らんけど、
そうなる可能性は奇跡のように小さいだろうね。
0545デフォルトの名無しさん
2006/08/21(月) 22:03:24http://blogs.sun.com/roller/resources/ahe/closures.pdf
クロージャ変換というのが提案されてて、
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 とかできるようになるとか?
0546デフォルトの名無しさん
2006/08/21(月) 22:30:150547デフォルトの名無しさん
2006/08/21(月) 22:47:37よくわからん。
0548デフォルトの名無しさん
2006/08/21(月) 23:04:29で匿名クロージャで return 文を書かずに、その匿名クロージャが中途完了する場合
(必ず例外投げる場合とか?)は戻り値型が null になるって事らしい。
正常完了する場合とか、引数無しの return がある場合は戻り値型 が void になるって書いてあった。
0549デフォルトの名無しさん
2006/08/21(月) 23:08:150550デフォルトの名無しさん
2006/08/21(月) 23:14:42Object closure() ってのがあって、
そのつもりで (){ return null; } って匿名クロージャ書いて
戻り値型を void にされたら適わん。
0551デフォルトの名無しさん
2006/08/21(月) 23:16:05nullが型になるってことは、そういう場合は
Null closure()
って書かないといけないってことなのかと思ったんだけど。
0552デフォルトの名無しさん
2006/08/21(月) 23:20:07値を返すクロージャと型の互換性が無いと拙いって事では無いかと。
値を返すメソッドを持った interface を書いて、
実際には必ず例外投げる匿名クラスを作りたいとする。
匿名クラスの場合は戻り値型があるから良いけど、
匿名クロージャは明示的に戻り値型を書けないっぽいので。
戻り値型を null にしておけば、どんな戻り値型のクロージャとも
互換性ができるのでは無いかと思う。たぶん。
仮にそーだとすると、null は void の上位クラスって感じになるのかな?
0553デフォルトの名無しさん
2006/08/21(月) 23:25:470554デフォルトの名無しさん
2006/08/21(月) 23:38:53値nullが存在する限り、値nullには型が必要ってだけ。
closureの文法では陽に書く場合があるので、これを機会に導入。
もともと型推論的には必要だったもの。
0555デフォルトの名無しさん
2006/08/22(火) 03:54:04その辺は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である
(以下、引数型や例外に関しての条件が続く)
0556デフォルトの名無しさん
2006/08/22(火) 04:20:12匿名クラスの時みたいに final 付けろって書いてあるね。
0557デフォルトの名無しさん
2006/08/22(火) 12:30:17逆、逆。
匿名クラスのように、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.
また、匿名クラスに対する制約も緩和され、スコープ内のどんなローカル変数も
参照できるようになる
0558デフォルトの名無しさん
2006/08/22(火) 12:35:56> 例えば 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);
みたいな感じで
0559デフォルトの名無しさん
2006/08/22(火) 19:35:52あ、本当だ。嘘ついてすまん。
このスレの >>12 とかでも話題になってる変数の扱いとか、
どーなるんだろね? 後は VM に変更なしで実装できるんか?とか。
0560デフォルトの名無しさん
2006/08/22(火) 21:36:40基本的には、ほとんどの機能はVMに変更なしで、コンパイラのみで
実装できると思う(ただし、クラスファイルフォーマットの変更は必要か?)
ただ、クロージャの中からそれを囲む関数をreturnする機能
(Non-local transferの部分)はVM変更なしでやるのはつらそう
簡単に実装するには、例外を使えばいいだろうけど、それだと性能出ないだろうし
0561デフォルトの名無しさん
2006/08/22(火) 21:38:12自己レス
> クロージャの中からそれを囲む関数をreturnする機能
クロージャの中からそれを囲む関数の外側へreturnする機能、の間違いだ
0562デフォルトの名無しさん
2006/08/22(火) 22:11:08その中でも>>560が心配しているケースはUnmatchedNonlocalTranser例外になる。
0563デフォルトの名無しさん
2006/08/23(水) 17:50:22Javaにクロージャだって。
0564デフォルトの名無しさん
2006/08/23(水) 17:57:580565デフォルトの名無しさん
2006/08/23(水) 18:05:270566デフォルトの名無しさん
2006/08/23(水) 18:49:280567デフォルトの名無しさん
2006/08/23(水) 19:07:550568デフォルトの名無しさん
2006/08/23(水) 19:49:51それとも引数渡し?
0569デフォルトの名無しさん
2006/08/23(水) 22:18:360570569
2006/08/23(水) 22:23:10スレ間違った
0571デフォルトの名無しさん
2006/08/23(水) 22:29:110572デフォルトの名無しさん
2006/08/24(木) 00:48:51今後も、偶数バージョンは小変更、奇数バージョンは大変更という感じになるみたい
0573デフォルトの名無しさん
2006/08/24(木) 01:01:50Java2DのOpenGLがWin環境でもちゃんと動作するようになってるかが見もの
0574デフォルトの名無しさん
2006/08/24(木) 17:32:21いまいちクロージャって理解できていないのだが、
「外側のメソッドのローカル変数にfinal がついていなくてもアクセス可能な匿名クラス」
が仮に認められたら、これはクロージャ?
0575デフォルトの名無しさん
2006/08/24(木) 20:48:36ちょっと違うとおもう。
それよりもマルチスレッド下でローカル変数束縛するとスタック上の実体をコピーで解決するつもりだったらアウトだし
ローカル環境を生かしておくとGCでメモリ断片化激しくなりそうとか厭な考えがよぎっちゃうんだけど、どういう風にするつもりなんだろう?
HotSpotがSelf由来だと考えればなにか考慮されているのだろうけど、関連論文とか乗っかっている書き込みとか見かけた人いる?
0576デフォルトの名無しさん
2006/08/24(木) 21:00:11ECMAScript触ってると特にそう思う。
0577デフォルトの名無しさん
2006/08/24(木) 21:03:03それよりスレッドにクロージャを渡すような使い方は俺はしたくねーな
0578デフォルトの名無しさん
2006/08/24(木) 21:19:25スクリプトだとthisの扱いがいつでもmixinって感じで使いにくいから
クロージャ使わないとデリゲートにならないんだよな
0579デフォルトの名無しさん
2006/08/24(木) 21:52:28必要なら今まで同様プログラマが対処しろって感じ
0580デフォルトの名無しさん
2006/08/24(木) 22:47:06「Server VM と Client VM の動的な変更」がサポートされるとあるんだけど
これってSwingとかで文字列置換メソッドは
Server VMでJITコンパイルできるとかそんなん?
0581デフォルトの名無しさん
2006/08/24(木) 23:46:44>>577
Rubyやってると割と普通な気がするんだが、どの辺がいやなの?
0582デフォルトの名無しさん
2006/08/25(金) 00:13:180583デフォルトの名無しさん
2006/08/25(金) 00:23:38さらなる変化は無いのか?
パラメタライズドクラスを作るのが大変なんだが。
タイプセーフなため、配列と違って、List<Integer>はList<Number>のサブクラスにはできんし。
<>の中にさらに<>を入れ子に書いてとクラス設計が難しい。
パラメタライズされたクラスの継承でのパラメータの扱いといい、
慣れるのが大変。
0584デフォルトの名無しさん
2006/08/25(金) 01:32:15マルチスレッドで、何の問題があるの?
スコープ抜けたときにスタックからヒープにコピーすればいいだけじゃん?
0585デフォルトの名無しさん
2006/08/25(金) 03:48:23流行ってるね
0586デフォルトの名無しさん
2006/08/25(金) 06:38:13そのスレッドで、Runnableなオブジェクトを作って
クロージャを引き渡したらどうなると思う?
そういうこと。
また、今のListener系のような使い方をした場合、
マルチスレッドになるのは目に見えてる。
ただ、先の文書ではそこらへんは保証しないみたい。
主張を読むと、そういう場合は、今まで通り匿名クラスを使うか、
Javaで既に用意されてる並行性の仕組みを使えってこと。
なぜなら、そんなのを必要としない大多数の開発者には
パフォーマンスが落ちるだけで有り難迷惑だから。
0587デフォルトの名無しさん
2006/08/25(金) 06:47:06つワイルドカード
List<Integer> ints = new ArrayList<Integer>();
...
List<? extends Number> nums = ints; //OK
0588デフォルトの名無しさん
2006/08/25(金) 10:19:17List<T extends Number> nums = ints;
はだめなのか
0589デフォルトの名無しさん
2006/08/25(金) 10:25:11public <T> void aMethod() {
List<T extends Number> nums;
//
}
とかならTが型パラメータと分かるので可能だが、そうでなく唐突に
Tが出ても未定義シンボルになる。
0590デフォルトの名無しさん
2006/08/25(金) 10:26:200591デフォルトの名無しさん
2006/08/25(金) 10:45:45いや、普通にできるが。
0592デフォルトの名無しさん
2006/08/25(金) 21:40:020593デフォルトの名無しさん
2006/08/25(金) 21:52:34うーむ。Tの定義ってメソッドの頭かクラス宣言の後だったんだね。
継承使うとき、どうりで変だと思った
class A<T> implements SuperA {}
という表記はうまくいっても
class A implements SuperA<T> {}
はうまくいかず未定義といわれる。
当然、
class A implements SuperA<T extends Number> {
は怒られる
class A implements SuperA<?> {
も怒られる。
0594デフォルトの名無しさん
2006/08/25(金) 23:08:220595デフォルトの名無しさん
2006/08/25(金) 23:21:55確かにgenericsにはまだまだ慣れていないが、
情報が少なすぎていつもGenericsで悪戦苦闘して
こっちは大変なんだよ。
しかし、Genericsでパラメタライズされたクラスを
作ってる奴は少ないんだな。
2chでも稀なほうか。
C++Templateとは似てるようで違うためか、
使いこなせない奴も多いもんだな。
0596デフォルトの名無しさん
2006/08/25(金) 23:34:05情報とか言う以前に仕様書を読めよ。
あと
class A implements SuperA<T> {}
なんか A を使うときにどうやって T が型パラメタか
普通のクラスか見分けるんだよ。少なくとも
class A<T> implements SuperA<T> {}
とやらないとパラメタ指定できないだろ。
0597しろうと
2006/08/25(金) 23:59:55実行時評価するわけじゃなくて匿名インナークラスのSyntaxSugar+α程度のもの
でしかないのなら、別にどっちでもいいんじゃねえのとおもうんだが。
ここのところ、大々的に言語仕様かえるといっといて、結局やってることは
プリコンパイラにどっちでもいいだろという機能を追加してる程度のケース
が多いようなのだけど、どういう圧力からそういう結論になるのでしょうか。
後方互換を保つために妙な妥協して、あるべき論と掛け離れた中途半端な仕様
を差し込むくらいなら、何もしないほうがいいと思うのは私だけデスカ?
0598しろうと
2006/08/26(土) 00:09:24別に無理に使わなくても、ちょっと頑張れば同じことができてたから
じゃないの。
おいらの場合、コードがコンパイラ依存になるのが嫌なので、当分セ
コセコデリゲートクラスとか自作して頑張ってくつもりです。
0599デフォルトの名無しさん
2006/08/26(土) 00:15:01・delegateの実装が楽(クロージャ)
・スクリプトフレームワークの拡張がしやすくなる
・継承では補いきれない差分プログラミングが可能(保守性向上)
0600デフォルトの名無しさん
2006/08/26(土) 00:17:08> どういう圧力からそういう結論になるのでしょうか
VMにでかい機能を追加すると遅くなるだろ。
しかしGenericsの仕様はいくらなんでもあれだが。
0601デフォルトの名無しさん
2006/08/26(土) 00:20:42Javaは私企業のプロダクトだから結局C#対抗な訳よ
マイクロソフトに負けたくないっていうSunの言語オタの意地とオナニー
0602デフォルトの名無しさん
2006/08/26(土) 00:22:15ってとっくに議論され、破棄されたんだろうが。。。
いまでもリフレクションでできるけど面倒なんだよね。
メソッドにアノテーションつけた時に参照するのも
obj.getClass().getMethod("method1").getAnnotation(anno);
とかだぜ。タイプセーフの意味がない。
これが
method1.method.getAnnotation(anno);
となりすっきり。。。
0603しろうと
2006/08/26(土) 00:24:17Javaもめでたくオプソになるらしいし、そのうちC#コンパイラとか
出るんでねえのかなとか思う毎日。…って、APIのサポートがむずいかな。
0604デフォルトの名無しさん
2006/08/26(土) 00:26:39SUNもJava VMを.NET化させるつもりだし
0605デフォルトの名無しさん
2006/08/26(土) 00:29:140606デフォルトの名無しさん
2006/08/26(土) 00:30:090607デフォルトの名無しさん
2006/08/26(土) 00:32:42夏だな
0608デフォルトの名無しさん
2006/08/26(土) 00:36:370609デフォルトの名無しさん
2006/08/26(土) 00:37:490610デフォルトの名無しさん
2006/08/26(土) 00:38:56そう思われる様になってからが華
0611デフォルトの名無しさん
2006/08/26(土) 00:40:26それに比例して、馬鹿がますます増えてきたな。
0612デフォルトの名無しさん
2006/08/26(土) 00:41:080613デフォルトの名無しさん
2006/08/26(土) 00:42:48Hoge.classがClass.forName("Hoge")の言語糖衣だと知った時はショックでした。
0614デフォルトの名無しさん
2006/08/26(土) 00:47:55後方互換を気にしながらC#の後追いしてるくらいなら
新たな言語環境を提案してくれないかな
もっともSunにもIBMにも無理そうだな
0615デフォルトの名無しさん
2006/08/26(土) 00:49:30ちがくないか?
Class<Hoge> c = Hoge.class;
と
Class<?> c = Class.forName("Hoge");
でしょ?オレが間違って覚えてるのか。。。?
0616デフォルトの名無しさん
2006/08/26(土) 00:49:58100%ぽしゃるから。今の時代はライブラリ>言語仕様
0617デフォルトの名無しさん
2006/08/26(土) 00:58:11日本語は間違って覚えてるね。
0618デフォルトの名無しさん
2006/08/26(土) 01:00:31でそのGenericsも糖衣な訳だが
0619デフォルトの名無しさん
2006/08/26(土) 01:02:440620デフォルトの名無しさん
2006/08/26(土) 01:04:00Swingの実装感は.NETのライブラリとたいして変わらんと思うが。
問題は性能なのか?
0621デフォルトの名無しさん
2006/08/26(土) 01:06:06そういえばそうか
でも.classリテラルはforName()とは使用場面が異なると思うんだが
それでも糖衣っていうのか。
0622デフォルトの名無しさん
2006/08/26(土) 01:08:42Hoge.classはコンパイラ通すとClass.forName("Hoge")に
コンパイルされるってこったよ。
0623デフォルトの名無しさん
2006/08/26(土) 01:11:59クライアントアプリを作るにはまだまだ
たとえるならXToolkitレベル
標準のFontChooserとかGridControllerとかなんで出てこないんだろ
0624デフォルトの名無しさん
2006/08/26(土) 01:13:48目指すはVBなわけですな…かくてまた馬鹿が増えるのかorz
0625デフォルトの名無しさん
2006/08/26(土) 01:15:390626デフォルトの名無しさん
2006/08/26(土) 01:19:50GnomeやKDEのようにね
あるアプリで選択した色やフォントは、別なアプリでも使いたい
そのためにはJavaももうVMだけじゃなくて
バックグランドで常駐するサービスレイヤーが必要だと思うのね
0627デフォルトの名無しさん
2006/08/26(土) 01:21:54>バックグランドで常駐するサービスレイヤー
Java6ってそれじゃなかったっけ。
0628デフォルトの名無しさん
2006/08/26(土) 01:22:08syntax sugar ではあるが Class.forName("Hoge") にコンパイルされるわけではない。
>>623
Swing って SWT/JFace の対応で言う SWT の方 (基本機能) であって
高機能なコンポーネントは自作するorどっかからライブラリを探してくるor買う
もんだと思うんだが。
0629デフォルトの名無しさん
2006/08/26(土) 01:22:19そのうちメーラーとかコンパネとかフォントダイアログとか
そういうのもネイティブで出るんじゃないか
0630デフォルトの名無しさん
2006/08/26(土) 01:22:22しつこいようだが、なんでジェネリックスだけ違うのかわからん。
Class<Hoge> c = Class.forName("Hoge");
がコンパイルしないのは何故?.classだとokなのに。
eraserとかってやつ関係かな?
0631デフォルトの名無しさん
2006/08/26(土) 01:26:57それだといつまでたっても統一環境ができない
アプリは自作でいいが、サービス層はもっと充実させるべき
0632デフォルトの名無しさん
2006/08/26(土) 01:29:16そういう場合こんな感じじゃなかったっけ
Class<Hoge> c = Class.<Hoge>forName("Hoge");
0633デフォルトの名無しさん
2006/08/26(土) 01:31:05ブラウザが基盤だという発想には違和感感じっぱなしの私。
あれは明らかにアプリでしょうに…
0634デフォルトの名無しさん
2006/08/26(土) 01:33:30よくわかんないけど
forName使う意味なくない?
forNameはコンパイル時にはclassが見えない時につかうんじゃね?
Hogeが手元に無い時とかさ。
0635デフォルトの名無しさん
2006/08/26(土) 01:37:21そこは一応名前と実際のクラスは別もんということで、、、
クラスローダによってはほんとに別にできると思うけど
0636このネタ書いた人
2006/08/26(土) 01:48:59Class hoge = Hoge.class
を含むクラスをSunJDKのjavacでコンパイルして、javap -c してみると、
invokestatic Method java/lang/Class.forName:(Ljava/lang/String;)Ljava/lang/Class;
になるわけなんだが、俺なんか勘違いしてる?
0637デフォルトの名無しさん
2006/08/26(土) 02:03:04ってことでおやすみ
0638デフォルトの名無しさん
2006/08/26(土) 02:06:03バージョンは?
確かにどーでもよいが。
0639デフォルトの名無しさん
2006/08/26(土) 02:08:48手元のJDKは1.4.2_10。5.0は持ってないのでどうなるかシラン。
0640デフォルトの名無しさん
2006/08/26(土) 02:12:021.4までは.classは.forNameと同等
1.5からは扱いが変わったってことかな?
なんでかえる必要があったのか、というのは考えない事にします。
0641デフォルトの名無しさん
2006/08/26(土) 02:35:301.5 からはクラスリテラルではクラスが初期化されない。
0642デフォルトの名無しさん
2006/08/26(土) 03:13:55自分も、スクリプトフレームワーク側からの要請が
結構でかいんじゃないかと思う。
.NETなIronPythonは結構速いみたいだし、JythonとRhinoも速くなって欲しいな。
0643デフォルトの名無しさん
2006/08/26(土) 03:19:24というけど、C#のようにはならんと思う。
C#とくらべかなりTypesafeだと思われ。
それだけにGenericsではパラメタライズされたクラスを
実装するのが難しいが。そのかわりタイプセーフが保証されるので
パラメタライズドクラスを便利に、かつ安心して使うことができる。
マイクロソフトに負けたくないってのとはちょっと違う。
っていうかJavaはもうSun私企業のプロダクトじゃなくなってるよ
Java Community ProcessによってだれでもJavaの変更について参加できる。
実際に変更するかどうかはゴスリングあたりが決めるが。
それも、JavaがC++の二の舞にならないようにするためさ。
0644デフォルトの名無しさん
2006/08/26(土) 03:20:37> ECMA標準のC#なら余裕だろ
> SUNもJava VMを.NET化させるつもりだし
それは初耳。ソースはどこにある?
.NET化というのは.NETと共用するの間違いではないかと予想する。
0645デフォルトの名無しさん
2006/08/26(土) 03:21:39? ゴスリングが新しい言語を作りたいとかいってなかったけか?
0646デフォルトの名無しさん
2006/08/26(土) 03:23:52JavaOne聴講者に馬鹿が増えたと?
去年JavaOneTokyo2005に行ったときはそうでもなかったが。
綺麗な設備に恵まれた東京国際フォーラムを全部貸し切って、
金のかかったイベントだなって気がしたけど。
0647デフォルトの名無しさん
2006/08/26(土) 03:24:08夏っぽい発言だね
0648デフォルトの名無しさん
2006/08/26(土) 03:25:30>>619は古い時代のSwingのことを言ってるだけかもしれないよ。
0649デフォルトの名無しさん
2006/08/26(土) 03:27:08ちょっと違うな。
Java Studio CreatorがVB屋向けっていうけど
あれはなんだか、Dreamweaverに似てる。
デザイナにJavaを憶えさせたいという無謀な考えがSunに
あったのだろうか。
それでもCreatorの完成度は高いけどね。
しかしメモリ食うしかなり重たい・・・
0650デフォルトの名無しさん
2006/08/26(土) 06:47:460651デフォルトの名無しさん
2006/08/26(土) 06:49:35では聞くけど新しい時代のSwingって何?
0652デフォルトの名無しさん
2006/08/26(土) 11:25:56Java5とかJava6のSwingじゃね?
もしかしたらJava1.4.2かも知れんが。
少なくともJava1.2やJava1.3のSwingでないことは確か。
0653デフォルトの名無しさん
2006/08/26(土) 12:53:540654デフォルトの名無しさん
2006/08/26(土) 13:48:54それっていいの?
何がどう変わるのさ
0655デフォルトの名無しさん
2006/08/26(土) 13:55:21そのためSwingで使う場合AWTで作られたリソースをバイト配列にして再構築していた。
あとLinuxとかならSwingは高速化するんと違うかな
0656デフォルトの名無しさん
2006/08/26(土) 22:39:37にしても、VBなんて開発環境と言語がわんせっとになった言語だよな
0657デフォルトの名無しさん
2006/08/26(土) 22:41:07タスクトレイが追加されたりタブのスクロールや移動ができて
かつSWTよりも高速になった時代のSwingだよ。
C++で作られたGUIと比べてもパフォーマンスのほうは大差なくなってきたって事だね
0658デフォルトの名無しさん
2006/08/27(日) 02:14:20別に後追いばかりってわけじゃないぞ
プリミティブ型のboxing/unboxing、拡張for文、アノテーションあたりは後追い感が強いが
Genericsの仕様はC#のGenericsの仕様が決定するだいぶ前から検討されてたし、
今回の関数型およびクロージャの仕様はC#のデリゲートに比べるとかなり良い仕様に
なっていると思う
0659デフォルトの名無しさん
2006/08/27(日) 02:17:150660デフォルトの名無しさん
2006/08/27(日) 12:41:57後追いといっても、C#とは仕様が異なる感じだな。
アノテーションもboxingも。
後追いのようになってしまったのは、
Java Community ProcessでC#のことをよく知ってる人が
Javaにもこういう機能つけてくれよって提案したからじゃないかな。
0661デフォルトの名無しさん
2006/08/27(日) 12:42:38Javaの何をすてるんかな。
JVMがどう進化するのか楽しみではあるが
0662デフォルトの名無しさん
2006/08/27(日) 13:45:50Javaの構文だけを整理したものが残ると思う
0663デフォルトの名無しさん
2006/08/27(日) 14:43:35何がいいたいのかよくわからないが、
構文を整理したものって一体どういうものを想像している?
気になるので挙げてみておくれ
0664デフォルトの名無しさん
2006/08/27(日) 14:57:22あとはjava.ioとjava.nioの関係みたいに
互換性のために統合を避けた部分も整理して欲しいし
StackとかPropertiesみたいに設計に失敗した部分も直す。
Javaの資産はD言語みたいに別言語構文を解釈する制御を入れればいい。
0665デフォルトの名無しさん
2006/08/27(日) 16:54:380666デフォルトの名無しさん
2006/08/27(日) 17:01:18> getter, setterとか、addListenerのデリゲート化とか。
たまにJavaスレに紛れ込むドトネト厨だかVB厨かよ。
getter,setterはどうでもいい。その程度ならdelegate化もどうでもいい。
どうせクロージャが追加されるならなおさらどうでもいい。
> あとはjava.ioとjava.nioの関係みたいに
> 互換性のために統合を避けた部分も整理して欲しいし
認識が甘い。そんなとこを統合してどうする。
それとも、整理する必要がどこにあるのか具体的に説明できるか?
> StackとかPropertiesみたいに設計に失敗した部分も直す。
初心者Java質問スレ見てた奴だな?
どう見直すというのか。放置か@Depricatedでいいだろ。
> Javaの資産はD言語みたいに別言語構文を解釈する制御を入れればいい。
Java6ではスクリプト言語を解釈するAPIがあるぞ。
0667デフォルトの名無しさん
2006/08/27(日) 17:02:20それも、Collectionがあれはどうでもいい。
多次元ジャグ配列なんて滅多に使わないし。
無闇に使う奴は設計能力センスが甘いやつだね。
0668デフォルトの名無しさん
2006/08/27(日) 17:07:32> getter,setterはどうでもいい。その程度ならdelegate化もどうでもいい。
おまえの主観だろ?多言語出身者は口をそろえて汚い仕様という
> それとも、整理する必要がどこにあるのか具体的に説明できるか?
現状でBufferを使いこなせる技術者は極端に少ない。
ファイルマップすら知らない奴ばっか。
> どう見直すというのか。放置か@Depricatedでいいだろ。
depricatedなクラスがシステムローダにロードされる時点でおかしい
> Java6ではスクリプト言語を解釈するAPIがあるぞ。
根本的な部分でアイタタタ
0669デフォルトの名無しさん
2006/08/27(日) 17:11:29> 現状でBufferを使いこなせる技術者は極端に少ない。
他は言語環境の改善要求っぽいのに、これは完全な愚痴だな。
0670デフォルトの名無しさん
2006/08/27(日) 17:12:55同一人物か
0671デフォルトの名無しさん
2006/08/27(日) 17:15:20コンセプト違いの重複した機能があちこちにある時点で要改善だろ
0672デフォルトの名無しさん
2006/08/27(日) 17:15:54> >>666
> > getter,setterはどうでもいい。その程度ならdelegate化もどうでもいい。
> おまえの主観だろ?多言語出身者は口をそろえて汚い仕様という
他言語出身者って、どうせC#やVB, Delphi言語出身者かドトネト厨である
おめえの主観だろw 綺麗な仕様とやらはC#やDelphiのget/set程度の仕様かw
あの程度で綺麗なら、演算子オーバーローディングやunsafeでソースコードが汚くなるのを
どうにかしようとは思わないのか。
> > それとも、整理する必要がどこにあるのか具体的に説明できるか?
> 現状でBufferを使いこなせる技術者は極端に少ない。
> ファイルマップすら知らない奴ばっか。
Bufferはまた別の話だろ。Bufferを使いこなせる奴が少ないのと
配列の型がどうだこうだと一体どう関係があるのか。
Bufferが何のためにあるのかわかって言ってるのか?
> > どう見直すというのか。放置か@Depricatedでいいだろ。
> depricatedなクラスがシステムローダにロードされる時点でおかしい
なにがどうおかしく、どう不具合が出るのか説明できるか?
> > Java6ではスクリプト言語を解釈するAPIがあるぞ。
> 根本的な部分でアイタタタ
お前が痛い。
0673デフォルトの名無しさん
2006/08/27(日) 17:16:29レス元コピって使っただけだ。単語をひらで書けないのは確かだがw
0674デフォルトの名無しさん
2006/08/27(日) 17:16:37> >>669
> コンセプト違いの重複した機能があちこちにある
たとえばどのあたりが?
0675デフォルトの名無しさん
2006/08/27(日) 17:17:58お前が.NET中心でしかものを考えられないことは良く分かった。
そのほかの点についてもお前が無知なだけ。調べろ。
0676デフォルトの名無しさん
2006/08/27(日) 17:24:23Java DEとか駄目?1Mくらいのサイズ希望
0677デフォルトの名無しさん
2006/08/27(日) 17:29:460678デフォルトの名無しさん
2006/08/27(日) 17:38:38でた厨房にありがちな最後の負け惜しみ逃げ台詞
0679デフォルトの名無しさん
2006/08/27(日) 17:40:360680デフォルトの名無しさん
2006/08/27(日) 17:43:120681デフォルトの名無しさん
2006/08/27(日) 17:44:340682デフォルトの名無しさん
2006/08/27(日) 17:50:480683デフォルトの名無しさん
2006/08/27(日) 19:26:02ブラウザーなくても動くし、おおよそのことはできると思うんだけど。
描画は早いし、ビデオやオーディオも強い
ソケットも使えるから、やろうと思えばDBにも直接接続できなくもない。
Java3dみたいのはないが。。。まだ。
0684デフォルトの名無しさん
2006/08/27(日) 21:46:290685デフォルトの名無しさん
2006/08/27(日) 22:00:090686デフォルトの名無しさん
2006/08/27(日) 22:09:040687デフォルトの名無しさん
2006/08/27(日) 23:58:560688デフォルトの名無しさん
2006/08/28(月) 00:11:17FlashはAS3で化けたが、描画が早いとかそんなことはない
Javaのほうがはるかに早い
機能が段違いすぎ
少なくともFlashでは単純なものしかロジックは書く気にはならないだろ
0689デフォルトの名無しさん
2006/08/28(月) 00:11:20そしてマイクロソフトもGoogleに推されている。
いつかマイクロソフトがGoogleの力によって陥落するのも時間の問題。
0690デフォルトの名無しさん
2006/08/28(月) 00:32:220691デフォルトの名無しさん
2006/08/28(月) 01:50:37なんて罰当たりな!w
0692デフォルトの名無しさん
2006/08/28(月) 02:57:400693デフォルトの名無しさん
2006/08/28(月) 04:12:03本当に標準に必要なのは何かもうすぐコアライブラリのシュリンクが
入ってもいいんじゃないかと思う
SEが肥大化しすぎていると感じる今日この頃
Jakartaでいいじゃん、っていう機能がコアに
取り込まれてる気がしてなぁ・・・・
まぁ使う側からいえば、ライブラリ追加しなくて楽なんだが
それよりむしろ外部ライブラリを簡単に利用できる
仕組みの方が欲しいかな、JWSのライブラリ取得の仕組みを
もっと積極的に活用してもいいような気がする
0694デフォルトの名無しさん
2006/08/28(月) 05:31:07ってのがお日様の戦略なんだろ
0695デフォルトの名無しさん
2006/08/28(月) 08:57:30お前が言うところのその程度の腐れが、仕事上でダメージを与えるシーンが
あったのか?そういうことが影響を与えるほど、センシティブな職場で働い
てみたいよw
今まで困ったことの例:
・馬鹿なプログラマが意図不明な長大コードを混入させ、そこにバグが
あったため解析と修正を任された…
・頭の悪い上司から仕様不明目的不明イミフメイの処理の実装を指示された…
・自社の自称エリート技術者ドモが、利用者側の要求と全く合致しない
フレームワークの利用を押し付けてきた…
・どこぞの営業が経歴詐称して素人をプロジェクトに押し込んできた…
問題は全部、人依存でした…orz
0696デフォルトの名無しさん
2006/08/28(月) 09:14:540697デフォルトの名無しさん
2006/08/28(月) 10:11:18そこまで斜めに見なくてもいいんじゃない?
じゃ、ばっさり互換性切り捨てるのがいいってわけでもないと思うが
バージョン変わったら名前は同じだが、まったく違う言語になるよりいいかと。。。
0698デフォルトの名無しさん
2006/08/28(月) 13:05:21何でもかんでもコアに入れたがるのは、
俺たちにコントロールさせろ、って宣言だ。
SWT見たいな外圧がないと、
まともな高速化をしようともしないくせに、
ベンチマークのでっち上げだけはうまいんだから。
0699デフォルトの名無しさん
2006/08/28(月) 14:13:15Swing並みのプログラムしやすさを持ったツールキット。
Windows FormsをJavaから使えるようにできんもんか。
0700デフォルトの名無しさん
2006/08/28(月) 18:47:54ゲイツはウィリアムテルでもなければ
フランスからイギリスを征服したウィリアム獅子親王でもリチャード王の十字軍でもない。
0701デフォルトの名無しさん
2006/08/28(月) 18:48:39そりゃお前の脳内で描かれた陳腐な戦略。
0702デフォルトの名無しさん
2006/08/28(月) 18:49:34でっちあげ?たとえばどんなふうに?
0703デフォルトの名無しさん
2006/08/28(月) 18:50:54やっぱりJavaスレにたまに現れるドトネト忠だ。
っていうか、逆にドトネト関連スレにもこういう
イチャモンつけてくるアホって
湧いてこないよね。
まるでドトネト忠は日本にイチャモンつける韓国人や中国人みたいだ。
0704デフォルトの名無しさん
2006/08/28(月) 20:42:36お前はたから見ててひたすら痛いんだけど気づかない?
0705デフォルトの名無しさん
2006/08/28(月) 22:03:460706デフォルトの名無しさん
2006/08/28(月) 22:54:35イタイのはお前だよドトネト忠w
0707デフォルトの名無しさん
2006/08/28(月) 23:00:300708デフォルトの名無しさん
2006/08/28(月) 23:02:04デスクトップでGUI以外そんなにロジックを組む事もないんじゃないか?
逆にswingでこったGUIを作る気になるか?(例えばOS Xのexposeとか)
swingはHTMLのFormの代わりくらいが限度じゃないか?
速度ではアニメーションや透明度を使う場合、圧倒的にFlash > swingだとおもうけど。
いつか実証してみよう。
0709デフォルトの名無しさん
2006/08/28(月) 23:32:370710デフォルトの名無しさん
2006/08/29(火) 00:13:520711708
2006/08/29(火) 00:48:08iTunesくらいだったらflashでもいけるかな。
0712デフォルトの名無しさん
2006/08/29(火) 01:02:300713デフォルトの名無しさん
2006/08/29(火) 01:04:13sleepなんてものつかうなよ
0714デフォルトの名無しさん
2006/08/29(火) 01:48:30どっかのスレで散々議論されてたんじゃないか。
・JITが効果的に利くオブジェクトをほとんど生成しない
ベンチマークでC/C++と同等のパフォーマンスであると主張。
・Java[Runtime]は低レベルのアクセスしまくりでパフォーマンスを改善。
・上記2つをもって、Java[言語]で書かれたコードはC/C++と同等の
パフォーマンスであると主張。
それを信じて(?)Pure Javaでがりがり書かれたEJBのパフォーマンスときたら
0715デフォルトの名無しさん
2006/08/29(火) 02:48:24シリアライズが噛むからではあるまいか?
0717デフォルトの名無しさん
2006/08/29(火) 03:19:40PC は知らないが少なくともケータイだと一番分解能があるのは Object#wait だよ
0718デフォルトの名無しさん
2006/08/29(火) 03:56:43話途中から変わってない?
JDKのパッケージングの問題(>>698)が、
JavaコンパイラのSunの自慢話に変わって、
そのSunの自慢を原因としてEJBの実装を叩いている。
でっちあげじゃなくて、JavaがC/C++より速い領域は結構あるよ。
0719デフォルトの名無しさん
2006/08/29(火) 09:14:24言っていることが意味不明
> ・JITが効果的に利くオブジェクトをほとんど生成しない
> ベンチマークでC/C++と同等のパフォーマンスであると主張。
JITが効果的に効くオブジェクトをほとんど生成しないなら、
パフォーマンスはむしろ劣化するはずだが、それをもってベンチマーク
でC/C++と同等のパフォーマンスであるとは、どういうこと?
> ・Java[Runtime]は低レベルのアクセスしまくりでパフォーマンスを改善
何の話?ネットワーク、IO、GUIなどの箇所は、確かにネイティブコード(C言語)で書いてあるが、
それ以外のライブラリはほとんどPure Javaのはずだが。あと、そもそも低レベルアクセス
(OSのAPIを直接叩くことか?)すれば、パフォーマンスが改善するってもん
でもない。何故ならJavaからネイティブコードを呼び出すのは、かなりのオーバーヘッドが
かかるから。
0720デフォルトの名無しさん
2006/08/29(火) 09:33:01> でっちあげじゃなくて、JavaがC/C++より速い領域は結構あるよ。
具体例をどうぞ。
Javaの方がパフォーマンスがいいなんて妄想もいいところ。
JVMがCでできてるんだから、CでJVM(もしくはサブセット)を実装して
その上で実行すればJavaより遅くなるわけが無い。
0721デフォルトの名無しさん
2006/08/29(火) 10:02:10ハハハ・・・・
0722デフォルトの名無しさん
2006/08/29(火) 10:29:00Timer関係+wait関係でおけ
ポーリングしたいのならナノ秒取得するやつ使え
Winだとちゃんと高精度タイマで実装されているぞ
Linuxだとミリ秒の1000*1000倍が返されてたきがした
このへんの制度はVM依存だが、まったく動かないわけではないのでおけ
アクションゲーム関係で60fpsだしたいのなら垂直同期使うわけだし問題なし
0723デフォルトの名無しさん
2006/08/29(火) 10:56:44アメリカにいけば著名人ですらそうだぞ。
I thinkI thinkI thinkI thinkI thinkI thinkI think
ア イ シ ン ク ッ !
だ。
論文でもそうだ。さもないと他人の意見をパクった韓国人や中国人
と同等に扱われる。
0724デフォルトの名無しさん
2006/08/29(火) 11:00:47猿真似は日本人のお家芸。
0725デフォルトの名無しさん
2006/08/29(火) 11:02:47Flashは4まではJavaのほうが圧倒的に早かった。
今はしらない。
Javaと違い、Flashでできることは限られている。
あれは時系列で開発してゆくからな。
Javaとは畑も開発スタイルも違う。
Flashは簡単なアニメーションなら高速で処理できる。
だが、三角関数や対数関数、指数関数などを徹底的に
駆使した幾何学模様の描画はどうだろう。
是非とも検証してみてくれ。
ActionScriptを使ってちゃんと三角関数などを使って計算してな。
0726デフォルトの名無しさん
2006/08/29(火) 11:05:35そのEJBのバージョン、
それからプログラムのソースコードや
マシンのスペック、測定データをここに公開する気はないのかね。
まさか古いバージョンのJavaで作られたPetStoreを
例に挙げるわけではあるまい。
もう古くて参考にはならんぞ。
EJBを使ってるところは本当に少ないがな。
多くはEJBの変わりにPOJOを使ってるところばかりだし。
Seasar2とかSping Frameworkとかな。もしくはStruts + Tomcatオンリーとか。
StrtusやJSFすら使わないところも未だにあるが。
0727デフォルトの名無しさん
2006/08/29(火) 11:07:27> JVMがCでできてるんだから、CでJVM(もしくはサブセット)を実装して
> その上で実行すればJavaより遅くなるわけが無い。
こういいきる奴は何度も見てきたが。浅はかで何も解って無いというか、
騙されているというか。Javaの進化に乗り遅れて古い知識しか持っていない
オッサンに多いんだな。
0728デフォルトの名無しさん
2006/08/29(火) 11:08:09ナノ秒なら
Java5からも実装されたぞ。
System.nanoTime()
0729デフォルトの名無しさん
2006/08/29(火) 11:25:25そういう小僧は盗んだコードで走る馬鹿だろう?
なんでもおっさん扱いしないでくれよ
0730デフォルトの名無しさん
2006/08/29(火) 11:38:05どうしてJavaスレには他の奴らが荒らしにくるんだ?
他の言語・環境がどんなに素晴らしいのかしらんがスレ違いだ
巣に帰れ!
0731デフォルトの名無しさん
2006/08/29(火) 12:23:150732デフォルトの名無しさん
2006/08/29(火) 13:08:47言葉が足りなかったかな
すでに実装されている話なんだし次世代の話題じゃないだろうということ
>>716は細かい制御したいのに5.0のコンカレントAPIすらさわってないんだろうなーとかおもっちまう
0733デフォルトの名無しさん
2006/08/29(火) 13:53:56お前はネイディブコンパイラとのパフォーマンス比較を改善点や要望とでも言うのか?
だたの攻撃だろ?違うのか?
0734デフォルトの名無しさん
2006/08/29(火) 14:04:44昔懐かしい「C#って死滅しちゃうの?」シリーズスレで
大暴れしていた例のM$厨では?
0735716
2006/08/29(火) 14:10:20nanoTimeだけじゃアニメーションできなくない?
nanoTimeはsleepの分解能チェックや誤差の補正に使うものかと
結局sleep使わなきゃだめなんじゃないか?
それかObject.waitか。
J2SE6ではDoubleBuffer関係で何らかの改良があると聞いたかが。
そうそうConcurrentは使ってないな。まだ。そんなに必要性も感じてないが。
0736デフォルトの名無しさん
2006/08/29(火) 15:08:29> > JVMがCでできてるんだから、CでJVM(もしくはサブセット)を実装して
> > その上で実行すればJavaより遅くなるわけが無い。
> こういいきる奴は何度も見てきたが。浅はかで何も解って無いというか、
> 騙されているというか。Javaの進化に乗り遅れて古い知識しか持っていない
?
進化とか古いとか関係ないだろう。CでJavaコンパイラを実装してclassコードを実行するという話をしているのだから
「Javaの方が速い」とならないことは自明なのだが。
恐らく「Javaは実行中にコードの最適化するから速い」とか言いたいんだろうが、
その実装自体はCでできているんだから、どんなにがんばっても「Javaの方が速い」という事態には絶対にならない。
ただ、CでわざわざJVMを再実装するのはコストがかかるから現実的ではないというだけ。
別にそこを認めてもJavaの優位性は変わらないと思うんだけどね。
いつものことだが、JavaしかできないやつはJavaを否定されると自分自身も否定されたような被害妄想を抱くよな。
どっかの宗教団体みたいで嫌だ。いろんな言語触れよ。次世代Javaの議論にも役立つぞ。
0737デフォルトの名無しさん
2006/08/29(火) 15:32:330738デフォルトの名無しさん
2006/08/29(火) 15:40:530739デフォルトの名無しさん
2006/08/29(火) 15:43:390740デフォルトの名無しさん
2006/08/29(火) 15:48:26この意味が分からない。絶対と言い切れる根拠はなんなんだろ?
0741デフォルトの名無しさん
2006/08/29(火) 15:51:250742デフォルトの名無しさん
2006/08/29(火) 15:54:16馬鹿には つ き あ う な
0743デフォルトの名無しさん
2006/08/29(火) 15:57:28> その実装自体はCでできているんだから、どんなにがんばっても「Javaの方が速い」という事態には絶対にならない。
> この意味が分からない。絶対と言い切れる根拠はなんなんだろ?
極論を言えば、
int main(){JavaVM *jvm;JNI_CreateJavaVM(&jvm);jvm->DestroyJavaVM();}
と書けば少なくとも速度は同じになるというだけのこと。
そんなにややこしいことは言ってない。
「JVMがCで書かれている」というのをもうちょっと考えろよ。
0744デフォルトの名無しさん
2006/08/29(火) 15:59:54JVMの役割を知っていれば、わざわざスーパーコンピューターでJavaを使おうなんて考えないよ。
0745デフォルトの名無しさん
2006/08/29(火) 16:01:56で、JVMのソースコード中から、実行に不要な部分を削除していけば、
JVMをいじれないJavaよりも、Cの方が速くなる。誰でも分かる話だと思うんだがな。
実際にはそんなところに開発コストをかけるのは無駄だから現実的ではないと言ってるだけ。
頭が悪いのか、それとも宗教にはまってるからなのか。。。
0746デフォルトの名無しさん
2006/08/29(火) 16:05:00nanotimeはポーリング用
定期実行にはTimer方面つかえといっておろう
0747デフォルトの名無しさん
2006/08/29(火) 16:06:08JVMはCのライブラリィではないよ(笑)
0748デフォルトの名無しさん
2006/08/29(火) 16:46:20あい、了解したw
0750デフォルトの名無しさん
2006/08/29(火) 17:54:460751デフォルトの名無しさん
2006/08/29(火) 17:55:17暴れてるやつは声を出して読むように。
0752デフォルトの名無しさん
2006/08/29(火) 18:00:01どういう動きかわかってないんじゃない?
基本から勉強したほうがいいよ
0753716
2006/08/29(火) 18:07:25教えてくれ。
Timerも結局waitを使っているとドキュメントされているが、
waitは正確性を欠く、それをnanoTimeとかで確認してスケジュールを補正するのが教科書とおりなのだが、
Timerを使ってしまうと補正ができなくないのではないか?
次世代になってもwaitとかの精度はそんなに変わらないんだろうな
0754デフォルトの名無しさん
2006/08/29(火) 18:15:40垂直同期にこだわらなければ60fpsにする必要もあるまい
垂直同期にしたら自動的にリフレッシュレートであわせられる
Win32ネイティブでやってるのと状況はかわらんよ
0755デフォルトの名無しさん
2006/08/29(火) 19:20:490756デフォルトの名無しさん
2006/08/29(火) 19:50:44JVMは都合のいいタイミングまでガベコレを遅延できる。
これをやると、特にSMPで差が開く。
0757デフォルトの名無しさん
2006/08/29(火) 20:03:090758デフォルトの名無しさん
2006/08/29(火) 20:09:11性能を重視するならmalloc/freeをそのまま使ったりなんてせず、
普通は独自アロケータを定義するでしょ。
0759デフォルトの名無しさん
2006/08/29(火) 20:54:34Javaの方が実行速度が速い例がたくさん見つかったので、
>>736>>743でごまかそうと必死w
0760デフォルトの名無しさん
2006/08/29(火) 22:55:04て結局実装の仕方次第だろ。malloc/freeを何度も繰り返すような素のCの
組み方したら、JVMの「そもそもメモリ解放自体めったにしないで確保してる
メモリを使い回す」ような実装より遅くてあたりまえ。
例えばObjective-CはCのサブセットで、コンパイルすれば完全なバイナリに
なるわけだが、メソッド呼び出し速度とメモリ取得・解放速度でJavaのほうが上回る。
これはオブジェクト周りの実装の仕方の差だろ。
そこを意識して力技なパフォーマンスチューニングを組み込んでCでゼロから
作れば、速くなるのも当たり前。
JavaがCより速いとかいう話は、「Cで普通に組んだものより、Javaで普通に
組んだものの方が速いことがある。なぜなら、JVM自体にすでにパフォーマン
ス・チューニングがされているから」という意味だってことがわからないのだろうか。
普通に組んだ時のパフォーマンスの差には意味があると思うけどねえ。
0761デフォルトの名無しさん
2006/08/29(火) 22:55:23C言語原理主義者の言い訳ごくろう。
また「Javaしかできない奴」とステレオタイプ貼り付けとは。
Javaで飯食ってきたかったらJavaしかできないなんてありえんからね。
0762デフォルトの名無しさん
2006/08/29(火) 22:57:39その独自アロケータとやらは、Javaの世代別GCを超えられるのか?
ヒープアロケーションやデアロケーションに、凝った戦略(実行は超高速)
とってるよ、あれ。フリーリスト管理独自実装とか、ショボイことしてい
る間は越えられんでしょ。
0763デフォルトの名無しさん
2006/08/29(火) 23:03:03言語の特性とコンパイラ最適化技術辺りは最低限踏まえて議論しような。
0764デフォルトの名無しさん
2006/08/29(火) 23:10:49例えばN秒間の実行回数が4400〜5200とか異常な数値を出すこともしばしば。
ヒープサイズは-Xms -Xmxともに同じサイズにしても起こすから原因がつかめない
0765デフォルトの名無しさん
2006/08/29(火) 23:12:150766デフォルトの名無しさん
2006/08/29(火) 23:22:360767758
2006/08/29(火) 23:46:35越えられるよ。
つーか、JavaのGCとかboehmGCとか、そういう汎用的なメモリ管理実装に
満足できないから独自実装するわけで。
> ヒープアロケーションやデアロケーションに、凝った戦略(実行は超高速)
> とってるよ
それは独自アロケータでも同じ。
そもそも、あるサブシステムでは特定のサイズのメモリを大量にアロケートするとか、
そういうプログラム固有の事情も考慮した上で最適なアロケータを設計するんだよ。
一般道から高速道までいろいろな状況でもそれなりに速く燃費の良いエンジンを作るのと、
サーキット上での速さの極限を目指したエンジン作りとを比較するようなもの。
そもそも設計方針から全く違う。
0768デフォルトの名無しさん
2006/08/29(火) 23:52:47javaだからっていうか、OOだから。
例えば、java3dとか、hibernateとか、
0769デフォルトの名無しさん
2006/08/30(水) 00:04:220770デフォルトの名無しさん
2006/08/30(水) 00:06:31必要に迫られて独自にそういうすごいのを作ったのでしょうが、
凡人・汎用ではjava vmぐらいでいいです。ruby gc thread とか遅くても
ちゃんと答えを出してくれればいいです。
0771デフォルトの名無しさん
2006/08/30(水) 00:07:08>越えられるよ。
>つーか、JavaのGCとかboehmGCとか、そういう汎用的なメモリ管理実装に
>満足できないから独自実装するわけで。
このように、独自実装厨はチューニングが重ねられた汎用アルゴリズムに
劣る糞コードを生成するわけだ。乙
0772デフォルトの名無しさん
2006/08/30(水) 00:08:40Cだとターゲットにあわせて自分でコンパイルオプションを指定しないといけないけど
Javaならある意味JVMが勝手にチューニングしてくれるし。
0773デフォルトの名無しさん
2006/08/30(水) 00:09:33うざいから他所でやってくれ、マ板でやることじゃないだろ。
0774デフォルトの名無しさん
2006/08/30(水) 00:23:500775デフォルトの名無しさん
2006/08/30(水) 00:30:06おもいらそれよりSE 6のどこが素敵なのかまとめてくれんか?
0776デフォルトの名無しさん
2006/08/30(水) 00:38:070777デフォルトの名無しさん
2006/08/30(水) 00:48:00それより、Java 6.0 Java 7.0 に予定されている言語拡張・ライブラリについて語ろうぜ。
0778デフォルトの名無しさん
2006/08/30(水) 01:08:56>プロパティのサポート
>メソッドリファレンスのレポート
>クロージャのサポート
>言語レベルでのXMLのサポート
>JVM上で動作する動的言語のサポート
>スクリプト言語サポートの拡張
>モジュール化のサポート
>Swingアプリケーション開発のためのツールの充実
のうち、今回出てきたのは「メソッドリファレンス(たぶんローカル・ファンクションのこと
だろう)」と「クロージャのサポート」なわけだが、
「プロパティのサポート」はまだ具体例が出てきてないね。
最後のSwingアプリケーション開発のためのツールって
のは、たしかSwingをベースにしたアプリケーション・フレー
ムワークを作るとかだったっけ。
0779デフォルトの名無しさん
2006/08/30(水) 01:17:250780デフォルトの名無しさん
2006/08/30(水) 01:27:48これなw これが一番重要な更新だったりしてw
0781デフォルトの名無しさん
2006/08/30(水) 01:48:38ttp://weblogs.java.net/blog/hansmuller/archive/ts-3399-final.pdf
0782デフォルトの名無しさん
2006/08/30(水) 02:59:330783デフォルトの名無しさん
2006/08/30(水) 03:04:550784デフォルトの名無しさん
2006/08/30(水) 03:25:080785デフォルトの名無しさん
2006/08/30(水) 04:34:32まず名前をdeleteに変えてバカに気づかせろ
0786デフォルトの名無しさん
2006/08/30(水) 06:11:40ktkr
いったいここまでたどり着くのに何年かけてんだ?
こんなのNEXTSTEPをSolarisにポートした連中なら最初に気が付いてるだろ
0787デフォルトの名無しさん
2006/08/30(水) 08:30:02今の基準でみると糞みたいなNEXTSTEPのフレームワークと違ってw
0788デフォルトの名無しさん
2006/08/30(水) 09:15:32> malloc/freeはどうした?>最速厨
> JVMは都合のいいタイミングまでガベコレを遅延できる。
分からん奴だな。そのガベコレをCで実装すればいい。
>>759
> >>720は、ぐぐってみたところ、
> Javaの方が実行速度が速い例がたくさん見つかったので、
Javaの方が速いっていうのは、C側ベンチでJavaと同じ事をしていないだけのこと。
Javaの挙動全てをCで実装すればJavaと同じ速度になるのは当たり前だと言ってるだけだ。
>>772
> Javaの利点はCPUにあわせた動的コンパイルなんじゃないのかねえ。
> Cだとターゲットにあわせて自分でコンパイルオプションを指定しないといけないけど
そんなもの不要。CPUにあわせた動的コンパイルをCで書けばいいだけ。
.classファイルを読み込んでJVM上で実行(もちろんJIT付き)するようなCプログラムを書けば、
Javaの方が速くなるなんてことは無いと言ってるだけなのに何で分からんかな。
0789デフォルトの名無しさん
2006/08/30(水) 09:18:190790デフォルトの名無しさん
2006/08/30(水) 09:22:300791デフォルトの名無しさん
2006/08/30(水) 09:24:23いいたいことはなんとなく分かったが、それを言うことで
あんたが何をしたいのかがさっぱり分からん。
0792デフォルトの名無しさん
2006/08/30(水) 09:28:240793デフォルトの名無しさん
2006/08/30(水) 09:34:40明日までの辛抱かの
0794デフォルトの名無しさん
2006/08/30(水) 10:08:05しかし、バージョンアップするたびに高速化してるみたいなんだけど。
次期バージョンJava6もPreJITによってかなり高速化が期待できるんでない?
二回目以降のアクセスからはCのネイティブと同じ扱いになってかなり高速化する、みたいな。
0795デフォルトの名無しさん
2006/08/30(水) 10:10:16面白すぎる。
マ板で必死にJava叩きしてるおっさんどもを思い出すw
0796デフォルトの名無しさん
2006/08/30(水) 11:11:25> >>788
> いいたいことはなんとなく分かったが、それを言うことで
このスレで頭がいいのはあんただけのようだな。
> あんたが何をしたいのかがさっぱり分からん。
>>720を理解できない奴が多かったから説明しただけ。
あんたみたいに理解力のある奴ばかりだったらいいんだがな。
>>736に書いた通り、Javaをけなそうとしているわけではないし、Cが素晴らしいなんて言うつもりも全く無い。
0797デフォルトの名無しさん
2006/08/30(水) 11:16:38Javaチップ上でベンチ比較する場合についてはどう考えてるの?
この場合Cの処理系をまず用意しないとダメだけど…
0798デフォルトの名無しさん
2006/08/30(水) 11:45:08どっかの宗教団体みたいなのはお前のほう。
お前の主張がいったい何になるのか説明できんだろ。
お前の意見が何もプラスにもならないならどっかの宗教団体と変わらない。
0799デフォルトの名無しさん
2006/08/30(水) 12:46:01Cはその次!
で良いだろ
実の無い議論しても無駄だろ
0800デフォルトの名無しさん
2006/08/30(水) 13:19:580801デフォルトの名無しさん
2006/08/30(水) 13:34:54> Javaチップ上でベンチ比較する場合についてはどう考えてるの?
はいはい、机上の仮説はどうでもいいから、
まずはC,C++で実装された現行のJVMにも性能面でひけを取らない
Javaチップを開発してからまた来てね。
0802デフォルトの名無しさん
2006/08/30(水) 13:36:25Cで1からjvmもどきを書くと現行のJITより高性能をたたき出せる天才プログラマ様らしいよ
0803デフォルトの名無しさん
2006/08/30(水) 13:37:010804デフォルトの名無しさん
2006/08/30(水) 13:41:370805デフォルトの名無しさん
2006/08/30(水) 13:51:17> > Cだとターゲットにあわせて自分でコンパイルオプションを指定しないといけないけど
> そんなもの不要。CPUにあわせた動的コンパイルをCで書けばいいだけ。
まあ、CPUのサポートする命令セットに合わせて実行時に自己書換する、なんて
テクニックは大昔からあるよね。
今だって、多くの動画コーデックはSSE等の拡張命令の有無を実行時に調べて
動的に実行コードを生成したりしてるし。
そういう古くからあるテクニックの一部がJVM実装にも取り込まれるように
なってきた、ってだけの話。
0806デフォルトの名無しさん
2006/08/30(水) 14:06:40何度も実行される箇所はコンパイルしてネイティブコード生成するんだよな?
だから
コンパイル時間 + (CPU最適化コード実行時間 * n) > 386バイナリ実行時間
この式が成り立つ可能性は十分あると思ってる。( n が増加するほどJava有利)
なんかJavaはCを越えられないと言ってる奴はどうも
ネイティブコード生成後もJVMで解釈して実行してると思ってそうなんだが…?
CでもIntelMacのユニバーサルバイナリみたいに全CPUに最適されたコードを含んだ
バイナリを持てばJavaを上回るのは明らかだけど、そんな事してる奴いないよね。
0807デフォルトの名無しさん
2006/08/30(水) 14:23:54>
> この式が成り立つ可能性は十分あると思ってる。( n が増加するほどJava有利)
だから、nが大きくて、CPU毎に最適化したコードによる恩恵が十分得られる場合は、
>805のような動的実行コード生成をC, C++でもやればいいだけの話。
で、こういう手法は机上の空論じゃなく、多くの動画コーデックや
OSカーネル(ページクリアに使うmovntiとか)など、多くの場所で用いられているんだよ。
0808デフォルトの名無しさん
2006/08/30(水) 14:32:31>> >805のような動的実行コード生成をC, C++でもやればいいだけの話。
必ず同じ事ができるとは限らない。
0809デフォルトの名無しさん
2006/08/30(水) 14:34:51そりゃ、最適化したコードで比べればどんな場合でもCの方が速くなるだろうよ。
でも、その最適化したコードをCで書くのは、コストや能力を考えると現実的に不可能だ。
0810デフォルトの名無しさん
2006/08/30(水) 14:37:58>
> 必ず同じ事ができるとは限らない。
その理由は?
Cで書かれたJVMにできて、Cで直接書かれたプログラムにできないことって何?
それともJavaチップのことでも言ってるの?(笑
0811デフォルトの名無しさん
2006/08/30(水) 14:51:14コンパイル時間 << ε
ならば、誤差の範囲内として無視できる。
すると、JavaとCとでは速度はさほど変わらなくなる。
また、
Java実行速度 - C実行速度 << ε
なら、ますます無視できる。
ここでεとは非常に小さな値を表し、 <<は<よりもうんと大きな差があることを意味する。
つまりうんと小さくなるという意味。
0812デフォルトの名無しさん
2006/08/30(水) 14:55:540813デフォルトの名無しさん
2006/08/30(水) 14:57:04実例を出すと、ベクトル型スパコン。
Cで書かれたプログラムより、FORTRANプログラムの方が速いとされる。
コンパイラはどちらもCで作られている。
これは、ソースレベルでは同じアルゴリズムであっても、FORTRANで記述
されたプログラムの方が、Cよりも最適なベクトル化できるからである。
コンパイラを同じCで作っても、どこまで最適化できるかは、各言語仕様も
関係してくる。
0814デフォルトの名無しさん
2006/08/30(水) 15:48:190815デフォルトの名無しさん
2006/08/30(水) 15:49:14だから、{Cで書かれたFORTRANコンパイラ+.Fのソースファイル}を合わせて、
一つのCで書かれたソフトウェアと見なすって話が延々と続いているわけだ。
論理的には正しいが、実効的な意味はない。
ってのが>>736の最後のパラグラフの意味だと思われ。
0816602
2006/08/30(水) 16:04:51メソッドリファレンスって俺待望の >>602 で書いたようなことじゃないのかね?
だとしたら、あと5年はjavaを使おうかと思うな
でもSE7からなのか。。。
0817デフォルトの名無しさん
2006/08/30(水) 17:09:12> >>756
> > malloc/freeはどうした?>最速厨
> > JVMは都合のいいタイミングまでガベコレを遅延できる。
> 分からん奴だな。そのガベコレをCで実装すればいい。
不可能。メモリ関数の使用を禁止せず、ガベコレを実装できない。
メモリ関数の使用を禁止すれば、ソースを書き直さなければならず、
もはやCのプログラムではなくなる。だから、JavaやC#のような新しい
言語ができたことを理解しろ。
0818デフォルトの名無しさん
2006/08/30(水) 17:15:04へー、Boehm GCを使ったCプログラムはCのプログラムではないんだ。
0819デフォルトの名無しさん
2006/08/30(水) 17:25:20ベタベタなコードにコンサバなGCで体裁繕ったらパフォーマンスでないぞ
いい加減みっともないまね続けるなよな
0820デフォルトの名無しさん
2006/08/30(水) 17:31:01> 不可能。メモリ関数の使用を禁止せず、ガベコレを実装できない。
JVMはどうやってガベコレを実装してるの?
0821デフォルトの名無しさん
2006/08/30(水) 17:33:30つまり、普通の人はそんなの作らない&作れないから、
凡人が高速なプログラムを作ろうとしたらJavaで書いて実装した方がいいって事だよね。
理論的にCオンリーの方が早くなるっていうのは別に、誰も否定しないと思うけど
現実的にJavaの方が早くなる【場合がある】っていうのを認められないのは厨房だと思うな。
0822デフォルトの名無しさん
2006/08/30(水) 17:34:27メモリ関数使ってるに決まってるだろ。馬鹿じゃねぇの?
0823デフォルトの名無しさん
2006/08/30(水) 17:38:48詳しかったらJavaの環境に居ないで、Cの環境(Win32やUnix)に行ってるでしょ。
せいぜい jni 程度でゴニョゴニョで、gc 実装とかそんなディープ話題は
次世代Java環境が気になるJava使いの人はついて来れないと思う。
0824デフォルトの名無しさん
2006/08/30(水) 17:42:270825デフォルトの名無しさん
2006/08/30(水) 17:47:110826デフォルトの名無しさん
2006/08/30(水) 17:50:09当然、おまいはGCの実装経験がある or 実装できるのだな。
各種GCアルゴリズムについて語らないか?
0827デフォルトの名無しさん
2006/08/30(水) 17:54:350828デフォルトの名無しさん
2006/08/30(水) 18:09:04>だから、nが大きくて、CPU毎に最適化したコードによる恩恵が十分得られる場合は、
>>805のような動的実行コード生成をC, C++でもやればいいだけの話。
>で、こういう手法は机上の空論じゃなく、多くの動画コーデックや
>OSカーネル(ページクリアに使うmovntiとか)など、多くの場所で用いられているんだよ。
if(SSE2命令が利用可能か?) {
// SSE2命令を利用したインラインアセンブラによるコード
}
else {
// SSE2命令を利用しないインラインアセンブラによるコード
}
これのどの辺りが動的実行コード生成になるのか説明してくれんか?
無知は怖いね。
0829デフォルトの名無しさん
2006/08/30(水) 18:52:561.4.2のが5.0より速いらしいぞ
SUNのベンチ鵜呑みにするなや
0830デフォルトの名無しさん
2006/08/30(水) 18:56:32ほらよ。
ttp://mkosaki.blog46.fc2.com/blog-entry-104.html
0831デフォルトの名無しさん
2006/08/30(水) 19:08:15> 次世代Java環境が気になるJava使いの人はついて来れないと思う。
だろうね。
というか、そういう話をこのスレでやるのがそもそも間違い。
パフォーマンス厨は↓へ行ってくれ。
http://pc8.2ch.net/test/read.cgi/prog/1153547716/
0832デフォルトの名無しさん
2006/08/30(水) 19:41:39いまどきそうやってCはJavaよりも凄く、
「Cを知っていればJavaを知らなくても偉いんだ!」
と勘違いしてCしか知らず、Javaのことろくに勉強しないのも、恥ずかしいことなのだが。
0833デフォルトの名無しさん
2006/08/30(水) 19:49:41「Javaを知っていればCを知らなくても偉いんだ!」
と勘違いしてJavaしか知らず、Cのことろくに勉強しないのも、恥ずかしいことなのだが。
0834デフォルトの名無しさん
2006/08/30(水) 20:04:14「技術を知っていれば一般常識を知らなくても偉いんだ!」
と勘違いして技術しか知らず、一般常識のことろくに勉強しないのも、恥ずかしいことなのだが。
0835デフォルトの名無しさん
2006/08/30(水) 20:08:04お前よ、餓鬼みたいに>>832のコピペしてるのどっかで見たことがあるぞ。
C#死滅スレのVBとC#を崇拝する、継承嫌いの餓鬼だろw
0836デフォルトの名無しさん
2006/08/30(水) 20:08:49まてまて技術は一般常識の範疇に入るぞ
0837デフォルトの名無しさん
2006/08/30(水) 20:12:42ガキが相手するから正常化せんのだが能無しには分からんか
0838デフォルトの名無しさん
2006/08/30(水) 20:29:39プ
無知は怖いね。
0839デフォルトの名無しさん
2006/08/30(水) 20:54:06お前らCがJavaより早くJavaはCより早いのは分かったから
メソッドリファレンスが何なのか情報提供してくれ。
0840デフォルトの名無しさん
2006/08/30(水) 21:01:00奴はVBとC#に詳しいアホだよ。
昔、語尾に「嘲笑激藁」「ププ」「ゲラ」「ワラ」「大爆笑」
をつけてた奴、ハンドルが「255」とかつけてた奴に
非常にそっくり。
結局あそこまでC#を持ち上げても、全然はやらなかったな。
どうせ奴は鬱憤晴らしにスレを荒らしてるだけだろう。
0841デフォルトの名無しさん
2006/08/30(水) 21:03:33つーか、動的生成云々うるさいけど、それってモジュール切り替えでええんじゃないん?
実行時生成なんてしなくても、コンパイルしたモジュールも含めればいいだけの話。
C使いでもめったに使わない技術を得意げに語るのは哀れですらある。
Java厨だってバイトコードの自力生成なんて滅多にしない。
0842デフォルトの名無しさん
2006/08/30(水) 21:04:55どこまで脳みそゆるいんだ
0843デフォルトの名無しさん
2006/08/30(水) 21:07:33いやー盛り上がってるとこ悪いが、20年経ってその台詞恥ずかしくないかw
0844デフォルトの名無しさん
2006/08/30(水) 21:13:58Java OneとSUNのシンクライアントでつかうくらいしか聞いたこと無い。
Edyのがすごいよ、コンビニ清算最速ってすごくね?
0845デフォルトの名無しさん
2006/08/30(水) 21:15:41みんなずいぶん喰らったみたいけど大丈夫か?
0846デフォルトの名無しさん
2006/08/30(水) 21:16:00C言語にポインタがあるために、ベクトル化による十分な最適化ができないが、
FORTRAN言語にはそのポインタがないので、十分にベクトル化できると聞いた
ことがある。
Java言語が出たとき、JavaもポインタがないのでFORTRAN並に最適化できる
のではないかという極端な記事が、Cマガジンに載っていたような覚えがある。
今となってはJavaの仕様では、FORTRAN並に最適化は無理なのは自明だが・・。
0847デフォルトの名無しさん
2006/08/30(水) 21:17:28バイトコードの自力生成ってできたの?しらなkった。
ところで、どうやってやるの
0848デフォルトの名無しさん
2006/08/30(水) 21:19:42特定環境に最適化されたGCなんて興味ないなって感じ
0849デフォルトの名無しさん
2006/08/30(水) 21:20:32オイオイ、必死に何か探してきたと思ったらコレだ。
自己書き換えと動的実行コード生成は似て非なるものなんだが。
0850デフォルトの名無しさん
2006/08/30(水) 21:32:51適当なバイト列を作ってClassLoader#defineClass()を呼ぶだけだ。
そのバイト列はJavaVM仕様に合わせて作ればいい。
BCELやasmなどのバイトコード作成用ライブラリもある。
Java5からはClassLoader側で細工しなくてもバイトコード変換ができるように
java.lang.instrumentパッケージ以下のクラスが追加された。
0851デフォルトの名無しさん
2006/08/30(水) 21:54:510852デフォルトの名無しさん
2006/08/30(水) 21:59:14正直言って、BCELは設計が古いというか微妙に使いにくいので、
新規ならASMかJavassist使った方が良いかと
他言語 -> Javaバイトコードのコンパイラ作るなら、Javassistはちょっと使いにくいが
0853デフォルトの名無しさん
2006/08/30(水) 22:09:50この技術と言うか概念というか、次のリリースでスクリプト言語を
java vmに取り込むとか言うのより、さらに高次元の話じゃん。
0854デフォルトの名無しさん
2006/08/30(水) 22:32:11徐々に万人向けに使いやすくなっていくと、これからも OSに依存しな
い Java の環境がより強固なものになっていく予感がする。
昔Sunが目指していたNetworkがどうのというやつなのかな。
> 他言語 -> Javaバイトコードのコンパイラ作るなら
>>852さんはこういう系の人なのでしょうか?
そうとは知らずに、言葉遣いが足らず失礼しました。
0855デフォルトの名無しさん
2006/08/30(水) 22:50:38852だけど、一応そういう系の人です。Java VM上で動作する
とあるスクリプト言語開発してます。超マイナーな言語ですが
一応どんな言語かというと、Javaに似たセマンティクスに
スクリプト言語っぽいシンタックスシュガーをふりかけました
みたいな言語です
> 言葉遣いが足らず失礼しました
?別に特に>>854さんが失礼な言動をしたとは思わなかったけど
0856デフォルトの名無しさん
2006/08/30(水) 22:54:35>>850さんと>>852(= >>855)は別人なんで
0857デフォルトの名無しさん
2006/08/30(水) 23:31:46\_____ _______________
∨ |
| まいど、まいど!繁盛、繁盛!!
\_ ___________
__ ∨
/ /| ∧_∧
| ̄ ̄|/| (・∀・ ) (
| ̄ ̄| | ̄ ̄ ̄|\_(_ )_ (・∀・: )Java は さいきょう じゃ
| ̄ ̄| |___| ∧_∧  ̄ ̄ ̄ ////|
| ̄ ̄| |___|( )____| ̄ ̄ ̄|/|
| ̄ ̄ ( ○ )  ̄ ̄ ̄| |
| | | | | |
| (_(_) |/
0858デフォルトの名無しさん
2006/08/30(水) 23:44:500859デフォルトの名無しさん
2006/08/30(水) 23:47:50JVMしか作成できない言語を作るの?
どんなメリットがあるの?
0860デフォルトの名無しさん
2006/08/30(水) 23:53:53ガベコレ実装しそうな職人とか、
サーバー用ツールと次世代Javaの関係が気になる人とか、
クライアント用(携帯アプリ)の開発者とか、
コンパイラ作る人とか、
CマンセーなのにJavaが気になる人とか、
JVM上で動作するスクリプト開発者とか、
いっぱい居て楽しそうだね〜♪
0861デフォルトの名無しさん
2006/08/30(水) 23:55:09ごめん言葉足らずだったね
JVM上で動くバイナリを吐くC言語だ
0862デフォルトの名無しさん
2006/08/31(木) 00:10:41> JVM上で動くバイナリを吐くC言語だ
Cのソースからクラスファイルを作るということ?
0863デフォルトの名無しさん
2006/08/31(木) 00:20:12ちょいと質問なんだが、JRubyやJPyton、GroovyやJavaScriptじゃだめだったの?
独自スクリプト言語を新規開発するに至る動機はナンデスカ?
0864デフォルトの名無しさん
2006/08/31(木) 00:54:34「独自スクリプト言語を新規開発するためのフレームワーク」が出て来ているのに、
そんな質問するに至る動機はナンデスカ?
せめてどんな特徴があるんですか?くらいにしてくれよ
0865デフォルトの名無しさん
2006/08/31(木) 00:56:48そんな感じ
それなら単純にJava言語とC言語の比較が出来るだろ
0866デフォルトの名無しさん
2006/08/31(木) 01:01:57そんな無意味なものを誰が使うんでしょうか。
性能上の要求が高くて、高級アセンブラを使うリスクを拾わなきゃいかん場合に、
仕方なくCを使うのであって、要求が低くてJavaなり何なり使って手抜きできるな
ら、手抜き言語使うんじゃないの。
0867デフォルトの名無しさん
2006/08/31(木) 01:02:58言語仕様そのものを比較するわけじゃないから、意味なくない?
0868デフォルトの名無しさん
2006/08/31(木) 01:07:260869sage
2006/08/31(木) 01:18:44なんで2chで書きこみのリアル人生に気を使う必要があるんだと小一時間(ry
大体、そんなエライ人がこんなところでクダまくかいな。
0870デフォルトの名無しさん
2006/08/31(木) 01:20:32JVM系のスクリプト言語は多くが動的型で、パフォーマンスがJavaに比べて劣るから、
静的型でJavaと同等のパフォーマンスを保ちつつ、手軽に書ける言語が欲しかった
というところ
実際、簡単なベンチマークとってみたら、Javaとほとんど同等の速度が出てた
まあ、セマンティクスがJavaに極めて近いから、速度出るのは当たり前なんだが
とはいえ、予定していた言語仕様はそれなりに実装できたものの、ライブラリをまだ
全然作ってないので、Javaのライブラリを使うしかないという情けない状態になってるが
0871デフォルトの名無しさん
2006/08/31(木) 01:27:29よくわかりませんが、それって、例えばGroovyみたいな言語
→JVMバイトコードのコンパイラ作ったってことですか?
0872デフォルトの名無しさん
2006/08/31(木) 01:27:45現時点での実用性で考えると、いらない、意味無いというのは当たり前だと思う。
現状の、Java VMが各OS上のの単なる1サービスや1アプリケーションと考えると
無意味だけど、これとは逆に各OSはJava VM上の1アプリ・1コンテンツと考えると、
状況は変わってくるんじゃないかな?
よく言うところの、ネットワークをでかいプラットホーム見立てて各OSはJavaの環境
で統一って言うやつ。
ちなみに私は>>858じゃないよ。
0873デフォルトの名無しさん
2006/08/31(木) 01:28:06855だけど
> 大体、そんなエライ人がこんなところでクダまくかいな。
まあ、そりゃそうだわなw
リアルではただの大学院生です
ただ、エライ人でも興味ある分野のスレ見てる人は結構居るみたいですが
0874デフォルトの名無しさん
2006/08/31(木) 01:29:30そういうことです
しかし、自分が言えたセリフじゃないが書き込みのペースが早いなw
0875デフォルトの名無しさん
2006/08/31(木) 01:31:55だって、JavaとCの比較ならおかしくないだろ
JITとAOTのどっちが早いってだけの話なのか?
0876デフォルトの名無しさん
2006/08/31(木) 01:36:29Java6のHotSpotコンパイラでエスケープ解析が入るのが売りの一つらしい
けど、スタックにオブジェクトが積めるようになるとそんなに性能上がるの?
世代別GCならヒープへのオブジェクトの確保解放はたいしたコストじ
ゃないし、どうせ短寿命なら初回MinorGCでedenからさようなら〜なので、
なんかイメージつかないんだけど、ナニがどう軽くなるんでしょう?
0877デフォルトの名無しさん
2006/08/31(木) 01:43:02JVMで動作するっていうか、C言語 -> Java言語のプログラムへの
トランスレータだけど。C2Jでぐぐってみるといいと思う
0878デフォルトの名無しさん
2006/08/31(木) 01:45:47静的コンパイルとHotSpotでどっちが早いというのがテーマなのかねえ…
「HotSpotコンパイル」の中身がどんな最適かなのかわからないことには、
なんともかんとも。
0879デフォルトの名無しさん
2006/08/31(木) 01:49:48個人的には数式処理・代数処理程度で、
それをevelする程度で十分なんですけど。
複素数や行列の独自表記ができたり、(a+b)^2と書けたり
多項式展開や因数分解できたりとかです。
Java VMで動くバイトコードコンパイラ、スクリプトコンパイ
ラ?を作る意義・動機と言うのは、そういう特定用途に特化し
た言語を作るのでもありということだと思うんですけど・・
0880デフォルトの名無しさん
2006/08/31(木) 03:49:03なかったんでしょう
0881デフォルトの名無しさん
2006/08/31(木) 03:50:11Javaカードは、
住民基本台帳カード、
大日本印刷が作ったカード、
海外の国民健康保険カードに使われているよ
0882デフォルトの名無しさん
2006/08/31(木) 04:24:32そりゃヒープに取らないで済めば、その分処理が軽くなるでしょう。
ヒープはGC含めてなんだかんだで競合が多いので、
C10Kな時なんかには効いてくる。object poolもしないで済む。
0883デフォルトの名無しさん
2006/08/31(木) 05:56:41そのトランスレータ使える? たった一行のCのプログラムもとんでもない量のJavaになるし、
ポインタ演算している所なんか、酷すぎる。
0884デフォルトの名無しさん
2006/08/31(木) 07:12:58ちょw
まだアプリ間連携もまともにできないJavaなのにw
どうみてもやっと「アプリケーション構成を考えるようになりました」ってレベルだろ?
http://docs.sun.com/app/docs/doc/802-2112/6i63mn60p?l=ja&a=view
のデリゲートとか
http://docs.sun.com/app/docs/doc/802-2112/6i63mn62q?l=ja&a=view
のサービスにいつ追いつくのやらw
20年前のフレームワークに負けてるってはずかしくね?
0885デフォルトの名無しさん
2006/08/31(木) 09:15:02> >>807
> >だから、nが大きくて、CPU毎に最適化したコードによる恩恵が十分得られる場合は、
> >>805のような動的実行コード生成をC, C++でもやればいいだけの話。
> >で、こういう手法は机上の空論じゃなく、多くの動画コーデックや
> >OSカーネル(ページクリアに使うmovntiとか)など、多くの場所で用いられているんだよ。
> if(SSE2命令が利用可能か?) {
> // SSE2命令を利用したインラインアセンブラによるコード
> }
> else {
> // SSE2命令を利用しないインラインアセンブラによるコード
> }
> これのどの辺りが動的実行コード生成になるのか説明してくれんか?
> 無知は怖いね。
無知晒し上げ
0886デフォルトの名無しさん
2006/08/31(木) 09:31:54securityがらみでdata領域を実行出来なくする方向だけど、
JIT/HotSpotはそれじゃ困るやね。
0887デフォルトの名無しさん
2006/08/31(木) 10:01:01.いや、たぶん実用にはならないだろうなあとは試してみて俺も思ったけど
まだそういう処理系は無いという前提で話が進んでいるように見えたので、
一応そういうものはあるということが言いたかっただけ
0888デフォルトの名無しさん
2006/08/31(木) 11:34:40なんかcocoaとかで見る名前だね。
あたりまえか。
何でこれがSunにおいてあんだ?
0889デフォルトの名無しさん
2006/08/31(木) 11:44:02ドトネト厨笑えるw
0890デフォルトの名無しさん
2006/08/31(木) 11:59:42OPENSTEP
0891デフォルトの名無しさん
2006/08/31(木) 12:44:51デフォルトが実行不可になるってだけで、
別途実行可能な領域を確保する方法は用意されている。
たとえばUNIX系ではmmap()にPROT_EXECフラグを付けて領域を確保すればいい。
というか、IA32アーキテクチャではNXビットがサポートされるようになったごく最近まで
PROT_EXECフラグの有無にかかわらず常に実行可能になっていたってだけで、
他のアーキテクチャでプログラムしていた連中にとっては今更って話だろうね。
0892デフォルトの名無しさん
2006/08/31(木) 15:09:330893デフォルトの名無しさん
2006/08/31(木) 19:36:00これSunがSolarisにポートした幻のOPENSTEPのやつだな
俺リアルで使ってたけど、、
0894デフォルトの名無しさん
2006/08/31(木) 19:56:15はMustangで実現してなくないか?
dolphinで?
0895デフォルトの名無しさん
2006/08/31(木) 19:58:30そのうち
0896デフォルトの名無しさん
2006/08/31(木) 20:45:380897デフォルトの名無しさん
2006/08/31(木) 21:11:58らしい・・・
0898デフォルトの名無しさん
2006/08/31(木) 21:49:05Java6.0はリリースされない
リリースされるのはJava6
0899デフォルトの名無しさん
2006/08/31(木) 22:14:09ネタだろうけど、あえて反応してみる。こんな感じか?
public class HelloWorld {
public static void main(String[] args){
asm("getstatic java/lang/System.out:Ljava/io/PrintStream;");
asm("ldc \"Hello, World\"");
asm("invokevirtual java/io/PrintStream.println:(Ljava/lang/String;)V");
}
}
しかし、もし仮に本当にJavaにインラインアセンブラが搭載されたとしても、goto
使えるくらいしか利点が無さそう…
バイトコードレベルでは、大した最適化もできんし、JITコンパイラの最適化を阻害する危険もあるしな
0900デフォルトの名無しさん
2006/08/31(木) 22:45:40>>897はネタの匂いがするけど
それだったらJava標準でなくてもすでに誰かが
作ってそうだ。
Java 6ではそれと似たような方式でスクリプト言語をサポートしていたし。
結局、Jakarata OROと同じように文字列のエスケープは避けられないというわけで。
外部ファイルに置いた場合だけエスケープしなくて済むってほうが言語としてまともだね。
0901デフォルトの名無しさん
2006/08/31(木) 23:43:590902デフォルトの名無しさん
2006/09/01(金) 00:06:392006年10月以降?
http://journal.mycom.co.jp/news/2006/08/31/340.html
0903デフォルトの名無しさん
2006/09/01(金) 06:18:20ありがとう!
0904デフォルトの名無しさん
2006/09/01(金) 09:52:570905デフォルトの名無しさん
2006/09/01(金) 11:13:19アノテーションが増えたって言うけど、どんなもんが増えた?
新たにGenerics対応したクラスも出る?
0906デフォルトの名無しさん
2006/09/01(金) 14:30:24JVMにはJava言語用に作られたGCがあるだけで、C言語には使えないよ。
0907デフォルトの名無しさん
2006/09/01(金) 14:41:410908デフォルトの名無しさん
2006/09/01(金) 15:37:410909デフォルトの名無しさん
2006/09/01(金) 16:00:380910デフォルトの名無しさん
2006/09/01(金) 18:50:50CLR の仮想関数呼び出しは遅すぎで使い物にならないわけだが。
Pure Java と Pure C# なライブラリを比較すると
明らかに JVM >>>>>>>>>>>> CLR であることがわかる。
0911デフォルトの名無しさん
2006/09/01(金) 19:32:29ドトネト並みっていってるが、
ドトネトだってJavaより遅いのは遅いぞ。
どっちもVM上で動いているんだから。
どっちも遅いんだし。
比べるならC/C++とのほうが重みがある。
ドトネトだとVMの性質がJavaと異なるし
得意分野、得意分野が微妙にことなる。
0912デフォルトの名無しさん
2006/09/01(金) 19:39:22Java5 tiger = new Java5();
tiger.swing++;
tiger+=derby;
tiger+=webServer;
Java6 mustang = (Java6) tiger;
こんな感じかな?
0913912
2006/09/01(金) 19:40:070914デフォルトの名無しさん
2006/09/01(金) 20:48:22http://pc8.2ch.net/test/read.cgi/tech/1156986942/
0915デフォルトの名無しさん
2006/09/01(金) 21:17:57Java5型はオブジェクトの型なのか文字列型なのか数値なのか
どっちみちString型の猿まねはできないし++や+=を使えるのは
Stringオブジェクトか数値型だけなのでエラーになるわな。
0916デフォルトの名無しさん
2006/09/01(金) 21:18:20つまらんし、根拠がない
0917デフォルトの名無しさん
2006/09/01(金) 21:28:45オペレータオーバロードキタ━━━━━━(゚∀゚)━━━━━━!!!!
0918デフォルトの名無しさん
2006/09/01(金) 21:51:25わからないでもないが、同じバーチャル・マシンという環境で比べた方が公平だと思うぞ
Cはネイティブ・マシンだろ
またガベコレがどうしたこうしたとかなのか?
0919デフォルトの名無しさん
2006/09/01(金) 21:52:390920デフォルトの名無しさん
2006/09/01(金) 22:02:58つーかJavaに演算子オーバーロードなんて期待すべきでないし
勧めるべきじゃない。
C++の二の舞になったC#と同じ道を歩む。
あれは大失敗だった。
0921デフォルトの名無しさん
2006/09/01(金) 22:05:07同じVMといってもな、VMは各種ベンダによって速度が異なるし。
IBMが作ったのとSunが作ったのとではJVMの速度やライブラリによる速度も変わってくる。
その辺りも厳密に考えないと逝けない。
そう考えると、面倒だし議論するだけ無駄だと思うんだが。
そういう比較は、こだわると、FFとドラクエとを比較するくらい実にくだらない議論になると思うよ。
0922デフォルトの名無しさん
2006/09/01(金) 22:20:110923デフォルトの名無しさん
2006/09/02(土) 00:26:081.2〜1.4のようにデスクトップアプリが大幅にパワーアップするようなのはあんまりなさそうだ
5.0以降デスクトップに力入れてますといってるけど、小粒なのが多くて
むしろ力入れてないのではと思いたくなる
0924デフォルトの名無しさん
2006/09/02(土) 02:48:50Swing swing = getSwing().add(new AntiAlias());
DB db = new Derby();
public Java6() throws NotReleasedException{
try{
openSource();
}catch(Exception e){
log.error("やっぱり無理だった");
}
throw new NotReleasedException("もうちょっとまって");
}
}
0925デフォルトの名無しさん
2006/09/02(土) 03:40:53なんか速くなったのか? ずっと「遅い遅い」と言われ続けてたと
思うんだが。
0926デフォルトの名無しさん
2006/09/02(土) 10:27:07演算子のオーバーロードは便利だよ。演算子オーバーロードじゃなくても、
クラスごとに演算子の動作を定義できるのは便利。
C++のはいけてないけど、pythonのように、演算子ごとに対応するメソッドを
用意する方法ならわかりやすいし、実装も簡単(コンパイラに手を入れるだけで済む)。
Javaユーザは、Javaにない機能はすぐに「あんなものイラネ」とかいいだすから嫌い。
0927デフォルトの名無しさん
2006/09/02(土) 10:38:16> Javaユーザは、Javaにない機能はすぐに「あんなものイラネ」とかいいだすから嫌い。
激同
で、いらないっていいながらJavaに実装されるといきなりマンセーし始めるからもっと嫌い。
Javaは好きだがJavaをまともに使えるのはほんの一握り。大抵は基礎の無い阿呆ばっかだ。厨の割合が高過ぎる。
0928デフォルトの名無しさん
2006/09/02(土) 10:40:06文字列だけ砂糖付きはずるいぞ
0929デフォルトの名無しさん
2006/09/02(土) 11:06:01そういう業界だろw
0930デフォルトの名無しさん
2006/09/02(土) 11:30:59BigDecimalが対応されたらクライアント用でも業務系での地位は確定するな
0931デフォルトの名無しさん
2006/09/02(土) 12:11:19>>927
そんなもの別にJavaユーザに限った話じゃないでしょ。なんですぐにそういう話になるかなあ
C++ユーザだってよく、Javaに対して、GCなんてイラネとか言っているのは耳にする
ある程度普及した言語には、厨や信者が一定割合でつくというだけの話だと思う
0932デフォルトの名無しさん
2006/09/02(土) 12:17:23演算子っつーと、[] も演算子だよな。
数値計算しないから + や - のオーバーライドはできなくても個人的には困らんけど
MapやListで list.get(0) や map.get("key”) が list[0] や map["key"] と書けるようになるとうれしいなあ。
0933デフォルトの名無しさん
2006/09/02(土) 12:30:06とおもったけどキーがIntegerとかでintわたしてオートボクシングとかされると配列とみわけがつかんか
0934デフォルトの名無しさん
2006/09/02(土) 13:41:26大丈夫か?MSや.Netマンセーなのか?
例えば、そんなのオレは面倒とかを除けば、
やってる事は同じなんだけど、そういうの気がつかないのかな。
プロパティとかインデグザとか。
delegate, eventはいいね。なんともMSらしい。
0935デフォルトの名無しさん
2006/09/02(土) 13:45:56いつでもできるんじゃないの。
ただ実質同じことだし、
そういう要求をかなえてまで、
面倒くさいぞー系の蛆が溢れると、
Javaの品質が下がるからまだ今もやらないってこと。
0936デフォルトの名無しさん
2006/09/02(土) 17:43:09Genericsは、「あんなものイラネ」と言われたことないよ。
0937デフォルトの名無しさん
2006/09/02(土) 17:46:46Genericsイラネ
0938デフォルトの名無しさん
2006/09/02(土) 17:50:21C厨
0939デフォルトの名無しさん
2006/09/02(土) 17:58:10なんでlistだと難しいのかくわしく。
0940デフォルトの名無しさん
2006/09/02(土) 17:58:15例えばインタフェースベースの演算子オーバーロードなら
interface Calculateableみたいなのを用意して
Numberと同じメソッド定義しておけば、目的を見失うことも無いだろう。
0941デフォルトの名無しさん
2006/09/02(土) 18:04:28配列と区別がつかないからだろ
0942デフォルトの名無しさん
2006/09/02(土) 18:33:17VMの性能とデスクトップ周りの強化をしてほしいな・・・
0943デフォルトの名無しさん
2006/09/02(土) 18:36:08それは着々と進んでるだろ。
0944デフォルトの名無しさん
2006/09/02(土) 20:03:27区別はつくよ。むしろなんで区別がつかないと思うのか聞きたいところだ
0945デフォルトの名無しさん
2006/09/02(土) 20:26:270946デフォルトの名無しさん
2006/09/02(土) 20:45:46おまえは何も解ってない。
ストラウストラップが警告した事項を
0947デフォルトの名無しさん
2006/09/02(土) 20:45:57もちろんコード全体を見りゃ区別はつくさ
objs[i]と書いてあるときにobjsは配列かListか
すぐには判断できない場面があるわけだ
両者が共通の性質やAPIを持つなら区別できなくても問題ないけどな
実際には配列は固定長だし、APIもlengthでサイズを知るなど異なるわけ
配列を廃止するならともかく両立させるのは混乱の元
0948デフォルトの名無しさん
2006/09/02(土) 20:47:030949デフォルトの名無しさん
2006/09/02(土) 20:48:17[]は単項演算子みたいなもんだからいいんだよ
+や-となると2項演算子なので
演算子の優先順位を意識するのが大変になるんだよ。
それに他人が作った奴の演算子が混ざったらどうなると
思ってるのか。
0950デフォルトの名無しさん
2006/09/02(土) 20:49:15> MapやListで list.get(0) や map.get("key”) が list[0] や map["key"] と書けるようになるとうれしいなあ。
その程度のことのためだけにそんな演算子を付加するのか。
C#のget/setと変わらないくだらん機能だな
0951デフォルトの名無しさん
2006/09/02(土) 20:52:14問題があるとすれば右辺値の一番左の値がプリミティブじゃなかったときくらい。
0952デフォルトの名無しさん
2006/09/02(土) 21:28:30俺的には、Java3Dの強化をなんとかして欲しいな。
0953デフォルトの名無しさん
2006/09/02(土) 21:29:01C++の二の舞になったら終わりだ
0954デフォルトの名無しさん
2006/09/02(土) 21:30:17デスクトップ周りでやらなきゃいけないことは、まだまだ沢山あると思う
デスクトップ周り専門のApacheみたいなグループが登場しないと無理だが
0955デフォルトの名無しさん
2006/09/02(土) 21:33:18BigDecimalクラスをラッパークラスとするプリミティブなbigdecimal型を
用意するっていうC#のdecimal型でどうにかするって手もあるが、
あれは、128bits限定だからな。
BigDecimalのコンストラクタにMathContext.DECIMAL128を設定した
精度しか得られないしな。
0956デフォルトの名無しさん
2006/09/02(土) 21:34:11圧縮ファイルで一体何をしたいんだ?
つか、Jakarta Commonsにそれっぽいのないか?
もしくはSourceForgeにありそうだが
0957デフォルトの名無しさん
2006/09/02(土) 21:39:170958デフォルトの名無しさん
2006/09/02(土) 21:41:010959デフォルトの名無しさん
2006/09/02(土) 22:24:20Java7の拡張の候補にプロパティが入っているのだけどな。
0960デフォルトの名無しさん
2006/09/03(日) 00:04:240961デフォルトの名無しさん
2006/09/03(日) 00:27:080962デフォルトの名無しさん
2006/09/03(日) 00:32:42あの文体は、いつものJavaスレを荒らしてるドトネト厨だから。
3年も4年も前からJavaスレや死滅スレで大暴れしてる変態。
0963デフォルトの名無しさん
2006/09/03(日) 00:35:56コーヒーの方が大人だね。
0964デフォルトの名無しさん
2006/09/03(日) 00:42:45まずこのスレを「プロパティ」で検索してみたらどうなんだ?
0965デフォルトの名無しさん
2006/09/03(日) 00:45:38にしっかりと「プロパティのサポート」が発表されたと書いてあるんだが。。。
プロパティサポートといっても、それがget/set生成みたいなもの
なのか、式言語みたいに「obj.property」というようにアクセスできる
ようにする、という意味なのか、groovyの「@Property」みたいに
@Property size
とか宣言できるようにするのか、といった具体的な話はまったくない
わけだけど。
0966デフォルトの名無しさん
2006/09/03(日) 00:48:13>>963
こういうやつらっていつになったらJavaの世界から消えてくれるんだろ
0967デフォルトの名無しさん
2006/09/03(日) 01:05:16ドトネト棒って語呂と名前がウケルw
0968デフォルトの名無しさん
2006/09/03(日) 01:08:17その、アノテーションっぽい気がした。
@Propertyならいいねえ。
get/setはねえちょっと。
getter.setterに相当するメソッドに
@Propertyアノテーションをつけるのが妥当って感じだね。
0969デフォルトの名無しさん
2006/09/03(日) 03:11:050970デフォルトの名無しさん
2006/09/03(日) 10:27:31「ストラウストラップが警告した事項」って具体的に何?
>>947
おいおい、Javaは静的な型があるんだから、別にコード全体を見るまでもなく、変数の宣言部分をみれば配列かListかはすぐに判断できるし、別に混乱なんかしないだろ。
この程度で混乱なんかしないでくれよ。
>>949
[]は単項演算子じゃなくて、+や-と同じ2項演算子だよ。
それに演算子の動作を自分で定義できることと、演算子の優先順位は関係ないよ。
PythonもRubyも演算子の動作を自分で変えられるけど、優先順位は変えられない。だから別に混乱しない。
>>950
でもELでは[]でアクセスできるようになってるよね。「その程度」のことであれば、
ELでも[]でなくてgetter/setter使えばいいはずだし、もっといえばEL自体必要ない。
Javaユーザは「[]なんてイラネ」といっておきながら、ELの[]は便利とかぬかすから嫌い。
0971デフォルトの名無しさん
2006/09/03(日) 10:39:13言っている事自体はだいたいまともだが
> Javaユーザは「[]なんてイラネ」といっておきながら、ELの[]は便利とかぬかすから嫌い。
とJavaユーザを一緒くたにして煽るのはやめてくれ。ELの[]が便利と言っている層とJavaには[]は
イラネと言っている層がどれくらい重なっているのか調べたわけでもないだろう?
0972デフォルトの名無しさん
2006/09/03(日) 10:43:14粘着にレスすんなよ
0973デフォルトの名無しさん
2006/09/03(日) 11:30:35いっとくが、JavaとELとは全く別の言語だ。
Javaユーザが[]はイラネといってるのはJavaの文法にいらねといってるだけで
ELの文法に[]がいらねといっとるわけではなかろう。
そんなこともわからないでJavaエンタープライズアーキテクトを侮辱するとは
身の程知らずもいいところだ。
0974デフォルトの名無しさん
2006/09/03(日) 11:50:25だからなんでわざわざELなんて用意されたかを考えろや。
Javaそのままだと書きにくいからELが用意されたんじゃないの。
Javaの書きにくさのひとつとして list.get(1) や map.get("key") があり、
これが list[1] や map["key"] とかけたらいいなといってるだけ。
ほんとうにlist.get(1)やmap.get("key")が書きやすい/読みやすいなら
ELでもそれをつかえばいいだけ(ELにはメソッド呼び出しないけど)。
「JavaとELとが別言語」なんて話がずれるだけじゃん。
0975デフォルトの名無しさん
2006/09/03(日) 12:13:34> とJavaユーザを一緒くたにして煽るのはやめてくれ。
一緒くたにしている馬鹿には馬の耳に念仏では?
0976デフォルトの名無しさん
2006/09/03(日) 13:45:49次スレ
0977デフォルトの名無しさん
2006/09/03(日) 14:06:08ストラウとラップは演算子のオーバーロードを
誤った使い方をするとろくなことがないぞってことを言ってるんだよ。
誤った使い方をしなければいいといっても
誤った使い方をする奴は腐るほどいるし。
それで複数の会社組織が独自に演算子を定義して
デスマって酷いことになるわけだ。
0978デフォルトの名無しさん
2006/09/03(日) 14:07:23じゃあさ、お前にはなんでJakarta Velocityみたいなのが
用意されたのかわかるの?
プリプロセッサではなくVelocityが用意された理由を。
0979デフォルトの名無しさん
2006/09/03(日) 15:24:480980デフォルトの名無しさん
2006/09/03(日) 15:35:42List.getなんて滅多に使わなくないか?
0981デフォルトの名無しさん
2006/09/03(日) 17:07:070982デフォルトの名無しさん
2006/09/03(日) 17:47:330983デフォルトの名無しさん
2006/09/03(日) 19:27:060984デフォルトの名無しさん
2006/09/03(日) 20:02:490985デフォルトの名無しさん
2006/09/03(日) 20:23:27みたいに出来んかな。
public ArrayList(String... varArgs);
こんな感じのコンストラクタで。
0986デフォルトの名無しさん
2006/09/03(日) 21:05:54それもだけど、
ArrayList#addAll(Collection<? extends E> c);も、
c.toArray();で配列に直してから使ってる。
ArrayList#addAll(E[] c);がないのはもったいない。
0987デフォルトの名無しさん
2006/09/03(日) 21:46:14Arrays.asListでいいんでないの?
0988デフォルトの名無しさん
2006/09/03(日) 21:55:40とくにテストコードで。
今だと
List strList = Arrays.asList( new String[]{"test1", "test2"});
とかやっててくどいとは思う。
一方で、Javaの、文法はシンプルに、機能はクラスライブラリで、という
スタンスは嫌いじゃない。文法拡張するときは「そんな砂糖いらね」という
抵抗があったほうがちょうどいいと思うぞ。やたら拡張するよりはね。
0989デフォルトの名無しさん
2006/09/03(日) 23:11:48確かに5.0のArrays.asListは
public static <T> List<T> asList(T... a)
だからまあ悪くないんだが、返ってくるのが変更不能リストなのがイマイチ
変更可能リストを返すメソッドが欲しいな。コードはこんな感じで
public class ListUtil {
public static <T> List<T> list(T... a){
List<T> newList = new ArrayList<T>();
for(T t : a) newList.add(t);
return newList;
}
}
使うときはstatic import使えば、
list("A", "B", "C", "D")
のようにするだけで変更可能なリストが作れるので便利
0990デフォルトの名無しさん
2006/09/03(日) 23:21:03まるでPerlやPHPまんまだな
0991デフォルトの名無しさん
2006/09/03(日) 23:24:05それもPHPまんまやないか
0992デフォルトの名無しさん
2006/09/03(日) 23:32:02意味不明。PHPで、array(...)などとして配列が作れることを言っているつもり?
そんなもん別にPHP(やPerl)独特のものでもなんでも無い。
なんで厨はすぐに自分の知っている(好きな)言語の機能のパクリかのように言いたがるかなあ
0993デフォルトの名無しさん
2006/09/04(月) 00:30:14スクリプト言語に共通する書き方だよな
0994デフォルトの名無しさん
2006/09/04(月) 00:52:40for( : )使うことが多いけど速度の差も結構あるし
何番目かを意識したりループの中で挿入とか削除とかもある
for( : ) 使うのが80%くらいかな
0995デフォルトの名無しさん
2006/09/04(月) 01:05:580996デフォルトの名無しさん
2006/09/04(月) 03:09:080997デフォルトの名無しさん
2006/09/04(月) 07:23:57Arrays.asListってlistの様に振る舞うけど、
結局は配列のままのwrapper返すんじゃないの?
0998デフォルトの名無しさん
2006/09/04(月) 07:32:05確かそう。
これをArrayListに追加するときは、>>986のようにまた配列にもどして使うのでもったいない。
0999デフォルトの名無しさん
2006/09/04(月) 08:09:13new LinkedList(asList(a, b, c, d))
でいいやん。
1000デフォルトの名無しさん
2006/09/04(月) 08:17:5910011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。