クライアントサイドJavaどうよ? part2
■ このスレッドは過去ログ倉庫に格納されています
0001Sunがダメ
NGNGマターリ語りましょう。
前スレ
http://pc3.2ch.net/test/read.cgi/tech/1002160815/
0730デフォルトの名無しさん
NGNG真のJavaプログラマーの集団はJ2EEに頼らない。
あれは開発に金かけられないときのテヌキ用の道具。
あるいは、JSPしかデキナイアホだけでサーバ開発しな
きゃいけないときとか。
…などということを考えている自称スペシャリストが
J2EEモドキのミドルウェアを作ろうとして、マヌケな
シッパイを繰りかえすことが、巷であちこち散見されますな。
確かにそのとおりなのだが、そのことと「ソイツガほんと
に実装のスペシャリストであるか」ということは、あまり
関係が無いらしい。
0731デフォルトの名無しさん
NGNGEJBサーバとEJBクライアントと答えてあげましょう。
RMIでサバクラ作るなら許容範囲さ。
0732デフォルトの名無しさん
NGNGそれにかかるお金も大きいほうじゃないのか?
0733デフォルトの名無しさん
NGNGJ2EE準拠のAPサーバと同じことを、下から作ることに比べれば、
1/100000くらい楽。設定と動作の関係だけ調べれば済むんだから。
というか、アレを難しいという人が増えたのが、最近の不幸。
サーバー/クライアントを下から作ったことがある人にとっては、
あれはとても簡単でありがたい仕組みですよ。
0734733
NGNGJ2EEと同じレイヤーを、自力で設計して実装することを
かな。
0735デフォルトの名無しさん
NGNG単にそいつのレベルが低いか、
噂に踊らされてるかのどちらかでしょう。
0736733
NGNG難しいことにしとかないと、お金にならないからねえ。
情報の偏在がお金を生むという一般法則は、プログ
ラミングの世界ではより顕著にあらわれる。
0737デフォルトの名無しさん
NGNG同意。永遠普遍の法則。
0738733
NGNGくさい」という意味で「難しい」っていうんだろうね。
責任転嫁を全く悪意ナシでやる人間ほど、御しがたい
ロクデナシはいないよ。
0739デフォルトの名無しさん
NGNG実はそれ以前に知っておくべき前提がいろいろとあって、それら周辺の定義の継承図をたどっていくのが、
めんどくさい=難しいって事なんじゃないかな。
って、本腰入れて一つづつ調べに入ってみるなり、(それが手元にあるなら)弄ってみるなりしてみれば、
実はそんなに大層な事でもなかったりするってのが、真実なのに。
で、その努力を惜しむタイプの奴らには、結局そこにある概念そのものが、闇に包まれた「ナゾのモノ」で
しかなくて、上っ面のイメージ(それも「ヨクワカラナイもの」っていうイメージ)だけで捉えて、結局
「うーん、難しい」ってな事になるのでは。
ま、職業にしてるヤツじゃないなら、別にそれでもいいんだけどね。
0740デフォルトの名無しさん
NGNGいやいや。職業にしてない香具師は追究するって。
職業と割り切ってるからこそ深入りしないんだって。悲しいけど。
0741739
NGNGうーん。言われてみればそうかも。悲しいな。(笑
特にシステム屋の上の方の人間に多い気がする。
こっちは筋道がわかりきった上で「こうした方が良い」と言ってるのに、なんか
「写真撮られると魂抜かれるんだっけ?」みたいな顔して、即決できない。
ただ、世の中には完全な事も完全な人間もいないから、ちゃんと検証もしますがって言っても、
イマイチ納得できていない様子だったりする。って、これは実話。そして板違い。(マ板向け)
それでメシ喰ってるんなら、深入り上等。むしろ自分の穴をいつも探しとけって、
俺は思う。
0742739
NGNGひたすら、掘らねば。俺も。
0743732
NGNGJ2EEの英語ドキュメントを見て以来、
J2EEにはほとんど触れていないかも。
JNDIもRMIも直列化の意味もわからんかったし
ServletもJDBCもOracle(関係ないけど)も触れたばかりで
最初はつらかった。
アルバイトでベンダのある人がつくったEJBやJSP/Servletのソースコードの解析はつらかった。
日本語ドキュメントが登場したなら、
今から漏れもJ2EEに再挑戦してみますか。
0744デフォルトの名無しさん
NGNGぜひ死滅スレのアンチM$厨に諭してやってください
0745デフォルトの名無しさん
NGNG分からなくても分かると思って勉強しなきゃ分からないんだよ。
諦めてるやつらは辞めて田舎に帰っちまえ、と思う。
0746739
NGNGていうか
J2EE概要
http://java.sun.com/j2ee/ja/index.html
シリアライズ関係
http://java-house.jp/cgi-bin/namazu.cgi?query=%A5%B7%A5%EA%A5%A2%A5%E9%A5%A4%A5%BA&whence=0&max=50&result=normal&sort=score
RMI基礎の基礎
http://www63.tok2.com/home2/jd4/RMIBasic.html
Servlet基礎
http://www.java-conf.gr.jp/wg_bof/servlet/docs/980526/yoko_k_h
等、探せばいろいろ出てくるぞ。(つーか本買った方がいいかもしれんが)
0749デフォルトの名無しさん
NGNGサーバーサイドだと、mmapとかshmemとかsemaphoreとかlockfとかが
欲しくなることは無い?
selectやpollが無いことはやはり長らく問題とされていて、そのために
java.aioが導入されたようだけれども(使ったことが無いのでよくは
知らないが)。
0750デフォルトの名無しさん
NGNG0751733
NGNGsemaphore除いてぜんぶnioにある。
mmap→MappedByteBuffer
shmem→ByteBuffer#allocateDirect()(プロセス間共有はできんが)
lockf→FileLock
select、poll→SelectableCannel,Selector
概念知ってる奴なら、Tutorial読めば使い方はすぐわかる。
Semaphoreが欲しいなら、DougRea博士のconcurrentライブ
ラリでいいんちゃうか。
0752デフォルトの名無しさん
NGNGSemaphore と言えば Singleton。
でもこの辺の事は、むしろコンテナ(アパートメントなスレッドのトリガー握っている管理者)の仕事だよね。...って、
それを自分で管理(あるいは実装変更)したいって事?
俺の貧困な応用力じゃ、Contextになんか入れといて管理とかしか浮かばない......。
つーか、
>selectやpoll
って、ゴメン。不勉強で意味がわからない。
0753デフォルトの名無しさん
NGNG0754デフォルトの名無しさん
NGNGそれってJ2EE1.4 ??
0755733
NGNGサーバーサイドの鉄則
「Servlet(特にHttpServlet)で安易にSingletonつかうな」
0756733
NGNGいーえ、J2SE1.4のコアAPI。
J2EE1.4は、もっと上位レイヤーのAPIの改善。
0757752
NGNGあ、ゴメン。言葉足りなかった。
別にSingleton使いたいって話じゃなくて、「Semaphoreを表現しようと思ったら、Singletonになるよね」って意味。
だとすると、コンテナに実装しないとって話。
0758749
NGNGThx. 仕事で未だに1.3ベースしか触ったことなかったんで...
便利になったんですね。
Java.nioのFileChannel/*Bufferまわりと今までのjava.ioとの
関係・整合性がいまいち良く分からないけれども...
>>752
Singletonは同一のJavaVMプロセスどころか同一ClassLoader内でしか
役にたたんでしょう。semaphore、lockfでは同一ホスト内の複数の
プロセス間での排他を行うことが出来ます。
select/pollはUNIX上でI/Oの多重化(multiprexing)を行うための
昔ながらの手段です。他の典型的な手段がprefork+共有メモリ、
またはスレッドプーリングということになると思いますが。
従来のJavaで利用できたのはスレッドプーリングだけでした。
0760733
NGNGに出来ているから(Winでは確認。ほかはシラン)それを利用して、プロセス
間共有のMutexLockやSemaphoreを作ってみるのはありかモナー。
プロセスをまたぐことは考えないというのが、Javaのポリシーなのかもね。
スレッド使って一つのJVMでなんでもやれ、ということかと。
マルチプロセスだと、プロセスフットプリントのメモリと実行時のコンテ
キストスイッチのコストが無駄だしさ。
0761733
NGNGこんどは「スレッドスケジューリング操作API」と、「GCスケジ
ューリング操作API」が欲しくなるね…
できるかな?JCP調べてみるかな。
0762749
NGNGJVMの境界を越えた形に拡張できる気が。
インスタンスをJVM内のstataic変数という形ではなく、共有メモリ上に
シリアライズされた形で配置する。もっとも普通Cでこれを実現する場合は
一々シリアライズする必要はなくて、アラインメントさえちゃんとしていれば
単にキャストするだけの話なので、性能的に大きな差がありそう。
>>760
コンテキストスイッチのコストが発生するのはマルチスレッドでも
同じ話では。
Javaのポリシーという意味では単純に「移植性」の問題かなぁ、と思って
いたのですが。「クライアントサイド」というスレッドの趣旨に即して
云えば、例えばMutexロックを利用してアプリの多重起動を防止する、といった
テクニックは非常にありがちであって、できれば欲しい、という類の
ものですよね。
シングルJVMにあくまでこだわるのであれば、javaコマンドは独自の
JVMインスタンスを起動するようなものではなく、JVMサービス(daemon)に
新たなスレッドを生成し、クラスロードを指示するようなものであるべきだった
と思います。
その方が起動は確実に早くなっただろうし。
0763733
NGNGそういうのは、おそらくEJBサーバとかRMIサーバを利用するの
がJava流。(TCP/IP越しになるので遅いだろうけど。でも、
LinuxのGNOMEなんかCORBAでやってるし〜♪)
アプリケーション製作側が、全体でJVMを一個だけ使用する
ようにして、追加機能はプラグインで、という発想は、
Eclipseとか、APサーバーとかでどんどん普及してるじゃんよ。
シランカ?
0764っていうか
NGNG0765デフォルトの名無しさん
NGNG0766749
NGNGMappedByteBufferまわりのヘルプを呼んだ限りでは、それがMAP_PRIVATE
相当機能ではなくMAP_SHAREDなものを提供すると読めたのですが、
勘違い?
分散オブジェクト環境は、個人的には
・大がかりすぎる
・柔軟だが、スケーラブルでない。端的に云えば性能がよろしくない。
と思っているので、代替手段があるのならその方がいいわけです。
性能がよくなくても良いのであれば、何らかのメッセージ機構が提供
されているならば、それを用いて排他プリミティブも実現できるでしょう。
APサーバが単一のJVMを用いているのは無論知っています。が、
何でもかんでも一つのAPサーバ上で実現できる(または、する)訳でも
ないでしょう。現実的な問題を云えば、例え基本的な実行単位が
プロセスではなくスレッドであるWin32環境においても
*スレッドはプロセスの代替にはならない*
ので、マルチプロセス環境を無視する訳にはいかないし、
javaインタプリタを>>762に書いたような方法で実装することは
現実的で有効な選択肢ではない(だから実際にそうなっていない)
...ということを云いたいわけです。
0767デフォルトの名無しさん
NGNGJ2EE学んでおけばなにか楽なことができそうだな。
移植性の高さからJ2EEを学ぶ価値は高そうだな。
ライブラリの統一性から学んでも損はしなそうだな。
それよりレスを見るとOSやネットワークの話が多いのか。
OSの知識やTCP/IPとかも深く学んでおく必要がありそうだ。
0768デフォルトの名無しさん
NGNGそれにかかるお金も大きいほうだよ。
0769デフォルトの名無しさん
NGNG0770デフォルトの名無しさん
NGNG俺は >>764 では無いが、あくまでこのスレの主旨が「クライアントサイドJava」であるのだから、
当然、対となる「サーバサイド」の存在があるわけで。
たぶん >>764 が言いたかったのは、「クライアントサイドが起動する時にサーバ側に問い合わせて、
自分は起動してもいいかを確認する」って事だったんじゃないの?その起動情報の保存用にサーバ側の
DBを使う、と。
接続法としては、別にSocketだろうが、URlConnectionだろうが、RMI(含む IIOP)だろうがなんでもいいと。
...って、そう考えると、APサーバやDB周辺がデカいMutexに見えてくるな(笑
0771デフォルトの名無しさん
NGNGアプレットみたいなもんじゃないのか?
ま、どれを話題にしてもすぐネタ切れになりそうではあるが…。
0772デフォルトの名無しさん
NGNGwhile(true) {
>>715-771
}
0773デフォルトの名無しさん
NGNG0774デフォルトの名無しさん
NGNGat line 772
0775733
NGNGファイルがマッピングされるダイレクトバッファは、JVMインスタンスに対して
関連付けられている状態ですので、プロセス間で共有は出来ませぬ。
Sunは、Javaでスレッドをプロセスの代替として使うことを推進してますでしょ。
第一、プロセスフットプリント分のオーバーヘッドを消費してまでプロセス分け
なきゃいけない理由ってナニヨ。JVM一個でヒープ広く取っておいて、スレッドで
シェアしたって一緒じゃん。
もしJavaでOSつくるなら、OSカーネル=イッコのJVMなんじゃないのかな。
0776デフォルトの名無しさん
NGNGSunとMSのバトルで振り回されるのは、もう飽きた。クライアントサイド
にやる気のないSunは市ね(MSとの訴訟は大好きみたいだなw)。
こちとら、年配のコンシューマがターゲットなんで、JREをインストール
しろだなんだと、めんどくさいことさせられねぇのよ。アナログ回線な時
代はそんなことは死刑を宣告するようなもんだった。んで、インストール
ベースの一番多いMicrosoftVMを仕方なく使ってるが(Swingなんて使った
ことねーよバカ!)、バグの修正はもうやってねーし、この間はWindowsXP
SP1aなんか出しやがって。MSVMが入ってねー客はどーすんだオラ。JREダウ
ンロードさせようと思っても、使用許諾画面はなんで英語なんだ?ダウン
ロード方法教えるのがめんどくせーんだよ!Java Plug-inのgetjavaページ
もなんで英語なんだよ。日本語版作れ!ま、SunのVM入れたって、Win98とか
じゃHotSpotが落ちることあるしな。バグ減らせよ。本当に勘弁してくれ。
世間じゃJ2EEだなんだと、サーバサイドや組み込み全盛。展示会のセッショ
ンじゃ、クライアントサイドの話題なんて殆どねーよ。見に行く気にもなら
ん。JavaWebStartはなんで2回目の起動時にショートカットアイコンを作る
ような画面を出すのだ?余計なお世話はやめてくれ。その説明もめんどくさ
いんだよ。今じゃこの辺の制御は出来るようになったのか?
よーしパパ、C#に浮気しちゃうぞ。これならファイルの関連付けもマイドキ
ュメントフォルダも自由自在だ!あ、パイの狭いMac版対応は後回しで許して。
じゃ、バイバイ。
0777デフォルトの名無しさん
NGNG0778776
NGNGおいおまいら。
マリンバはどーした?クライアントサイダーにとって、カスタネットは希望の
星じゃなかったのか?いや、違うな。失礼した。
とにかく、Sunはさっさと安定したVMを出せってんだ。ちょこちょこバー
ジョンアップするな!マウスのクリップ部分の画面表示が崩れるのを
DirectXのせいにして放置するな!グラボのパフォーマンス設定を落と
せだと?ふざけんな!そんなことユーザにさせられるか!VMオプショ
ンでDirectXをOffにしろ?そしたら画面が汚いんだよ!アホ!
BugParadeの大行列を解消しろ!
すっきりしたのでマジバイバイ。
聞いてくれてありがと。
0779デフォルトの名無しさん
NGNG0780デフォルトの名無しさん
NGNGはるか昔に聞いたことがあるような気がするが…。何だっけ?
調べようかと思ったけど別にいいや。
俺は netscape4 についてきた netcaster の糞っぷりが忘れられない。
アクティブデスクトップに対抗したプッシュ配信技術なんだけど、
Java で書かれてたせいで起動に 1 分以上かかったな。
あとは Java で書かれた netscape4 ヘルプの糞鈍重っぷりとか。
あの辺がクライアントサイドの行く末を暗示してたな。
さて、仕事すっか。
0781デフォルトの名無しさん
NGNGあなたは仕事でJavaやっているの?
0782デフォルトの名無しさん
NGNG0783デフォルトの名無しさん
NGNGあなたはよくそんなことを客に言えますね。
0784デフォルトの名無しさん
NGNG0785デフォルトの名無しさん
NGNGSunでもMSでもいいから、どっちか倒してくれ
0786デフォルトの名無しさん
NGNGかといって.NETにサーバーサイドを支配させるのはどうかと
0787デフォルトの名無しさん
NGNG0788デフォルトの名無しさん
NGNGJavaと.NETが相互利用できるようになるのが一番ありがたい。
0789デフォルトの名無しさん
NGNG0790デフォルトの名無しさん
NGNG(゚Д゚)ハァ? ソースは?
0791デフォルトの名無しさん
NGNG0792デフォルトの名無しさん
NGNG0793デフォルトの名無しさん
NGNGJava マンセー、みたいな。
0794デフォルトの名無しさん
NGNGhttp://developers.slashdot.org/article.pl?sid=03/02/09/1347215&mode=nested&tid=108
0795デフォルトの名無しさん
NGNG肝心の部分が見れないんですけど。
0796デフォルトの名無しさん
NGNG0797デフォルトの名無しさん
NGNG0798デフォルトの名無しさん
NGNG0799デフォルトの名無しさん
NGNG本家 ./ のでかさって、./-J と桁違いなんだな。
0800799
NGNGぁゃゃか、俺は。
0802デフォルトの名無しさん
NGNG0803デフォルトの名無しさん
NGNGとりあえず Sun 自身が「Solaris の Java 実装はイマイチ」と思ってるらしい
ということは読み取れるけど、これは「Java 自体がイマイチ」いってるわけではないよね。
「(Solaris の Java はイマイチだから) Solaris よりも Linux に注力することで
Sun の負担を軽減したい」ということなのか?
でも Enterprise 分野って Solaris 主流なんだよな。よくわからん。
後半は「JREでかすぎ」とか「バージョンでの互換性低すぎ」とか
「とっととバグ直せ」とかこのスレで言い尽くされた内容ばかりだな。
0804デフォルトの名無しさん
NGNG俺も読んでみたけど、なんだかなぁって感じがした。
Solarisの話されても、ウチでは使ってないし。
0805デフォルトの名無しさん
NGNG漏れもExcite翻訳使って読んだ。
やっぱりSolaris上で動くJavaだけの問題だったか。
>>789は電波だよ。あの全文ちゃんと呼んでいない厨房。
C#死滅スレPart7でさっきまで暴れていたあいつだよ。
なぜか不思議というか奇妙なくらいにかなりJavaを目の敵にしているみたいなんだ。
0806デフォルトの名無しさん
NGNG0807デフォルトの名無しさん
NGNG放置を覚えられないやつは何をやっても駄目。 みつを
0808デフォルトの名無しさん
NGNG1.4 になって実行速度はほとんど問題ないのですが、
起動時間が遅いのが問題です。起動・終了の多いアプリケーションなので。
そこで次のようなものを考えました。(まだ実装していません。)
JVMをあらかじめひとつ起動しておいて待機します。
ソケットで実行したいクラス名をそいつへ通知します(Cで実装します)。
受け取ったクラス名からインスタンスを生成してあげます(別スレッドで)。
アプリケーションの起動 = ソケットで実行したいクラス名を通知 ということです。
ここで問題になるのが、コードの書き方によっては JVM 自体を落としてしまうということです。
呼ばれたクラスで System.exit() なんて書いてたら、呼出元もろとも即死ですよね?
それと、呼ばれたクラスでエラーが発生したら・・・? これは、呼出元で
catch(Throwable t) {} しとけば大丈夫ですよね。
なにかいいアイデアないですかね?
0809デフォルトの名無しさん
NGNGでも昔全く同じことをやったとき(1.2とかそのへん)、System.exit()を
投げてきたスレッドグループをどうするかでVMごとの違いがあって
はまったな。単純にSystem.exit()してきたグループをkillすると
AWTまわりのオブジェクトを破棄するVMとかかえたままのVMがあったりして。
最近のはわからん。でも自分でクライアントアプリケーションも実装する
なら「System.exitはつかわない。もしつかったらセキュリティマネージャ
で捕まえてassertのメッセージを出す」くらいでいいだろうね。
0810デフォルトの名無しさん
NGNG> 起動・終了の多いアプリケーションなので。
その時点でJavaを選択肢から外さないのがおかしい。
0811デフォルトの名無しさん
NGNGまぁ、回避策はいくつかあるからねぇ。
0812デフォルトの名無しさん
NGNG判断は冷静にしようね。
0813デフォルトの名無しさん
NGNG0814デフォルトの名無しさん
NGNGこれから作るんだったらJava以外の選択肢も選べるだろうけど
もー作っちゃってる場合はJavaで起動時間短縮する工夫した方が早いっしょ。
0815デフォルトの名無しさん
NGNGコレ結構いいよクライアントサイドにはもってこいだな
SWTも使えるし・・・
いま、体験版だけどマジで製品版買おうかな?
JETで作ったSWTのサンプルexeプログラム(Winのエクスプローラ風)ここからDLしてみそ
ttp://www.xlsoft.com/jp/products/jet/jetswt.html
0816デフォルトの名無しさん
NGNG冷静な判断という言葉の意味を判ってないのね。
0817808
NGNGアプリケーション上に表示されるGUI部品が動的に変わるので
VB には荷が重いかと思いました。
C# のほうが良いとも思うのですが、文法はともかくクラスライブラリの
使い方やクセを覚えるのにそれなりに時間がかかると思いまして。(C#未経験)
(Swingもそれなりに使えるようになるのに時間かかったし…)
0818デフォルトの名無しさん
NGNGSwingよりハラクダヨ。そんなにディープなことが出来ないようになってるし。
0819808
NGNG以前ちょっとだけ使ったことがあります。実行速度をちょっとでも速くしたい、
というのならともかく、配布を簡単にしたいということであればオススメしません。
スタンダードエディションでは、実行クライアントへ JRE と JET を
配布する必要があります。結局、足枷が増えるだけですね。
Webで公開されているサンプルのように JRE から独立したフルネイティブで
コンパイルするにはプロフェッショナルエディション + SWT使用 が必要です。
0821デフォルトの名無しさん
NGNG0822デフォルトの名無しさん
NGNGDoJa Builderは、DoJa(iアプリ)アプリケーション開発ツールです。
NTTドコモのiアプリ開発を強力にサポートします!
http://www.skyarts.com/japan/products/programing/dojabuilder/index.html
Q:なぜ.NET Frameworkが必要なのですか?
DoJa Builder Ver 1.xはJavaアプリケーションでした。しかし、
そのことにより以下の問題点がありました。
起動が遅い
動作が重い
GUIが使いづらい
ホイールマウスが使えない(JDK1.3の場合)
ダイアログが後ろに行くと元に戻しにくい
これらのことからユーザーの開発効率をあげるためにはVer1.xを引き継いで
Javaアプリケーションのままバージョンアップを行うことは難しいと判断しました。
0823デフォルトの名無しさん
NGNGJava ─ めんどい。
.NET ─ らく。高機能。
0824デフォルトの名無しさん
NGNG2回目以降はものすごく速い。
起動・終了繰り返すものなら適当だと思う。
0825デフォルトの名無しさん
NGNGそう、それそれ。ありがとう。
悲しい現実ですね。
0826808
NGNGところでみなさんクライアントサイドでのJavaあきらめて .NET ですか?
0827デフォルトの名無しさん
NGNG「冷静な判断という言葉の意味」って何?
0828デフォルトの名無しさん
NGNGUnix系でしか動かないものなら興味ある。
0829デフォルトの名無しさん
NGNG意味の意味について問いただすと深いぞ。
■ このスレッドは過去ログ倉庫に格納されています