During learn and experience

۵ مطلب در خرداد ۱۳۸۷ ثبت شده است

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

مقایسه بین 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
۲۱ خرداد ۸۷ ، ۲۳:۲۱ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

استفاده از فرمان applicationCreator (GWT)

تولید ساختار اولیه یک برنامه GWT با استفاده از فرمان applicationCreator:

با استفاده از فرمان applicationCreator شما می توانید ساختار اولیه یک برنامه GWT و اسکریپت های لازم برای اجرای برنامه در حالت hosted mode و کامپایل برنامه به جاوا اسکریپت را تولید کنید شما همچنین می توانید فایل های لازم برای کامپایل و اجرای پروژه را با استفاده از Eclipse IDE را نیز تولید کنید .

ساختار کلی این دستور بصورت زیر می باشد :

applicationCreator [-eclipse projectName] [-out dir] [-overwrite] [-ignore] …client.className

-eclipse

یک تنظیمات debug launch برای eclipse IDEتولید می کند .

-out

مشخص کننده دایرکتوری می باشد که می خواهیم فایلهای پرژه در آن ساخته شود (پیش فرض دایرکتوری جاری می باشد)

-overwrite

در صورتی که در دایرکتوری به فایل تکراری برخورد کند آنها را بازنویسی می کند

-ignore

در صورتی که در دایرکتوری به فایل تکراری برخورد کند آنها را بازنویسی نمی کند

className

نام پرو‍ه و همچنین نام artifact هایی که توسط applicationCreator بصورت خودکار تولید می شود.



مثال :

اگر دایرکتوری جاری ما Test باشد و دستور زیر را اجرامی کنیم :

applicationCreator com.saeed.client.TestApp
فایلها و دایرکتوری های زیر تولید می شود :

Created directory test\src

Created directory test\src\com\saeed

Created directory test\src\com\saeed\client

Created directory test\src\com\saeed\public

Created file test\src\com\saeed\TestApp.gwt.xml

Created file test\src\com\saeed\public\TestApp.html

Created file test\src\com\saeed\public\TestApp.css

Created file test\src\com\saeed\client\TestApp.java

Created file test\TestApp-shell

Created file test\TestApp-compile

همانطور که مشاهده می کنید بسته به نوع سیستم عامل شما دو قایل TestApp-shell و TestApp-compile تولید می شود که اولی برای اجرای برنامه در حالت hosted mode و دومی برای کامپایل کردن برنامه به Javascript است .

نکته : حتما باید package نهایی برای نام گذاری className برابر client باشد کوتاه ترین حالت می تواند client.className باشد .

نکته : اگر دستور زیر را اجرا کنیم :

applicationCreator -eclipse TestApp com.saeed.client.TestApp

علاوه بر فایلها و دایرکتوری های بالا فایل زیر نیز تولید می شود :

Created file test\TestApp.launch

نکته : اگر می خواهید از دستورات GWT (مانند : applicationCreator )در تمامی دایرکتوری ها استفاده کنید مراحل زیر را انجام دهید .

راه حل ساده این است که دایرکتوری فرمان های GWT را بعنوان Path variable تعریف کنیم . برای این منظور در سیستم عامل ویندوز مراحل زیر را انجام دهید :

  • در قسمت Control Panel برروی System کلیک کنید .

  • در قسمت Advance برروی دکمه Environment Variables کلیک کنید .

  • در قسمت User Variables برروی متغییر PATH دوبار کلیک کنید .

  • متن C:\Program Files\GWT\gwt-windows-1.5.0 را به انتهای قسمت value اضافه کنید .


۱۴ خرداد ۸۷ ، ۱۱:۴۰ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

معماری GWT(آموزشی قسمت 2)

معماری برنامه های تولید شده با استفاده از GWT
معماری کلی برنامه های تولید شده توسط GWT بر اساس معماری Client-Server می باشد . در سمت کلاینت کدهای AJAX (Javascript , HTML , CSS )قرار دارند و در سمت سرور منطق برنامه که براساس مفاهیم Java-servlet پیاده سازی شده اند قرار دارد .زمانی که در سمت کلاینت کاربر با استفاده از رابط کاربری AJAX درخواست اطلاعاتی را از سمت سرور می کند قسمت فراخوانی توابع از راه دور (Remote Procedure Call) برنامه بصورت غیر همزمان (Asynchron)و بدون اینکه صفحه مرورگر referesh شود توابع پیاده سازی شده در سمت سرور را فراخوانی کرده و اطلاعات مورد نظر را از سمت سرور آورده و به کاربر نمایش می دهند . یکی از مزایای اصلی GWT در این است که دو جزء اصلی معماری Client-Server با استفاده از یک زبان برنامه نویسی (Java) تولید می شوند که این امر باعث بالاتر رفتن سرعت توسعه و همچنین تمرکز بیشتر برروی مفاهیمی مانند کیفیت ، تحلیل و ... می شود .
اجزای اصلی GWT
GWT شامل 4 جزء اساسی است که که این 4 جزء با همکاری یکدیگر سبب شده اند چهارچوبی (Framework) قدرتمند برای توسعه برنامه با تکنیک AJAX در اختیار توسعه دهندگان قرار بگیرد .

1. کامپایلر (Java-to-Javascript) : ما از این کامپایلر برای ترجمه برنامه های GWT نوشته شده خود (با زبان برنامه نویسی جاوا) به کدهای Javascript استفاده می کنیم . برنامه AJAX تولید شده فقط شامل صفحات HTML و کدهای Javascript می باشد که می تواند برروی سرور وب قرار بگیرد .
2. Hosted Web Browser (Hosted mode): این قسمت از معماری GWT در زمان توسعه و تست نرم افزار بسیار مفید است . Hosted Web Browser به توسعه دهنده این امکان را می دهد بدون اینکه برنامه خود را به کدهای Javascript کامپایل کند برنامه خود را اجرا کنند و خروجی را مشاهده نماید (به این نوع اجرا اصطلاحا اجرای برنامه در حالت Hosted mode می گویند ) . GWT برای این منظور یک مرورگر توکار مخصوص به خود را دارد.
3. نسخه شبیه سازی شده کتابخانه های زمان اجرای جاوا (JRE emulation library ( : این جرء معماری شامل پیاده سازی Javascript اکثر کلاسهای مورد استفاده در پکیجهای java.lang و java.util نسخه استاندارد جاوا برای استفاده در سمت کلاینت می باشد . نکته مهم این است که توسعه دهندگان در برنامه نویسی سمت سرور هیچ محدودیتی در استفاده از کتابخانه های مختلف جاوا ندارند .
4. کتابخانه رابط کاربری تحت وب (Web UI class library ) : این قسمت شامل مجموعه ای کامل از اجزا رابط کاربری مورد استفاده در وب مانند : دکمه ، فرم و... می باشد (که اصطلاحا widget نامیده می شود)

۱۲ خرداد ۸۷ ، ۰۸:۴۷ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

معرفی GWT(آموزشی قسمت 1)

معرفی GWT
تولید برنامه های تحت وب با تکنیک AJAX کاری بسیار دشوار است بدلیل اینکه هسته اصلی تکنیک AJAX بروی Javascript بنا شده است و برنامه نویسی با زبان Javascript کاری دشوار و بسیار مستعد خطا می باشد و همچنین بدلیل اینکه تکنیک AJAX از ترکیب جند تکنولوزی (HTML ، Javascript ، CSS و...) بوجود آمده است دارای گستردگی مطالب می باشد این ذلایل باعث شده اند تکنیک AJAX به ذات روش پیچیده ای برای تولید برنامه های تحت وب باشد .
GWT یک چارچوب توسعه نرم افزار متن باز براساس تکنولوژی جاوا است که به توسعه دهندگان اجازه می دهد به راحتی برنامه های تحت وب با تکنیک AJAX تولید کنند .
با استفاده از GWT شما به راحتی می توانید برنامه های AJAX با کارایی بالا را با استفاده از زبان برنامه نویسی جاوا تولید و عیب یابی کنید زمانی که برنامه شما با استفاده از زبان برنامه نویسی جاوا آماده شد کامپایلر GWT آن را به کدهای Javascript کامپایل می کند .
مزایای GWT
  • استفاده از ابزارها و محیطهای توسعه زبان برنامه نویسی جاوا که باعث کاهش زمان توسعه نرم افزار می شود .
  • تولید کدهای Javascript بهینه شده توسط کامپایلر GWT بدون درگیری و شناختی از برنامه نویسی با Javascript.
  • تولید نرم افزارهای تحت وب سازگار با تمامی مرورگرهای وب موجود در بازار (Firefox , IE , Safari , Opera , …)
  • استفاده از ابزارهای تست جاوا که باعث راحتی و تسریع در عملیات عیب یابی نرم افزار می شود .
  • در اختار قرار داشتن مجموعه وسیعی از اجزاء رابط گرافیکی کاربر و همچنین قابلیت توسعه و استفاده مجدد آنها .
  • مکانیزم ساده فراخوانی توابع از راه دور (Remote Procedure Call) برای برنامه های AJAX .
  • وجود Javascript Natice Interface (JSNI) که سبب می شود توسعه دهندگان بتوانند از کدهای Javascript موجود در کدهای GWT به راحتی استفاده کنند .
  • مدیریت تاریخچه (History) مرورگر که به برنامه های AJAX وضعیت خود را مدیریت کنند و نیز به کاربر اجازه استفاده از دکمه back مرورگر را می دهد .
  • امکان تولید نرم افزار با پشتیبانی از چند زبان (Internationalization)
  • امکان استفاده از برنامه های AJAX بصورت Offline (در حال توسعه )
تدریس دوره کاربردی برنامه نویسی Ajax با استفاده از Google Web Toolkit

شاد باشید.
۰۷ خرداد ۸۷ ، ۱۲:۵۲ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

طراحی و تولید سایت با روش AJAX

سلام
شما می توانید با تماس با مسئول سایت (zarinfam.s@gmail.com) درخواست مشاوره و یا تولید یک وب سایت ویا یک نرم افزار را بدهید .
برای مشاهده برنامه نمونه بر روی لینک زیر کلیک کنید :
برنامه نمونه (Demo)

۰۶ خرداد ۸۷ ، ۱۷:۰۸ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام