現世代Javaの動向 1 ..
[2ch|▼Menu]
2:デフォルトの名無しさん
06/06/14 21:28:35
現世代は1.3.1だろ

3:デフォルトの名無しさん
06/06/14 23:30:07
マジレスすると5.0

4:デフォルトの名無しさん
06/06/15 00:36:22
参考:
JDK1.5.0_07
URLリンク(java.sun.com)
JDK1.4.2_12
URLリンク(java.sun.com)
JDK1.3.1_18 (Mustangリリースまでの命)
URLリンク(java.sun.com)

5:デフォルトの名無しさん
06/06/15 07:47:59
5.0より1.4の言語仕様が好きな俺が来ましたよ。

6:デフォルトの名無しさん
06/06/15 07:51:59
変態め

7:デフォルトの名無しさん
06/06/15 08:13:07
>>5
ああ、テンプレートの採用とか?

8:デフォルトの名無しさん
06/06/15 11:28:49
じゃあ、Genericsのイカした活用方法でも晒してくれ。

9:デフォルトの名無しさん
06/06/15 11:49:28
うだうだする目的のスレはマ板にたてろと

10:デフォルトの名無しさん
06/06/15 16:32:34
現世代Javaってことで、Java EE 5の話題なんてどうだ?

11:デフォルトの名無しさん
06/06/15 21:25:12
Persistence APIって、結局なんなのかよく分かってない。
ObjectPersistenceにも使えるのかな??

12:デフォルトの名無しさん
06/06/17 19:39:31
HashMap<String,HashMap<String,Object>> map = new HashMap<String,HashMap<String,Object>>();

13:デフォルトの名無しさん
06/06/17 22:02:49
>>11
hibernateのこと

14:デフォルトの名無しさん
06/06/17 22:09:24
てかさ、シリアライズって黎明期からあるのに
何を今更パーシステンスなんだろうって気もする

15:デフォルトの名無しさん
06/06/17 22:10:49
>>13
ちょっとちがうのではないか?

16:デフォルトの名無しさん
06/06/18 01:32:18
>>14
シリアライズは永続化するための必要条件だが必要十分条件では無い

17:13
06/06/18 04:09:28
>>14
シリアライズと、ORマッピングは、まったく違うよ。
むしろ、シリアライズとORマッピングを同一視していたために傷口が広がったというようなことがどこかに書いてあった。

> 15
CriteriaとProjectionのところは違うね。

18:デフォルトの名無しさん
06/06/26 20:23:34
揚げ

19:デフォルトの名無しさん
06/07/01 11:40:56
CMP で全部リモートインターフェースでやって DTO を使ってた場合、

サーブレット → セッションBean → CMPエンティティBran

の都合二回シリアライズをやってる?

20:デフォルトの名無しさん
06/07/02 04:11:26
何か、java.sun.com派手にデザイン変更されたね

21:デフォルトの名無しさん
06/07/02 09:15:57
>>20
なんか日本語版がどこにあるかわからなくなった。

22:デフォルトの名無しさん
06/07/03 15:46:36
漏れにはどこも変わってないように見える

23:デフォルトの名無しさん
06/07/03 17:01:08
>>20
これで派手なのか?今まで通り普通にダイブできますが。何か。

24:デフォルトの名無しさん
06/07/04 21:03:22
時給1000円でJava教えてくださるかたを募集します
場所 所沢(池袋・高田馬場から直通)

i−want−to−study−java@hotmail.co.jp
(アドレスは全角で書いてあるので半角に直してください)
よろしくおねがいします

25:デフォルトの名無しさん
06/07/07 02:22:50

メールしたら監禁されてSPAM送信の手伝いさせられる悪寒


26:24
06/07/17 21:29:23
教える対象は超初心者です。

専門学校などでJavaを勉強されていて夏休みだけ教えたいという方も歓迎です

27:デフォルトの名無しさん
06/07/17 21:33:10
手動スクリプトってところがまたきもいな
あからさまな業者なのに失礼とも思わないゴミ

28:デフォルトの名無しさん
06/07/17 21:40:13
超初心者=不法労働者=日本語通じねえ
とかだったらワロスwww

普通の人が欲しけりゃ、普通の募集かけるわな
ニートか、特殊な事情の人が欲しいって訳なんだろ?
どう考えても普通の仕事じゃねえな・・・怖いもの見たさを煽ってんのか?
・・・確かに見てみたいがっっw

29:デフォルトの名無しさん
06/08/30 23:38:15
Genericsにはtypedefやある程度の型推論が欲しいと思うんだが、どう思う?

30:デフォルトの名無しさん
06/08/31 00:18:17
>>29
俺も欲しいとは思うが、Javaにのせるのはどうなんだろうか?
識者の意見求む。

31:デフォルトの名無しさん
06/08/31 00:21:19
>>30
新しい言語を作るならそれでよい。

問題は、後方互換性なんよね。全くレガシーって奴は厄介ですよ。

32:デフォルトの名無しさん
06/08/31 00:38:34
>>31
サンクス
なるほど、後方互換性を取るのは難しそうですね、どちらも。
確かに、いまさらCloneableをClonableにする、なんて言われても・・・
って、これはEclipseのリファクタリング機能で何とかなるか。
まだ学生ですし、自分*だけ*の場合は、ですが。

33:デフォルトの名無しさん
06/08/31 00:57:58
そこは類義語機能をつければ良いんじゃね?

34:デフォルトの名無しさん
06/08/31 01:05:37
と、言いますと?

35:デフォルトの名無しさん
06/08/31 01:27:10
interface Clonable extends Cloneable {}
を導入して、今後はみなClonableで書いていくようにする、と取り決めると、
どんな問題が起こるかな。

36:デフォルトの名無しさん
06/08/31 01:30:15
>>35
導入されていないバージョンのJDK使うとClassNoFoundError。

37:デフォルトの名無しさん
06/08/31 01:37:45
逆に
interface Cloneable extends Clonable {}
だと、instanceof Cloneableで判定してるところで通ってたものが通らなくなるな。

38:デフォルトの名無しさん
06/08/31 15:52:04
typedefだけならいけるんじゃね?
typedefした結果、名前がかぶるならコンパイルエラーにするとかして。

39:デフォルトの名無しさん
06/08/31 17:11:35
型推論って何ですか?

40:デフォルトの名無しさん
06/08/31 23:19:50
すみません・・・型推論ってどういうものなんでしょうか?

41:デフォルトの名無しさん
06/09/01 19:45:09
本当にすみません・・・

42:デフォルトの名無しさん
06/09/02 00:32:04
誰か・・・

43:デフォルトの名無しさん
06/09/02 00:37:46
>>7
Genericsはテンプレートとは呼ばぬ

44:デフォルトの名無しさん
06/09/02 00:39:39
>>8
それなら、
SourgeForceに公開されている
Commons Collections wigh Generics のソースコードを参照するといい。

そのうち、Jakarta Commons CollectionsがGenericsに対応するぞ。


それと、Effective JavaのJava5対応版が出ればかなーり、
Genericsのノウハウについて身に着けられそうだ。


45:デフォルトの名無しさん
06/09/02 00:45:35
>>32
広報互換性だけでなく、
Typesafeの問題もあるし


46:デフォルトの名無しさん
06/09/02 00:46:51
>>38
typedefは面倒なことになるから導入しない方がいい。
C++の二の舞に。

47:デフォルトの名無しさん
06/09/02 01:05:02
>>46
面倒なことって?

48:デフォルトの名無しさん
06/09/02 01:12:52
>>47
覚えなきゃならん

49:デフォルトの名無しさん
06/09/02 01:37:17
便利だと思いますけどね、typedef
もし、
HashMap<String, LinkedHashMap<String, List<String>>>
なんてあると悲惨だし。

50:デフォルトの名無しさん
06/09/02 02:13:00
>>48
もっと大事な問題がある。

>>47
ストラウストラップが警告していたことだ。
その弊害は複数人で開発するときに起きる。
各々がtypedef宣言した型の定義が異なると
名前を書き直す手間が生まれ、面倒な自体に陥る。

typedefを導入するなら、typedefで定義した型が
重複してエラーにならないように名前空間も同時にtypedefに導入すべきだろう、
と思ったが、やっぱりそれでも混乱の元。

あらかじめチーム内でルールを決めていればいいが、
他社が作ったtypedef定義を使うときに自社で定義した型名が重複することがあり
面倒な事態が起きる。これが2社程度ならどうにかなる可能性があっても、
三社、四社となると非常にとんでもない苦労を強いられる。

>>49
その程度でtypedefを導入するなら、新たにラッパークラスで宣言した方がいい。

51:デフォルトの名無しさん
06/09/02 02:50:42
ふーん、そうなのか。
で、今ではそのtypedefの難題をどうやって解決したの?

52:デフォルトの名無しさん
06/09/02 10:05:54
>>50
クラス内のみで有効、つまりprivateなtypedefのみなら混乱は起きないんじゃ?
ラッパークラスは大げさすぎるし、たしかIBMの記事でtypedefの変わりに
ラッパー使うな、ってのがあったはず。
あぁ、これかも
URLリンク(www-06.ibm.com)

53:デフォルトの名無しさん
06/09/03 01:02:37
あげ

54:デフォルトの名無しさん
06/09/03 01:50:28
JAVAはバージョン違いで動かないし要らない。


55:デフォルトの名無しさん
06/09/03 10:43:23
>>50
それって、別にtypedefに限った話ではなく、名前がつくものはなんでも当てはまるよね。
クラス名だって十分重複する可能性がある。
それにJavaにはpackageがあるんだから、typedefによる名前の重複はほとんど起きないと思うよ。

typedefは、>>49が書いたように、Genericsによって複雑になった型を簡略化できる利点がある。
おれは>>50が主張する欠点はtypedefに限った話じゃないと思うから、それよりは>>49の利点のほうに一票。


56:デフォルトの名無しさん
06/09/03 11:41:03
>>55
typedefを使う型にpackageを使うのか。
実際にどうやって宣言するのかここに書いてくれないか?
副作用が見えてくるぞ。

57:デフォルトの名無しさん
06/09/03 11:41:58
>>54
それは他の言語でも同様。
Javaではそういった事態に困る確率は
他のどの言語よりも低い。

58:デフォルトの名無しさん
06/09/03 12:12:30
>>50
C++とJavaの違いをもっと良く勉強してください。

59:デフォルトの名無しさん
06/09/03 13:16:29
package jp.example;

// importは省略

public typedef Map<String, List<String>> HeaderMap; // ;はいらないかな?

public class Hoge {
  HeaderMap getHeaders() { ... }
}

60:デフォルトの名無しさん
06/09/03 13:18:26
getHeadersにpublic付け忘れた・・・orz
で、なにか問題になるか?HeaderMapクラスがあったら、とかは却下な。

61:デフォルトの名無しさん
06/09/03 13:22:07
package jp.example;

// importは省略

public class Hoge {
  public typedef Map<String, List<String>> HeaderMap;
  public HeaderMap getHeaders() { ... }
}

こうかも

62:sage
06/09/03 14:13:17
>>61
読みやすさより書きやすさを優先してるように見える
一般にコードは書かれた回数より読まれる回数が多いはず
タイプ量を短くするためだけに新たな型名を定義するようなものは既存のJavaにはない気がするし
Hogeの使い方を知るためにHeaderMapの定義を見ないといけないのはつらい
Fuga.setHeaders(Hoge.HeaderMap m)とか伝染するとさらにつらい
Fuga.setAnotherHeaders(Map<String,List<String>> m)があったりして記述が一貫しなくなるのもつらい

63:デフォルトの名無しさん
06/09/03 14:15:58
>>58
お前が勉強しろよ

64:デフォルトの名無しさん
06/09/03 14:17:38
>>59
そのHeaderMapを外部から使うときは
import宣言でやるってことか。


よさそうに見えるが・・・



何か落とし穴があるような気がしてならない。

65:デフォルトの名無しさん
06/09/03 14:22:52
>>62の言う落とし穴も揚げられる。

ほかに揚げられるのは、
演算子オーバーローディング問題と
同じかな。

66:あげあげ
06/09/03 15:57:34
なら>>52の案はどうよ?
引数や戻り値には感染しないように禁止しておいて、内部で使うだけ。
結構な妥協案だけど、これなら問題ないんでね?

67:デフォルトの名無しさん
06/09/03 17:05:43
>>66
staticのやつ?

68:デフォルトの名無しさん
06/09/03 17:32:48
>>67
なんだそれ?
いや、typedefはクラス内でしか有効じゃなくて、クラス外には見せないようにする。

public class Hoge {
 typedef Map<String, List<String>> HeaderMap; // これはprivate
 // このメソッドはエラー
 public HeaderMap func1() { ... }
 // このメソッドはOK
 private HeaderMap func2() { ... }
 // これもOK
 public void func3() {
  HeaderMap map = func2();
  ...
 }
}

69:デフォルトの名無しさん
06/09/03 21:00:02
>>68
それならpackage privateでもいいかもしれないね。

70:デフォルトの名無しさん
06/09/03 22:43:09
ときに、全ての言語はlispに向かう、って真なのかねぇ
クロージャなんて普及しないと思うんだが喜んでる奴いる?

71:デフォルトの名無しさん
06/09/03 23:20:32
>>70
> ときに、全ての言語はlispに向かう、って真なのかねぇ
たぶん偽だろうね。ああいう言説ってLisp厨の戯言にしか聞こえない
レキシカルスコープやクロージャ、GCなどをLisp系言語が最初に取り入れたのは
事実だろうけど、だからといってそれらの特徴がLispの専売特許のように言われても困る

ただ、クロージャ自体はいろいろと便利で使い道も多いので、あった方が良いと思う
例えば、クロージャのある言語だと、スコープを抜けたらファイルのクローズ処理を
自動的にやってくれるライブラリが作れて便利だけど、現在のJavaだとそういうのがしづらい
(無名クラスを使えばできなくは無いが記述が冗長)ので、finallyで明示的にクローズしなくちゃ
ならなくてめんどいとか

72:デフォルトの名無しさん
06/09/04 07:29:47
クロージャがあると汎関数作るのが簡単になるから欲しい。
利用する側にとっても便利。いちいち無名クラスというのも…

>>71
後、汎関数もLispが先駆者で、Javaはこっちの方面は拒んで、
クラスに属するメソッド主義だったけど、クロージャを導入すると、
クラスから独立した汎関数の世界にちょっと足を踏み込んだことになる。


73:デフォルトの名無しさん
06/09/04 12:16:32
59じゃないけど typedef 擁護派

>>62
>読みやすさより書きやすさを優先してるように見える
いや、読みやすさも向上する。
HashMap<String, LinkedHashMap<String, List<String>>> が HogeMap になるんだから、読みやすくなるじゃん。

>一般にコードは書かれた回数より読まれる回数が多いはず
>タイプ量を短くするためだけに新たな型名を定義するようなものは既存のJavaにはない気がするし
ないから提案してるんじゃん。既存のJavaにはないからってアイデアを否定するのってどうよ?

>Hogeの使い方を知るためにHeaderMapの定義を見ないといけないのはつらい
定義をみるなんて一瞬じゃん。
それなら、HeaderMapがtypedefじゃなくてclassで定義したとしても、定義を見ないといけないのはおなじだろ。

>Fuga.setHeaders(Hoge.HeaderMap m)とか伝染するとさらにつらい
意味不明

>Fuga.setAnotherHeaders(Map<String,List<String>> m)があったりして記述が一貫しなくなるのもつらい
別につらくない。typedefが導入されているC言語では、そのような批判聞いたことない。


74:デフォルトの名無しさん
06/09/04 12:58:14
>>73
> >Hogeの使い方を知るためにHeaderMapの定義を見ないといけないのはつらい
> 定義をみるなんて一瞬じゃん。

そこが(ry
でっかいファイルだと一瞬とはいかんと思う。
それから、他のファイルにまたがってるとなおさら

75:デフォルトの名無しさん
06/09/04 13:35:58
C++の標準ライブラリのtypedefの使い方を見れば、
うまく使われたtypedefが可読性を向上させるのが分かると思う。
特にGenericsの時に。


76:デフォルトの名無しさん
06/09/04 15:53:33
本来は、typedefは型を再定義することだから、読みやすいとか言うのとは、焦点がずれてる。
要求すべきは別名化 aliasとかじゃないかな?


77:デフォルトの名無しさん
06/09/04 17:04:14
>>74
そんな巨大なクラス作んないし

78:デフォルトの名無しさん
06/09/04 17:21:25
>>74
どんなチープな開発環境だよ
IDEの支援さえあればどんな巨大なクラスだろうと定義を見るのは一発だ

79:デフォルトの名無しさん
06/09/04 18:15:22
>>76
typedefとどう違うの?

80:デフォルトの名無しさん
06/09/04 18:33:39
>>76
ずれてない。
だれも「typedefは読みやすさのためにある」とは言っていない。

81:デフォルトの名無しさん
06/09/04 18:37:08
>>77-78
問題はC#のような変な仕様にならないことなんだが。

typedefで定義したものについて、さらにGenericsでパラメタライズ
するとかになったら・・・

それに対してさらにtypedefで再定義することもありえるんだな?
で、tytpedefで定義した型をGenericsのパラメタ型にするってことも
ありえるんだな。

混乱の元になりそうなのだが。
そのあたり、どう解決するのか? IDE使っても限度があると思うぞ。



82:デフォルトの名無しさん
06/09/04 18:39:31
>>77
それはそうだが、
クラスが100あるとき、
100もの、あるいは200, 300ものtypedefで再定義した型を
作ることになると思うのだが。
一つのクラスにつきtypedefで5つの型を再定義したとすると、
クラスが100あると500ものtypedefによる再定義された型が出てくると言うことか。

>>78
巨大なクラスは作らない方がいいぞ。
しっかり分割統治してな。


83:デフォルトの名無しさん
06/09/04 18:57:52
>>82
自分ではそんなに作らんよ
ただ、字句解析のコード書くのに、StateパターンやInterpreterパターンなんて使ってられんし
クラス数が膨大になりすぎて、そっちのほうが管理できん

84:デフォルトの名無しさん
06/09/04 19:01:48
>>81
それは使い方にもよるだろう。
そんな変態的な使い方をして、読みやすくなるコードもあるはずだし
STLやBoostのコードを読んでるとよく分かるけどな
あ、あとsuperないのにtypedefで代用、とかな

#さすがにそこまで自由度の高いtypedefはいらないけどね

85:デフォルトの名無しさん
06/09/04 19:46:43
>>76
>>本来は、typedefは型を再定義することだから、読みやすいとか言うのとは、焦点がずれてる。
>>要求すべきは別名化 aliasとかじゃないかな?

C/C++のtypedefは、型に別名(alias)をつけるだけ。たとえば
typedef std::basic_string<char> stringA;
typedef std::basic_string<char> stringB;
で、コンパイラはstringA型とstringB型は同じ型として扱う。
だから焦点がずれていない。まさに要求どおりじゃないの。

86:デフォルトの名無しさん
06/09/04 20:04:34
>>83
Stateはenumで実現できまいか?

87:デフォルトの名無しさん
06/09/04 20:21:21
>>85 お前の知識が多いのは分かったから、引用をよく読んでみろよ。お前、よく相手の話を聞かないとかいわれるだろ?

88:デフォルトの名無しさん
06/09/04 20:26:22
>>79>>80>>85 お前のようなゴミはもういらん!もう半島に帰れ!

89:デフォルトの名無しさん
06/09/04 20:31:25
>>86
Stateパターンとenumは根本的に違うぞ
もちろんenumは使ってるけど、それはStateパターンじゃない。
しかも、enumったって、enumにメソッド持たせるんじゃなくて、
switchで分岐させてるだけだし

まぁ、字句解析はOOPできない典型例かもしれん
だれか解決策ないか?

90:デフォルトの名無しさん
06/09/04 20:32:32
>>85みたいに無駄に型名を増やすのは
まさにtypedefを悪用している例なんだよな

91:デフォルトの名無しさん
06/09/04 20:34:32
>>90
>>85はあくまで例えだろう
実際にあんな単純な状態にはならんよ

92:デフォルトの名無しさん
06/09/04 20:38:25
>>71 72
高階関数はおれも好き。でも型あり言語じゃ魅力半減じゃね?
javaで書く時は冗長でもアホでも分かるように書く癖がついちまったよ

93:デフォルトの名無しさん
06/09/04 20:41:17
>>91 お前が原因だな!わかったから巣に帰れ!

94:デフォルトの名無しさん
06/09/04 21:05:35
>>93
何の原因だよ・・・

95:デフォルトの名無しさん
06/09/04 23:12:55
おれも何の原因なのか気になる

96:62
06/09/04 23:21:23
>>73
読みやすさというのは理解が容易という意味で書いた
大抵の場合IDEで解決できるが,IDEが使えない状況もあるだろう
むしろIDEではHogeMapと書くとHashMap<...>に置き換えてくれるような機構があればいいんじゃないだろうか

>ないから提案してるんじゃん。既存のJavaにはないからってアイデアを否定するのってどうよ?
新たな機構を提案すること自体を否定してるわけじゃない
typedefを否定している

>それなら、HeaderMapがtypedefじゃなくてclassで定義したとしても、定義を見ないといけないのはおなじだろ。
サブクラスには可読性の問題解決のためでない意味があるべき

>>Fuga.setHeaders(Hoge.HeaderMap m)とか伝染するとさらにつらい
>意味不明
定義を見る先が他のクラスになるから
Map<...>を使うときはHoge.HeaderMapを使うべきかMap<...>を使うべきか判断に迷うのも嫌

>>Fuga.setAnotherHeaders(Map<String,List<String>> m)があったりして記述が一貫しなくなるのもつらい
>別につらくない。typedefが導入されているC言語では、そのような批判聞いたことない。
こんな状況は起こりえないからつらくないということ?

また,
typedefで(書きやすさのためでなく)抽象化を突き詰めるとあらゆる型をtypedefするほうがいいことになる

結局,複雑になるだけでいいことはあまりない
どうしてもやるならvar型とかで型推論の方がまだいいと思う(これが理解しやすいとは思えんけど)

97:デフォルトの名無しさん
06/09/04 23:47:40
なんで10文字20文字程度の記述の節約という、どうでもいいような理由で
言語仕様の一貫性をぶち壊しにするようなリスクの高い仕様を盛り込みたが
るんでしょうか。

10年前ならともかく、コード補完付のIDEがただで使える状況で何がつらいんだ
と小一時間(ry
おまえら1000人規模の大規模開発やったことあるのかと小一時間(ry

98:デフォルトの名無しさん
06/09/05 00:00:56
もうすでに、Javaもいろんな人が使う言語になってしまったからじゃないでしょうか?
今後さらに人が増えて、とんでもない溶融があると思います。
そして分化して独立して・・
そんなもんなんでしょう。

99:デフォルトの名無しさん
06/09/05 00:04:32
>>92
別に魅力半減はしないけどな。MLとかの型あり関数型言語使ったこと無い?
MLやHaskellでは、高階関数は当たり前のように使われてるよ

100:デフォルトの名無しさん
06/09/05 00:09:47
>>96
> どうしてもやるならvar型とかで型推論の方がまだいいと思う(これが理解しやすいとは思えんけど)
C# 3.0で入る予定の
 var hoge = new Hoge();//hogeはHoge型
みたいなやつのこと?
これなら別に理解しにくく無いと思うけどなあ
実装するのもすごく簡単で、コンパイラを数行弄るだけで実現できる機能だし

101:62
06/09/05 01:04:16
>>100
たぶんそう

理解しにくいというのは,IDEとかの支援がない状態で読むとき,
頭の中でvarを展開しなければならないということ
var hoge = make();
var fuga = hoge.getAttr();
...
ローカル変数だけで使えるなら
型安全だし,シンプルに見えるのはいいのだが,
明示的に書くよりはわかりにくい
(rubyのコードとか見てるとわかりにくいと感じる)

ところで
List makeList() {
var l = new ArrayList(); //この時点ではArrayList
...
l = new LinkedList(); //lはListでないと駄目だとわかる
...
return l; //この行でlがListと確定
}
こういうのもコンパイラを数行いじるので対応できるものなの?


102:デフォルトの名無しさん
06/09/05 01:40:53
>>101
確かに、var宣言された変数がメソッド呼び出しの返り値で初期化される
場合は、若干わかりにくいかもね。でも、ローカル変数で閉じてる限りは
大した差は無いと思う

> List makeList() {
> ...
> return l; //この行でlがListと確定
> }
> こういうのもコンパイラを数行いじるので対応できるものなの?

上のようなコードでちゃんと推論しようと思うと、さすがに数行いじるだけじゃ対応できない
自分が考えていたのは(おそらくC# 3.0のも)、var宣言の時点で初期化式の型で宣言される
ことが確定するようなもの。つまり、上のようなコードは
 l = new LinkedList();// lはArrayList型なのでLinkedList型の値を代入できない
の時点でエラーになる。実用上、これで不便になるケースはたぶんほとんど無いと思う。

103:デフォルトの名無しさん
06/09/06 06:35:51
>>96
>むしろIDEではHogeMapと書くとHashMap<...>に置き換えてくれるような機構があればいいんじゃないだろうか
それだと読みやすさは変わらんだろ。>>73でちゃんと「読みやすさが向上する」と書いているのに、よくわからんレスだな。

>新たな機構を提案すること自体を否定してるわけじゃない
>typedefを否定している
自分で書いたのをよく読め。否定する理由を>>62で「既存のJavaにはない気がする」と書いてるじゃん。
既存のJavaにはないからってアイデアを否定するのってどうよ?

>サブクラスには可読性の問題解決のためでない意味があるべき
ほんとに自分の都合のいいように話をもっていくな。おまえが指摘した点は、typedefだけでなくサブクラスでもあてはまる。
サブクラスを使うときには問題としていなかったことを、typedefのときだけ問題として取り上げることがおかしいという指摘をしているだけ。サブクラスの他の機能は関係ない。

>定義を見る先が他のクラスになるから
>Map<...>を使うときはHoge.HeaderMapを使うべきかMap<...>を使うべきか判断に迷うのも嫌
なんで迷うの?わざわざtypedefしてるんだからそれを使えばいいじゃん。

>こんな状況は起こりえないからつらくないということ?
おまえのように恣意的に使わない限りは、そんな状況は起こりえない。
おまえC言語使ったことないだろ。

>また,typedefで(書きやすさのためでなく)抽象化を突き詰めるとあらゆる型をtypedefするほうがいいことになる
いいわけないだろ。typedefを使ったほうがいいときだけ使えばいい。勝手に極論するな。

>結局,複雑になるだけでいいことはあまりない
おまえのような、意図的に間違った使い方なら複雑になるわな。

あれか、おまえもやっぱりJavaにはない機能はぜんぶ否定するJava絶対主義者か。
そんなやつに限って、Javaにその機能が導入されるといきなりマンセーしだすんだよな。


104:デフォルトの名無しさん
06/09/06 07:47:15
はい、はい。
ここでやっても意味無いから、むこうでやってね。

105:デフォルトの名無しさん
06/09/06 11:18:56
こんにちは。fondaのアプレット設置しようと思っていたのですが、
これって、有料なんでしょうか?
翻訳してみたところモノによって異なるようなのですが、
どれが無料で、どれが有料なのかわかります?
詳しく調べないで、勝手に設置したら、著作権とかヤバイですか?
URLリンク(www.fouda.de)

106:デフォルトの名無しさん
06/09/06 14:42:56
>>103
まわりくどいから簡潔に説明して。
二人だか何人だかしらないけど
一体どういう議論をしてんだか。

typedefマンセーだかなんだか知らないけど

107:デフォルトの名無しさん
06/09/06 14:45:12
>>105
ダウンロードしたファイルにREADMEとかlicense.txtとか入ってないのか?
それ読めば解ると思うが、なかったらサイト見ろ

108:デフォルトの名無しさん
06/09/17 22:20:56
そもそもJavaってもっともっと馬鹿な連中がネットワークプログラミングしても困らない様にって進化してきた言語だろ
あんまり複雑な機能加えるなよ
やりたきゃ既存の言語でつくってJNIするなり、Webサービスにするなりすれば良いじゃん

109:デフォルトの名無しさん
06/09/17 22:34:03
>>108
お利巧さんな君は何をしているのかな?

110:デフォルトの名無しさん
06/09/17 23:22:17
何も作れないからひがんでるんじゃないか

111:デフォルトの名無しさん
06/09/17 23:29:42
>>108はJavaスレに「ドトネト厨きーきー」のAA張ってJavaスレを荒らしている奴だろ。

112:デフォルトの名無しさん
06/09/17 23:31:15
>>110
そうかもな。
奴は昔はVBが得意だったらしいが。
2chでDelphiプログラマと喧嘩して、そしてJavaプログラマとも喧嘩して
C#死滅スレで大暴れした末に、演算子オーバーロードをつけられないJavaは糞だとか
なんだと連呼したものの、結局C#を普及させることはできずに失敗し
今はJavaスレを荒らすようになってしまった。



113:デフォルトの名無しさん
06/09/19 11:10:29
Javaのenumはキモイ

114:デフォルトの名無しさん
06/09/19 12:15:22
ぜんぜん。使いやすいけど

115:デフォルトの名無しさん
06/09/19 13:04:07
>>112
自己紹介乙(プ

116:デフォルトの名無しさん
06/09/19 15:10:52
わろたVBマンセーしてることが自己紹介かw

117:デフォルトの名無しさん
06/09/19 23:58:25
わけあってちょいと現場を離れてた。
今度戻るけど、世の中、Javaと.NET系ではどっちの方が仕事多い?

118:デフォルトの名無しさん
06/09/20 00:06:59
>>117
場所による
ただ値段的にはJava>.NETなのはほぼ確実

ここの所客から.NETにすればもう何割か減らせません?って聞いてくるケースが多いから.NET=安いってイメージらしい

119:デフォルトの名無しさん
06/09/20 00:20:54
結局 commons-lang の Enum 使ってる。

120:デフォルトの名無しさん
06/09/20 01:23:54
>>117-118

値段がJavaのほうが上だということが確実だって話は始めて聞いた。
仕事はJavaのほうが確実に多いが。

.NETの価値は薄いと考えている客が多いのか。
それはマイクロソフトにとっては痛い話なんだろうな。



121:デフォルトの名無しさん
06/09/20 10:29:07
マイクロソフトのマーケティングの失敗だな
Javaと.NETじゃ大して難易度変わらないのに

122:デフォルトの名無しさん
06/09/20 10:37:35
JavaじゃなくてUnix Serverが高いと思われてるような希ガス

123:デフォルトの名無しさん
06/09/20 11:40:04
>>117です。
いろいろアドバイスありがとさん。
Javaの方が仕事的には減ることはなさそうな印象を受けました。
ただ、私のまわりの中小ITはVB.NETの話が多いですね。
VB.NETの市販本買って読んだら、文法はJavaにそっくり。
とりあえず、昔覚えたJavaから復活していきます。

また、何か追加情報があったらカキコんでください。ヨロシク!!

124:デフォルトの名無しさん
06/09/20 11:44:08
最後の一行がなければさぁ……

125:デフォルトの名無しさん
06/09/20 12:01:44
>>123
> VB.NETの市販本買って読んだら、文法はJavaにそっくり。

それC#の方の.NETちゃうんかと

126:デフォルトの名無しさん
06/09/20 12:43:47
そりゃ、「”無料の”Eclipseを使うよりもVS.NETを買ったほうが作りやすく安上がりです。」
みたいなマーケティングしてるんだから.NETの方が安上がりって思うだろ普通


127:デフォルトの名無しさん
06/09/20 13:36:21
それはとんでもなく裏目にでたな。

マイクロソフトのマーケティングが
今、オープンソースの台頭によって逆効果になってしまったわけか。

128:デフォルトの名無しさん
06/09/20 13:37:28
しかもVS.NET2003Expressも慌てて一年間限定で無償で配布してしまった。
Eclipseが出てから何もかも変わってしまったな。
IBM恐るべし



129:デフォルトの名無しさん
06/09/20 13:48:42
だってVSって有償なのにEclipseにも及ばんし
つーかNetBeansにも及ばんし
ぶっちゃけIDEとしてはショボいし

130:デフォルトの名無しさん
06/09/20 14:50:36
昔、Javaの仕事が一段落した時に
上司がVBできる人を探していて
俺はできるけどできないと言った
他の奴ができるといってVB部隊に
行ったけどそれ以来見ていない

131:デフォルトの名無しさん
06/09/20 22:28:06
VB.NET は言語そのものは悪くないんだが
案件の内容がひどそうなイメージがある。

132:デフォルトの名無しさん
06/09/21 00:23:48
>>130
そんなことあったな。
2001年春のこと、まだServlet/JSPが普及していなかった時代。
CGI + Perlの10倍以上のパフォーマンスを出すこともできると
もてはやされたあのServlet。

ServletプログラミングができるけどASPはできないと言ったんだ。
でもう一人の奴はASPができるけどServletをやってみたいって言っていたが
ASPができるといったために、「じゃ、ASPのほうお願いね」
とか言われて彼はASPをやらされた。まだまだ当時新鮮だった
Servlet/JSPの仕事を与えられる俺のことを羨ましがっていた。

133:デフォルトの名無しさん
06/09/21 00:26:34
>>131
ひどいっていうか、VBとVB.NETは同じだからVBしかできない奴を
かぎ集めてもなんとかなるだろうという甘い考えを持っている上司やVB厨が
いたから酷いことになったんだろうな。
「.NET構想」と「Javaは廃れてこれからC#が流行る!」というM$の宣伝に騙されて
VBからVB.NETへ移行しようとしたVB厨は、VB慣れしすぎてC#やJavaのような
言語が取っつきにくて躓いたってわけだ。
Perl厨やPHP厨やRuby厨がJavaをやり出したら同じような躓きを覚えるんだろうな。





134:デフォルトの名無しさん
06/09/21 14:13:11
スクリプト言語とJavaはライバル関係にはない

135:デフォルトの名無しさん
06/09/21 15:25:12
でも人は使いまわすからねー

136:デフォルトの名無しさん
06/09/21 16:17:34
ちょっと2,3ヶ月の応援がずるずると2,3年になるのはよくあること
2,3年もVBやスクリプト言語やったら戻れないだろう
もう経歴書からはVB屋・スクリプト屋としか思われない
身の振り方は後々のことまでよく考えてしないとな

137:デフォルトの名無しさん
06/09/21 16:41:00
マ板行けよ。

138:デフォルトの名無しさん
06/09/21 16:55:12
スクリプト屋の特徴は、
Design by Contractを守ることができないことなんだな

139:デフォルトの名無しさん
06/09/21 19:19:24
スクリプト系の言語とJavaとの違いってなんなの?
同じじゃん。

140:デフォルトの名無しさん
06/09/21 19:36:36
Java,C++.C#,D言語は型にがっしり硬い言語
静的型付け言語であるケースが多い。

Ruby, PHP, Perl, VB, JavaScriptなどは一般に型が軟らかい言語。
そして動的型付け言語であるケースが多い


こういう違いがある。


141:デフォルトの名無しさん
06/09/21 20:34:09
昔はGCがあるかないかとか、すぐ実行結果が出る出ない(コンパイル必要)だったけどね。

142:デフォルトの名無しさん
06/09/21 21:03:44
今じゃPerl6にもGCがつくからねえ。

C++やD言語と同列に並べるにはCGがあるなし
区別は苦しい。

コンパイル必要不要も今じゃ苦しい。
ソフトウェア工学という観点から見ないと。

143:デフォルトの名無しさん
06/09/21 21:21:07
なんだかんだ言っても顧客がどう見るかじゃない?
ソフトウェア工学という観点からなんて顧客は聞きもしないよ

144:デフォルトの名無しさん
06/09/21 21:25:10
だが、顧客がプログラマであった場合は、そうもいかない。

実際に、C++とかJavaとかでプログラミングをするのはソフトウェア工学
に熟知しているものだからな。

スクリプト言語だと動的言語としてのソフトウェア工学にこだわりを
持つことになるだろうが。


145:デフォルトの名無しさん
06/09/21 23:16:40
Javaはリフレクションとかアノテーションからして
スクリプトじゃない代表格C++と比べればより動的じゃないの?

146:デフォルトの名無しさん
06/09/21 23:17:37
ソフトウェア工学に熟知とかありえんwww
どうせ日経なんとかの受け売りに決まっている

147:デフォルトの名無しさん
06/09/21 23:35:36
>>145
なんかちがような気がする。
それだったらC++のほうが柔軟性がきくので動的だと思う
Javaは定められた文法規則を厳重に守らないと逝けないから

148:デフォルトの名無しさん
06/09/21 23:54:59
Javaは、C/C++の文法にとてもよく似せて作ってあるけど、動的とどう関係しているのかな?
>>147

149:デフォルトの名無しさん
06/09/22 00:17:49
アノテーションは動的とはあまり関係ない。
修正→コンパイルが必要と言う意味では静的。
Java では virtual/override が存在せず、
final 指定されてない同名メソッドを無条件で上書きするところが
動的な性質の最たるものの一つに感じる。
正直、virtual/override が欲しい。

とりあえずDI+強い型付以外の開発はもうやりたくない。

150:デフォルトの名無しさん
06/09/22 01:01:25
>>149
> Java では virtual/override が存在せず、
> final 指定されてない同名メソッドを無条件で上書きするところが
> 動的な性質の最たるものの一つに感じる。
> 正直、virtual/override が欲しい。

おいおい、@Overrideアノテーションがあるだろ。
virtualはいらないけど。

しかしそれが、動的なのかねえ

151:デフォルトの名無しさん
06/09/22 01:19:31
普通「C++とJavaだとJavaの方が動的」という文脈では
・「動的」といったら実行時解決のこと
・「静的」といったらコンパイル時解決のこと
を指すわけなんだが、君は何アホなこといってんの?

152:デフォルトの名無しさん
06/09/22 02:25:10
型付けを見たらC++のほうがJavaより動的なんだが。

153:デフォルトの名無しさん
06/09/22 02:26:55
>>152
君も何アホなこといってんの?

154:デフォルトの名無しさん
06/09/22 03:41:19
Javaではコンパイル時に型整合性チェックは行うが
利用するコードは実行時のライブラリに応じて動的解決される
結局は型チェックは行っており、メッセージ投げてみればわかるべ、という
Objective-Cほど動的ではないと言える

中庸を目指した設計だからな

155:デフォルトの名無しさん
06/09/22 05:41:19
>>144
Javaはスクリプト言語じゃないと区別したいのは分かるが、
virtaul/overrideのキーワード有無とかJavaに対しての不満の方が強いみたいで、
ソフトウェア工学とか意味不明なところからスクリプトとJavaを区別しようとしてるから、
行き詰まるんじゃないかな?

156:デフォルトの名無しさん
06/09/22 05:47:40
>>153 君の方がアホっぽいけど、気がつかないか?

157:デフォルトの名無しさん
06/09/22 13:31:15
静的型付けと動的型付けの意味も分からんとは

158:デフォルトの名無しさん
06/09/22 14:36:15
dynamic_cast 使ってる?

159:デフォルトの名無しさん
06/09/22 14:44:17
refrection API使ってる?

160:デフォルトの名無しさん
06/09/22 14:45:46
C++とJavaのいいとこ取りすると、どんな言語が生まれるんだろうね。

161:デフォルトの名無しさん
06/09/22 15:14:48
>>160
φ

162:デフォルトの名無しさん
06/09/22 15:36:19
C++/CLI。
結果良くなったかどうかはワカンネ。


163:デフォルトの名無しさん
06/09/22 15:46:31
>>162
結局MSに持ってかれたってことか?
とにかくワロタ

164:デフォルトの名無しさん
06/09/23 03:03:12
実行時にクラスファイルをロードしてしまうJavaはかなり動的だと思う。
しかもパッケージ=フォルダ。
rubyだってrailsでやっと動的ロードを手に入れたくらいなのに

165:デフォルトの名無しさん
06/09/23 03:12:09
>>160
D言語

166:デフォルトの名無しさん
06/09/23 03:13:30
>>164
だからそれは「動的型付け」とは関係ないと何度いったら(ry

一度作ったクラスの仕様を変える事ができてしまうのが
動的型付け。

たとえばクラスに有るはずがないフィールドやメソッドを追加したり

167:デフォルトの名無しさん
06/09/23 03:40:31
>>166
それは動的型付けの副作用でしかない。
フィールドやメソッドを実行時に追加したいだけなら、AOPでも事足りる。

168:デフォルトの名無しさん
06/09/23 04:00:53
と、いうけど、まじでソースコード
読みにくくなるんだよね。

Ajaxのソースコードなんかとくにひどいもんだ


169:デフォルトの名無しさん
06/09/23 07:44:57
>>166
おしい!実におしい!!

170:デフォルトの名無しさん
06/09/23 09:17:23
文字列がコードになるのが動的と思っていたけど、違う?

171:デフォルトの名無しさん
06/09/23 17:17:24
動的っていったら、プログラムの実行時になにかすること。
静的っていったら、プログラムの実行前になにかすること。

違う?

172:デフォルトの名無しさん
06/09/23 17:31:04
JMXってなににつかうん?サーバ監視だけ?

173:デフォルトの名無しさん
06/09/23 17:45:50
>>172
じゃないの?他に使い道ある?
っていうか今頃この辺が整備されるって遅すぎ

174:デフォルトの名無しさん
06/09/24 11:24:15
>>166
動的/静的型付けの違いは、式の型がコンパイル時に決まるかどうかだから、
メソッドの追加は関係ない。

だいたい、その説明だと
たいていの言語はソース書き換えてコンパイルすればメソッド追加できるから
たいていの言語は動的型付けになっちゃうよ。

175:デフォルトの名無しさん
06/09/24 11:46:49
あほですか?
メソッドが追加されたらクラス、つまり型が変わるだろ。

それだけでも動的なのに、
どう変わるかも実行時にしか分からないかもしれない。

176:デフォルトの名無しさん
06/09/24 12:33:16
>>175
「あほ?」とはずいぶんと強気だけど
「メソッドが追加されたらクラス、つまり型が変わるだろ」
どういうこと?まったく意味が分からんけど?

177:デフォルトの名無しさん
06/09/24 15:55:31
Genericsでちょっと疑問に思ったんだけど。
メソッド単体でのGenericsって引数なしだと何もできない気がする。

<T> <T> get();

これ動かないよね?
Tをnewすることもキャストすることもできないんだから。

178:デフォルトの名無しさん
06/09/24 16:03:49
キャストはできるか

179:デフォルトの名無しさん
06/09/24 16:19:49
>>174
まてまて、それでJavaScriptの型とJavaの型との違いをうまく
説明できるか?

180:デフォルトの名無しさん
06/09/24 18:31:54
166の言ってることは、動的クラスっていうだけだな。
動的クラスを使うためには動的型付が必要になるが、クラスがなくても動的型付けはできる。

動的言語処理(実行時型解決など)ができるかどうかは、言語自体が動的型付か静的型付かには関係ないよ。

181:デフォルトの名無しさん
06/09/24 23:39:09
1の趣旨とは全然無関係だが、静的・動的の話は面白いと思った。

182:デフォルトの名無しさん
06/09/25 00:37:07
こんなかんじ

typedef struct {
 Class *extends;
 Interface **implements;
 void **methods;
 void **fields;
} Class;




183:デフォルトの名無しさん
06/09/25 01:18:31
>>181どのへんが面白いの?

184:デフォルトの名無しさん
06/09/25 15:46:03
「動的型付」、という特定の機能を指す言葉(専門用語)は
一般の熟語ではないという合意が得られてないので
「動的」という一般的な形容詞句の話が混じってしまったのが混乱の元。

学会とか専門家ばかりが集まってる場所じゃないから
前提はある程度しっかりしてた方がいいな
まぁ、それくらい分かれよ、と突き放すこともできるが
いろんな人が集まれるこういう場所だ、お互い尊重すればあれることもない

185:デフォルトの名無しさん
06/09/25 15:52:37
>>184
もまえ、わかってるようだな。

186:デフォルトの名無しさん
06/09/28 15:39:12
>>177
一応できることはできる。未検査キャスト入るし、実際には使い道が無いが

public class Variant {
 private Object value;
 public <T> void set(T value){
  this.value = value;
 }
 public <T> T get() {
  return (T)value;
 }
 public static void main(String[] args){
  Variant v = new Variant();
  v.set("foo");
  String s = v.<String>get();
  System.out.println(s);
 }
}

>>166
クラスにメソッドを追加できるかどうかと、動的型付けかどうかは無関係。
実際、静的型付けで既存のクラスにメソッドを追加できる言語もある。MixJuiceとか

187:デフォルトの名無しさん
06/09/28 23:17:36
アスペクト指向言語ライクな言語MixJuiceか

188:デフォルトの名無しさん
06/10/06 20:57:19
>>177 ????

<T> T get(){
SomeFactory<T> factory = new Factory<T>();
return factory.getInstance();
}


189:デフォルトの名無しさん
06/10/06 22:02:16
Factoryフレームワークか。恐ろしくて使いたくないよw

190:デフォルトの名無しさん
06/10/06 22:37:27
factoryは大げさな感じがうざいが、時には有効

191:デフォルトの名無しさん
06/10/06 22:42:19
ファクトリ否定したらDIコンテナ使えないな。

192:デフォルトの名無しさん
06/10/06 22:52:55
例えば
Validator<EMailAddress> emValidator = ValidatorFactory.get();
みたいなことが出来るならあるいは便利かとも思うが
<T>からClassインスタンスって取れないから使えないな

193:デフォルトの名無しさん
06/10/07 16:19:16
Color color = StringConverter.fromString("0, 0, 0");
Point pt = StringConverter.fromString("0, 0");

みたいにしたかったんだけど、Class取れないんで、

Color color = StringConverter.fromString("0, 0, 0", Color.class);
Point pt = StringConverter.fromString("0, 0", Point.class);

で我慢した。Class取れればいいのにね。

194:デフォルトの名無しさん
06/10/13 02:42:15
URLリンク(www.uploda.org)

向こうでやるとスレ違いだから
スタティックメソッドとインスタンスメソッドの
呼び出し性能を検証する簡単なコード書いてみた
実行速度見たかったから、俺はヒープサイズ余裕持たせて
実行してみたけど、性能は誤差だね
メモリ消費量はもっとやってみないとわかんないね

195:デフォルトの名無しさん
06/10/25 20:21:41
スレ違いって言われたのでココでお聞きしたいのですが、
AWTは1コンポーネント=1ウインドウだからシステムリソースを
食いまくる問題って解決されたのでしょうか?

196:デフォルトの名無しさん
06/10/25 21:01:15
>>195
URLリンク(java.sun.com)

197:デフォルトの名無しさん
06/10/26 00:09:36
Lightweightという単語を初めて見たのはSwingについての説明だったと思うが、
こんなに流行るとは思わなかった

198:デフォルトの名無しさん
06/10/26 00:14:07
Component ベースだと普通にSwing使ったほうが手軽だし高速になるよな

199:デフォルトの名無しさん
06/10/26 01:48:13
>>196 この様子だと、永遠に解決されないみたいですね。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5385日前に更新/239 KB
担当:undef