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

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
.NET軍に蹂躙されてしまったクライアントサイド。
Swing/AWTの安住の地を探すためのスレ。

前スレ
http://pc2.2ch.net/test/read.cgi/tech/1032665721/l50
前々スレ
http://pc3.2ch.net/tech/kako/1002/10021/1002160815.html
0367デフォルトの名無しさんNGNG
>>366

ちゃんと作ったのかしら。音をメモリの上に置いておいた?


(本当にリアルタイムとなると、ちょいプラットフォーム的に不向きかも。)
0368デフォルトの名無しさんNGNG
音をメモリ上にキャッシュしとくってのができんのじゃないかな。
サウンド系のAPIって最近どうなっとるのか知らんけど、1.3ぐらいまで
は全然できんかったはず。JMFとかを付け足せばできるのかな?
0369デフォルトの名無しさんNGNG
実際にプログラミングした訳じゃないけどキーボードから音が出るまでは
そんなに遅くは無いと思うなぁ。
0370デフォルトの名無しさんNGNG
javax.sound.sampledでできるでしょ。
音源のクリッピングができますので。

…あれ?Javadocには1.3〜って書いてあるな。
自分の無知を棚に上げて相手を糞っていう馬鹿がまた一人。
0371デフォルトの名無しさんNGNG
>>358 >>365
不満ならば自分でフレームワーク作ってカスタマイズできるのがJavaの売りだと思うんだが。
あらかじめ用意されたGUIライブラリを使えといわれても余計なお世話じゃといいたくなるこもある。
0372386NGNG
申し訳ございませんでした。
1.2.2までは音声出力するのにjava.applet.AudioClipしか
使えなかったってのが記憶にありましてスマンです。
誰にも糞なんていうとらんです。
0373デフォルトの名無しさんNGNG
どこの未来から来たんだよ↑
0374370NGNG
>>368
君が糞では有りません。
0375366NGNG
キーボードはjavaSoundで作成
俺も最初>>369みたいに考えて作り始めたわけだけど、出来上がって絶句しますた
まぁ、「まるで演奏できん」っつっても、キータッチしてから音がでるまで0.2秒位だろうか?そんなもんだよ
しかしこの0.2秒ってレスポンスはピアノとしては機能しない
0376デフォルトの名無しさんNGNG
最近思うのだが、クライアントサイドのVBって死滅してない?
0377デフォルトの名無しさんNGNG
試してみたら、確かにディレイがあるな。
EventDispatchスレッドからのDispatchが遅いのか、演奏開始が
遅いのかは、分からないなあ…誤差なしでイベントハンドラを起動
できるのかどうかが、Javaだと微妙だよね?

public static void main(String[] args) throws Exception{
 JFrame f = new JFrame("Test");
 f.setDefaultCloseOperation(f.EXIT_ON_CLOSE);
 JButton b = new JButton("PLAY");
 f.getContentPane().add(b);
 f.pack();
 f.setSize(100,100);
 final Clip clip = (Clip)AudioSystem.getLine(new Line.Info(Clip.class));
 AudioInputStream in = AudioSystem.getAudioInputStream(new File("なにかWAVファイル"));
 clip.open(in);
 b.addMouseListener(new MouseAdapter(){
  public void mousePressed(MouseEvent e){
   clip.start();
   clip.setMicrosecondPosition(0);
  }
 });
 f.show();
}

ボタンをマウスクリックしてみそ。
0378デフォルトの名無しさんNGNG
http://www.agemasukudasai.com/bloom/
0379366NGNG
>>377
俺はkeyListenerのディスパッチでjavaSoundのmidi使ったけどね
はっきり調べてはいないけど、Dispatchが遅いと思う(Dispatch直後にGraphicsに即効描画・・でもほぼ同じ程度のディレイが発生する事は確認した)
>>誤差なしでイベントハンドラを起動できるのかどうかが、Javaだと微妙だよね?
これこれ、iAppliだとCanpus.getKeyPateState()だったけな!?そんなのでディレイなしで組めたような記憶があるけどJ2SEではどうなんだろ??
0380デフォルトの名無しさんNGNG
HSP>>>>>>>>>>>>>>>>>>>>>>>>>>>>Java
0381デフォルトの名無しさんNGNG
>>380
Javaも時々クソじゃないかと思うが、変数にスコープのない言語よりは
マシかと思われ。
一回HSPでコード書いて吐くかと思ったよ。
0382デフォルトの名無しさんNGNG
.NETで試したらディレイはありませんですた。
0383デフォルトの名無しさんNGNG
.NET 自体、ディレイどころか時代からドロップアウト中
0384通りすがり ◆IApAHNvIKg NGNG
>>377のやつ試したけどディレイなし!
環境はMacOSX。
音楽に合わせて楽しくボタン押しまくりました。
ちなみに WAVファイルの所にはBosso.aiffをセットしました。

wavじゃなくてすんまそん。
0385通りすがり ◆IApAHNvIKg NGNG
Basso.aiff ダッタヨ( ´Д⊂
0386デフォルトの名無しさんNGNG
おれも >377のヤツ試したけど同じくディレイなし。
環境はWin2KPro Celeron 1G Mem 512M
0387デフォルトの名無しさんNGNG
サウンドデータがオンメモリならディレイせんでしょ(無音部分とか重い処理
でもなければ)。
0388377NGNG
マシンが十分に速ければ、感覚的に感じない程度になるということかな。

オイラのマシンはWin98 つД`) P3-450Mhz Mem 192M
0389366NGNG
マウスではなかなかディレイを体感できんでしょ
キーボードに鍵盤わりあててみー、演奏できる?
0390デフォルトの名無しさんNGNG
>>389

そりゃ演奏となるとまるっきり違うし、プラットフォーム選び間違ってるよ。

ソフトでシンセ作りたきりゃ VST Plug-in でも作ってください。
0391デフォルトの名無しさんNGNG
大体にしてソフトで演奏で、しかもプログラミング可能なプラットフォームとなると、
ASIO ドライバ環境持った VST プラグインか、ぐらいでは。
0392デフォルトの名無しさんNGNG
急に話が飛躍してんな。
0393386NGNG
>>389
キーボードで複数の音が鳴るようにしたが、
別にディレイは感じないなぁ。
0394デフォルトの名無しさんNGNG
>>393
ディレイの遅れ時間をもっと長くしても?

ヴェロシティやフェードインやっても?

0395デフォルトの名無しさんNGNG
キーボードって複数同時押しに限界があるからまともな演奏は出来ないよ。
0396デフォルトの名無しさんNGNG
>>394
著しく話題を理解できてない恐れ。
0397デフォルトの名無しさんNGNG
>>375 のとおり、やっぱりJava Sound だよ。
ここにサンプルあるから試してみたら?
http://java.sun.com/products/java-media/sound/samples/JavaSoundDemo/
0398デフォルトの名無しさんNGNG
ブラインドタッチは余裕なのに両手でピアノが弾けないのは何でだろう…
0399デフォルトの名無しさんNGNG
>>398
FとJのキーがないからだ
0400デフォルトの名無しさんNGNG
ブラインドタッチは同時押しが限定されてるからだ
0401デフォルトの名無しさんNGNG
両手でピアノは弾けるんだけど、歌いながら弾けないのはなんでだろう・・・
0402デフォルトの名無しさんNGNG
>>401
リズムが歌の方に取られるから。
0403デフォルトの名無しさんNGNG
両手でちんちんさわれるんだけど、自分の口で舐めれないのはなんでだろう・・・
0404デフォルトの名無しさんNGNG
>>403
体が硬いor陰茎が短いor背が高い。
0405デフォルトの名無しさんNGNG
ちょっと前まで有意義な話題だったのに、いつのまにかネタスレになってるのはなんでだろう・・・
0406366NGNG
ディレイが感じられない・・という皆様、>>397のデモやってみて
マウスのピアノがあるけどクリックして音なるまで0.2秒くらいかからん?
クリックと同時に音鳴らしたいのだが、、JavaSound使ったのがマズいのか?
0407デフォルトの名無しさんNGNG
>>406
Celeron1.2G+Win2k+JDK1.4.1_02だけど、そんなにディレイっていうか、遅れはないよ。
ディレイって言うとエフェクトみたいなので使いたくない。

0.2秒って言ったら、テンポ75の16分音符ね。
ちなみに0.2秒がどのくらいかかなり確実・簡単にわかる方法。
1秒おきに「オマエモナ」って言いながら
「オ」のときにマウスをもっていくと「マ」のときに音が出れば、0.2秒。
漏れのは感覚として0.07秒くらいかなぁ。0.1秒弱。楽器としてありうる遅れだね。
0408407NGNG
1秒おきじゃなく1秒ごとでつね。
0409366NGNG
>>407
そうでつか
こちらPen2-700MHz+WinXP+JDK1.4.1_02
やっぱり「マ」の時に音が鳴るなぁ・・・
高速なマシン買えって事か、
とりあえずそれで解決する事がわかりました
ありがとう!
0410407NGNG
>>409
クロック落として確かめようと思ったけど、BIOSでは設定がみつからんかった。
箱開けるほどじゃないし。
CPUの差だけかなぁ。まぁ、それだけのためにマシンかえるのは待て。
なにか常駐物が足引っ張ってるとか、ソフトシンセ使ってるとか。
0411デフォルトの名無しさんNGNG
本物の楽器と比べると遅延でてるよ。
Pentium 4 2.4GHz, 1GB Memory, Sun JDK 1.4.1_01, Windows 2k Pro
0412デフォルトの名無しさんNGNG
>>411
> 本物の楽器と比べると
比べるなよ。。。

デジタルがアナログに比べて遅延がでるのは宿命。
0413デフォルトの名無しさんNGNG
>>412
いやいや、本格的に楽器やってた人ならあからさまに気になるほどの遅延が
あるって意味。

やっぱ手での演奏は専用ハードじゃないと無理かね。
0414デフォルトの名無しさんNGNG
>>413
少なくともデバイスドライバーみたいなOSに密着したソフトの支援がないと無理だと思われ。

ちなみに、流行のデジタルエフェクターを、遅延があるという理由で嫌うミュージシャンは多い。
0415デフォルトの名無しさんNGNG
エレキのモデリングアンプってチョイ遅れるよな
0416デフォルトの名無しさんNGNG
結論:Javaは遅い。
0417デフォルトの名無しさんNGNG
>>416
それがどうした
0418416NGNG
>>417
エイプリルフールですた。
0419デフォルトの名無しさんNGNG
SUNがjava1.4のjava.util.Hashtableに重大なバグがあることを4/1 20:00
に発表した。なお、バグの修正をしたバージョンを明日未明に公開することを
宣言した。

ソース
http://jp.sun.com/service/support/
0420デフォルトの名無しさんNGNG
JDK1.6で、より精密なスレッドスケジューリングとGC管理を可能にする
インターフェイスがコア APIに追加されることが決定しました。
0421デフォルトの名無しさんNGNG
大手PCメーカー、もうすぐJavaをバンドル
http://www.zdnet.co.jp/news/0304/01/ne00_java.html
0422デフォルトの名無しさんNGNG
>>421
4/1 のニュースだしなぁ
0423デフォルトの名無しさんNGNG
>>422
原文は31日
0424デフォルトの名無しさんNGNG
いや、だからお前らWinにJavaがノって何が楽しいんだよ
0425デフォルトの名無しさんNGNG
糞っぷりが楽しい。
0426デフォルトの名無しさんNGNG
SunはMSを攻撃してJavaを普及させようと必死だが
Javaがユーザーに必要とされるシロモノだったら、とっくに>>422のような動きになっていたはずだ
WinにJavaがのっても誰も使うはずがない
0427デフォルトの名無しさんNGNG
>>426
そのへんは鶏と卵だから。といってみるテスト。
0428デフォルトの名無しさんNGNG
Jarに固めればWクリック一発で起動するから、SunのJVMが標準装備に
なればJavaでフリーソフトとか作ってもそれなりに使ってもらえるとか。
0429デフォルトの名無しさんNGNG
>>Javaでフリーソフトとか作ってもそれなりに使ってもらえるとか。
んでJavaでつくって使い物になるものって何!?
0430デフォルトの名無しさんNGNG
Java+Swingのメモ帳・・・絶対使わないな。
Javaならではというクライアント側アプリは何が考えられる?純粋な疑問です。
0431デフォルトの名無しさんNGNG
>>430
そんなもんがあったらJavaももっと普及してただろう
0432デフォルトの名無しさんNGNG
Javaの【一度書いたらどこでも動く】なんて特徴はむしろ悪影響。
基本ライブラリはそういう方向でいいと思うが、GUIに関する部分は
ある程度OS依存な方がいいと思う。

そういう意味でMacOSXのCocoa+Javaという組み合わせは非常に気にNULL。
0433デフォルトの名無しさんNGNG
言語にGUIが組み込まれたのは良いと思ったんだがなあ。
使ってみるととんでもなく(ry
0434デフォルトの名無しさんNGNG
むしろ JAR にバンドルされた HTML からダイアログや GUI を組み立て
られるくらい手軽なら、それはそれでよかったんだが。自分で作ろうと
思いつつ暇が… つーか、あったらみんな使うのかな、クライアントサイド
でも HTML で GUI。ロジックと直結できる分ブラウザより技が使えると
思うんだが (ボタンが押されたら DB 参照とか…)。
0435デフォルトの名無しさんNGNG
XULみたいだな
0436デフォルトの名無しさんNGNG
というか、今のWindowsがまさにクライアントサイドでHTMLをUIに使いまくってるわけだが。
0437デフォルトの名無しさんNGNG
>>434
言ってる事と違うかもしれないが
Swingだったら、たとえばボタンのラベルを
HTMLの<br>タグ使ったりして2行にしたり出来なかったっけ?
あと<i>でイタリックにしたり・・・
0438デフォルトの名無しさんNGNG
>>437
例えば
--- Kakikomi.html ---

<input type="text" name="name"><input type="text" name="email">
<textarea name="message">
<input type="submit" value="書き込む"> <input type="reset" value="やめる">

-------------------
で、かちゅーしゃとかJaneとかの書き込みダイアログのUIを生成するってことでしょ。
0439デフォルトの名無しさんNGNG
ああ〜そいうことか〜
でもさ、それがXMLで書けるやつあるじゃん
BeanBuilderってやつ
あれのコードはXMLだよ
で、起動する時はそのXMLファイルを読み込んでやれば
かってにウインドウが立ち上がって・・・
try {
InputStream is = new BufferedInputStream(
new FileInputStream("tutorial.xml"));
XMLDecoder d = new XMLDecoder(is);
JFrame f = (JFrame)d.readObject();
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
0440デフォルトの名無しさんNGNG
>>439
うーん?そういうことじゃない(と思う)んだよなあ。
できあがったUIを保存するんじゃなくて、UIをいきなりテキストで書くんでしょ。

>>439のtutorial.xmlの中身って何も見ずに書ける?>>438みたいに。
0441デフォルトの名無しさんNGNG
>>439
俺が考えてたのは、それにさらに HTML っぽいイベントハンドル用の
スクリプト (JSP みたいに実行時コンパイル/静的でもいいけど) する
ような奴。やっぱ GUI まわりって細かい仕様変更入りやすいから、
手作業やポトペタで GUI コンポーネントを組み立てるより HTML で
作ったほうが楽なんだよなぁ。JavaScript じゃ使えない同期化処理
やマルチスレッド化もできるし。誰か一緒にオプソで立ち上げねー?

<SCRIPT LANGUAGE="Java">
private void execHoge(Form hoge){
  …
}
</SCRIPT>

<FORM ACTION="method:///execHoge(this);">
名前: <INPUT TYPE="TEXT" SIZE="40">
<INPUT TYPE="SUBMIT" VALUE="OK">
</FORM>
0442デフォルトの名無しさんNGNG
>>441
俺昔ちょっとだけ作ったことあるよ。
で、HTML部分もろくに実装できてないうちにCSS2に対応させ始めちゃって、
途中でマンドクサクなってやめた(w
0443デフォルトの名無しさんNGNG
>>441
それ、Longhornで。
HTMLじゃないが。
0444439NGNG
うんやっぱ俺は勘違いしてたみたいだ>HTML

ちなみにXMLはタグを解読すればかけると思うが
基本的に、BeanBuilderはGUIエディタなので
人が書くには無理

さらに(また、話を混乱させるみたいで恐縮だが)ピ-ナッツ
とかいう、Javaのインタプリタあるじゃん
あれで、一行一行

>f=new Frame();
>f.setVisible(true);

とか、コマンドでやったらどうなるんだろう

>>441
それはやっぱり、ブラウザアプリになるわけ?
それとも、ウィンドウアプリを目指しているの?
0445デフォルトの名無しさんNGNG
>>443
ロングホーンの恩恵はJavaは受けられないじゃろ。。
ところでロングホーンのUIの仕様ってどこで読める?(調べずにc⌒っ´Д`)φカキコ
0446デフォルトの名無しさんNGNG
>>440
そうそう、現状って簡単なダイアログの GUI 書くだけでも手作業より
ポトペタ RAD 起動するの待ってた方が早いじゃん。で、秀丸 + HTML
なら 5 分でかけるレイアウトも GUI コンポーネント並べるだけで
結構かかってしまう。だったら HTML をリソース持ちして名前指定で
一発表示、イベントハンドリングもできまっせ、みたいなのがあったら
良いなぁと。

これならちゃんとしたデザイナにデザインしてもらった UI にロジック
埋め込むのも簡単でしょ。
0447デフォルトの名無しさんNGNG
>>444
ウィンドウアプリだってばよ。(俺は>>441じゃないけど)
おそらく、Webアプリとスタンド亜ローンのUIを共通化させたいじゃねぇの?( ´_ゝ`)
0448デフォルトの名無しさんNGNG
ちなみにちょっと話はずれるが、URにCSSを適用させるにはjavax.swing.text.StyleSheetでできるけど、
(c.setForeground(StyleConstants.getForeground(style)); みたいに)
ちゃんとしたUIに利用したけりゃ全然役に立たない。
かといって、HTMLで属性にごちゃごちゃ書いていくのも保守性の面で疑問符。
どうせ作るならやっぱりちゃんとHTML+CSSにしたいところ。

と、独り言メモc⌒っ*゚ー゚)φ メモメモ...
0449デフォルトの名無しさんNGNG
>>GUI コンポーネント並べるだけで
結構かかってしまう

同感
俺なんかレイアウトつかうと分けわかんなくなるから
すべてsetLayout(null)しちゃう。んで、setBounds()
まあ話が脱線したが・・・
ちなみに>>439の言ってるやつってこういうやつなんだが・・・
(>>439じゃないよ)
<void method="add">
<object id="JButton0" class="javax.swing.JButton">
<string>Remove All</string>
<void property="bounds">
<object class="java.awt.Rectangle">
<int>105</int>
<int>249</int>
<int>105</int>
<int>26</int>
</object>
</void>
<void method="addActionListener">
<object class="java.beans.EventHandler" method="create">
<class>java.awt.event.ActionListener</class>
<object idref="DefaultListModel0"/>
<string>removeAllElements</string>
</object>
</void>
</object>
</void>

0450デフォルトの名無しさんNGNG
>>444
思いっきりローカルアプリ。でも GUI リソースが HTML なんでサーバとの
統合もしやすいかなと。

>>447
まぁそんなところか。今なら余ってる鯖サイド連中を引っ張ってこれる。
0451デフォルトの名無しさんNGNG
>>449
おもいっきり JDK1.4 の XML エンコード機能やな。
0452デフォルトの名無しさんNGNG
> 今なら余ってる鯖サイド連中を引っ張ってこれる。

多分これ重要です。
0453デフォルトの名無しさんNGNG
つーか今時Javaが遅いとかいってるのは使ったことないかマシンがおんぼろか
どっちかなんだろ。今時ふつーメモリは256M以上乗ってるし、CPUは1GHz以上
あるもんだが。それにメモリさえ潤沢ならCPU500MHzでも軽く動くぞ。
あとクライアントサイドのJavaはアプレットを除いて(アプレットも一応はクライア
ントサイドだから)ローカル資源に制限なくアクセスできることが長所。さらに、
Sunが提供している基本コンポーネントでたいがいの面倒は見てくれるから
楽ができる。パフォーマンスも悪くない(実際使ってみてからものを言えよ)。

ただ、GUI コンポーネントのレイアウトがひでぇなあというのは同感だ。
0454デフォルトの名無しさんNGNG
>>453
お前、DBの更新画面とか、糞クライアントしかつくったことないだろ。
0455デフォルトの名無しさんNGNG
>>453
お前学生だろ。世間知らず
0456デフォルトの名無しさんNGNG
>>454
つーか、そもそも君は使ってみたのかね?話はそれからだ。
だが、PureJavaでCASEツールのような巨大アプリは無理だ。
1アプリでウィンドウやらボタンやらコンポーネントを大量に
生成して負荷の高い処理をさせるにはJavaは向かない。

ただし、クライアント用(要は一般人用)のちょっとしたアプリ
程度なら十分だし、処理速度も気にならん。要は適材適所。
数年前のレベルで思考停止して遅い遅いとわめくだけなら
馬鹿でもできるよ。
0457デフォルトの名無しさんNGNG
>>453は、>>433以前のレスに対して文句言ってるみたいなので>>434さんは気にせず出てきてくださいな。
(”つーか”がどこにかかるのかわからん)
0458デフォルトの名無しさんNGNG
クライアント用のちょっとしたアプリだからこそサクサク動いて欲しいってもんだ。
0459デフォルトの名無しさんNGNG
>>457
うーん、どんなものが必要かちょっと妄想してみた。

1. HTML パーサー
2. レンダリングエンジン
3. JSP バリのダイナミックコンパイル & クラスローダー (Mozilla の js.jar で代用も?)

3 は何とかなるとしても 1 と 2 がネックかな。文字列解析とレンダリング
は Java がネックとしてる処理だし。
0460デフォルトの名無しさんNGNG
ちょっと適当に作ってみた。ソースうpします
0461デフォルトの名無しさんNGNG
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=64
みたいなHTML(今はXHTMLで書いたけど)が、あったとして、
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=64
でUI生成ってことで合ってますよね>>434
(ソース汚いですがイメージが伝わればそれでいいです)
0462デフォルトの名無しさんNGNG
失礼。2つ目は
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1027870433&res=65
でした。(この掲示板勝手に;(セミコロン)が入るみたいなんで、適当に直してクレクレ)
0463デフォルトの名無しさんNGNG
>>461-462
そうそう! 言いたかったのはこういう奴の発展系。スタイルシート
でレイアウト調整して、裏のロジックとの繋ぎや簡単な処理のための
実行時スクリプトが記述できる奴さ。
0464デフォルトの名無しさんNGNG
>>463
俺と同じこと考えてるな。
ただ、実行時スクリプトは少し反対気味だな。
実装が( ゚Д゚)マンドクセーってのもあるし、仕様が肥大化するのもどうかと思う。
(ほんとにやるかどうか知らんけど)ひとまずHTML+CSSが落ち着いてから、もしくは
少し離れた感じのプロジェクトでやった方がいいと思う。
<FORM ACTION="method:///execHoge(this);"> は面白そうだけどね。

独り言
・XHTML1.0+CSS2(or CSS1)が無難?
・awt,swing.swtを差し替え可能に(Namespaceで振り分け?)
0465デフォルトの名無しさんNGNG
>>430
JavaならではではないけどJavaで書かれたソース公開の2chビューアが
あればいいな(てもうあるのかな)
0466デフォルトの名無しさんNGNG
>>465
ローカルプロキシタイプならあるみたいだね。
スタンド亜ローンは知らない。
■ このスレッドは過去ログ倉庫に格納されています