PDA

View Full Version : گفتگو: بررسی GWT



mehdi_m1360
چهارشنبه 26 فروردین 1388, 16:38 عصر
دوستان اگه علاقه داشته باشید میتونیم راجع به( GWT(google web toolkit صحبت کنیم، چگونگی استفاده از این محیط و ابزار و مسائل و مزایای اون به نظرم بحث جالبی رو باز میکنه.

mehdi_m1360
چهارشنبه 26 فروردین 1388, 17:43 عصر
برای شروع یه مقدمه رو مطرح میکنم:

"در اکتبر سال 2008 مجله Better Software مقاله ای در مورد Google Web Toolkit یا همان GWT به عنوان ابزاری برای ساخت برنامه های کاربردی تخت وب با قابلیت پشتیبانی مطمئن از مرورگرهای مختلف و مبتنی بر Ajax با زبان جاوا ارائه داد. GWT کدهای جاوا را به کدهای جاوا اسکریپت ترجمه میکند و برای این کار از کتابخانه هایی استفاده میکند که از مرورگرهای مختلف پشتیبانی کرده و در عین حال از بروز مسائلی مانند Memory Lake جلوگیری میکند. به عبارت دیگر در هنگام توسعه برنامه های کاربردی مبتنی بر Ajax و با جاوا، به جای درگیری با مسائل اساسی مانند پشتیبانی از چند مرورگر و یا مشکلات مربوط به اجرای اسکریپت ها میتوان به Business model و صحت کارکردی نرم افزار پرداخت."[1]

1- Writing Ajax Application Test First by Daniel Wellman, November 2008 Better Software Magazine (http://www.stickyminds.com/).

mehdi_m1360
یک شنبه 30 فروردین 1388, 16:30 عصر
به زبان ساده تر این ابزار این امکان رو میده تا شما کدهای سمت client رو با جاوا بنویسید و سپس با کامپایل اون ها، کد java script دریافت کنید. کسایی که با جاوا اسکریپت کار میکنن با مسائل بسیار زیادی که در هنگام توسعه برنامه های مبتنی بر Ajax پیش میاد به خصوص وقتی صحبت از تغییرات در کد میشه کاملا آشنا هستند و میشه گفت که با GWT تقریبا با هیچکدوم از این مسائل درگیر نمیشوید.
اما موضوع به این سادگی ها نیست. اولا به صورت مشخص تفاوتهای بسیار زیادی بین جاوا و جاوااسکریپت وجود داره که عملا نگاشت یک به یک این دو رو حتی توی syntax هم غیر ممکن میکنه. به همین دلیل اسلوب و قواعدی در کد نویسی باید رعایت شوند تا GWT بتواند به هدفی که برای آن ساخته شده است برسد. ثانیا گستره کتابخانه های javascript بسیار محدودتر از java هستند و بنابراین باید در محدوده بسیار کوچکی کد نوشت البته این محدوده کوچک تقریبا تمام نیازهای یک برنامه رو پوشش میده و از همه مهمتر اینکه باید بدونید کدی که شما مینویسید در سمت client به صورت java script اجرا میشه و برای تعامل با سمت سرور باید از روشهایی مرسوم استفاده کنید مثل کار با web serviceها و یا استفاده از RPC ( Remote Procedure Call ). این کلیات باعث میشه تا مسائل و موارد دیگری نیز پیش بیاد که از دید یک معمار نزم افزار میتونه خیلی مهم و دونستنش حتی حیاتی هم باشه.

saeed_Z_F
دوشنبه 31 فروردین 1388, 15:58 عصر
سلام
به این وبلاگ سر بزنید اطلاعات مفیدی دستگیرتون میشه :
http://saeedzarinfam.blogspot.com/search/label/GWT

من الان حدود 1.5 هستش که GWT کار می کنم. این ایده ناب گوگل برایه توسعه برنامه های تحت وب با تکنیک AJAX محشره.

مطمئن بودم یه روزی تو ایرانم صداش میپیچه.

mehdi_m1360
سه شنبه 01 اردیبهشت 1388, 17:34 عصر
البته فکر نکنم صداش پیچیده باشه، وبلاگت رو هم دیدم، جالب و مفید بود. من سعی میکم از ابتدا راجع به این موضوع صحبت کنم اما واقعا وقتم کمه، اگه بتونی کمک کنی که خیلی ممنون هم میشم.

mehdi_m1360
شنبه 05 اردیبهشت 1388, 14:24 عصر
در ابتدا ترجیح میدم تا به برخی مسائل و ملاحظات این ابزار اشاره کنم.

مسائلی که همواره در تولید هر نرم افزاری وجود دارد، در اینجا نیز به چشم می خورد، مانند نحوه Debug، چگونگی تست، میزان سازگاری با سکوهای اجرایی و از همه مهمتر مهارت های مورد نیاز که سهم به سزایی در کنترل هزینه یک پروژه دارد.

قانونی در دنیا وجود دارد که در سیستم های نرم افزاری مشهود است:

"
شما میتوانید یک سیستم را ارزان بدست آورید.
شما میتوانید یک سیستم را سریع بدست آورید.
شما میتوانید یک سیستم را صحیح بدست آورید!

اما در زمان واحد فقط دو مورد از موارد بالا امکان پذیر است."

GWT نیز شامل این قانون میشود. بنابراین قبل از تصمیم گیری باید این ابزار را در سه حوزه زمان توسعه، هزینه توسعه و صحت و قابلیت اجرایی( میشه گفت قابلیت اطمینان، user friendly بودن و وجود امکان توسعه و مواردی از این دست در این بخش قرار میگیرند) بررسی کنیم. لازمه این بررسی تعیین حوزه کاربردی GWT است. باید بدانیم که این ابزار دقیقا در کجا و به چه منظوری به کار میرود، مزایا و معایب آن کجاست و در کجاها کاربردی ندارد.

پس در گام اول به حوزه و کاربرد این ابزار اشاره میکنیم.

handinux
شنبه 05 اردیبهشت 1388, 20:52 عصر
بسیار عالی و ممنون از لطف شما
منتظر "پس در گام اول به حوزه و کاربرد این ابزار اشاره میکنیم" هستم!

mehdi_m1360
یک شنبه 06 اردیبهشت 1388, 12:50 عصر
"طبق تعریف، GWT قالبی Open source برای توسعه برنامه های کاربردی تحت در جاوا ارائه می دهد به طوری که برنامه نویسان میتوانند برنامه های پیچیده ای مبتنی بر تکنیک ajax و با استفاده از javascript تولید کنند.[1] (http://en.wikipedia.org/wiki/Google_Web_Toolkit)"

این مورد نشان میدهد که تمام ملاحظاتی که در تولید برنامه های Ajax وجود دارد، در اینجا عینا وجود خواهد داشت، این موارد به صورت اهم در زیر آمده اند:


مجتوی برنامه های مبتنی بر ajax عموما در موتورهای جستجو، رتبه پایینی را به خود اختصاص میدهند و حتی در بیشتر مواقع شناخته هم نمیشوند، بنابراین از این ابزار برای ساخت برنامه های کاربردی استفاده میشود نه سایتهای تبلیغاتی و یا خبری و مانند آن، مثلا forumها و weblogها را نباید با این ابزار پیاده سازی کرد اما برای یه سیستم مالی تحت وب ایده آل است.
با استفاده از ajax شما توانایی های زیادی را به صورت همزمان لازم دارید، باید به جاوا اسکریپت، CSS، HTML و البته تکنولوژی سمت سرور خود مسلط باشید و عموما کاری واحد با درگیری تمام این توانایی ها انجام میشود.

در حاشیه باید بگم مواردی مانند سازگاری با browserها، تفاوت engineهای مختلف و مسائلی مانند memory lake از دیگر مواردی هستند که گریبان برنامه های کاربردی مبتنی بر ajax را میگیرند.

mehdi_m1360
یک شنبه 06 اردیبهشت 1388, 12:56 عصر
اما این تمام ماجرا نیست، دردسر اصلی در برنامه های ajax، علاوه بر مدیریت لایه view، رسیدن به راه حلی کامل و جامع برای برقراری ارتباط با سرور است. توجه کنید مکانیزم های موجود راه حل ارائه میدهند اما هنگامی که وارد پیاده سازی میشوند، وابستگی کامل به سلیقه و طرز فکر برنامه نویس دارند، چیزی که برای برنامه نویس لذت بخش و برای مدیر پروژه کابوس است! تصور اینکه شما برنامه ای دارید که 100 تا 120 نوع request مختلف دارد و طی آنها با سرور درگیر است و شما برای چنین برنامه ای از 4-5 نفر برنامه نویس استفاده میکنید را در کنار اینکه هرکدام، هرجور که میخواهند با سرور ارتباط برقرار میکنند، بگذارید، خیلی زود میفهمید که باید استانداردهای زیادی را برای این ارتباط تعریف کنید، از مکانیزم هایی باید استفاده کنید که سرعت test و debug خود را بالا ببرید و مانند آن.

mehdi_m1360
یک شنبه 06 اردیبهشت 1388, 13:01 عصر
اما در مورد GWT چه چیزی مطرح است؟ GWT تنها کامپوننت هایی که با javascript ساخته شده اند نیست، ارتباط با سرور و راه حل هایی که به خصوص مبتنی با MVC است از دیگر ویژگی های آن است. این امر باعث شده در برخی موارد مجبور باشید جور دیگری نگاه کنید.

mehdi_m1360
پنج شنبه 10 اردیبهشت 1388, 11:34 صبح
این ابزار مکانیزمی را در اختیار برنامه نویس قرار میدهد تا بتواند بدون درگیری با جزئیات Ajax و مانند روش های RPC با سرور ارتباط برقرار کند. در واقع نوشتن برنامه های تحت وب، تا حدی شبیه برنامه های desktop می شود! اما فقط تا حدی. این روش برقراری ارتباط مزایای زیادی را خواهد داشت که کسی نمیتواند منکر آن شود. اما بیایید از دید یک مهندس نرم افزار به این ابزار نگاه کنیم،
پارامترهای زیادی مربوط به خود نرم افزار وجود دارد که این ابزار آنها را تسهیل میکند، مثلا قابلیت تست و debug آن با سایر روشهای موجود قابل مقایسه نیست، معمولا برنامه هایی user frindly تر با آن نوشته میشود البته دلیل آن وجود ابزارهای قدرتمندتری نیست بلکه از آنجایی که برنامه نویسان و طراحان اشتهای مهار ناشدنی در اضافه کردن امکاناتشان دارند و در عین حال این ابزار امکان مدیریت ساختارها، استفاده از الگوها، البته کدهای آنها را میدهد، بنابراین برنامه ها نیز پیچیده شده و امکانات بیشتری را برای کاربر فراهم میکند.
شما اگر به تست جوئل (http://farsi.joelonsoftware.com/Articles/TheJoelTest.html) نگاه کنید، خواهید دریافت که پارامتر دوم آن، یعنی Build برنامه در یک مرحله امکان پذیر نیست و یا پیچیدگی های زیادی را با خود در بر دارد.
توسعه سیستم های موجود با استفاده از این ابزار عملا منجر به پیاده سازی مجدد لایه ui می شود . یا اینکه شما ناچارید دست به دامان کدهای native شوید که در این صورت هم باز مواردی مانند قابلیت انعطاف آن با سابر Browserها پیش می آید، استفاده از برخی ابزارها مانند jasper report به صورت همزمان به سادگی موارد مشابه نیست. البته در نسخه های آتی برخی موارد ذکر شده در این پست مرتفع خواهد شد، مثلا امکان build برنامه در یک مرحله و ارائه می شود.

faizollah
یک شنبه 24 خرداد 1388, 22:59 عصر
میشه یک آموزش بدرد بخور بزارین؟

saeed_Z_F
سه شنبه 02 تیر 1388, 11:03 صبح
میشه یک آموزش بدرد بخور بزارین؟

به اینجا سر بزن :
http://www.saeedzarinfam.blogspot.com/