Yanıtlar:
AWT, işletim sisteminizde bulunan yerel sistem GUI koduna yönelik bir Java arabirimidir. Denemesine rağmen her sistemde aynı şekilde çalışmaz.
Swing, az çok saf Java GUI'sidir. Bir işletim sistemi penceresi oluşturmak için AWT'yi kullanır ve daha sonra bu pencereye düğmelerin, etiketlerin, metinlerin, onay kutularının vb. Resimlerini boyar ve tüm fare tıklamaları, tuş girişleri vb. işletim sisteminin halletmesine izin vermek yerine. Bu nedenle Swing% 100 taşınabilirdir ve platformlar arasında aynıdır (kaplanabilir ve yerel pencerelerin ve widget'ların nasıl göründüğü gibi aşağı yukarı görünmesini sağlayan "takılabilir bir görünüm ve his" olmasına rağmen).
Bunlar GUI araç setlerine çok farklı yaklaşımlardır ve birçok sonucu vardır. Sorunuza tam bir cevap, tüm bunları araştırmaya çalışacaktır. :) İşte bir çift:
AWT, platformlar arası bir arabirimdir, bu nedenle işlevselliği için temel OS veya yerel GUI araç kitini kullanmasına rağmen, bu araç setlerinin yapabileceği her şeye erişim sağlamaz. Bir platformda bulunabilecek gelişmiş veya daha yeni AWT widget'ları başka bir platformda desteklenmeyebilir. Her platformda aynı olmayan widget'ların özellikleri desteklenmeyebilir veya daha da kötüsü, her platformda farklı şekilde çalışabilir. İnsanlar AWT uygulamalarının platformlar arasında tutarlı bir şekilde çalışmasını sağlamak için çok çaba harcarlardı - örneğin, Java'dan yerel koda çağrı yapmaya çalışabilirler.
AWT yerel GUI widget'larını kullandığı için, işletim sisteminiz bunları bilir ve bunları birbirlerinin önüne koyar, vb. İşlerken, Swing widget'ları bir pencerede işletim sisteminizin bakış açısından anlamsız piksellerdir. Swing'in kendisi widget'larınızın düzenini ve yığınını işler. AWT ve Swing'i karıştırmak son derece desteklenmez ve Swing ile diğer her şey yaratıldığı için içinde bulundukları iletişim kutusundaki diğer her şeyi gizleyen yerel düğmeler gibi saçma sonuçlara yol açabilir.
Swing, Java'da yerel bir GUI penceresi tarafından sağlanan çok ham grafik rutinleri dışında mümkün olan her şeyi yapmaya çalıştığından, AWT'ye kıyasla oldukça performans cezasına neden oldu. Bu Swing'i maalesef yavaş yavaş yakaladı. Bununla birlikte, bu daha iyi optimize edilmiş JVM'ler, daha hızlı makineler ve Swing iç bileşenlerinin (sanırım) optimizasyonu nedeniyle son birkaç yılda önemli ölçüde küçüldü. Bugün bir Swing uygulaması, servis edilebilir ve hatta zippy olacak kadar hızlı çalışabilir ve yerel widget'ları kullanan bir uygulamadan neredeyse ayırt edilemez. Bazıları bu noktaya gelmenin çok uzun sürdüğünü söyleyecek, ancak çoğu buna değdiğini söyleyecek.
Son olarak, SWT'ye (Eclipse için kullanılan GUI araç seti ve hem AWT hem de Swing'e bir alternatif) göz atmak isteyebilirsiniz, bu da AWT'nin Java aracılığıyla yerel Widget'lara erişme fikrine bir dönüş.
Zaten herkesin bahsettiği temel fark, birinin ağır ve diğerinin hafif olmasıdır . Temel olarak ağır ağırlık teriminin ne anlama geldiğini açıklayayım, awt bileşenlerini kullandığınızda, görünüm bileşenini almak için kullanılan yerel kod İşletim Sistemi tarafından oluşturulur , bu yüzden görünüm ve his OS'den OS'ye değişir . Salıncak bileşenlerinde olduğu gibi, bileşenlerin görünümünü oluşturmak JVM'nin sorumluluğundadır . Gördüğüm başka bir ifade, salıncak MVC tabanlı ve awt değil olmasıdır.
AWT'ye karşı salıncak . Temel olarak AWT önce geldi ve bir dizi ağır UI bileşeni (yani işletim sistemi nesneleri için sarmalayıcılar), Swing daha zengin bir hafif bileşen seti ile AWT'nin üzerine inşa edildi.
Herhangi bir ciddi Java UI çalışması, esas olarak uygulamalar için kullanılan AWT değil Swing'de yapılır.
AWT'nin Swing'ten daha yararlı olabileceği ölçüde -
AWT ve Swing arasındaki bu farktan birkaç sonuç ortaya çıkar.
AWT, işletim sisteminin üstünde ince bir kod katmanıdır, oysa Swing çok daha büyüktür. Swing ayrıca çok daha zengin bir işleve sahiptir. AWT'yi kullanarak, birçok şeyi kendiniz uygulamalısınız, Swing'de yerleşik olarak bulunur. GUI yoğun çalışma için AWT, Swing'e kıyasla çalışmak için çok ilkel hissediyor. Swing, ana bilgisayar işletim sistemine güvenmek yerine GUI işlevini kendisi uyguladığından, Java'nın çalıştığı tüm platformlarda daha zengin bir ortam sunabilir. AWT tüm platformlarda aynı işlevselliği sağlama konusunda daha sınırlıdır, çünkü tüm platformlar aynı görünümlü kontrolleri aynı şekilde uygulamamaktadır.
Salıncak bileşenleri işlevlerini uygulamak için yerel bir OS nesnesine ihtiyaç duymadıkları için "hafif" olarak adlandırılır. JDialog
ve JFrame
ağırdırlar, çünkü akranları vardır. Bileşenler gibi Yani JButton
,
JTextArea
onlar bir OS akran yok çünkü, vb hafiftir.
Bir eş bir düğme nesnesi ya da bir girdi alanı nesnesi olarak işletim sistemi tarafından sunulan bir widgettır.
Salıncak:
AWT:
AWT 1. AWT daha fazla bellek alanı kaplar 2. AWT platforma bağımlıdır 3. AWT javax.awt paketi gerektirir
salıncaklar 1. Salıncak daha az bellek alanı kaplar 2. Salıncak bileşeni platformdan bağımsızdır 3. Salıncak javax.swing paketi gerektirir