Google Web Toolkit

ארגז הכלים של גוגל (באנגלית: Google Web Toolkit בקצרה: GWT) הוא פרויקט קוד פתוח של חברת גוגל הכולל סט כלים המאפשר למפתחי אינטרנט ליצור ולתחזק אפליקציות מורכבות הכתובות בשפת ג'אווה. בעזרת סט הכלים ניתן ליצור ממשק משתמש לדפדפן ב-HTML ו-Javascript (באמצעות Ajax) מתוך קוד ג'אווה. מלבד מספר מצומצם של ספריות, כל קובץ ממקור ג'אווה יכול להיבנות על כל פלטפורמה נתמכת בעזרת הכלים האוטומטיים של ארגז הכלים. המוצר מופץ תחת רישיון אפאצ'י גרסה 2.0. GWT שם דגש על פתרונות יעילים לאתגרי Ajax חוזרים כמו הפעלת פרוצדורות א-סינכרוניות, ניהול סימניות, היסטוריית דפדפן, התאמה למדינות אחרות (בינלאומיות) ונגישות לכל סוגי הדפדפנים. הגרסה הראשונה של ארגז הכלים, גרסה 1 – 1.0RC (build 1.0.20), שוחררה ב-16 במאי 2006. גוגל הכריזה על ארגז הכלים בכנס של 2006, JavaOne . היסטוריית שחרור: GWT 1.0 ב-17 במאי 2006 GWT 1.1 ב-11 באוגוסט 2006 GWT 1.2 ב-16 בנובמבר 2006 GWT 1.3 ב-5 בפברואר 2007 GWT 1.4 ב-28 באוגוסט 2007 GWT 1.5 ב-27 באוגוסט 2008 GWT 1.6 ב-7 באפריל 2009 GWT 1.7 ב-13 ביולי 2009 GWT 2.0 ב-8 בדצמבר 2009 GWT 2.0.1 ב-2 בפברואר 2010 GWT 2.0.2 ב-12 בפברואר 2012 GWT 2.0.3 ב-19 בפברואר 2010 GWT 2.0.4 ב-2 ביולי 2012 GWT 2.1.0 ב-19 באוקטובר 2010 GWT 2.1.1 ב-16 בדצמבר 2010 GWT 2.2.0 ב-11 בפברואר 2011 GWT 2.3.0 ב-3 במאי 2011 GWT 2.4.0 ב-8 בספטמבר 2011 באוגוסט 2010 רכשה גוגל את חברת Instantiations, חברה הידועה בשל פיתוחיה עבור סביבת העבודה Eclipse, הכוללת את המעצב של ארגז הכלים אשר מאוחד כעת עם כלי פיתוח נוסף בשם Google plugin for Eclipse. עם כניסתה של Dart (שפת תכנות מבית גוגל), גוגל הרגיעה את קהילת המשתמשים ב-GWT שארגז הכלים ימשיך להיתמך בעתיד הקרוב, אך רמזה גם על התקרבות אפשרית בין שני עזרי הפיתוח שלה. יחד עם זאת, אנשי גוגל הודו שמספר מהנדסים שעבדו בעבר על ארגז הכלים עובדים כעת על Dart[דרוש מקור]. על ידי שימוש ב-GWT, מפתחים יכולים לפתח ולהפחית את כמות הבאגים ביישומי Ajax בשפת Java באמצעות כלי פיתוח לבחירתם. מהדר הנתונים של GWT מתרגם את יישומי ה-Java לקבצים עצמאיים של JavaScript שיכולים להיות מעורבלים או אופטימליים. GWT לא סובב רק סביב תכנות עצמאי; מדובר בסט כלים כללי לבניית כל סוג של תפקוד גבוה בשפת JavaScript. בפרזנטציות שונות מפתחי GWT מדגישים שהארגז איננו עוד ספריית Ajax. פילוסופיה זו לעיתים מפתיעה משתמשים חדשים ב-GWT שמצפים מהתוכנה לספק להם עבודת מסגרת מלאה, ואכן, הרבה החלטות אדריכליות נשארות לחלוטין בידי המפתח. הצהרת הכוונות של GWT מבהירה ומפרטת את התפקיד הפילוסופי של התוכנה אל מול תפקידו של המפתח. היסטוריית דפדפן היא דוגמה לכך: למרות ש-GWT שומר את היסטוריית המשתמש בדפדפן, הוא עדיין משאיר למפתח מקום להחליט כיצד למפות את ההיסטוריה למצבים אותם עוברת האפליקציה. יישום GWT יכול לעבוד בשני מצבים: מצב פיתוח (מצב מתארח, לשעבר) – היישום פועל בתור java bytecode בתוך java virtual machine. מצב זה משמש בדרך כלל לפיתוח, תמיכה בהחלפה חמה של קוד (שינוי קוד ללא הפרעה למערכת) והוצאת באגים. מצב הפקה (מצב אינטרנט, לשעבר) – היישום פועל בתור JavaScript ו-HTML טהור, שחובר ממקור ה-Java. מצב זה משמש את המערכת כאשר היא מוכנה להפצה. מספר תוספים בעלי קוד פתוח מאפשרים פיתוח GWT קל יותר בעזרת שימוש בסביבות תכנות ופיתוח אחרות (IDEs). לדוגמה, GWT4NB עבור NetBeans, Cypal studio for GWT, Eclipse ו-JDeveloper. תוסף גוגל ל-eclipse מתמודד עם רוב המטלות של GWT בסביבה, הוא כולל יצירת פרויקטים, הגדרתם והרצתם. המרכיבים העיקריים של GWT כוללים: עיבוד של GWT Java לשפה של JavaScript תרגום שפת תכנות Java לשפת תכנות של JavaScript. מצב פיתוח של GWT מאפשר למפתחים להריץ ולהוציא לפועל יישומי פיתוח GWT במצב פיתוח (היישום פועל ב-Java ב-JVM ללא הידור לשפת JavaScript). לפני גרסה 2.0, מצב "מתארח" ב-GWT סיפק דפדפן ייעודי לניפוי שגיאות בקוד של GWT. בגרסה 2.0, דף האינטרנט שמדבאגים מורץ בתוך דפדפן רגיל. מצב הפיתוח נתמך על ידי שימוש בתוסף של קוד מקומי שנקרא "the Google web toolkit developer plugin for many popular browsers". ספריית חיקוי JRE מימוש הספריות הבסיסיות והשימושיות ביותר של Java ב-JavaScript (כמו רוב חבילות Java.lang וחלק מחבילות Java.util). ספריית GWT Web UI סט של ממשקים וכלים ליצירת ממשקי משתמש גרפיים (widgets). מרכיבים של ממשקי משתמש גרפיים דינאמיים שניתנים לשימוש: מתכנתים יכולים להשתמש בסוגים שונים של ממשקים גרפיים שתוכננו מראש וחוסכים התנהגות דינאמית שלוקחת זמן רב, כמו לחצן גרור ושחרר או מבני עץ ויזואליים מתוחכמים. מנגנון RPC פשוט ניהול היסטוריית דפדפן תמיכה עבור ניפוי שגיאות בתוכנות Java GWT מספק תמיכה מלאה ברוב הדפדפנים הפופולריים. אינטגרציית JUnit תמיכה עבור לוקליזציה וגלובליזציה תמיכה עבור Html (בכפוף לשינויי API) המפתח יכול לערבב בין JavaScript שכתב בתוך קוד Java בשימוש ממשק JSNI תמיכה בשימוש APIs של גוגל ביישומי GWT. (לראשונה, תמיכה ב-Google Gears) קוד פתוח המפתח יכול לעצב ולפתח את היישום שלו באופן מונחה עצמים טהור, היות שהוא משתמש ב-Java (במקום ב-JavaScript). טעויות נפוצות ב-JavaScript, כמו טעויות כתיב או טעויות התאמה נתפסות בזמן ההידור. ה-JavaScript שמעבד ה-GWT מפיק יכול להיות מותאם לקוד קל להבנה או למעורבל וקל להורדה. מספר ספריות זמינות עבור GWT, על ידי גוגל וגורמים נוספים. אלו מרחיבים את תכונות ה-GWT. נכון לגרסה 2.4 (ספטמבר 2011), GWT מציע מספר יישומונים: כפתור כפתור לחיץ RadioButton תיבת סימון DatePicker ToggleButton תיבת טקסט תיבת סיסמה TextArea קישור ListBox CellList תפריט עץ CellTree תיבת הצעות RixhTextArea FlexTable רשת CellTable CellBrowser TabBar DialogBox ממשקים גרפיים של GWT כוללים גם מספר לוחות: PopupPanel StackPanel StackLayoutPanel HorizontalPanel VerticalPanel FlowPanel VerticalSplitPanel HorizontalSplitPanel SplitLayoutPanel DockPanel DockLayoutPanel TabPanel TabLayoutPanel DisclosurePanel ממשקים גרפיים משותפים רבים שלא נמצאים ב-GWT נמצאים בספריות של חברות אחרות, כמו Ext GWT, GWT Component Library, GWT-Ext, GWT Widget Library, GWTiger, Rocket GWT, Dojo, SmartGWT ועוד. המרחב הארגוני עושה שימוש נרחב ב-GWT בשל יכולותיו למנף טכנולוגיות ארגוניות נפוצות כגון Java ,אפאצ'י טומקט ,Eclipse ,אינטרנט אקספלורר, לוקליזציה וגלובליזציה. קל לבחון יישומי אינטרנט עשירים (RIA) של GWT המבוססים על Java בעזרת שימוש בכלי JUnit קיימים שבודקים עבודת מסגרת וכיסוי קוד, לעומת יישומים גדולים הכתובים בשפת JavaScript. בגלל ש-GWT מאפשר בזמן האיסוף אימות של תמונות, CCS ולוגיקה עסקית, הרבה פגמים נפוצים בפיתוח מתגלים אוטומטית ללא צורך בבדיקה ידנית שבדרך כלל נדרשת על ידי RIA's. בעוד שבדרך כלל משתמשים בו ליישומים פנימיים ללא פרסומות, גוגל ציין שחלק ממוצריו מבוססים על, כגון: AdWords, AdSense Orkut Google Wave Google Health Blogger חברות אחרות שמשתמשות ב-GWT רשומות ב-GWT Reference List. פלטפורמה Vaadin עברה לשימוש ב-GWT בשנת 2013. ב-8 בדצמבר 2009 גוגל השיקה את Google Web Toolkit 2.0 עם נותב מהירות. גרסה 2.0 של GWT מציעה מספר תכונות חדשות, ביניהן: במצב פיתוח (ידוע לשעבר בתור מצב מתארח מחוץ לתהליך,OOPHM) – לפני גרסה 2.0, מצב מתארח נהג לשבץ דפדפן מותאם שמאפשר להפעיל את גרסת ה-bytecode של היישום בזמן פיתוח. עם גרסה 2.0, מצב מתארח, נקרא כיום "מצב מפתח", מאפשר שימוש בכל דפדפן (נתמך) בשביל לראות את הדף עובר דיבאגינג, באמצעות תוסף לדפדפן. בין השאר מספק מצב הפיתוח את האפשרות לדבאג את האפליקציה במגוון סוגי פלטפורמות על ידי שימוש ב-TCP/IP.(לדוגמה, לדבאג על גבי אינטרנט אקספלורר בסביבת windows מתוך סביבת לינוקס). פיצול קוד – בעזרת מתן של "נקודות פיצול" בקוד על ידי המפתח, מעבד ה-GWT יוכל לפצל את קוד ה-JavaScript למספר גושים קטנים במקום הורדה אחת גדולה. דבר זה יוביל לזמן אתחול קצר יותר היות שגודל ההורדה ההתחלתי קטן. ממשק משתמש – בעזרת שימוש בפורמט של XML, תכונה חדשה שמספק GWT היא ה-UiBinder המאפשר בנייה של עמוד ללא שימוש בקוד, מה שמאפשר הפרדה מלאה בין בניית UI לבין ביצוע הפעולות שמאחוריו. איחוד משאבים – ממשק ה-ClientBundle יאפשר למשאבים מכל סוג (תמונות, CCS, טקסט, בינארי) להיות ארוזים יחד ומועברים בהורדה אחת. כתוצאה מכך יהיו פחות העברות חד צדדיות לשרת וכך זמן המתנה נמוך יותר ליישום. היות שמצב הפיתוח החדש הוריד את רוב פלטפורמות הקוד הספציפי, הגרסה החדשה תופץ כארכיון ייחודי, במקום כתמיכה אחת פר פלטפורמה כפי שקרה עם הגרסה הקודמת. כמסגרת כללית ליצירת ממשקים גרפיים באינטרנט, GWT יכול לשמש גם כמסגרת ליצירת ממשקים גרפיים לסלולריים ולטאבלטים, או על ידי יצירת הממשקים הגרפיים הדרושים והאנימציות מאפס, או על ידי שימוש באחת המסגרות הסלולריות של GWT. יישום HTML5 שנכתב בזכות GWT יכול להיות בעל זוויות נפרדות עבור סלולריים וטאבלטים. מספר ספריות GWT לסלולרי נפוצות הן: m-gwt GwtMobile gwt-mobile-webkit מדיה וקבצים בנושא Google Web Toolkit בוויקישיתוף אתר האינטרנט הרשמי של Google Web Toolkit (באנגלית) GWT Project, www.gwtproject.org GWT Project, www.gwtproject.org Google Relaunches Instantiations Developer Tools - Now Available for Free, GWT Blog (באנגלית)