• ベストアンサー

Swingは軽量コンポーネントについて

 今日は、JAVA Swing勉強中の初心者です。  本を読むとAWTは重量コンポーネント、Swingは軽量コンポーネント(一部重量コンポーネントもある)と 書かれていますが、これは一体何を意味するものでしょうか。  読んでても良く分からないのですが、重量コンポーネントはOSに近い所で動作する、軽量コンポーネントはその逆、、、  この内容について、プログラムを組む人間は何に気をつけなければならないのでしょうか。  どうも重量コンポーネントだから動作が重たいとか、遅いとか、メモリの消費が多いとかという解説も 見当たらないし、また、どちらが動作的に速いのか、遅いのか、OSへの負担が大きいのかも書いていません。 (読んでる本が悪すぎるのかも知れないですが。。。。)  だから、AWTを使うときはどのように気をつけなければとか、Swingを書くときにどうしなければならないとかの記述 も、色々と調べてもどの本にも書いていませんが、だから一体何がどうなのでしょうか。    そもそも、重量コンポーネント、軽量コンポーネントとは何を表すもので、だから何がどうなるのでしょうか。  動作的なものについての記述なのでしょうか。  宜しくお願いします。

  • htgo
  • お礼率33% (407/1224)
  • Java
  • 回答数2
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
noname#94983
noname#94983
回答No.1

重量・軽量というのは「コスト」の話だろうと思う。コストというのは、メモリの消費とかCPUの使用量とかいろいろあるが、この場合は「ネイティブ環境のリソース」(ヒープメモリ)と考えるのがいい。 AWTは、実際の描画部分をOSのAPIに依存しているため、作成すると自動的にOSのリソースを消費する。つまり、AWTのGUIを使うほどに、OSのヒープを圧迫することになる。Swingの場合、土台となるウインドウ部分だけはOSのリソースを消費するが、その中のコンポーネントはすべてJava仮想マシン内のメモリしか使っていないわけで、OSへの影響はだいぶ小さい。 また、OSが管理する部分は、Java仮想マシンでは制御できない部分となる。つまりそれだけAWTは「Javaで制御できない部分」が大きいということになる。 だからどうしろ?ということより、「そういう性質のものであることを知って使う」という意味での、基礎知識と考えたほうがいいと思う。AWTは、Swingより高速だがOSへの依存度が高く、このため表示のカスタマイズもできない。それを知らず、AWTのコンポーネントクラスを継承して自分でコンポーネントを作ろうとして、「どうやっても表示がカスタマイズできない」と悩むのは時間の無駄だろう。どうあがいても「ネイティブコードで実行される描画」はJavaからタッチできないんだから。 「両者がどう違うか」を知っていればそんな無駄なことで悩まずにすむが、知らなければ一人でもがくことになってしまう。だから「知識として知っておくべき」と考えればいいと思う。

その他の回答 (1)

回答No.2

> そもそも、重量コンポーネント、軽量コンポーネントとは何を表すもので、だから何がどうなるのでしょうか。 > 動作的なものについての記述なのでしょうか。 各GUIが軽快に動作するのかどうか、です。 Sun SJC-A認定ガイド 310-019対応 http://ec.nikkeibp.co.jp/item/books/P82820.html 上記の専門書のp.217辺りにある「6.4.2 AWTとSwing」にて、リッチクライアントなどの用語と共に記載されています。

関連するQ&A

  • SWINGでアプレット使えますか?

    GUIの作成において、SWINGはAWTよりも「OSに依存しない」「動作が軽い」など多くのメリットがあることを知り、SWINGにとても興味があります。 そこで質問ですが、アプレットの作成において、私が読んだ解説サイトの全てが「java.awt.*」をインポートしていました。 もしかして、SWINGではアプレット開発ってできないのでしょうか? 最近JAVAをはじめたので、質問に少々おかしな点があるかもしれませんが、どうか目にみてやって下さいm(_ _)m

  • Java AWTのコンポーネントについて

    JavaのAWTで軽量コンポーネントと重量コンポーネント、軽量コンテナ・重量コンテナとありますが、 それぞれどのようなものでしょうか? ネイティブのピアを持つもの持たないものなどの違いがあると思いますが、 具体的にどのクラスはピアを持っていて、どのクラスはピアを持っていないのかを 簡単にわかる方法はないでしょうか? 書籍やネットでは「ComponentやContainerを直接拡張したクラス」は軽量とあるのですが、 「直接拡張したクラス」は継承とは別のようなので、理解に困っております。 PanelやCanvasは重量コンポーネントという記述はみつけたのですが、 Panelなどがなんで重量なのかがわからないです。 理解できていないので、わかりづらい質問になってしまい恐縮ですが、 詳しい方いましたら教えて頂けないでしょうか。

  • Eclipseを入れたら、Swingは使えない?

    Swingは本に載っていましたが、いざEclipseを入れたら、 EclipseはSTWを使うと書いていました。 Swingを使うのには、Java純正のNetBeanでなければならないのですか? あと、Swingはなぜawtのパッケージもインポートしないといけないのですか?

    • ベストアンサー
    • Java
  • コンポーネントの種類について

    Javaの基本パッケージで用意されているコンポーネントには 何があるのかを調べているのですが、 AWTやSwingといった、GUI作成用コンポーネントの説明が多く、 これ以外に、既に用意されているコンポーネントと呼べるものが あるのかどうか、わかっていない状況です。 有識者の方、ご教示お願いいたします。

    • ベストアンサー
    • Java
  • javaのswingコンポーネントについて質問です。

    javaのswingコンポーネントについて質問です。 javaをやり始めて2ヶ月ぐらいたちました。 今までアプレットとアプリケーションの両方をやりこちらはできたのですが 「swing」を使用したアプレット(JApplet)だけがアプレットビューアやhtmlで開いても実行できません。 わかるかたできれば教えていただければ幸いです。 追記 実行できないのはソースファイルにJAppletで組んだプログラムだけです。 本に記載されたソースプログラムやインターネットに上がっているソースプログラムを実行してみましたが これらもJAppletを使用したものだけができませんでした。

  • SwingがOSに依存しない理由

    SwingはAWTを拡張していると聞きました。 なぜSwingはAWTを使っているのにも関わらず、OSに依存しないで動作できるのですか?

  • swingの使い方

    JAVAでデータベースを読み書きするWEBアプリ(各種マスタメンテなどを行う)を開発しています。 MVCで、ViewにはJSPを使いその中で、HTMLを記述しています。 Viewに、サーブレットを使ってわざわざプログラムを見づらくしたくはなく、、、そうすると、swingコンポーネントを使うケースがありません。 JSP内に<% %>で埋め込みコーディングしてswingを使う気にもなれない。 サーバー側のデータベース更新機能などがなく、アプレットで十分やっていけるようなシステムで使うのですか? みなさん、どのように使っておられるのか? 教えてください。

    • ベストアンサー
    • Java
  • JAVA swingについて

    JAVA swingとAWTのみを使って画面を作成してるのですがうまくエラー<作りたい仕様> ・ポップアップウィンドウの大きさを決めることができる ・自由にボタンを設定できる(大きさ・場所など) ・設定したボタンにアクション設定できる(戻り値もOK) また、今あるフレームの上にパネルをはり、パネルの上にコンポーネントを追加して、エラー発生画面を作る方法でもいいです。 どちらかいい方法やクラスなどを知っていましたらぜひ教えて下さい。

    • ベストアンサー
    • Java
  • 軽量言語の「軽量」は何?

    2点疑問があります。 軽量言語(LL:Lightweight Language) または軽量スクリプト言語 といった単語を最近よく見かけます。 RubyやPythonなどが属するものと思うのですが、 上記の単語中の「軽量」とは何が軽量なのでしょうか?・・・(1) パッと思いつくのは、 -動作が軽い? -使用者の負担が軽い?(ライブラリが豊富であるため) ぐらいです。 軽量があるくらいだから、逆の重量言語とかあったりする のでしょうか?・・・(2)

  • swingアプリで動作時にコンポーネント毎に設定されているデフォルトの

    swingアプリで動作時にコンポーネント毎に設定されているデフォルトのフォントを取得したいです。 一部のJLabelの文字やJTextFieldの文字を大きく(小さく)表示したい時、 Fontクラスを使って設定する事になると思いますが、フォント名から指定しなければいけません。 swingのデフォルト値(dialog)であれば決め打ちでいいと思うのですが、変更されていると決め打ちだと浮いてしまいます。 そのため、デフォルト値を取得したいです。

専門家に質問してみよう