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.
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.
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.
Sejauh ketika AWT mungkin lebih berguna daripada Swing -
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
dan JFrame
kelas berat, karena mereka memiliki teman sebaya. Jadi komponen seperti JButton
,
JTextArea
dll., Ringan karena mereka tidak memiliki rekan OS.
Sebuah rekan adalah widget yang disediakan oleh sistem operasi, seperti objek tombol atau objek entri lapangan.
Ayunan:
AWT:
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