During learn and experience

۴۲ مطلب با موضوع «GWT» ثبت شده است

EntryPoint در برنامه های GWT

سلام
دیروز یکی از همکارام بصورت تصادفی متوجه شد که در برنامه های GWT کلاسی که متد onModuleLoad درون آن قرار دارد لزومی ندارد که حتما رابط EntryPoint را implement کرده باشد و فقط کافی است امضای صحیح متد onModuleLoad را درون خود داشته باشد و درون فایل gwt.xml نیز آن کلاس بعنوان نقطه آغازین برنامه معرفی شده باشد.

جالب بود نه !

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

GWT Architecture



چند روز پیش عکس فوق را درباره معماری GWT دیدم که خیلی عالی معماری یک برنامه GWT را تشریح کرده بود (البته بغیر از اینکه درباره hosed mode و hosted mode browser چیزی نگفته است).

همانطور که ملاحظه می کنید عکس فوق دو قسمت اصلی دارد ، که من نام آنها را قسمت بالا و قسمت پایین عکس می گذارم و همچنین چهار مربع زرد رنگ عملیات های لازم برای تولید یک برنامه GWT را تشریح کرده است ، این عملیات عبارتند است:
  • Write: عملیات نوشتن کد برنامه GWT (هم سمت سرور و هم سمت کلاینت).
  • Compile: کامپایل کدهای سمت کلاینت برنامه GWT به جاوااسکریپت.
  • Run/Test: اجرای برنامه برروی سرور.
همانطور که در قسمت بالای عکس مشاهده می کنید یک عملیات Write وجود دارد که مربوط به کدهای جاوایی است که در نهایت باید به جاوااسکریپت کامپایل شوند (کدهای سمت کلاینت). همانطور که ملاحظه می کنید این قسمت از معماری GWT از دو مولفه اصلی کتابخانه زمان اجرای جاوای شبیه سازی شده توسط GWT و کتابخانه رابط کاربری GWT تشکیل شده است.

کتابخانه زمان اجرای جاوا(شبیه سازی شده توسط GWT) : نسخه شبیه سازی شده GWT از بخشی از کتابخانه JDK می باشد.
کتابخانه رابط کاربری GWT : این کتابخانه حاوی کامپوننت هایی برای ایجاد رابط کاربری برنامه می باشد که به دو دسته زیر تقسیم می شوند:
  • widget: کامپوننت هایی که ظاهر یک برنامه را تشکیل می دهدند (نظیر: Button ، TextBox و ...)
  • panel: کامپوننت هایی که بمنظور چینش و مشخص کردن ترتیب widget ها مورد استفاده قرار می گیرند و widget ها را درون خود جای می دهدند.
ادامه دارد...

شاد باشید.


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

عرضه GWT 1.7

GWT 1.7 عرضه شد.

این نسخه بصورت کامل از IE8 ، Firefox 3.5 و Safari 4 پشتیبانی کرده و علاوه بر این تعداد کمی از bug های با اولویت بالا نیز در این نسخه رفع شده است.
بسیاری از خصوصیات این نسخه شبیه نسخه 1.6 است ، سایت GWT تغییر release از 1.6 به 1.7 را بدلیل تغییراتی می داند که برای پشتیبانی از مرورگرهای جدید در کتابخانه هایی که از deferred binding استفاده می کنند بوجود آمده است.

بدلیل اینکه IE8 چندین تغییر قابل توجه behavioral به نسبت نسخه های قبل داشته است و این تغییرات نیز به اندازه کافی بزرگ می باشد. در نسخه 1.7 مقدار جدید ie8 بعنوان مقدار جدید خصوصیت سمت کلاینت user.agent برای عملیات deferred binding اضافه شده است.

bug های رفع شده:
  • بروزرسانی کتابخانه های GWT برای پشتیبانی از IE8
  • خطای جاوااسکریپت در متد ()Node.is
  • Mouse wheel در Firefox 3
  • خطای java.sql.Date.valueOf
  • و...
توسعه دهنده گان ایرانی بمنظور دانلود GWT می توانند از این لینک استفاده کنند (در صورتی که GWT 1.7 در این لینک وجود نداشت در چند روز آتی اضافه خواهد شد).

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

مقایسه Apache Wicket با GWT




امروز مطلبی درباره Apache Wicket خوندم (Apache Wicket یک Framework تولید برنامه های تحت وب با استفاده از تکنولوژی جاوا است).
دلیل اینکه تصمیم گرفنم این مقایسه رو انجام بدم ، شبا هت هایی بود که این Framework با GWT دارد. اصلی ترین شباهتی که بین این دو Framework وجود دارد ، نحوه برنامه نویسی با این دو Framework است. برنامه نویسی با آنها شبیه برنامه نویسی Swing (یا اصطلاحا Swing Like) است. بدین معنی که توسعه دهندگان وب بجای سرو کار داشتن با tag برای تولید برنامه وب خود با کلاس های جاوا و برنامه نویسی شئ گرا روبرو هستند (که این سبک مزیت های خاص خود را دارد).

تفاوت اصلی این دو Framework درمعماری آنها و چگونگی عملکرد آنها در زمان اجرا است.
Apache Wicket همانند JSF یک Framework سمت سرور (server side) است و در خواست های کاربر در زمان اجرا و در سمت سرور render می شود در حالی که GWT یک Framework سمت کلاینت (client side) است و در خواست های کاربر در زمان اجرا در سمت کلاینت و توسط جاوااسکریپت پاسخ داده می شود. این امر سبب می شود بار پردازشی سمت سرور در GWT کاهش یافته و همچنین حجم اطلاعات ردوبدل شده بین کلاینت و سرور نیز کاهش می یابد.
GWT Compiler یکی دیگر از برتری های GWT به نسبت Apache Wicket است. این کامپایلر برنامه نویسی جاوااسکریپت را برای کاربران آسان می سازد و کاربر می تواند به راحتی کامپونت های سازگار با تمامی مرورگرها با جاوااسکریپت تولید کند.

بطور حتم تفاوت ها و شباهت های بیشتری بین این دو Framework وجود دارد.

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

چگونه زمانی که یک DialogBox را نمایش می دهیم پنل پشت آن را Mask کنیم ؟

همانطور که در بسیاری از برنامه های AJAX مشاهده کرده اید پس از نمایش یک DialogBox عناصر پشت DialogBox همگی تیره و شفافیت آنها نیز کم می شود. در GWT در زمان نمایش یک DialogBox این اتفاق نمی افتد و فقط می تواند عناصر پشت DialogBox را غیر فعال کرد با استفاده از تکه کدهای زیر می توانید به راحتی به این functionality برسید.
.mask-panel {
filter:alpha(opacity=50);
-moz-opacity:.50;
opacity:.50;
background: gray;
}

ابتدا css rule بالا را درون فایل css خود کپی کنید.
فرض می کنیم که برنامه شما یک پنل دارد که 100 درصد صفحه را پوشانده است وتمامی عناصر صفحه درون آن افزوده می شود و نام آن mainPanel است. کافی است شما هر زمانی که می خواهید DialogBox خود را نمایش دهید با استفاده از کد زیربه mainPanel یک style جدید اضافه کنید (همان css rule که در بالا تعریف شد):

mainPanel.addStyleName("mask-panel");

و زمانی که DialogBox بسته می شود آن style را حذف کنید:

mainPanel.removeStyleName("mask-panel");

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

نیاز به برنامه نویس GWT (موقعیت شغلی)

سلام
به برنامه نویس GWT جهت همکاری در یک شرکت بزرگ نرم افزاری (واقع در تهران) با مهارت های زیر بصورت تمام وقت نیازمندیم:

مهارت ها :
  • GWT
  • JPA
  • JSP و Servlet
علاقمندان می توانند resume خود را به پست الکترونیکی zarinfam.s@gmail.com ارسال کنند.

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

RootPanel در GWT

RootPanel اصلی ترین پنلی است که شما در تولید یک برنامه GWT به آن احتیاج دارید ، این پنل در رابط کاربری که توسط شما تولید می شود نمایان نیست در حقیقت این پنل یک container برای عناصر پویای برنامه شما می باشد. این پنل در بالاترین سطح سلسله مراتب رابط کاربری هر برنامه GWT قرار دارد. دو دلیل برای استفاده از RootPanel وجود دارد ، یکی برای ایجاد بدنه داخلی صفحه برنامه شما می باشد و دیگری برای ایجاد عناصر خاص بصورت توکار در بدنه برنامه می باشد.
پنل اصلی با wrap کردن (بسته بندی کردن) یک عنصر در صفحه HTML کار می کند. بصورت پیش فرض RootPanel عنصر body صفحه HTML را wrap می شود. البته شما می توانید هر کدام از عناصر صفحه را wrap کنید بشرطی که آن عنصر HTML را نام گذاری کنید (id داشته باشد)و در زمان فراخوانی RootPanel آن نام را بعنوان پارامتر ارسال کنید.

RootPanel.get() // Default. Wraps the HTML body element.
RootPanel.get("yourHTMLElementName") // Wraps any HTML element with an id of "stockList"

یک صفحه اصلی می تواند حاوی چندین RootPanel باشد. برای مثال اگر شما چندین کامپوننت GWT یا پنل را درون صفحه اصلی قرار دهید ، هر کدام از آنها می توانند بصورت مستقل پیاده سازی شوند و درون RootPanel مخصوص به خود قرار گیرند.
پس از اینکه با استفاده از متد get به ارجاع RootPanel مورد نظر خود دسترسی پیدا کردید می تواند با استفاده از متد add کامپوننت ها و پنل های مورد نظر خود را درون آن قرار دهید.

RootPanel.get() .add(...);

شاد باشید.

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

چرا گوگل Eclipse را بعنوان محیط توسعه برنامه های GWT پیشنهاد می کند ؟

پس از چندین سال که گوگل هیچ محصولی را بصورت رسمی برای توسعه برنامه های GWT معرفی نکرده بود ، بلاخره با تولید یک plugin برای Eclipse بصورت رسمی Eclipse را به توسعه دهندگان GWT پیشنهاد می کند.


از بین IDE های مشهور جاوا (Intellij , Eclipse , Netbeans) اولین IDE که بصورت رسمی از پروژه های GWT پشتیبانی کرد Intellij بود اما با این وجود باز هم گوگل محصول خود را تولید کرد.

نکته قابل توجه این است که گوگل استفاده از plugin خود را فقط پیشنهاد می کند و به همراه آن با قرار دادن یک Ant build فایل در کنار پروژه های تولید شده این امکان را به توسعه دهندگان می دهد که از هر کدام از IDE های دلخواه خود استفاده کنند.(توسعه برنامه های GWT با Netbeans)

اما از میان این IDE های محبوب جاوا چرا گوگل Eclipse را انتخاب کرد ؟
به نظر من دلیل این کار تفاوتی است که در ساختار و فلسفه وجودی پروژه متن باز Eclipse در برابر با Netbeans و Intellij وجود دارد می باشد. پروژه متن باز Eclipse یک پلتفرم تولید نرم افزارهای Desktop می باشد (نه یک محصول) به همین دلیل است که در حال حاضر تجاری ترین و محبوبترین IDE جاوا است. Eclipse از لحاظ جایگاه مانند Kernel Linux است ، یعنی توسط یک تیم minimal نیازمندی های یک محیط توسعه داده می شود سپس توزیع کنندگان برروی این بستر محصولات خود را ارئه می دهند. (Netbeans هم چنین رویه ای را دارد ولی تمرکز تیم توسعه بیشتر برروی محصول بودن است).
از طرف دیگر از زمانی که بنیاد Eclipse (در سال 2001) توسط IBM شکل گرفت ، این بنیاد بصورت مستقل اداره می شود و به همین دلیل از همان زمان شرکت های زیادی محصولات خود را بر پایه Eclipse تولید کرده اند.
گوگل نیز به دلیل فراگیر بودن Eclipse و مواردی که در بالا ذکر شد Eclipse را بعنوان IDE پیشنهادی خود برگزیده است.

بهرحال این اقدام گوگل یک قدم رو به جلو برای GWT و استفاده کنندگان آن به حساب می آید.

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

نکاتی ارزشمند درباره ساختن کامپوننت (component) در GWT (قسمت 2)

ادامه از (قسمت 1)

2.
بازسازی و استفاه مجدد از کامپوننت ها (Recycle and reuse): زمانی که یک کامپوننت مکررا در برنامه شما (درون فرم ها و سایر کامپوننت ها) مورد استفاده قرار می گیرد ، از نوشتن کدهای تکراری پرهیز کنید. در این موقعیت بهتر است کامپوننت جدید خود را از کامپوننت های قابل استفاده مجدد کوچکتری که تولید می کنید بسازید. شما با این روش پیچیدگی کامپوننت خود را کاهش می دهید و عملیات تست را ساده تر می کنید (البته باید coupling and cohesion را رعایت کنید) و علاوه بر این ها قابلیت استفاده مجدد کامپوننت ها را نیز بالا می برید.
برای مثال در تکه کدهای زیر برای ساختن یک فرم ورود کاربران (Login Panel) بجای اینکه Login Panel را یک کامپوننت در نظر بگیریم ، یک کامپوننت کوچکتر دیگر (LabeledTextBox ) طراحی می کنیم و از این کامپوننت کوچکتر درون Login Panel استفاده می کنیم.

public class LoginPanel extends Composite {

private final VerticalPanel container;

private final LabeledTextBox usernameTextBox;
private final LabeledTextBox passwordTextBox;

private final Button loginButton;

public LoginPanel() {
container =
new VerticalPanel();
initWidget(container);

usernameTextBox =
new LabeledTextBox("Username");
container.add(usernameTextBox);

passwordTextBox =
new LabeledTextBox("Password", true);
container.add(passwordTextBox);

loginButton =
new Button("Login");
container.add(loginButton);
}

@Override
protected void onLoad() {
super.onLoad();
usernameTextBox.setFocus(
true);
}
}

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

نکاتی ارزشمند درباره ساختن کامپوننت (component) در GWT (قسمت 1)

شاید برای کسایی که تازه کار با GWT رو شروع کردن این سوال پیش بیاد که بهترین روش برای تولید یک کامپوننت رابط کاربری (GUI) جدید در GWT چیست؟
در این مطلب (و مطالب آینده) به ذکر چند نکته برجسته در این باره می پردازیم:
  1. همیشه composition (ترکیب) را به وراثت ارجحیت دهید. همانطور که در تکه کدهای زیر مشاهده می کنید ، در تکه کد اول بمنظور تولید کامپوننت OverExtendedWidget که خصوصیات و رفتارهایی شبیه HorizontalPanel دارد ، بصورت مستقیم کلاس OverExtendedWidget از کلاس HorizontalPanelارث برده است. با این روش شما با جزئیات پیاده سازی HorizontalPanel درگیر می شوید و در صورتی که بخواهید برای توسعه قابلیت های کامپوننت خود (OverExtendedWidget ) یکی از متدهای HorizontalPanel را override کنید ممکن است این کار به عملیات درونی HorizontalPanel آسیب برساند و در نهایت عملیات کلی کامپوننت شما را مختل کند. اما با استفاده از تکه کد دوم که روش پیشنهادی GWT است شما با جزئیات پیاده سازی HorizontalPanel درگیر نمی شوید و در عین حال به راحتی می توانید از متدهای public کلاس HorizontalPanel در کامپوننت خود استفاده کنید و درکنار این ها می توانید بدون نگرانی از تداخل ، قابلیت های جدید به کامپوننت خود اضافه کنید.
تکه کد اول:


public class OverExtendedWidget extends HorizontalPanel {

public OverExtendedWidget() {

//...
}
}


تکه کد دوم:


class ConservativeWidget extends Composite {

private final HorizontalPanel panel;

public ConservativeWidget() {
panel =
new HorizontalPanel();
initWidget(panel);

// ...
}
}



ادامه دارد (قسمت2).
شاد باشید.
۲۰ ارديبهشت ۸۸ ، ۰۸:۲۵ ۰ نظر موافقین ۰ مخالفین ۰
سعید زرین فام

دانلود Google Web Toolkit بدون استفاده از ...

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

همین الان دانلود کنید

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

GWT 1.6 و دوستان!

گوگل طی یک اقدام ناگهانی دیروزGWT نسخه 1.6 را release نهایی کرد. دلیل این کار پشتیبانی سرویس Google App Engine از جاوا می باشد (تا قبل از این Google App Engine فقط از Python پشتیبانی می کرد) ، گوگل با این کار به توسعه دهندگان GWT این امکان را داد که برنامه های GWT خود را (با ساختار جدید در نسخه 1.6) و با استفاده از پلاگ این Google Plugin for Eclipse ، به راحتی برروی سرویس Google App Engine قرار دهند!
سرویس Google App Engine با پشتیبانی از جاوا بطور قطع از محبوبیت بیشتری برخوردار خواهد شد و درامد بیشتری را برای گوگل به همراه خواهد داشت ، Google Plugin for Eclipse نیز باعث راحتی استفاده از GWT (و...)می شود.

GWT (Google Web Toolkit): ابزار توسعه برنامه های وب بر پایه AJAX با استفاده از زبان برنامه نویسی جاوا.
Google App Engine: سرویس محاسبات ابری (cloud computing) گوگل که به توسعه دهندگان این امکان را می دهد برنامه های تحت وب خود رابا نام دومین (domain) دلخواه خود برروی زیرساخت های گوگل مستقر کنند (به عبارت دیگراز زیرساخت های گوگل بعنوان host استفاده کنند).

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

کاربرد اصلی GWT

تا به حال مطالب زیادی در باره معماری ، ساختار و مزایای GWT پست کرده ام ، امروز قصد دارم یک نکته در مورد کاربرد GWT ذکر کنم که هم می تواند جزو معایب این Framework و هم مزایای آن باشد.
موتورهای جستجو (Google ، Yahoo و...) نمی توانند برنامه های وب تولید شده توسط GWT را برای عملیات جستجو ایندکس گذاری کنند.
برای توضیح این امر ذکر یک نکته ضروری است که GWT یک Framework برای تولید برنامه های تحت وب می باشد نه برای تولید وب سایت.
برنامه های تولید شده توسط GWT با جاوااسکریپت و ساختار DOM مرورگر کار می کنند در حالی که موتورهای جستجو قابلیت ایندکس کردن برنامه های جاوا اسکریپت را ندارند.
از طرف دیگرهمانطور که ما از موتورهای جستجو انتظار نداریم برنامه های وب Flash یا Applet را ایندکس کنند نباید انتظار داشته باشیم بتوانند برنامه های GWT که ساختار اسکریپتی دارند را برای جستجو ایندکس کنند.

نتیجه: تمرکز GWT برای تولید برنامه های تحت وب (مانند: Gmail ، Yahoo Mail ، Google Reader و...) است و به عبارت دیگر GWT یک Framework خاص منظور برای تولید برنامه های تحت وب است نه وب سایت. که این را می توان ضعف GWT نامید اگر بگوییم چرا این Framework همه منظوره نیست و یا می توان قدرت آن نامید اگر به این نکته توجه کنیم که در یک زمینه خاص (تولید برنامه های Full Ajax تحت وب) تمرکز کرده است.

شاد باشید.

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

قابلیت GWT Java to JavaScript Compiler

بمنظور اینکه کدهای جاوا اسکریپت تولید شده توسط GWT Java to JavaScript Compiler برروی تمامی مرورگرها یکسان نمایش داده شود این کامپایلر در هنگام تولید کد جاوا اسکریپت ، درموارد خاصی ، برای مرورگرهای مختلف کد های جاوا اسکریپت جداگانه تولید می کند (بخصوص برای IE 6).
اما امکانی وجود دارد که ما می توانیم با استفاده از آن به کامپایلر اعلام کنیم که فقط برای یک یا چند مرورگر خاص عمل کامپایل را انجام دهد با افزودن تکه کد زیر به فایل GWT Module خود می توانید این کار را انجام دهید.
تکه کد بالا به GWT Java to JavaScript Compiler اعلام می کند که کاربران نرم افزار فقط از IE 6 استفاده می کنند و لزومی ندارد کد جاوا اسکریپت تولید شده با تمامی مرورگرها سازگاری داشته باشد. این کار سبب کاهش حجم فایل جاوا اسکریپت تولید شده می شود.

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

GWT Java to JavaScript Compiler

GWT Java to JavaScript Compiler یکی از قابلیت های فوق العاده در GWT است که یک کامپایلر در اختیار توسعه دهنده قرار می دهد که کدهای جاوای را به JavaScript کامپایل می کند!!!
از مزیت های اصلی این کامپایلر می توان به موارد زیر اشاره کرد:

- برنامه نویس به زبان برنامه نویسی محبوب جاوا برنامه می نویسد.
- برنامه نویس می تواند از محیط های برنامه نویسی جاوا (مانند: Netbeans ، Eclipse و ...) استفاده کند.
- کد های جاوا اسکریپت کامپایل شده برروی تمامی مرورگرهای موجود به یک شکل اجرا می شود.
- کد جاوا اسکریپت تولید شده نسبت به کدهای جاوا اسکریپتی که توسط برنامه نویس نوشته می شود حجم کمتری دارد.
و...

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

GWT 1.6 on Netbeans 6.5

Hi
In this post i describe how to develop your gwt application in the Netbeans IDE.
requirement:Netbeans IDE 6.5 , GWT 1.6

1. Choose File > New Project (Ctrl-Shift-N). Under Categories, select Java. Under Projects, select Java Free-Form Project. Click Next.


2. Select the Location of your GWT project , Other fields will fill automatically. Click Next.

3. In the Run Project field select hosted from combo box. Click Next.

4. In the Source Package Folder section select src folder from your GWT project. Click Next.

5.Add your library like, gwt-servlet.jar ,... in the Java Source Classpath section. Click Finish.

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

انتشار GWT 1.6 Milestone 1

سلام
گوگل با عرضه GWT 1.6 توسعه دهندگان رو وارد مرحله جدیدی در توسعه web application با GWT خواهد کرد. همانطور که تمرکز در ارائه نسخه 1.5 بر روی قدرتمندتر کردن GWT بود (به نسبت نسخه 1.4) در نسخه 1.6 تمرکز برروی ساده سازی و سریعتر کردن فرایند تولید web application با GWT است.
البته برای نسخه 1.6 فعلا نسخه نهایی ارائه نشده ولی در زیر توضیحاتی کلی در مورد تغییرات این نسخه با نسخه 1.5 آورده شده است:
  1. ساختار جدید پروژه: خروجی قدیمی تولید شده توسط ابزارهای GWT در نسخه های قدیمی جای خود را با ساختار استاندارد web application ها در جاوا یعنی war فایل تعویض کرده اند و ساختار دایرکتوری یک پروژه GWT تغییر کرده است (البته از ساختار نسخه های قبلی کماکان پشتیبانی می شود). ساختار جدید پروژه به شما این امکان را می دهد که علاوه بر Eclipse از سایر محیط های توسعه جاوا مانند Netbeans بدون نصب هیچ پلاگ استفاده کنید (در حالی که در نسخه قبلی فقط ساختار پروژه بصورت رسمی توسط Eclipse باز می شد و در سایر محیط ها با نصب پلاگ این امکان پذیر بود.) 
  2. پروژه هایی که از امکان RPC در GWT استفاده می کنند از این به بعد باید تنظیمات خودشون رو در فایل web.xml که در ساختار جدید پروژه وجود دارد قرار دهدند.(/war/WEB-INF/web.xml)
  3. صفحات HTML host  می تواند در شاخه public پروژه قرار نگیرد.
  4. بهبود hosted mode: علاوه بر پشتیبانی از GWTShell قدیمی که از نسخه سرور tomcat بصورت توکار استفاده میکرد hosted mode جدید از سرور jetty برای بالا بردن کارایی استفاده می کند و همچنین دکمه Restart Server نیز به محیط hosted mode اضافه شده است که باعث restart شدن سرور jetty می شود.
  5. سیستم جدید مدیریت رویدادها با جایگزینی EventHandler ها با Listener ها.
  6. کامپوننت های جدید مانند DataPicker و LazyPanel
در کل به نظر می رسد گوگل از تمام بازخورد های نسخه های 1.4 و 1.5 استفاده کرده و به سرعت نسخه 1.6 را عرضه کرده (گوگل برای نسخه 1.4 حدود 62 عرضه ارائه کرد و سپس نسخه 1.5 را ارئه کرد در حالی که هم اکنون نسخه 1.5 فقط 3 عرضه داشته گوگل نسخه 1.6 رو عرضه کرده که این نشان دهنده ضرورت ساده سازی بوده است).

تنها مشکلی که وجود دارد محدودیت دانلود این ابزار قدرتمند برای ایرانی ها است که امیدوارم به زودی حل بشه.

مطالب مرتبط:

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

سازنده (constructor) بدون پارامتر برای کلاس های serializable در GWT

امروز به این error که توسط کامپایلر GWT صادر شد برخوردم :
Error: Type ‘com.saeed.SampleClass’ was not serializable and has no concrete serializable subtypes

درحالی کلاس SampleClass بصورت زیر تعریف شده بود :
public SampleClass  implements IsSerializable {
public String myStr;
public SampleClass(String str)
{

this.myStr = str;
}
}
در حالی که کلاس زیر بدون مشکل کامپایل شد :
public SampleClass  implements IsSerializable {
public String myStr;
}
بعد از کلی جستجو به این نکته برخوردم که : کلاسهای serializable در GWT باید سازنده (constructor) بدون پارامتر داشته باشند :
public SampleClass  implements IsSerializable {
public String myStr;
public SampleClass(String str){} public SampleClass(String str)
{

this.myStr = str;
}
}

شاد باشید

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

استفاده از فرمان 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 نامیده می شود)

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