- PR -

Swing、得意ですか?

投稿者投稿内容
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2004-01-04 20:00
unibon です。こんにちわ。

引用:

syoさんの書き込み (2004-01-04 18:15) より:
パフォーマンス以外の点では、画面数が増えてくると結構大量のメモリを使用したり(Win2kなどのタスクマネージャで、Javaを含めたブラウザのメモリ使用量が80MB〜100MBくらいいく場合もしばしば)、ブラウザが「不正な処理」で強制終了してしまうことが多いのも難点であるかと思います。


Java PlugIn の場合は、-Xmx に相当する最大メモリ量の指定はデフォルトだと 64MB になるので、そのために使えるメモリが制限されてしまうため、ガーベッジコレクションの嵐になって副次的にバグが誘発されているのではないでしょうか。あるいは推測もありますが、アプリケーションかライブラリのどこかでメモリリークを起こしているためではないでしょうか。
#これは、とくに Swing に限ったわけではありませんが。

引用:

syoさんの書き込み (2004-01-04 18:15) より:
Javaアプリケーションで作成した場合はまた事情が変わってくるのかもしれませんが、メモリ128MBでOSがWinXPなんかだったりすると、スワップが多発してパフォーマンスが極度に劣化することも・・・逆に、少々CPUが遅くても(例えばPenIII-1GHz)、メモリを大量に搭載していた方が快適に動作したりしますね。まぁ、スワップの問題はJavaに限ったことではありませんが。


一方、メモリ管理については同様のことを感じます。Java でスワップしてしまうような状況だと、まず速やかに動きません。また、Windows 上で Java のプログラムを動かしてメモリ不足の状況になると、別の Java VM の動きやあるいはそもそも Windows の動きが重くなってしまうことを感じます。この原因が良くわかりません。
#これらも、とくに Swing に限ったわけではありませんが。
Eclipse(これ自身は SWT ですが)を使っていてもそんな重さを感じることがあります。この点、Microsoft の Java VM 上で動かすとそのようなことはあまり感じないです(AWT だけ使っているので一概に比較はできませんが)。
ToGo
常連さん
会議室デビュー日: 2002/03/16
投稿数: 46
投稿日時: 2004-01-04 20:08
引用:

syoさんの書き込み (2004-01-04 18:15) より:

パフォーマンス以外の点では、画面数が増えてくると結構大量のメモリを使用したり(Win2kなどのタスクマネージャで、Javaを含めたブラウザのメモリ使用量が80MB〜100MBくらいいく場合もしばしば)、ブラウザが「不正な処理」で強制終了してしまうことが多いのも難点であるかと思います。


Webブラウザのプラグインの場合、Javaに限らず不安定さが付きまといますね。
PDFファイルをプラグインでブラウザ内に表示する場合、時折り内容が表示されない・
フリーズに近い状態になる・ブラウザが異常終了する、といったことが起きます。

安定性を重要視する場合は、Java Web Startを使用するのがよさそうに思います。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2004-01-04 20:11
unibon です。こんにちわ。

引用:

win-winさんの書き込み (2003-12-30 19:07) より:
私、最近、リッチクライアントの波を受け、
Swingを勉強しはじめました。


やはり、ブラウザを使った(アプレットは使わない) thin な Web アプリケーションは、それなりに(広い意味での) MVC を容易に実現しやすく、適度な thin さがあり、その点は優れていると思います。状態の管理が自然に整理されるためだろうと思います。
Swing を使うようなアプリケーションだと、オブジェクトの管理に自由度がありすぎるためにどこになにがあるのかがとても乱雑になります。そのためスタンドアローンなシステムであってもあえて Servlet/JSP で構築したくなることもあります。

引用:

win-winさんの書き込み (2003-12-30 19:07) より:
# 得意だ
# 苦手だ
# 関わる気は毛頭ない
# Giant Swingなら得意だ
# その他


できるなら関わりたくないけど rich さを求めると関わらざるを得ない...
YOU@IT
ぬし
会議室デビュー日: 2002/03/29
投稿数: 284
お住まい・勤務地: 大阪
投稿日時: 2004-01-04 22:22
takuさん、ご指摘ありがとうございます。
本スレッドの主旨から外れそうですが、一応弁明を...(^^;

> Swingを使用するからといって、
> スレッドを必ず使用するわけではないので、
> スレッドはSwingを使用する場合には必須ではありません。
> まあ、知っていたほうが良いのは事実ですけどね。
イベント処理等の仕組みにはスレッドが絡んできますよね。
自分がスレッドが不得意な為に、Swingでのコーディング時に非常に
悩んだ経験がありますので。

> これに対してサーバーサイドではスレッドの知識は必須です。
同意です。
特にスレッドセーフについての認識が重要だと思います。
ですが、Swingを使ったスタンドアプリほど、低レベルのスレッドの
動きを意識する必要はないと思っています。

> デザインパターンはなにもSwing特有のものではありませんよね。
もちろんそうです。最近ではWebに特化したデザインパターンも多いですし...

> 私はWEBの技術者の方がよりスキルや知識が必要だと思いますよ。
これも同意です。
多くのクライアントからのリクエストをマルチスレッドに処理したり、
その際のデータ整合性を保ったりと、高いスキルが要求される事が多いと思います。
また、J2EEの多くの仕様を理解することも必要ですね。

ただ、それはあくまでフレームワークの開発者のような場合で、
フレームワークを使う側としてはあまり高いスキルを持たなくても、
フレームワークに従うだけでなんとかやっていけている事が多いと思います。
# それがフレームワークの狙いのひとつでもありますが。
cypher256
会議室デビュー日: 2003/11/05
投稿数: 7
投稿日時: 2004-01-05 02:02
引用:

takuさんの書き込み (2004-01-04 17:58) より:
引用:

YOU@ITさんの書き込み (2004-01-04 01:25) より:
Swing等を使用する場合、スレッドや複雑なイベント処理、デザインパターン
と言った知識が必要になってくるので、Webよりも敷居は高いように思います。


 この認識はおかしいですね。
Swingを使用するからといって、
スレッドを必ず使用するわけではないので、
スレッドはSwingを使用する場合には必須ではありません。
まあ、知っていたほうが良いのは事実ですけどね。
これに対してサーバーサイドではスレッドの知識は必須です。
WEBにもイベントは存在しますし、
デザインパターンはなにもSwing特有のものではありませんよね。
WEBは低スキルの技術者で、
プロジェクトが構成されることが確かに多いですが、
私はWEBの技術者の方がよりスキルや知識が必要だと思いますよ。



Swing こそスレッドの知識は必須だと思います。
Web でのそれとは異なる知識が必要なのではないでしょうか?

以前 Swing を使用したプロジェクトがあり、開発メンバはサーバーサイドは
十分な経験があり、スレッドセーフについてもほぼ問題ありませんでした。
しかし、後になって分かったのですが、Swing のシングルスレッド規則を
誰も正しく理解しておらず苦労しました。

引用:

takuさんの書き込み (2004-01-04 17:58) より:
私はWEBの技術者の方がよりスキルや知識が必要だと思いますよ。



同意です。ただ Web 経験者だけで甘くみて開発すると痛い目にあうと思い
ます。特に工数見積もりが。。サーバーサイドや VB のような感覚で見積も
ると全然。。。リスクをあほほど取っても足りないくらいでした。

また場合によりますが私の場合、客先のクライアント PC が非常に非力で
あったためパフォーマンス面でも Web 以上にチューニングが必要でした。
知識としてはプラスになり良い経験にはなりましたが二度とやりたく
ありません 趣味で作ったり、ツールとかなら良いと思います。
Kissinger
ぬし
会議室デビュー日: 2002/04/30
投稿数: 428
お住まい・勤務地: 愛知県
投稿日時: 2004-01-05 04:06
win-winさん、そして皆さんこんにちは。

いろいろな意見が集まっていますね。
私は swingあまり得意じゃないけど、大好きです。
もう大分前に Win32 API, xlib, XViewはやめました。
(VB, MFCはほ元々ほとんどやってない。)
起動が遅い/気の利いたコンポーネントが無い/普及していない
などの欠点はあると思いますが、使いなれると良いですよ。

最初客先へ Javaで提案したら「エ〜」と渋いか押されましたが、
デモ見せたら「swing/Javaがサクサク動くと思わなかった。」
と反応があり、それ以来は単体アプリおよびリッチクライアントは
全て swing/Javaです。(シンクライアントもやりますが。)

これから先、Windowsだけでなく、Linuxもターゲットに入れるに
は、swingが武器になるかも。 甘い?
びしばし
大ベテラン
会議室デビュー日: 2002/03/13
投稿数: 181
投稿日時: 2004-01-05 15:43
ちょっと出遅れてしまいましたかね。ここ 3年近く、クライアントサイドアプリを Swing で作っている者です。
完全スタンドアロンアプリやサーバと通信するものなど様々なものを作りましたが、1回自分なりのパターンを確立してしまうと次のアプリがものすごく早く作れますね(これは Swing の特徴ではないですけど)。特に eclipse 登場以降はそれが加速した感じです。

レイアウトマネージャの使い方(挙動の理解)とイベント処理関連、スレッド関連がわかるまでが最初の壁でしょうか。win-winさんもがんばってください。
win-win
常連さん
会議室デビュー日: 2003/03/23
投稿数: 49
投稿日時: 2004-01-05 21:59
win-winです。

皆さん、興味深い議論や励ましのお言葉、
まことにありがとうございました。

その中で、特にスレッド関連には要注意だと
感じました。なぜなら、どのような点で
スレッド関連に注意しなければならないか、
未だハッキリとイメージがつかめないからです。

これから一生懸命勉強したいと思います。


[ メッセージ編集済み 編集者: win-win 編集日時 2004-01-05 22:01 ]

スキルアップ/キャリアアップ(JOB@IT)