トップページ⇒tech
983コメント299KB

クライアントサイドJavaどうよ? part2

■ このスレッドは過去ログ倉庫に格納されています
0001SunがダメNGNG
クライアントサイドでJAVAが普及するためにはどうすればいいか、
マターリ語りましょう。

前スレ
http://pc3.2ch.net/test/read.cgi/tech/1002160815/
0079デフォルトの名無しさんNGNG
>>76
言語屋のオナニー?
0080デフォルトの名無しさんNGNG
>>76
美しくないという意見は多いのは事実。
事実ぐらい受け入れろよ。
0081デフォルトの名無しさんNGNG
>>80
誰の意見?
まさか2ちゃんでそういう発言が多い
とか言わないよね(藁
008270NGNG
ああ、荒れて。。。

>>71
ランチャで十分でした。

>>74
やっぱり思いつくようなものは
たいがい作られてますね。
めざせKDEってとこでしょうか。
使い方はわかりにくいですが。

>>75
センスってどの辺の話?
0083デフォルトの名無しさんNGNG
>>50, >>53
「Mac でハードウェアアクセラレーションが使えるようになった」
→「Debug Anywhere の要因が増える」
っていう話の流れを他でも見かけますが、これってどういう理屈なんでしょう?

「(Win の?) Java 1.4 でビデオメモリに直アクセスするようになったので
描画が速くなった」という話とは根本的に違うことなのでしょうか?

あと、Mac で速くなるのは Swing の Mac Look and Freel だけ?
それとも Swing 全体について速くなるのでしょうか?

なんか中途半端な知識で書いてるので
突っ込みどころ満載な文章でスイマセヌ。
0084デフォルトの名無しさんNGNG
(´・ω・`)ショボーン
008550NGNG
>「Mac でハードウェアアクセラレーションが使えるようになった」
> →「Debug Anywhere の要因が増える」
> っていう話の流れを他でも見かけますが、これってどういう理屈なんでしょう?

APIの中身は変わったけれど、外見は変わらないので、既存のコードは
理屈上問題なく動く。
でも人間のやる仕事に完璧はないので、もしかしたらピュアJava版Java2Dと
OpenGL版(だったと思う)Java2Dで動作が違うことはあり得る。
それでDebug Anywhereの要素が増える。
DirectX版Java3DとOpenGL版Java3D程度の差だろうな。

だから、
> 「(Win の?) Java 1.4 でビデオメモリに直アクセスするようになったので
> 描画が速くなった」という話とは根本的に違うことなのでしょうか?

これは違わない。

> あと、Mac で速くなるのは Swing の Mac Look and Freel だけ?
> それとも Swing 全体について速くなるのでしょうか?

MacのSwingがネイティブコード使ってるってのは本当?
もしもそうなら、Mac Look and Feel以外は速くなると思うんだけど。
たぶんSwing全体で速くなるけど、どちらかというと重要なのは
たとえばJavaでフラッシュ的なことやゲームとかを書きたい時とかじゃないかと。
画像に複雑な回転だとか拡大縮小をかけてピュアJava版と比較してたが、
ピュアJavaだと秒間5か6フレーム程度だったが、
ハードウェアアクセラレーションかかってるのは500フレームとか
無茶な数字が出ていて、そのくせメモリ消費量は減っていた。
JDKのおまけのJava2Dのデモもサクサク動いてた。
あれで何か書いてみたいなあ。
0086デフォルトの名無しさんNGNG
>>Swingは「美しさ」を大前提に作られていますが何か?

ギャグにもならんな

>>センスってどの辺の話?

どの辺もなにも全部、アイコンもメニューも何もかも

Swingはクラス設計はよく出来ている(というか美しく出来ている)
だけにUIのダサさは許せん、即刻腕のいいデザイナーを雇うべき

MacのJavaは高速でAqua LookAndFeelを兼ね備えているらしいので気になっているが
MacOS Xそのものがもう少し軽く、使いやすくならないと買う気にはならない
0087デフォルトの名無しさんNGNG
Swing綺麗ジャン。
MFC見ろよお前ら
0088デフォルトの名無しさんNGNG
きれい汚いは主観の問題。ネット上じゃあまりマトモな論議にならんと思われ
0089デフォルトの名無しさんNGNG
↑ただし今のが良いとは思ってないけどね。Metal 最初に見たときはきれいと思ったけど
ああいうのはすぐに見飽きるもの。Flash 程度の Swing 用 Look and Feel ビルダー
(スキン感覚程度で使えるもの) を求む。
0090デフォルトの名無しさんNGNG
なんつーか、Java関係のライブラリの美しいは最近歪んできているようなきもする
なにとはいえないが、なんか変な気がする
なにがこう私に感じさせるのだろうか・・・
0091デフォルトの名無しさんNGNG
>>90
古いバージョンに対する後方互換を維持しながら、おなじ層を担当する
(初期には想定していなかった)新機能を織り込んでいこうとすると、
マクロ的な見方ではでかいばかりでこ汚い、というものになってくとお
もう。コレは仕方ないことかも。

今から入ってくるヒトには分け分からんこともあるだろうね。
java.ioとjava.nioなんて、なんで両方あるか(なんでこんな分け方
してるのか)納得できるnewbeeっているのかね。
0092デフォルトの名無しさんNGNG
見た目の美しさじゃなくて設計、構造の美しさの話なんですけと?
ヴァカですか?
0093デフォルトの名無しさんNGNG
古いコレクションクラスは例外に対し安全じゃないとか聞いたなあ
0094デフォルトの名無しさんNGNG
>>83 >>85

今月のソフトウェアデザインに関連記事があります。
「Macには元々ココア&objectiveCというネイティブな開発環境があって、
それがjavaから呼び出せるようになった。」と解釈したけど。。。
なのでswingでもピュアjavaでもなさげです。
ちょっと興味出てきたけど。
009594NGNG
あとjavaの設計、構造が美しいとよくきくけど、
ちょっとでも性能を上げようとするとどんどん汚くなってくよね。。
なので可読性&汎用性か性能のどちらを重視するかで
話は変わってくると思う。
ただ性能重視の場合、Cで書いたほうが賢い。
009694NGNG
あとswingがダサいとか汚いとかもよくきくけど
それってmetalとmotifのことを指してるの?
WindowsLookAndFeelを使えばべつに普通だし、
SkinLFとか使えば見た目は好きにできるので
ダサいも何もって感じなのですが。
0097デフォルトの名無しさんNGNG
>>96
Windows風であってWindowsそのものではない
その微妙な違いがクライアントに評判悪いという話をどこかのスレで見たよ
0098デフォルトの名無しさんNGNG
おまえらJavaをJava特有の方法で高速化する方法を教えてください。
とりあえず、使えるところではなるべくfinalにすること、
くらいしか思いつきません。
0099デフォルトの名無しさんNGNG
>>98
実機を高速なものにする
010096NGNG
>>97

はあ。。。勉強不足でした。
そういう次元の話なんすね。

個人的にはL&Fで好きにできるのが
気に入ってますが。

>>98

java特有の方法なら、
できるだけコードを美しく書いて
あとはマシンのパワーでカバーって
ことになる?

それ以外なら
・なるべくインスタンスを使わずに1クラスで書く
・インスタンスは使いまわす
とかなんでしょうか。
0101デフォルトの名無しさんNGNG
>>98
アルゴリズムを勉強して、設計も勉強しろ。
0102デフォルトの名無しさんNGNG
・バイトコードで書く
・オブジェクト指向を捨てる
010398NGNG
>>99
>>101
Java特有の話ではないじゃないか。

>>100
・なるべくインスタンスを使わずに1クラスで書く
これよくわかん

>>102
Javaのインラインアセンブラ萌え

どこかのコードで、高速化のためかフィールドをtransient宣言しまくってるのを
見た事有るんだけど、意味あるんだろうか。
0104名無しさん@XEmacsNGNG
>>98
javaは(VMの起動を除いて)遅いのではなく、処理にかかるコストが見えにくく
なってるだけで、ロジックの処理速度自体は、他の言語と大して変らない。

便利さを犠牲にすればスピードアップは可能
Reader/Writerより、Stream. Stringよりbyte[]かchar[].
JDKクラスライブラリよりプリミティブ型を使って自前で実装
とか。

> どこかのコードで、高速化のためかフィールドをtransient宣言しまくってるのを
> 見た事有るんだけど、意味あるんだろうか。

直列化のコストが減る。
010596=72NGNG
>>98
>>・なるべくインスタンスを使わずに1クラスで書く
>これよくわかん

>>102 におじ

あとgcとフィールド変数のnull化をしっかり行う。
なんにせよどんどんjavaらしさはどんどんなくなってくね。

あとはVM立ち上げのオーバーヘッドをなくすために
ランチャ(以下略)




010698NGNG
>>104
>javaは(VMの起動を除いて)遅いのではなく、処理にかかるコストが見えにくく
>なってるだけで、ロジックの処理速度自体は、他の言語と大して変らない。
状況によってはJavaの方が原理的に早くできる可能性があったりするしね。

・実行時に実行環境(CPUのモデルなど)の情報が得られるので、
実行環境にあわせて最適化する事が出来る。
・GCがメモリのデフラグしてくれるので、ヒープメモリの取り扱いに有利
・実行時の統計(if文でどっちに分岐するか等)を元にして、
動的に最適化することができる。

これをJREが実装してるか否かは別の問題モナー

>直列化のコストが減る。
直列化しないときでも影響あるのかな?

あと細かいところでは、StringじゃなくてStringBufferを適宜使う、
変数名を短くする(←そんなに効果有るのか?)、
内部クラスはなるべくstaticにする、
ArrayListで要素のサイズが確定した後はObject[]にコピーしてそっちを使う、
try catchはなるべく使わない、
等を思いつくのだけど、どうだろう。突っ込み歓迎。
0107デフォルトの名無しさんNGNG
起動が遅めのNetscape が半起動待ち受け状態に
対応してるのだから、JavaVMも対応しろYo。
0108デフォルトの名無しさんNGNG
http://java.sun.com/mail/index.html
Java関連のコメントや要望宛先一覧。
0109デフォルトの名無しさんNGNG
>>107
OSに組み込め
0110デフォルトの名無しさんNGNG
>>106
Javaのtry-catchはC++と違って性能に影響を及ぼさない
0111デフォルトの名無しさんNGNG
>>110
でも、throw使うと急に性能が悪くなるんだよな、これが。
0112デフォルトの名無しさんNGNG
>>110-111
それってVMの実装に依存するんでないの
0113デフォルトの名無しさんNGNG
>>98

ボトルネックな部分を探して、そこに
・なるべく処理を回さない
・それがio系なら裏で処理をさせる
・その部分だけ、バイトコードorCで書く
0114デフォルトの名無しさんNGNG
ボトルネックな部分を探して,その部分の
・最初に/*を書く
・最後に*/を書く
・コンパイル&実行
↓
ウマー
0115デフォルトの名無しさんNGNG
>>112
try-catchの部分のバイトコードを逆アセンブルしてみれば
「例外が投げられないかぎり」性能に影響を与えないコードになってるのがわかる
例外が投げられると性能が落ちるのは111の言うとおり
(C++だと例外が投げられようが投げられまいがtry-catchを書いただけで性能が落ちる)
011698NGNG
バイトコード直書き説が有力になってきた・・・
1.5でasmブロックの導入きぼーん(大嘘)

今日の作業で、Jythonで記述したPlug-inへの呼び出しが
パフォーマンスのボトムネックになってることを発見しますた。
Plug-inの記述言語をJythonから生バイトコードにしようか検討中(萎え
0117アフォNGNG
どうでもいいけど、PerlのCPANみたいなJavaサイト知らない?
CYGWINのSETUPみたいにTOMCAT落とせると最高なんだが。
0118デフォルトの名無しさんNGNG
age
0119デフォルトの名無しさんNGNG
>>117
一瞬WebStartのことかとオモタ。
ちなみに知らない。糞レスすまそ
0120デフォルトの名無しさんNGNG
ハーボットもFlash化…
やっぱりクライアントサイドはだめぽ
0121デフォルトの名無しさんNGNG
1.4.1_01
0122デフォルトの名無しさんNGNG
1.4.1_01 か。
グラフィックカード依存の Windows クラッシュバグが直ってないと入れる気にならん…。
でもそういう情報ってどこにあるんだろ。
試してまた青画面ってのも精神衛生上良くないし。。
0123名無しさん@XEmacsNGNG
>>122
リリースノート
0124デフォルトの名無しさんNGNG
リリースノートじゃ 1.4.1 と 1.4.1_01 の違いってわからないのでは?
と思ってたらちゃんと書いてあるのね。失礼。

1.4.1: http://java.sun.com/j2se/1.4.1/relnotes.html
1.4.1_01: http://java.sun.com/j2se/1.4.1/ReleaseNotes.html

でも俺が気になってるバグは直ってなかった…。トホホ。
0125デフォルトの名無しさんNGNG
ウィンドウを常に手前に表示する(アクティブではなく)ことがいまだに出来ない
BugParade じゃなんか勘違いしてるみたいだし鬱
0126デフォルトの名無しさんNGNG
Macに常に手前に表示ってあるの?
というあたりがネックになってると妄想
0127デフォルトの名無しさんNGNG
Sunがまた、どんなDQNなWinXP LookAndFeelを出してくるか楽しみだ
0128デフォルトの名無しさんNGNG
Windows XPに設定されているLook And Feelに変更するLook And Feel
0129デフォルトの名無しさんNGNG
>>127
SWT Look and Feel が出る予定です
0130デフォルトの名無しさんNGNG
やっぱりGUIをJavaだけで作るのは失敗だったな。
0131名無しさん@XEmacsNGNG
>>130
ハァ?
0132デフォルトの名無しさんNGNG
このスレの住人はともかくとして、一般的にSwingはクソって
いう共通認識がある。というか、実際クソ。
0133アフォNGNG
久しぶり。
俺は、J2EEをもったいぶらずに、クライアントサイドへ持ってくればいいと思う。
CachedRowSet 欲すぃ。
そして、それを利用したライブラリからライセンス料搾取しないでホスィ。
Swingのどの辺が駄目?CollectionViewとか見てみた?

久しぶりにこっちも。
http://www.bekkoame.ne.jp/ha/vzy03312/asrabbit/
そしてWeb上にでっかいメモ帳が欲しい。 no-ip.com 検索中。
0134デフォルトの名無しさんNGNG
Swingけっこう好きなんだけどなあ。
速度もそんなに遅くなくなってきたし、融通は利くし。
0135デフォルトの名無しさんNGNG
>>129
一応つっこむけど
嘘だよな!?
0136デフォルトの名無しさんNGNG
>>133
>>CachedRowSet 欲すぃ。

Serializeの使い方わかってるなら、ValueObjectを適当に作って
RMIでオブジェクト丸ごと投げればいいだけじゃないのけ?
0137デフォルトの名無しさんNGNG
SwingにしてもAWTにしても
どうでもいい機能がいっぱいついているクセに肝心な機能がついてない

レイアウトマネージャの動きも
マトモな人間が考えたとは思えん
0138デフォルトの名無しさんNGNG
肝心な機能とは?
0139!=137NGNG
>>138
"タスクトレーに入れる"に3カノッサ
0140デフォルトの名無しさんNGNG
だってMacにタスクトレイなんかないし
Xはウィンドウマネージャー次第でぜんぜん違うし
やっぱりクロスプラットフォームが足枷
0141デフォルトの名無しさんNGNG
そこだけCで書けや
0142125NGNG
Mac では操作ガイドみたいなヘルプは一般にどういう UI なんでしょう?
タスクトレイは別にいらない気がするけど。
0143アフォNGNG
Swingじゃなくて、AWT?
java.awt.ToolKit に関係しそう。
0144デフォルトの名無しさんNGNG
>>142
バルーンヘルプじゃないの
0145デフォルトの名無しさんNGNG
つーかMacにも常に手前に表示くらいあるって誰か突っ込めよ
0146デフォルトの名無しさんNGNG
>>145
どうやるのか教えてくだされ
0147デフォルトの名無しさんNGNG
>>146
Javaでの?
0148146NGNG
>>147
Javaで出来るんですか?
とりあえずCarbonまたはCocoaアプリでおながいします。
0149デフォルトの名無しさんNGNG
>>148
これは違うの?
http://developer.apple.com/techpubs/macos8/HumanInterfaceToolbox/WindowManager/ProgWMacOS8.5WindowMgr/WindowMgr.11.html#26179
0150デフォルトの名無しさんNGNG
>>148
これでしょ
http://developer.apple.com/techpubs/macosx/Cocoa/Reference/ApplicationKit/Java/Classes/NSWindow.html

つーかSwingってAppkitがもとらしいね。
0151146NGNG
>149-150
ありがとうございます。
この御恩はMacで最強の2chブラウザを作ることで
返させていただきたいと思います。
0152アフォNGNG
Javaで?
そして、俺のは放置?
0153146NGNG
>>152
ネイティブJavaじゃなくてCocoaフレームワークを
使ったものです。
言語はJavaなんだけど、独自のAPIを使います。

最近AppleのSwitchキャンペーンでMac買ったんですが、
思ったよりはイイ感じです。
OSXはそのままJavaアプリケーションを実行できますし、
ネイティブアプリに変換することもできます。
(OSに付属しているToolでできます)

OS9はJavaアプリケーションはそのまま実行できないんですが、
MRJ SDKを使ってネイティブアプリに変換すれば実行できます。
(ネイティブというところに語弊があるかもしれませんが)
最新のMRJ(OS9のJRE)でもJRE1.1.8相当なのでSwingとか
使えませんが。

なかなか楽しいっすよ。
仕事に結びつくことはないと思いますが。
0154デフォルトの名無しさんNGNG
JavaWebStart って、アプリがローカルにキャッシュされてショートカットが出来ると、そこから起動した時の
カレントディレクトリがデスクトップになるのな。おまけにスタートメニューからだと"c:\"になってる。
インストールディレクトリという概念がないから、ユーザに指定させない限りローカルに設定ファイルとかを作れないような気が。
そりゃ絶対パス指定は出来るけど…"/"とか"/tmp"にファイル作るわけにも行くまい…。
たとえばWebクライアントアプリのキャッシュとか設定なんかはどこに保存すればいいんだろう?
0155デフォルトの名無しさんNGNG
これが普通
http://homepage2.nifty.com/rohizuka/ka/pa_003_a.htm
0156デフォルトの名無しさんNGNG
>>154
PreferenceAPIでも使えばいいのではなかろうか
0157アフォNGNG
>>155
しゃかしゃかうけた
0158デフォルトの名無しさんNGNG
設定項目に関してはそれで良いだろうけど、ダウンロードデータとかキャッシュの置き場所は?
Preference じゃ無理があるような…。中立なアプリケーション毎のワーキングディレクトリ名が得られればいいわけだけど。
> 155 なるほど
0159デフォルトの名無しさんNGNG
"user.home" 配下にアプリケーションのディレクトリを作る、でいいか。
0160デフォルトの名無しさんNGNG
SpringLayoutってなんぜんぜんわかんねーだよ、
0161デフォルトの名無しさんNGNG
>>155
大音量悲鳴ページ
0162デフォルトの名無しさんNGNG
>>137
つーか MFCのほうがよっぽどヤバイでしょ
0163デフォルトの名無しさんNGNG
crying-side of Java
0164デフォルトの名無しさんNGNG
。・゚・(ノД`)・゚・。
0165デフォルトの名無しさんNGNG
>>162
逃げ場(Win32API)があるだけまだMFCの方がましかも。

つか、AWTでワーカースレッドからUIスレッドに非同期イベント通知する
時ってどうやるんだ?

googleった結果
Toolkit.getDefaultToolkit().getSystemEventQueue().postEvent();
とかでシステムキューにイベントぶち込めば行けるのかと思ったが、AWT
組み込みのコンポーネント以外(自分でComponentを派生したクラスとか)
だとちゃんとイベント通知してくれないっぽいんだが。
(「ぽい」というのは、面倒くさすぎて嫌になって途中で解析やめたから)

MFC or Win32APIならPostMessage()一発なんだけどね。
0166前スレノ1NGNG
最近これに注目してる。
http://orto.jp/
使い物になるかどうか判らないが、アイデア自体の面白さと、がんがん実装してるのとで好感度高し。
0167デフォルトの名無しさんNGNG
>>165
EventQueue.invokeLater()が汎用臭いがどうよ?
0168165NGNG
>>167
サンクス。
あんまり細かく検証してないが、デッドロックはしなかったからこれで
行けそう。
しかし、同期用にクラス作らんといかんというところで、いまいちこう
釈然としないのは漏れだけかねぇ…
0169デフォルトの名無しさんNGNG
.NETで言うところの非同期デリゲートかな?
これもクラスがこっそり作られてるからなあ...

> 同期用にクラス作らんといかん

inner classで済むからまだマシかもよ
0170デフォルトの名無しさんNGNG
>>166
アイデアはおもしろい。というか.NETに似てる。
だけど、あのブラックボックスを使う勇気はない。
0171デフォルトの名無しさんNGNG
>>166
JavaScriptで仮想マシンを実装してるんだよね。
0172デフォルトの名無しさんNGNG
おもしろそうなのでage
0173デフォルトの名無しさんNGNG
バイトコードをJavaScriptで走らせるのか

JavaScriptの記述ミスがコンパイルエラーではねられるだけでも
価値がありそう

これがJakartaプロジェクトなら・・・
0174166NGNG
なんか、毎日のようにアップデートしてるみたい。
サーバ側との通信が自由に出来るようになれば、かなり使いでがありそう。
0175デフォルトの名無しさんNGNG
ほほーー、面白いものができてるね
ところでこれが.NETに似てるの!?本当なら.NET age
0176デフォルトの名無しさんNGNG
次にパスを通します。パスの通し方はwindowsの場合はAutoexec.batをエディタで開いて

PATH=%PATH%;"C:\jdk1.4\bin"


↑
これが分かりません。
パスが通ってないんですよね?僕。
どうやったらいいんでしょう
AUTOEXEの起動方法からお願いします
0177デフォルトの名無しさんNGNG
>>174
つーかJavaScriptにソケット扱えるんかいな。
IEのJScriptに限定にすればCOM絡みで裏技がありそうだけど。
0178デフォルトの名無しさんNGNG
>>177
MozillaのRhinoならオールパミッション付与かも・・・
0179デフォルトの名無しさんNGNG
>>177
おそらくIFRAMEネタでしょ。
そこにXML読み込んで解析みたいな。
■ このスレッドは過去ログ倉庫に格納されています