AWT adalah antarmuka Java ke kode GUI sistem asli yang ada di OS Anda. Ini tidak akan bekerja sama di setiap sistem, meskipun ia mencoba.
Swing adalah GUI Java yang kurang lebih murni. Ini menggunakan AWT untuk membuat jendela sistem operasi dan kemudian melukis gambar tombol, label, teks, kotak centang, dll., Ke jendela itu dan menanggapi semua klik mouse, entri kunci, dll., Memutuskan sendiri apa yang harus dilakukan bukannya membiarkan sistem operasi menanganinya. Dengan demikian Swing adalah 100% portabel dan sama di seluruh platform (meskipun itu skinnable dan memiliki "tampilan dan nuansa pluggable" yang dapat membuatnya terlihat lebih seperti bagaimana tampilan jendela dan widget asli).
Ini adalah pendekatan yang sangat berbeda untuk toolkit GUI dan memiliki banyak konsekuensi. Jawaban lengkap untuk pertanyaan Anda akan mencoba mengeksplorasi semua itu. :) Berikut adalah beberapa:
AWT adalah antarmuka lintas platform, jadi meskipun menggunakan OS yang mendasari atau toolkit GUI asli untuk fungsinya, AWT tidak menyediakan akses ke semua yang dapat dilakukan oleh toolkit tersebut. Widget AWT lanjutan atau yang lebih baru yang mungkin ada pada satu platform mungkin tidak didukung pada platform lain. Fitur widget yang tidak sama di setiap platform mungkin tidak didukung, atau lebih buruk, mereka mungkin bekerja secara berbeda di setiap platform. Orang-orang biasa menginvestasikan banyak upaya untuk membuat aplikasi AWT mereka bekerja secara konsisten di seluruh platform - misalnya, mereka dapat mencoba membuat panggilan ke kode asli dari Jawa.
Karena AWT menggunakan widget GUI asli, OS Anda tahu tentang mereka dan menangani menempatkannya di depan satu sama lain, dll., Sedangkan widget Swing adalah piksel yang tidak berarti dalam jendela dari sudut pandang OS Anda. Swing sendiri menangani tata letak dan penumpukan widget Anda. Mencampur AWT dan Swing sangat tidak didukung dan dapat menyebabkan hasil yang konyol, seperti tombol asli yang mengaburkan segala sesuatu yang lain di kotak dialog di mana mereka berada karena semuanya dibuat dengan Swing.
Karena Swing mencoba melakukan apa saja yang mungkin di Jawa selain dari rutinitas grafik yang sangat mentah yang disediakan oleh jendela GUI asli, itu digunakan untuk menimbulkan penalti kinerja yang cukup dibandingkan dengan AWT. Sayangnya, ini membuat Swing lambat untuk ditangkap. Namun, ini telah menyusut secara dramatis selama beberapa tahun terakhir karena JVM lebih dioptimalkan, mesin lebih cepat, dan (saya kira) optimasi internal Swing. Saat ini aplikasi Swing dapat berjalan cukup cepat untuk dapat diservis atau bahkan zippy, dan hampir tidak dapat dibedakan dari aplikasi menggunakan widget asli. Beberapa akan mengatakan butuh terlalu lama untuk sampai ke titik ini, tetapi sebagian besar akan mengatakan bahwa itu sepadan.
Terakhir, Anda mungkin juga ingin melihat SWT (toolkit GUI yang digunakan untuk Eclipse, dan alternatif untuk AWT dan Swing), yang agaknya merupakan gagasan AWT untuk mengakses Widget asli melalui Java.
Um ... setelah melakukan Swing yang cukup luas di berbagai platform, saya dapat memberitahu Anda bahwa itu sangat tidak sama di seluruh platform. Serupa? Tentu. Sama? Tidak mungkin.
Wow. Saya tidak percaya mereka bisa memperbaikinya, dan saya masih tidak percaya mencampur komponen yang ringan dan kelas berat akan diinginkan. Tetapi luar biasa bahwa mereka dapat memperbaikinya.
Perbedaan dasar yang telah disebutkan oleh semua orang adalah bahwa yang satu berat dan yang lain ringan . Mari saya jelaskan, pada dasarnya yang dimaksud dengan istilah heavy weight adalah bahwa ketika Anda menggunakan komponen awt, kode asli yang digunakan untuk mendapatkan komponen tampilan dihasilkan oleh Sistem Operasi , karena itulah perubahan tampilan dan nuansa dari OS ke OS. Sedangkan dalam komponen swing, tanggung jawab JVM untuk menghasilkan tampilan untuk komponen. Pernyataan lain yang saya lihat adalah ayunan itu berbasis MVC dan awt tidak.
sebenarnya Swing menggunakan pendekatan Model-Delegate, yang berasal dari pendekatan MVC, di mana dalam Tampilan dan Pengendali digabungkan untuk struktur Delegasi
Purushottam
15
Ayunan vs AWT . Pada dasarnya AWT datang pertama dan merupakan satu set komponen UI kelas berat (artinya mereka adalah pembungkus untuk objek sistem operasi) sedangkan Swing dibangun di atas AWT dengan satu set komponen ringan yang lebih kaya.
Setiap pekerjaan Java UI serius dilakukan di Swing, bukan AWT, yang terutama digunakan untuk applet.
apakah ada kasus di mana awt lebih berguna / disarankan untuk digunakan daripada diayunkan?
Samiksha
1
Dulu relevan ... 10 tahun yang lalu.
Bart
@Pacerier dia berbicara tentang AWT, bukan SWT
11
Sejauh ketika AWT mungkin lebih berguna daripada Swing -
Anda mungkin menargetkan JVM atau platform lama yang tidak mendukung Swing. Ini digunakan untuk benar-benar berperan jika Anda membuat Applet - Anda ingin menargetkan penyebut umum terendah sehingga orang tidak perlu menginstal plugin Java yang lebih baru. Saya tidak yakin apa versi plugin Java yang paling banyak diinstal saat ini - ini mungkin berbeda hari ini.
beberapa orang lebih suka tampilan asli AWT daripada platform 'tidak cukup' kulit Swing. (Ada kulit pihak ke-3 yang tampak lebih baik daripada implementasi Swing BTW) Banyak orang lebih suka menggunakan FileTialog AWT daripada FileChooser Swing karena itu memberikan dialog file platform yang kebanyakan orang terbiasa daripada yang kustom Swing 'aneh'.
Tetapi untuk yang terakhir, kita juga dapat membuat FileChooser yang mirip dialog file windows (tetapi tanpa autocomplete) stackoverflow.com/q/17630055/2534090
JavaTechnical
9
Beberapa konsekuensi dihasilkan dari perbedaan antara AWT dan Swing ini.
AWT adalah lapisan kode tipis di atas OS, sedangkan Swing jauh lebih besar. Swing juga memiliki fungsionalitas yang lebih kaya. Menggunakan AWT, Anda harus mengimplementasikan banyak hal sendiri, sementara Swing membuatnya terintegrasi. Untuk pekerjaan intensif GUI, AWT terasa sangat primitif untuk digunakan dibandingkan dengan Swing. Karena Swing mengimplementasikan fungsionalitas GUI itu sendiri daripada mengandalkan OS host, ia dapat menawarkan lingkungan yang lebih kaya pada semua platform yang dijalankan oleh Java. AWT lebih terbatas dalam menyediakan fungsionalitas yang sama pada semua platform karena tidak semua platform menerapkan kontrol yang tampak sama dengan cara yang sama.
Komponen ayun disebut "ringan" karena tidak memerlukan objek OS asli untuk mengimplementasikan fungsinya. JDialogdan JFramekelas berat, karena mereka memiliki teman sebaya. Jadi komponen seperti JButton,
JTextAreadll., Ringan karena mereka tidak memiliki rekan OS.
Sebuah rekan adalah widget yang disediakan oleh sistem operasi, seperti objek tombol atau objek entri lapangan.
Saya tidak berpikir ayunan bekerja lebih cepat daripada AWT karena AWT menggunakan kode asli (kode gui) yang sudah ada di OS tetapi ayunan membangun setiap komponen dari awal. Jadi AWT mungkin lebih cepat. Bisakah Anda mengatakan kepada saya apa sudut pandang Anda dalam mengatakan ayunan bekerja lebih cepat ? Terima kasih.
JavaTechnical
3
AWT
1. AWT menempati lebih banyak ruang memori 2. AWT tergantung pada platform 3. AWT membutuhkan paket javax.awt
ayunan
1. Ayunan menempati lebih sedikit ruang memori 2. Komponen swing adalah platform independen 3. Swing membutuhkan paket javax.swing
Jawaban:
AWT adalah antarmuka Java ke kode GUI sistem asli yang ada di OS Anda. Ini tidak akan bekerja sama di setiap sistem, meskipun ia mencoba.
Swing adalah GUI Java yang kurang lebih murni. Ini menggunakan AWT untuk membuat jendela sistem operasi dan kemudian melukis gambar tombol, label, teks, kotak centang, dll., Ke jendela itu dan menanggapi semua klik mouse, entri kunci, dll., Memutuskan sendiri apa yang harus dilakukan bukannya membiarkan sistem operasi menanganinya. Dengan demikian Swing adalah 100% portabel dan sama di seluruh platform (meskipun itu skinnable dan memiliki "tampilan dan nuansa pluggable" yang dapat membuatnya terlihat lebih seperti bagaimana tampilan jendela dan widget asli).
Ini adalah pendekatan yang sangat berbeda untuk toolkit GUI dan memiliki banyak konsekuensi. Jawaban lengkap untuk pertanyaan Anda akan mencoba mengeksplorasi semua itu. :) Berikut adalah beberapa:
AWT adalah antarmuka lintas platform, jadi meskipun menggunakan OS yang mendasari atau toolkit GUI asli untuk fungsinya, AWT tidak menyediakan akses ke semua yang dapat dilakukan oleh toolkit tersebut. Widget AWT lanjutan atau yang lebih baru yang mungkin ada pada satu platform mungkin tidak didukung pada platform lain. Fitur widget yang tidak sama di setiap platform mungkin tidak didukung, atau lebih buruk, mereka mungkin bekerja secara berbeda di setiap platform. Orang-orang biasa menginvestasikan banyak upaya untuk membuat aplikasi AWT mereka bekerja secara konsisten di seluruh platform - misalnya, mereka dapat mencoba membuat panggilan ke kode asli dari Jawa.
Karena AWT menggunakan widget GUI asli, OS Anda tahu tentang mereka dan menangani menempatkannya di depan satu sama lain, dll., Sedangkan widget Swing adalah piksel yang tidak berarti dalam jendela dari sudut pandang OS Anda. Swing sendiri menangani tata letak dan penumpukan widget Anda. Mencampur AWT dan Swing sangat tidak didukung dan dapat menyebabkan hasil yang konyol, seperti tombol asli yang mengaburkan segala sesuatu yang lain di kotak dialog di mana mereka berada karena semuanya dibuat dengan Swing.
Karena Swing mencoba melakukan apa saja yang mungkin di Jawa selain dari rutinitas grafik yang sangat mentah yang disediakan oleh jendela GUI asli, itu digunakan untuk menimbulkan penalti kinerja yang cukup dibandingkan dengan AWT. Sayangnya, ini membuat Swing lambat untuk ditangkap. Namun, ini telah menyusut secara dramatis selama beberapa tahun terakhir karena JVM lebih dioptimalkan, mesin lebih cepat, dan (saya kira) optimasi internal Swing. Saat ini aplikasi Swing dapat berjalan cukup cepat untuk dapat diservis atau bahkan zippy, dan hampir tidak dapat dibedakan dari aplikasi menggunakan widget asli. Beberapa akan mengatakan butuh terlalu lama untuk sampai ke titik ini, tetapi sebagian besar akan mengatakan bahwa itu sepadan.
Terakhir, Anda mungkin juga ingin melihat SWT (toolkit GUI yang digunakan untuk Eclipse, dan alternatif untuk AWT dan Swing), yang agaknya merupakan gagasan AWT untuk mengakses Widget asli melalui Java.
sumber
Perbedaan dasar yang telah disebutkan oleh semua orang adalah bahwa yang satu berat dan yang lain ringan . Mari saya jelaskan, pada dasarnya yang dimaksud dengan istilah heavy weight adalah bahwa ketika Anda menggunakan komponen awt, kode asli yang digunakan untuk mendapatkan komponen tampilan dihasilkan oleh Sistem Operasi , karena itulah perubahan tampilan dan nuansa dari OS ke OS. Sedangkan dalam komponen swing, tanggung jawab JVM untuk menghasilkan tampilan untuk komponen. Pernyataan lain yang saya lihat adalah ayunan itu berbasis MVC dan awt tidak.
sumber
Ayunan vs AWT . Pada dasarnya AWT datang pertama dan merupakan satu set komponen UI kelas berat (artinya mereka adalah pembungkus untuk objek sistem operasi) sedangkan Swing dibangun di atas AWT dengan satu set komponen ringan yang lebih kaya.
Setiap pekerjaan Java UI serius dilakukan di Swing, bukan AWT, yang terutama digunakan untuk applet.
sumber
Sejauh ketika AWT mungkin lebih berguna daripada Swing -
sumber
Beberapa konsekuensi dihasilkan dari perbedaan antara AWT dan Swing ini.
AWT adalah lapisan kode tipis di atas OS, sedangkan Swing jauh lebih besar. Swing juga memiliki fungsionalitas yang lebih kaya. Menggunakan AWT, Anda harus mengimplementasikan banyak hal sendiri, sementara Swing membuatnya terintegrasi. Untuk pekerjaan intensif GUI, AWT terasa sangat primitif untuk digunakan dibandingkan dengan Swing. Karena Swing mengimplementasikan fungsionalitas GUI itu sendiri daripada mengandalkan OS host, ia dapat menawarkan lingkungan yang lebih kaya pada semua platform yang dijalankan oleh Java. AWT lebih terbatas dalam menyediakan fungsionalitas yang sama pada semua platform karena tidak semua platform menerapkan kontrol yang tampak sama dengan cara yang sama.
Komponen ayun disebut "ringan" karena tidak memerlukan objek OS asli untuk mengimplementasikan fungsinya.
JDialog
danJFrame
kelas berat, karena mereka memiliki teman sebaya. Jadi komponen sepertiJButton
,JTextArea
dll., Ringan karena mereka tidak memiliki rekan OS.sumber
Ayunan:
AWT:
sumber
sumber
AWT 1. AWT menempati lebih banyak ruang memori 2. AWT tergantung pada platform 3. AWT membutuhkan paket javax.awt
ayunan 1. Ayunan menempati lebih sedikit ruang memori 2. Komponen swing adalah platform independen 3. Swing membutuhkan paket javax.swing
sumber