- - PR -
Swing、得意ですか?
| 投稿者 | 投稿内容 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-01-04 20:00
unibon です。こんにちわ。
Java PlugIn の場合は、-Xmx に相当する最大メモリ量の指定はデフォルトだと 64MB になるので、そのために使えるメモリが制限されてしまうため、ガーベッジコレクションの嵐になって副次的にバグが誘発されているのではないでしょうか。あるいは推測もありますが、アプリケーションかライブラリのどこかでメモリリークを起こしているためではないでしょうか。 #これは、とくに Swing に限ったわけではありませんが。
一方、メモリ管理については同様のことを感じます。Java でスワップしてしまうような状況だと、まず速やかに動きません。また、Windows 上で Java のプログラムを動かしてメモリ不足の状況になると、別の Java VM の動きやあるいはそもそも Windows の動きが重くなってしまうことを感じます。この原因が良くわかりません。 #これらも、とくに Swing に限ったわけではありませんが。 Eclipse(これ自身は SWT ですが)を使っていてもそんな重さを感じることがあります。この点、Microsoft の Java VM 上で動かすとそのようなことはあまり感じないです(AWT だけ使っているので一概に比較はできませんが)。 | ||||||||||||
|
投稿日時: 2004-01-04 20:08
Webブラウザのプラグインの場合、Javaに限らず不安定さが付きまといますね。 PDFファイルをプラグインでブラウザ内に表示する場合、時折り内容が表示されない・ フリーズに近い状態になる・ブラウザが異常終了する、といったことが起きます。 安定性を重要視する場合は、Java Web Startを使用するのがよさそうに思います。 | ||||||||||||
|
投稿日時: 2004-01-04 20:11
unibon です。こんにちわ。
やはり、ブラウザを使った(アプレットは使わない) thin な Web アプリケーションは、それなりに(広い意味での) MVC を容易に実現しやすく、適度な thin さがあり、その点は優れていると思います。状態の管理が自然に整理されるためだろうと思います。 Swing を使うようなアプリケーションだと、オブジェクトの管理に自由度がありすぎるためにどこになにがあるのかがとても乱雑になります。そのためスタンドアローンなシステムであってもあえて Servlet/JSP で構築したくなることもあります。
できるなら関わりたくないけど rich さを求めると関わらざるを得ない... | ||||||||||||
|
投稿日時: 2004-01-04 22:22
takuさん、ご指摘ありがとうございます。
本スレッドの主旨から外れそうですが、一応弁明を...(^^; > Swingを使用するからといって、 > スレッドを必ず使用するわけではないので、 > スレッドはSwingを使用する場合には必須ではありません。 > まあ、知っていたほうが良いのは事実ですけどね。 イベント処理等の仕組みにはスレッドが絡んできますよね。 自分がスレッドが不得意な為に、Swingでのコーディング時に非常に 悩んだ経験がありますので。 > これに対してサーバーサイドではスレッドの知識は必須です。 同意です。 特にスレッドセーフについての認識が重要だと思います。 ですが、Swingを使ったスタンドアプリほど、低レベルのスレッドの 動きを意識する必要はないと思っています。 > デザインパターンはなにもSwing特有のものではありませんよね。 もちろんそうです。最近ではWebに特化したデザインパターンも多いですし... > 私はWEBの技術者の方がよりスキルや知識が必要だと思いますよ。 これも同意です。 多くのクライアントからのリクエストをマルチスレッドに処理したり、 その際のデータ整合性を保ったりと、高いスキルが要求される事が多いと思います。 また、J2EEの多くの仕様を理解することも必要ですね。 ただ、それはあくまでフレームワークの開発者のような場合で、 フレームワークを使う側としてはあまり高いスキルを持たなくても、 フレームワークに従うだけでなんとかやっていけている事が多いと思います。 # それがフレームワークの狙いのひとつでもありますが。 | ||||||||||||
|
投稿日時: 2004-01-05 02:02
Swing こそスレッドの知識は必須だと思います。 Web でのそれとは異なる知識が必要なのではないでしょうか? 以前 Swing を使用したプロジェクトがあり、開発メンバはサーバーサイドは 十分な経験があり、スレッドセーフについてもほぼ問題ありませんでした。 しかし、後になって分かったのですが、Swing のシングルスレッド規則を 誰も正しく理解しておらず苦労しました。
同意です。ただ Web 経験者だけで甘くみて開発すると痛い目にあうと思い ます。特に工数見積もりが。。サーバーサイドや VB のような感覚で見積も ると全然。。。リスクをあほほど取っても足りないくらいでした。 また場合によりますが私の場合、客先のクライアント PC が非常に非力で あったためパフォーマンス面でも Web 以上にチューニングが必要でした。 知識としてはプラスになり良い経験にはなりましたが二度とやりたく ありません | ||||||||||||
|
投稿日時: 2004-01-05 04:06
win-winさん、そして皆さんこんにちは。
いろいろな意見が集まっていますね。 私は swingあまり得意じゃないけど、大好きです。 もう大分前に Win32 API, xlib, XViewはやめました。 (VB, MFCはほ元々ほとんどやってない。) 起動が遅い/気の利いたコンポーネントが無い/普及していない などの欠点はあると思いますが、使いなれると良いですよ。 最初客先へ Javaで提案したら「エ〜」と渋いか押されましたが、 デモ見せたら「swing/Javaがサクサク動くと思わなかった。」 と反応があり、それ以来は単体アプリおよびリッチクライアントは 全て swing/Javaです。(シンクライアントもやりますが。) これから先、Windowsだけでなく、Linuxもターゲットに入れるに は、swingが武器になるかも。 甘い? | ||||||||||||
|
投稿日時: 2004-01-05 15:43
ちょっと出遅れてしまいましたかね。ここ 3年近く、クライアントサイドアプリを Swing で作っている者です。
完全スタンドアロンアプリやサーバと通信するものなど様々なものを作りましたが、1回自分なりのパターンを確立してしまうと次のアプリがものすごく早く作れますね(これは Swing の特徴ではないですけど)。特に eclipse 登場以降はそれが加速した感じです。 レイアウトマネージャの使い方(挙動の理解)とイベント処理関連、スレッド関連がわかるまでが最初の壁でしょうか。win-winさんもがんばってください。 | ||||||||||||
|
投稿日時: 2004-01-05 21:59
win-winです。
皆さん、興味深い議論や励ましのお言葉、 まことにありがとうございました。 その中で、特にスレッド関連には要注意だと 感じました。なぜなら、どのような点で スレッド関連に注意しなければならないか、 未だハッキリとイメージがつかめないからです。 これから一生懸命勉強したいと思います。 [ メッセージ編集済み 編集者: win-win 編集日時 2004-01-05 22:01 ] | ||||||||||||
