トップページ⇒tech
1001コメント360KB

[mustang/Java SE 6] 次世代Javaの動向 4 [dolphin]

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/11/20(月) 10:38:16
前スレ

[mustang] 次世代Javaの動向 3 [dolphin]
http://pc8.2ch.net/test/read.cgi/tech/1157227790/

次世代Javaの動向 2
http://pc8.2ch.net/test/read.cgi/tech/1147881822/

【Java】次世代Java・J2SE1.6の動向【Mustang】
http://pc8.2ch.net/test/read.cgi/tech/1081698555/

2006年12月にMustang Java SE 6がリリース予定


Mustangの掲げる主な目標は以下の点にある。
* 互換性と安定性および品質の向上
* Easy of Developmentの実現
* WebサービスおよびXMLサポート機能の拡張
* リソース管理や診断機能の強化
* デスクトップ環境の強化


Java SE 6 じゃじゃ馬ならし
http://www.javainthebox.net/laboratory/JavaSE6/
0002デフォルトの名無しさん2006/11/20(月) 13:40:07
ふーん、WinFXがあるのにね
0003デフォルトの名無しさん2006/11/20(月) 14:11:39
前スレの話題
複素数を扱う前に実数を扱うプリミティブ型がなくちゃ
0004デフォルトの名無しさん2006/11/20(月) 16:54:57
>>3
無限精度ってこと?
0005デフォルトの名無しさん2006/11/20(月) 17:53:26
>>3
BigDecimalでいいよ。
あれをプリミティブにしてもねえ
0006デフォルトの名無しさん2006/11/20(月) 17:55:33
Complexはプリミティブにする必要性を感じない。

conjugate()やabs(),arg(),getReal(),getImaginary(),innerProduct(),

とかいうメソッドがあったとして、これらもいちいち演算子で表現
することになったらどうする気だ。
0007デフォルトの名無しさん2006/11/20(月) 18:39:17
Stringみたいに
Complex z = "1+2i";
と宣言できるだけでいいな。
0008デフォルトの名無しさん2006/11/20(月) 18:40:34
全くですww
数値演算に特化したサポートはスマンが我慢してもらえると助かります・・・
複素数なんて日常つかわねえっす
0009デフォルトの名無しさん2006/11/20(月) 18:41:15
>>7
それくらいなら
Complex z = Complex.valueOf("1+2i");
でいいんじゃないの?
0010 2006/11/21(火) 00:16:58
mustangのjavaw.exeって60〜70秒に一度くらい規則正しくCPU負荷がすごく高くなりませんか?ワーカースレッドとか負荷の高い計算がない場合でも必ず起こってるようなきがします。
0011デフォルトの名無しさん2006/11/21(火) 00:30:08
>>10
つ sun.rmi.dgc.server.gcInterval 、sun.rmi.dgc.client.gcInterval
0012デフォルトの名無しさん2006/11/21(火) 00:38:32
>>11
ガベージコレクトしてるんですか。
しかしTigerでは気にならなかったレベルだったような気がします。簡単なアウトラインエディタを作ってるんですが、文字入力や日本語変換とかが1分に一回規則正しく瞬間的に遅くなってしまいます。以前は気にならなかったのに。
0013122006/11/21(火) 00:39:27
自分のパソコンがPen�Vの733MHZだから遅くて気になるのかな。
0014デフォルトの名無しさん2006/11/21(火) 03:05:40
>>7
じゃ、今早速作れ。
構文解析は負担がかかるが。
とりあえずはメソッドを演算子代わりにすることから
始めないことには
0015デフォルトの名無しさん2006/11/21(火) 03:07:25
>>9
その程度の簡単なものであればいいが
\int\~\infty_{\infty}\frac{\sin x}[\cos \frac{dx}{dt}]
みたいなものだととんでもなく負担が増大する。
0016デフォルトの名無しさん2006/11/21(火) 09:02:49
複素数は虚数単位がIかJかで殺し合いが起きるので却下すます
0017デフォルトの名無しさん2006/11/21(火) 09:10:27
Vector v = {1, 2, 3};

Matrix A = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9},
  };
0018デフォルトの名無しさん2006/11/21(火) 12:35:50
>>16
うむ。それもそうだ。
複素数を却下するのではなく、String表記法
について慎重に検討するまでは却下する。

が正しい。@
0019デフォルトの名無しさん2006/11/21(火) 12:37:39
>>17
見たからにただの配列と変わらんな。

シンタックスシュガーとして
導入したとでもいうのかね。

だが、行列の演算子はどうする。
行列の積は*でいいのか?
それとも、行列の個々の要素同士の積こそが*であって
行列の積は*で表現すべきではないか?

ベクトルの内積演算子、外積演算子はどうする。
0020デフォルトの名無しさん2006/11/21(火) 20:57:09
Java SE 6 っていつ出るの?
11月上旬っていう記事を見たんだが、まだだよねぇ?
http://journal.mycom.co.jp/articles/2006/11/01/java/
0021デフォルトの名無しさん2006/11/21(火) 21:25:07
今、RC
0022デフォルトの名無しさん2006/11/21(火) 21:34:22
>>20
おまえは>>1すら読めないのか
0023デフォルトの名無しさん2006/11/22(水) 08:28:56
>>20
November と December を勘違いでもしたんじゃねーか?
と思わなくも無い。大地タソだし。

そこの記事ちゃんと読むと、記事の日付が 11/1 になってるのに
> Java SE 6のリリースまで1カ月強となった。
とか出てきて変だし。
0024デフォルトの名無しさん2006/11/22(水) 18:06:26
いや、当初は11月初頭リリースって予定だったと思ったが・・・。
0025デフォルトの名無しさん2006/11/23(木) 02:52:35
>>19
そんなあなたに Fortress
0026デフォルトの名無しさん2006/11/23(木) 12:39:02
次のバージョンではGenericsを完全にしてほしい。
0027デフォルトの名無しさん2006/11/23(木) 12:43:18
完全てどういうことだ
0028デフォルトの名無しさん2006/11/23(木) 13:56:59
C++Template化とかほざいたら>>26をしばきたたこうぜ。
0029デフォルトの名無しさん2006/11/23(木) 13:57:16
public class A<E> {
  E[] e = new E[5];
}
ができるように。
0030デフォルトの名無しさん2006/11/23(木) 16:07:03
>>29
erasure だけを使ってる限りは無理だろうね。
0031デフォルトの名無しさん2006/11/23(木) 18:42:09
erasureによるGenericsは、
全ての型で使える1つのコードを生成するだけでよいという利点
があるんだけど。
キャッシュの当たり率やメモリ消費量的には有利なはず。

C#のGenericsを採用した時点で、JITコンパイラは一部のコードを
C++のテンプレートのように型毎に生成する必要が出てくるからなぁ。
0032デフォルトの名無しさん2006/11/24(金) 15:35:44
>>29
そもそも、配列でそんなもんを使う価値が理解できない。
配列自体おかしな仕様なんだから。
List使え。
0033デフォルトの名無しさん2006/11/24(金) 15:36:18
>>31
Java GenericsはC#のGenericsとは違うからな。
0034デフォルトの名無しさん2006/11/24(金) 16:35:44
> 配列自体おかしな仕様なんだから。
どの辺が?
0035デフォルトの名無しさん2006/11/24(金) 16:36:56
ということは、>>29は、利便性とデメリットを検討した上で
排除された記法っぽいな。
俺も>>29が出来てもそんなメリットとも感じないし。
0036デフォルトの名無しさん2006/11/24(金) 20:31:36
>>34
まず一つあげてみようか。
配列型を引数にとるとその引数である
配列の要素にまでfinalを指定できないことがあげられるね。
簡単に言うと配列は型安全性が完全に保証されていないこと。
配列の配列を他の配列の配列の型に代入できたりとか。
あと、配列型は継承できないこととか。


0037デフォルトの名無しさん2006/11/24(金) 20:49:21
>配列の要素にまでfinalを指定できないことがあげられるね。
コンパイル時、個々の要素毎でなく配列全体一括で不変にできるようにしようって話なら
adding_generics の時にも一旦出てたし、JSR 308 とかでもやろうとしてたりとかしてるね。
http://jcp.org/en/jsr/detail?id=308

> 簡単に言うと配列は型安全性が完全に保証されていないこと。
よくわからんけど、これは List も同じでは?

> あと、配列型は継承できないこととか。
配列を継承したいケースって、どんな時?
toString() 弄りたいとかはわからんでもないが、他の解決法あるし……
0038デフォルトの名無しさん2006/11/24(金) 21:01:25
>>37
一番上に関しては List でもコンパイル時にはチェックできないし。
Collections.unmodifiableList() とか使えば実行時にはチェックされるけど。
0039デフォルトの名無しさん2006/11/24(金) 21:05:59
>>37
36じゃないが、「配列は型安全性が完全に保証されていない」ってのは
下のコードは実行時例外が出るのにコンパイルが通るって話だろう。
ジェネリックな List だとコンパイルが通らない。

String[] ss = new String[] { "abc" };
Object[] os = ss;
os[0] = new Integer(123);
0040デフォルトの名無しさん2006/11/24(金) 21:17:18
>>39
コンパイル時の型安全だけに限ってるのか。
実行時は List の方が緩くなるし、どっちもどっちだと思うけどね。

Collections.checkedList() もあるけど、
Class が必要になるから、必ずしも使えるとは限らんし。
0041デフォルトの名無しさん2006/11/24(金) 23:20:57
>>38
それを配列にできないから配列は糞仕様だっていってるんだろ。
いちいりListに変換しないといけないからな
0042デフォルトの名無しさん2006/11/24(金) 23:22:40
Developer Worksで配列はCovariantじゃないってのがあったな。

配列をGenericsで扱うと、思い通りにいかないとかってやつ。
今その話が発端になっているのかな?

たしかにあれはキモイ。だから配列は極力つかわないほうが
綺麗になるってことかな。配列とGenericsとの併用は避けるべきだともいえそうだね。
0043デフォルトの名無しさん2006/11/24(金) 23:26:37
>>37
> > 簡単に言うと配列は型安全性が完全に保証されていないこと。
> よくわからんけど、これは List も同じでは?

そこでGenericsと、既に出たけれどもCollectionsクラスのアンモディファイアブルを
使う。配列だとListほど思い通りにいくわけでもないな。
配列はListよりパフォーマンスがよくてコード量が短いという
程度のメリットしかないな。


> > あと、配列型は継承できないこととか。
> 配列を継承したいケースって、どんな時?

そんなケースはまれだと思うが、

ある型Aを配列で扱いたいとき、
Aを継承したBも配列で扱いたい。
そんなとき、B[]はA[]を継承できるかっていうと
そうでも無いって奴だな。

そうなったらAArrayやBArrayというクラスを別途
作って対応するしかないって奴だ。

0044デフォルトの名無しさん2006/11/24(金) 23:33:52
配列もプリミティブ型同様、
Javaの中で妥協して作られたモノだと見てもいいな。

しかしprintf(String a, Object...)は
実は正体がprintf(String a, Object[] b)というからな

これもいつしか

public <E> PrintStream printf(String a List<E> )

なメソッドがオーバーロードされるんだろうか

0045デフォルトの名無しさん2006/11/25(土) 00:03:05
>>42
いや、generics は covariant じゃないから、型安全が保持されてるって書いてあったような。

> 配列とGenericsとの併用は避けるべきだともいえそうだね。
配列と Generics は相性も悪いしね。 >>29 みたいのができないし。
0046デフォルトの名無しさん2006/11/25(土) 00:10:13
>>43
> そんなとき、B[]はA[]を継承できるかっていうと
それって、どーゆー時に必要になる?
0047デフォルトの名無しさん2006/11/25(土) 00:35:27
例えばSortedSetを継承してTreeSetを作りたい、
みたいなときじゃないかな。

結局配列型を継承せず
配列型を集約するわけだが
0048デフォルトの名無しさん2006/11/25(土) 00:42:00
>例えばSortedSetを継承してTreeSetを作りたい
Sorted配列を継承してTree配列作る?
配列に対して、そーゆー発想は無かったなぁ。
0049デフォルトの名無しさん2006/11/25(土) 02:25:17
そして配列に失望するのであった。

配列は非オブジェクト指向である。
0050デフォルトの名無しさん2006/11/25(土) 02:29:47
構文糖衣を許して、[]=っていうメソッドを定義できるようにするしかない。
0051デフォルトの名無しさん2006/11/25(土) 03:09:59
>>48
普通はしない
ってか、Tree配列ってなんだよ
0052デフォルトの名無しさん2006/11/25(土) 03:35:37
>>45
でも配列使うAPIも結構多いんだよね。
何しろGenericsができるまでは要素の型を指定できたの配列だけだし。
0053デフォルトの名無しさん2006/11/25(土) 09:12:57
Number[] nums = new Double[2];
nums[0] = new Double(1.0); //OK
//nums[1] = new Integer(1000); //ArrayStoreException
Double[] dd = (Double[])nums;//OK

Number[] num2 = new Number[2];
num2[0] = new Double(1.0); //OK
num2[1] = new Integer(1000); //OK
num2[1] = new Double(0.01); //OK
Double[] ddd = (Double[])num2;//ClassCastException
0054デフォルトの名無しさん2006/11/25(土) 09:47:30
>>39
それで「型安全が完全に保証されていない」ってんなら、極端な話すれば、

List<String> l = new ArrayList<String>();
Vector<String> v = (Vector<String>)l;
は、コンパイルが通るから、
「参照型の変数は型安全が完全に保証されていない」
とかいう変な話になっちゃうような気もする。
0055デフォルトの名無しさん2006/11/25(土) 12:42:16
>>54
それはキャストしてるだけでしょ。
型安全ってのはキャストなしでコンパイルが通ったら
実行時にも型に関する例外が出ないことだよ。
0056デフォルトの名無しさん2006/11/25(土) 13:12:16
>>54
それはキャストが型安全じゃない事を示しただけ。

そりゃ、キャストは型安全じゃないわな。
0057デフォルトの名無しさん2006/11/25(土) 14:32:17
ArrayListのコードの一部だけど何か奇怪だね。

private transient E[] elementData;(92行)
this.elementData = (E[])new Object[initialCapacity];(113行)
0058デフォルトの名無しさん2006/11/25(土) 15:12:10
そりゃ、erasureだからnew E[initialCapacity];はできんでしょ。
0059デフォルトの名無しさん2006/11/25(土) 15:23:13
配列は変な仕様だが、
配列がないとCollectionFrameworkもつくれないわけか・・・
0060デフォルトの名無しさん2006/11/25(土) 15:28:51
>>59
配列が covariant じゃなかったら 1.4 で Collection#toArray(Object[]) の
使い勝手が滅茶苦茶悪くなるし。極端に変な仕様だとも思わんが。
0061デフォルトの名無しさん2006/11/25(土) 19:03:57
>>60
まあその辺はトレードオフだわな
配列がcovariantなおかげで便利な部分があるのも確かだし
一方で型安全では無いとか配列の要素への代入時にチェックが入って遅くなる(可能性がある)
とか、covariantなために発生する問題もある
型安全かつ利便性をそれなりに保つためには、Java Genericsが採用したワイルドカードの
ような機能がJVMレベルであれば良かったんだろうけど、今更言っても後の祭りだしね
0062デフォルトの名無しさん2006/11/25(土) 21:01:45
>>59
っJNI
0063デフォルトの名無しさん2006/11/25(土) 21:46:16
>59 つcons
0064デフォルトの名無しさん2006/11/25(土) 23:09:16
ところで

covariantの意味はなんたるか


統計学用語で
varianseが分散
covarianseが共分散
ってのはわかるんだが
0065デフォルトの名無しさん2006/11/25(土) 23:09:49
スペルミスだ

variance
covariance
の間違い
0066デフォルトの名無しさん2006/11/25(土) 23:11:35
おっとよく見ると

http://www2.alc.co.jp/ejr/index.php?word_in=covariant&word_in2=%82%A9%82%AB%82%AD%82%AF%82%B1&word_in3=PVawEWi72JXCKoa0Je

# covariant
【形】 《数学》共変{きょうへん}の
# covariant components
共変成分{きょうへん せいぶん}
# covariant derivative
《数学》共変微分{きょうへん びぶん}、共変導関数{きょうへん どうかんすう}
# covariant differential
共変微分{きょうへん びぶん}
# covariant differentiation
《数学》共変微分{きょうへん びぶん}
# covariant equation
共変方程式{きょうへん ほうていしき}
# covariant functor
共変関手{きょうへん かんしゅ}
# covariant gage
共変{きょうへん}ゲージ
0067デフォルトの名無しさん2006/11/25(土) 23:13:54
ベクトル解析は三次元までしかしらないので
covariantとかtensor(テンソル)とかいわれても
わからん。

n次元空間とかn次元超平面とかクォータニンとか全然ピンと来ない
0068デフォルトの名無しさん2006/11/26(日) 00:58:36
>>64
プログラミング言語関係の用語のcovariance・contravariance
は、共変・反変と訳することが多い。varianceの訳語は
聞いたことが無いので、よくわからない

で、covarianceの意味だがここで言われてる文脈では
ある型AとBとパラメータ型Tについて、
A <: B => T<A> <: T<B> ( A <: B は AがBのサブタイプであるという意味)
が成立するとき、Tはcovariantであると言う。
で、Javaの配列に関して考えてみると
A <: B => A[] <: B[]
がJava言語仕様で決まっているからJavaの配列はcovariantなわけだ
一方、Java Genericsでは上記の命題が成立しないのでJava Genericsの
Generic型はcovriantでは無いというわけ
0069デフォルトの名無しさん2006/11/26(日) 03:16:26
お前ら、何でJava使ってるんだ。
もういいから、違う言語使えよ。
007064 じゃないが2006/11/26(日) 03:19:04
>>68
なるほどーすげぇよく分かったよ。サンクスコ
0071デフォルトの名無しさん2006/11/26(日) 10:21:31
A <: B => T<A> <: T<B> ( A <: B は AがBのサブタイプであるという意味)
この行を読もうとして変態言語のパーサの気分がよくわかった。
等幅フォントにしたら読みやすくなった。
0072デフォルトの名無しさん2006/11/26(日) 12:49:03
>>69
じゃ、オマエのおすすめの言語あげてみそ
0073デフォルトの名無しさん2006/11/26(日) 13:08:53
>>69じゃないけど、MathematicaだとJ/Linkや.NET/Linkで
Javaや.NETと連携できるみたいだね。
面倒な計算はMathematicaのエンジンにやらせて、
結果だけJavaで表示って方法じゃダメか?
Mathematicaしか調べてないけど、他の製品にもこういうのあるんじゃない?
0074デフォルトの名無しさん2006/11/27(月) 01:52:43
それが普通の人の発想だと思おうよ
0075デフォルトの名無しさん2006/11/27(月) 02:20:17
>>73
ドトネトとの連携が>>69とどういう繋がりがあるんだかわからないが
数値計算のためにわざわざドトネトを使う価値ってものが
どういうものか説明しないことには意図が伝わらないな
0076デフォルトの名無しさん2006/11/27(月) 04:31:53
>>75
いや、>>73の論旨を読めてないでしょう。
JavaOnlyで行わず数値演算は、Mathmatica(あれも一種の言語だよな)
何かに任せ連携を取るということもあるという話。であって
数値演算に、Java、.NET等の汎用言語を「使わない」選択肢について語ってるのが>>73
0077デフォルトの名無しさん2006/11/27(月) 08:07:07
Mathmaticaってそんな一般的?
大学の端末には確かに入ってるけど・・
0078デフォルトの名無しさん2006/11/27(月) 15:36:34
本気で数値計算やるなら大抵持ってる希ガス
つーか他の製品知らない
0079デフォルトの名無しさん2006/11/27(月) 15:53:39
>>76
Mathematicaの話をするならドトネトの話は関係ない
0080デフォルトの名無しさん2006/11/27(月) 15:53:57
>>78
MATLABのほうが断然使いやすいんだが
0081デフォルトの名無しさん2006/11/27(月) 20:35:23
MATLAB,Mathematicaは、理系で大学生以上なら一般的に知ってると思う
他の言語とのインターフェースは知らなかったよ。
0082デフォルトの名無しさん2006/11/27(月) 23:52:44
MATLABは大学でも
特定の研究室に関わらないと知らないと思うぞ。

あと、高いしな。

FortranやC/C++のほうが知名度が高いだろう。
0083デフォルトの名無しさん2006/11/29(水) 20:30:40
昔、Javaにポインタを導入しろとか言ってたやつがいたなw
0084デフォルトの名無しさん2006/11/29(水) 22:24:09
ぬるぽ
0085デフォルトの名無しさん2006/11/29(水) 23:26:25
>>82
CやJavaを使える生徒が減ったという理由でMATLABが必修になりつつある情報科があるんだよなw
まず教授がCやJavaを使えないって話かもしれんがw
0086デフォルトの名無しさん2006/11/30(木) 01:18:03
>>83
C#見て小躍りしたんだろうなぁ
>>84
うん。ガッ
0087デフォルトの名無しさん2006/11/30(木) 01:43:40
大学生は生徒とは呼ばない。学生と呼ぶ。
生徒は中高生のことを指す。
0088デフォルトの名無しさん2006/11/30(木) 20:26:03
++java
0089デフォルトの名無しさん2006/12/01(金) 09:48:41
Java#
0090デフォルトの名無しさん2006/12/02(土) 07:44:53
#java++
0091デフォルトの名無しさん2006/12/02(土) 10:42:01
Java SE 6 まだ〜?
0092デフォルトの名無しさん2006/12/02(土) 13:37:01
#import <java.lang.System>
0093デフォルトの名無しさん2006/12/04(月) 12:24:19
JDK7 build03
ttp://download.java.net/jdk7/binaries/
ttp://www.java.net/download/jdk7/changes/jdk7-b03.html

Changelogの多さからして本格稼働した様子。
0094デフォルトの名無しさん2006/12/10(日) 10:42:44
次世代Java == C#
0095デフォルトの名無しさん2006/12/10(日) 14:05:39
流石に言語機能としてはまだC#のほうが上かな。
さすがDelphi作者が作っただけはある。
Java 7からはプロパティやクロージャも検討されるから
2009年には若干C#より柔軟になる。
0096デフォルトの名無しさん2006/12/10(日) 15:43:40
そーいや、クロージャの話はいろいろ出てきたけどプロパティの話はあんましみないね。
0097デフォルトの名無しさん2006/12/10(日) 19:22:49
リリースまだかよ。
12月も1/3過ぎちゃうぞ。
0098デフォルトの名無しさん2006/12/10(日) 23:09:53
なんか、最近ようやく継続の存在意義を知った
0099デフォルトの名無しさん2006/12/11(月) 20:13:17
リリースされたよ。JDK6。
0100デフォルトの名無しさん2006/12/11(月) 20:33:55
ランゲージパックは無し?
てか5.0のupdate10をちらっとみたけどこっちのがマニアックに凄いな
selectが内部でepollで実装されてるってことはゲーム用途でもいけそう
0101デフォルトの名無しさん2006/12/11(月) 21:36:15
>>100
ランゲージパックなんていままでもなかったと思うが。
■ このスレッドは過去ログ倉庫に格納されています