مقایسه بین Swing و SWT

حتما شما هم در مورد ابزارهای مشهور تولید رابط کاربری در جاوا (Swing ، SWT) شنیده اید در این مقاله بصورت کلی به مقایسه ای بین این دو ابزار و موارد کاربرد آنها می پردازیم.

Swing نسل دوم ابزار تولید رابط کاربری در JDK استاندارد است که توسط شرکت Sun Microsystems منتشر می شود . Swing برروی AWT (نسل اول ابزار تولید رابط کاربری ارائه شده توسط شرکت Sun Microsystems) بنا شده و هدف از توسعه آن تولید رابط کاربری پیچیده تر و سفارشی با ظاهر یکسان در پلتفرمها های مختلف می باشد .

SWT ابزار تولید رابط کاربری است که در ابتدا توسط شرکت IBM توسعه داده شد و هم اکنون توسط بنیاد Eclipse نگهداری و پشتیبانی می شود و هدف از توسه آن تولید ابزاری برای دسترسی به کدهای بومی کامپوننت های پلتفرم های مختلف است همچنین تولید رابط کاربری با کارایی (Performance) بالا و یکپارچگی عمیق با پلتفرم از دیگر اهداف توسعه این ابزار می باشد.

همانطور که مشاهده می کنید اهداف توسعه این دو ابزار کاملا متفاوت بوده و بسیاری از کارشناسان اعتقاد دارند این دو ابزار برای اهداف مختلف توسعه داده شده اند.

تفاوت های Swing و SWT

  • Swing برای نمایش کامپوننت های خود از کتابخانه های بومی سیستم عامل استفاده نمی کند و با استفاده از کتابخانه Java 2D آنها را رسم می کند ولی SWT کدهای بومی کتابخانه های GUI( مانند اشیاء GTK+ و اشیاء Motif )را با استفاده از JNI(java native interface) بسته بندی می کند و برای نمایش کامپوننت های خود از آنها استفاده می کند و در زمانی که کدهای بومی احتیاجات SWT را براورده نمی کنند همانند Swing کامپوننت های مورد نظر خود را با جاوا پیاده سازی می کند .

  • برنامه های تولید شده با SWT ساده تر از Swing می باشد.

  • وقف دادن SWT با سیستم عامل های جدید مشکلتر و زمانبرتر از Swing است بدلیل اینکه AWT (زیرساخت کتابخانه Swing)وابستگی کم و بسیار ساده به سیستم عامل دارد (به نسبت SWT)
  • Swing براساس معماری MVC پیاده سازی شده است در حالی که SWT اینطور نیست.
  • SWT سریعتر از Swing اجرا می شود و همچنین منابع سیستمی کمتری مصرف می کند (البته بصورت علمی برتری کارایی SWT به Swing ثابت نشده است و برتری ناچیز SWT در محیط ها و کاربردهای مختلف متغییر و گاها برتری وجود ندارد).
  • ظاهر (look and feel) کامپوننت های SWT شبیه کامپوننت های سیستم عاملی است که درون آن اجرا می شود ولی Swing می تواند برروی هر سیستم عاملی شکل مورد نظر شما را داشته باشد.
  • در SWT از automatic garbage collection استفاده نمی شود و باید همانند زبان c با استفاده از تابع dispose() حافظه تخصیص داده شده برگردانده شود که این امر برنامه های تولید شده توسط SWT را مستعد خطا می کند ولی Swing از automatic garbage collection استفاده می کند.
  • پیاده سازی SWT برای هر پلتفرم متفاوت است و برای هر پلتفرم باید jar فایل مخصوص به آن پلتفرم استفاده شود در حالی که Swing مستقل از پلتفرم است.
  • Swing توسعه دهنده را با جزئیات کمتر سیستمی درگیر می کند در حالی که SWT بلعکس است.

منابع :
http://en.wikipedia.org/wiki/Standard_Widget_Toolkit
http://en.wikipedia.org/wiki/Swing_(Java)
http://en.wikipedia.org/wiki/Abstract_Windowing_Toolkit