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

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

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

前スレ
http://pc3.2ch.net/test/read.cgi/tech/1002160815/
0715デフォルトの名無しさんNGNG
関係無いけど、クライアントサイドJavaって、Applet前提じゃないよね...って、
クラ/サバ開発するシステム屋の独り言。
0716デフォルトの名無しさんNGNG
>>715 Javaをよくしらない厨房にはいまだにApplet前提だと思い込んでいる奴がおる。
0717デフォルトの名無しさんNGNG
JavaとJavaScriptの違いがわからない奴も
数人混ざっていると思われます。
0718デフォルトの名無しさんNGNG
ECMAScriptを何やらマイナーな言語だと思っている奴も
数人混ざっていると思われます。
0719デフォルトの名無しさんNGNG
「デューク」と聞いて「ゴルゴ13」思い出す奴は
Javaには向かない
0720デフォルトの名無しさんNGNG
719に戦力外通告されてしまいますた。
0721デフォルトの名無しさんNGNG
さて、>>712の結果は?
0722デフォルトの名無しさんNGNG
>>718
それいうなら
JavaScriptとJScriptとVBScriptとECMAScriptとActiveScriptとActionScriptの違いを解っていない奴もおるよ
0723デフォルトの名無しさんNGNG
>>722
そこまでくると、普段何やってるヒトなのか、ちょっと尋ねてはみたい。
0724デフォルトの名無しさんNGNG
クラ/サバと聞いて、イコール「ブラウザー/Webサーバ」と思い込んでいる奴を見つけたら、
今後私はどうするべきでしょうか。
0725デフォルトの名無しさんNGNG
>>724
一生Javaに引きこもってろ、といってあげてください。
0726デフォルトの名無しさんNGNG
「いいじゃねーか。今風で」
と、自分が今風にすがりつくためにも、そう思います。
0727デフォルトの名無しさんNGNG
ノアヲタがいるな。
0728デフォルトの名無しさんNGNG
>>724
え、違うのけ?
0729デフォルトの名無しさんNGNG
>>725 真のJavaProgrammerはJ2EEを極めJavaに引き篭もらず
Java以外にOracleやXMLも使いこなす。
0730デフォルトの名無しさんNGNG
>>729
真のJavaプログラマーの集団はJ2EEに頼らない。

あれは開発に金かけられないときのテヌキ用の道具。
あるいは、JSPしかデキナイアホだけでサーバ開発しな
きゃいけないときとか。

…などということを考えている自称スペシャリストが
J2EEモドキのミドルウェアを作ろうとして、マヌケな
シッパイを繰りかえすことが、巷であちこち散見されますな。
確かにそのとおりなのだが、そのことと「ソイツガほんと
に実装のスペシャリストであるか」ということは、あまり
関係が無いらしい。
0731デフォルトの名無しさんNGNG
>>724
EJBサーバとEJBクライアントと答えてあげましょう。
RMIでサバクラ作るなら許容範囲さ。
0732デフォルトの名無しさんNGNG
>>730 J2EEは使いこなすだけでそうとう高度なスキルを要するし
それにかかるお金も大きいほうじゃないのか?
0733デフォルトの名無しさんNGNG
>>732
J2EE準拠のAPサーバと同じことを、下から作ることに比べれば、
1/100000くらい楽。設定と動作の関係だけ調べれば済むんだから。

というか、アレを難しいという人が増えたのが、最近の不幸。
サーバー/クライアントを下から作ったことがある人にとっては、
あれはとても簡単でありがたい仕組みですよ。
0734733NGNG
>J2EE準拠のAPサーバと同じことを、下から作ること
J2EEと同じレイヤーを、自力で設計して実装することを

かな。
0735デフォルトの名無しさんNGNG
> というか、アレを難しいという人が増えたのが、最近の不幸。

単にそいつのレベルが低いか、
噂に踊らされてるかのどちらかでしょう。
0736733NGNG
>>735
難しいことにしとかないと、お金にならないからねえ。

情報の偏在がお金を生むという一般法則は、プログ
ラミングの世界ではより顕著にあらわれる。
0737デフォルトの名無しさんNGNG
>>736
同意。永遠普遍の法則。
0738733NGNG
どうでもいいが、何で巷の馬鹿は「勉強するのが面倒
くさい」という意味で「難しい」っていうんだろうね。

責任転嫁を全く悪意ナシでやる人間ほど、御しがたい
ロクデナシはいないよ。
0739デフォルトの名無しさんNGNG
Javaだけに限らないけど、特にプログラミングの世界にある周辺の言葉って、
実はそれ以前に知っておくべき前提がいろいろとあって、それら周辺の定義の継承図をたどっていくのが、
めんどくさい=難しいって事なんじゃないかな。

って、本腰入れて一つづつ調べに入ってみるなり、(それが手元にあるなら)弄ってみるなりしてみれば、
実はそんなに大層な事でもなかったりするってのが、真実なのに。

で、その努力を惜しむタイプの奴らには、結局そこにある概念そのものが、闇に包まれた「ナゾのモノ」で
しかなくて、上っ面のイメージ(それも「ヨクワカラナイもの」っていうイメージ)だけで捉えて、結局
「うーん、難しい」ってな事になるのでは。

ま、職業にしてるヤツじゃないなら、別にそれでもいいんだけどね。
0740デフォルトの名無しさんNGNG
>>739
いやいや。職業にしてない香具師は追究するって。
職業と割り切ってるからこそ深入りしないんだって。悲しいけど。
0741739NGNG
>>740
うーん。言われてみればそうかも。悲しいな。(笑

特にシステム屋の上の方の人間に多い気がする。
こっちは筋道がわかりきった上で「こうした方が良い」と言ってるのに、なんか
「写真撮られると魂抜かれるんだっけ?」みたいな顔して、即決できない。

ただ、世の中には完全な事も完全な人間もいないから、ちゃんと検証もしますがって言っても、
イマイチ納得できていない様子だったりする。って、これは実話。そして板違い。(マ板向け)

それでメシ喰ってるんなら、深入り上等。むしろ自分の穴をいつも探しとけって、
俺は思う。
0742739NGNG
ま、聞きかじりの思い込みなんて、何の役にも立たないってこったな。
ひたすら、掘らねば。俺も。
0743732NGNG
>>739
J2EEの英語ドキュメントを見て以来、
J2EEにはほとんど触れていないかも。
JNDIもRMIも直列化の意味もわからんかったし
ServletもJDBCもOracle(関係ないけど)も触れたばかりで
最初はつらかった。
アルバイトでベンダのある人がつくったEJBやJSP/Servletのソースコードの解析はつらかった。

日本語ドキュメントが登場したなら、
今から漏れもJ2EEに再挑戦してみますか。
0744デフォルトの名無しさんNGNG
>>742
ぜひ死滅スレのアンチM$厨に諭してやってください
0745デフォルトの名無しさんNGNG
この手の技術ってのは、分からないって思ってるやつらには一生分からないし、
分からなくても分かると思って勉強しなきゃ分からないんだよ。
諦めてるやつらは辞めて田舎に帰っちまえ、と思う。
0746739NGNG
お、いい感じ。ゴーゴー(笑

ていうか

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

等、探せばいろいろ出てくるぞ。(つーか本買った方がいいかもしれんが)
0747739NGNG
あ、>>746 は、>>743 へのレス。
0748743NGNG
>>747 Thank you.
死滅スレで漏れの発言
をコピぺした馬鹿がおるみたいだ。

がしかし、漏れにはM$製品には魅力を感じねー。
0749デフォルトの名無しさんNGNG
唐突だが。
サーバーサイドだと、mmapとかshmemとかsemaphoreとかlockfとかが
欲しくなることは無い?
selectやpollが無いことはやはり長らく問題とされていて、そのために
java.aioが導入されたようだけれども(使ったことが無いのでよくは
知らないが)。
0750デフォルトの名無しさんNGNG
なんかレベルの低いのが紛れてると話が変な方向にねじまがるね。
0751733NGNG
>>749
semaphore除いてぜんぶnioにある。
mmap→MappedByteBuffer
shmem→ByteBuffer#allocateDirect()(プロセス間共有はできんが)
lockf→FileLock
select、poll→SelectableCannel,Selector

概念知ってる奴なら、Tutorial読めば使い方はすぐわかる。
Semaphoreが欲しいなら、DougRea博士のconcurrentライブ
ラリでいいんちゃうか。
0752デフォルトの名無しさんNGNG
>>749
Semaphore と言えば Singleton。
でもこの辺の事は、むしろコンテナ(アパートメントなスレッドのトリガー握っている管理者)の仕事だよね。...って、
それを自分で管理(あるいは実装変更)したいって事?

俺の貧困な応用力じゃ、Contextになんか入れといて管理とかしか浮かばない......。

つーか、
>selectやpoll

って、ゴメン。不勉強で意味がわからない。
0753デフォルトの名無しさんNGNG
>>750 ASp.NETしか知らない素人ですか?
0754デフォルトの名無しさんNGNG
>>751
それってJ2EE1.4 ??
0755733NGNG
>>752
サーバーサイドの鉄則
「Servlet(特にHttpServlet)で安易にSingletonつかうな」
0756733NGNG
>>754
いーえ、J2SE1.4のコアAPI。
J2EE1.4は、もっと上位レイヤーのAPIの改善。
0757752NGNG
>>755 (733?)

あ、ゴメン。言葉足りなかった。
別にSingleton使いたいって話じゃなくて、「Semaphoreを表現しようと思ったら、Singletonになるよね」って意味。
だとすると、コンテナに実装しないとって話。
0758749NGNG
>>751
Thx. 仕事で未だに1.3ベースしか触ったことなかったんで...
便利になったんですね。
Java.nioのFileChannel/*Bufferまわりと今までのjava.ioとの
関係・整合性がいまいち良く分からないけれども...

>>752
Singletonは同一のJavaVMプロセスどころか同一ClassLoader内でしか
役にたたんでしょう。semaphore、lockfでは同一ホスト内の複数の
プロセス間での排他を行うことが出来ます。
select/pollはUNIX上でI/Oの多重化(multiprexing)を行うための
昔ながらの手段です。他の典型的な手段がprefork+共有メモリ、
またはスレッドプーリングということになると思いますが。
従来のJavaで利用できたのはスレッドプーリングだけでした。
0759752NGNG
>>758
そうか。なるほど。Thanx.

そういえば、MutexとかSemaphoreって、プロセスもまたぐんだよな。
そう考えると、確かに欲しい。(って遅い感想だけど)
0760733NGNG
1.4のFileLockは、プロセスをまたいで排他ロックがかけられるよう
に出来ているから(Winでは確認。ほかはシラン)それを利用して、プロセス
間共有のMutexLockやSemaphoreを作ってみるのはありかモナー。

プロセスをまたぐことは考えないというのが、Javaのポリシーなのかもね。
スレッド使って一つのJVMでなんでもやれ、ということかと。

マルチプロセスだと、プロセスフットプリントのメモリと実行時のコンテ
キストスイッチのコストが無駄だしさ。
0761733NGNG
でもさー、シングルJVMベースで何でもやれということになると、
こんどは「スレッドスケジューリング操作API」と、「GCスケジ
ューリング操作API」が欲しくなるね…

できるかな?JCP調べてみるかな。
0762749NGNG
mutex相当のものと共有メモリが利用できれば、Singletonパターンを
JVMの境界を越えた形に拡張できる気が。
インスタンスをJVM内のstataic変数という形ではなく、共有メモリ上に
シリアライズされた形で配置する。もっとも普通Cでこれを実現する場合は
一々シリアライズする必要はなくて、アラインメントさえちゃんとしていれば
単にキャストするだけの話なので、性能的に大きな差がありそう。

>>760
コンテキストスイッチのコストが発生するのはマルチスレッドでも
同じ話では。
Javaのポリシーという意味では単純に「移植性」の問題かなぁ、と思って
いたのですが。「クライアントサイド」というスレッドの趣旨に即して
云えば、例えばMutexロックを利用してアプリの多重起動を防止する、といった
テクニックは非常にありがちであって、できれば欲しい、という類の
ものですよね。
シングルJVMにあくまでこだわるのであれば、javaコマンドは独自の
JVMインスタンスを起動するようなものではなく、JVMサービス(daemon)に
新たなスレッドを生成し、クラスロードを指示するようなものであるべきだった
と思います。
その方が起動は確実に早くなっただろうし。
0763733NGNG
プロセス間で利用できる共有メモリを扱う機能は、まだ無いよ。
そういうのは、おそらくEJBサーバとかRMIサーバを利用するの
がJava流。(TCP/IP越しになるので遅いだろうけど。でも、
LinuxのGNOMEなんかCORBAでやってるし〜♪)

アプリケーション製作側が、全体でJVMを一個だけ使用する
ようにして、追加機能はプラグインで、という発想は、
Eclipseとか、APサーバーとかでどんどん普及してるじゃんよ。
シランカ?
0764っていうかNGNG
プロセス間/ノード間のロックは DB 使え
0765デフォルトの名無しさんNGNG
クライアントサイドでDB?
0766749NGNG
>>763
MappedByteBufferまわりのヘルプを呼んだ限りでは、それがMAP_PRIVATE
相当機能ではなくMAP_SHAREDなものを提供すると読めたのですが、
勘違い?
分散オブジェクト環境は、個人的には
・大がかりすぎる
・柔軟だが、スケーラブルでない。端的に云えば性能がよろしくない。
と思っているので、代替手段があるのならその方がいいわけです。
性能がよくなくても良いのであれば、何らかのメッセージ機構が提供
されているならば、それを用いて排他プリミティブも実現できるでしょう。

APサーバが単一のJVMを用いているのは無論知っています。が、
何でもかんでも一つのAPサーバ上で実現できる(または、する)訳でも
ないでしょう。現実的な問題を云えば、例え基本的な実行単位が
プロセスではなくスレッドであるWin32環境においても
*スレッドはプロセスの代替にはならない*
ので、マルチプロセス環境を無視する訳にはいかないし、
javaインタプリタを>>762に書いたような方法で実装することは
現実的で有効な選択肢ではない(だから実際にそうなっていない)
...ということを云いたいわけです。
0767デフォルトの名無しさんNGNG
J2EE使いは凄いな.....。
J2EE学んでおけばなにか楽なことができそうだな。
移植性の高さからJ2EEを学ぶ価値は高そうだな。
ライブラリの統一性から学んでも損はしなそうだな。

それよりレスを見るとOSやネットワークの話が多いのか。
OSの知識やTCP/IPとかも深く学んでおく必要がありそうだ。
0768デフォルトの名無しさんNGNG
J2EEは使いこなすだけでそうとう高度なスキルを要するし
それにかかるお金も大きいほうだよ。
0769デフォルトの名無しさんNGNG
>>767が褒め殺しまたはネタにしか見えないのは俺だけか(w
0770デフォルトの名無しさんNGNG
>>765
俺は >>764 では無いが、あくまでこのスレの主旨が「クライアントサイドJava」であるのだから、
当然、対となる「サーバサイド」の存在があるわけで。

たぶん >>764 が言いたかったのは、「クライアントサイドが起動する時にサーバ側に問い合わせて、
自分は起動してもいいかを確認する」って事だったんじゃないの?その起動情報の保存用にサーバ側の
DBを使う、と。
接続法としては、別にSocketだろうが、URlConnectionだろうが、RMI(含む IIOP)だろうがなんでもいいと。

...って、そう考えると、APサーバやDB周辺がデカいMutexに見えてくるな(笑
0771デフォルトの名無しさんNGNG
クライアントサイドつったら、Java ゲームとか Win のフリーソフトとか
アプレットみたいなもんじゃないのか?

ま、どれを話題にしてもすぐネタ切れになりそうではあるが…。
■ このスレッドは過去ログ倉庫に格納されています