חלונות 8 מאחורי הקלעים: WinRT וטכנולוגיות הפיתוח החדשות

ממשק המשתמש החדש של חלונות 8 "מטרו" כבר הוזכר במספר הזדמנויות, אבל חלונות 8 כולל אינספור הפתעות נוספות. החידוש הכי משמעותי הוא כמובן WinRT, ה-API שמחליף את Win32

ממשק המשתמש החדש של חלונות 8 "מטרו" כבר זכה לאינספור אזכורים, אבל חלונות 8 מביאה הפתעות מתחת לקלעים לא פחות מאשר מעל. החידוש הכי משמעותי הוא כמובן WinRT, ה-API שמחליף את Win32, וכולל שלוש דרכים שונות לכתיבת אפליקציות, כל אחת עם הפלוסים ועם המינוסים שלה:

C# + XAML

C++ + XAML

 JavaScript + HTML5

תמיכה רטרואקטיבית

המודל התכנותי הישן של חלונות 7 עדיין נמצא כאן (כל אפליקציה של חלונות 7 עדיין תעבוד בחלונות 8), אבל בממשק הישן (Legacy). בממשק החדש, מטרו, תאפשר עבודה עם הפלטפורמות החדשות. לכולן יש גישה מלאה ל-API של חלונות החדש, שנקרא WinRT. סביבת דוט נט סבלה מנחיתות ביחס ל-C++ בעשר שנים האחרונות, היות וה-API הישן: Win32 לא היה דוט נטי (ואפילו לא C++ לגמרי. הממשק הוא ממשק Com שנראה הרבה יותר כמו C).

לא עוד. לדוט נט יש גישה ל-API באותה רמה שיש ל-C++, ואלה חדשות מאוד טובות למתכנתי דוט נט. WinRT עדיין כתוב ב-C++, אך עכשיו הוא כתוב כך שמבחינת מתכנתי הדוט נט זה שקוף לחלוטין.

הבשורה המשמעותית יותר היא ל-HTML. בניגוד למה שחשבתי בפעם הראשונה ששמעתי את המושג Native HTML בכנס מיקס 2011 שזה סה”כ עוד דרך של מיקרוסופט להגיד שהפלטפורמות שלהם יתמכו ב-HTML5 בצורה הטובה ביותר – מיקרוסופט הבטיחו וקיימו הרבה מעבר למה שיכולתי לחלום. HTML5/JS מקבל גישה ישירה ל-WinRT בדיוק כמו הפלטפורמות האחרות, ויכול לעשות (כמעט) כל מה שהפלטפורמות האחרות יודעות לעשות. ביוני 2011 כבר רשמתי שחלונות 8 היא רעידת אדמה למפתחים, ועכשיו אפשר לראות את זה קורה. חלונות 8 הינה מערכת ההפעלה המשמעותית הראשונה שמאפשרת פיתוח אמיתי ב-HTML5, והאפשרויות העומדות בפני מפתחי HTML5 גדולות מתמיד.

הדיאגרמה שלעיל פורסמה במהלך הרצאת המליאה הראשית בכנס בילד, וזכתה כמעט מיד לביקורת על היותה לא מדויקת. מהדיאגרמה לא ברור האם ה-CLR עדיין כאן. DirectX נעלם לגמרי מהתמונה ולא ברור לאיזו טכנולוגיה יש גישה ל-DirectX. להוסיף עוד חטא על פשע סילברלייט בכלל לא מופיע אפילו בצד הלגאסי… (Haven’t the Silverlight people suffered enough?!)

הביקורת נכונה, אבל הדיאגרמה סה”כ הגיונית (קשה ליצור דיאגרמה שתהיה גם נכונה טכנית וגם מספיק “שיווקית” וקלה לתיאור). דאג סבן מחברת טלריק העלה דיאגרמה יותר מדויקת שנראית כך:

לצד זה שסילברלייט אכן נמצא כאן (ולא בצד שמאל.. סילברלייט לא קיים במטרו), מהדיאגרמה הזו הרבה יותר פשוט להבין את הדימיון ואת השוני בין הטכנולוגיות האפשרויות. לכל אחת מהטכנולוגיות יש את היכולות שלה, וסיבות שונות לבחור בה:

C# + XAML

השם המוזר הזה (לא WPF, ולא סילברלייט. זאמל!) בא בשביל לאפשר למיקרוסופט בצורה אלגנטית לא לדבר על איזו טכנולוגיה החליפה איזו טכנולוגיה. המודל התכנותי (לעבוד מעל מערכת הפעלה ולא בתוך פלאגין של דפדפן) הוא של WPF, אבל הקוד מבוסס דוקא על סילברלייט (או כפי שכבר שמעתי מישהו סרקסטי מתבטא – הרגו את סילברלייט, ביתרו את הגופה, ומחלקי הגופה יצרו את C# + XAML ).

במובן מסויים יש כאן את המינוסים של WPF (רק לחלונות) ואת המינוסים של סילברלייט (לא מבוסס על קוד דוט נטי מלא) ביחד, ואלו החדשות הרעות. יחד עם זאת, יש בזה לא מעט הגיון. חשוב לציין כי הקוד לא תואם ל-WPF או לסילברלייט, אך שינוי קוד קיים והתאמתו (Porting) לא מורכב במיוחד, ויש כבר בלוגים המתארים את התהליך.

הפלוסים

1. מתכנתי WPF וסילברלייט ירגישו בבית.
2. הדרך הקלה והפרודקטיבית ביותר לכתוב לחלונות 8 (וזה לא ישתנה בזמן הקרוב). לכל מי שהספיד את דוט נט – זה היה טיפה מוקדם מדי.

C++ + XAML

C++ מקבלת עדנה מחודשת. יחד עם שחרור C++11, השפה הישנה והטובה מקבלת כאן חיזוק משמעותי. C++ היא מהירה, אבל עד היום במידה והיינו רוצים תמיכה ביכולות גרפיקה, שפה דקלרטיבית ל-UI, ויכולות Layout מודרניות – ++C הייתה בעייתית (למרות ש QT סיפק לא מעט). הרבה מאוד חברות שעברו מ++C לWPF בשנים האחרונות עשו את המעבר הקשה בעיקר בשל כך. החל מחלונות 8, ++C מקבלת יכולות מודרניות לחלוטין, ואם C# מיישרת קו עם C++ בכל מה שקשור לגישה למערכת ההפעלה, C++ מיישרת קו עם C# בכל מה שקשור לגרפיקה ולגישה מודרנית ל-UI.

יחד עם זאת, C++ היא עדיין שפה לא מנוהלת והרבה יותר קשה לכתוב בה. אני רגיל שה-Garbage Collector מנקה אחרי, ואין לי כל כך רצון לחזור לכאב ראש הזה…

אז למה כן לכתוב ב++C?

הפלוסים

היחידה עם גישה ל-DirectX, ולפיכך משחקים עם ביצועים מקסימליים יכתבו כמעט אך ורק ב-C++. קוד לא מנוהל עדיין מאפשר שליטה מלאה יותר על מה שקורה מאחורי הקלעים, וזה כנראה אף פעם לא ישתנה. מה עם XNA אתם שואלים? בינתיים אין תוכניות כאלו…

JavaScript + HTML5

אין ספק שזו הפלטפורמה המדוברת והמעניינת ביותר. HTML5 מקבל גישה בפעם הראשונה אי פעם למערכת הפעלה סטנדרטית (ולא, ChromeOS לא נחשב). החלום של “כתוב פעם אחת, הרץ בכל מקום” מעולם לא היה קרוב יותר להתממש. HTML5 בחלונות 8 יכול לרוץ בשני מודלים שונים. דרך הדפדפן, וישירות מעל מערכת ההפעלה כאפליקציית מטרו בדיוק כמו C# ו++C.

שתי הדרכים דומות למדי. (אותו מנוע של IE10 מאחורי הקלעים), אם כי הדרך השניה היא החידוש הגדול. כאשר HTML5 רץ כאפליקציה, יש לו גישה מלאה ל-WinRT ולכל היכולות המיוחדות של מערכת ההפעלה. למיטב הבנתי כל דבר שאפשר לכתוב ב-C# יהיה אפשר לכתוב גם ב-HTML5, וזו אפשרות מדהימה.

יחד עם זאת, לכתוב בJavaScript עדיין הרבה יותר קשה מC#. שפת JavaScript היא שפה דינאמית ולא מקומפלת, מה שאומר בין השאר שהרבה יותר קשה לכתוב לה תמיכה טובה בכלי פיתוח – אינטליסנס, ריפקטורינג, וכו’ (Intelisense, Refactoring). זו שפה ללא יכולות שכבר התרגלנו לראות בשפות מודרניות כגון Generics, Interfaces וכ"ו ולכתוב אפליקציות מלאות וגדולות ב-JavaScript עדיין הרבה יותר קשה מאשר ב-C#.

גם כאן, מיקרוסופט מציעה לא מעט. כלי הפיתוח החדשים: Visual Studio 11, ו Expression Blend 5 מהווים קפיצת מדרגה משמעותית בכל מה שקשור לתכנות ב-HTML5.

ממה שראיתי עד עכשיו, כלי הפיתוח החדשים מספקים אפשרויות אינטליסנס וריפקטורינג מרשימים למדי, והרבה פיצ’רים שהתרגלנו אליהם ב-C# סוף סוף מגיעים ל-JS.

הפלוסים

1. לכתוב פעם אחת ולהריץ בכל מקום. (עם התאמות, לא גדולות במיוחד).
2. לשפות לא מקומפלות יש גם פלוסים. אחד הפלוסים המשמעותיים ביותר מגיע עם Blend5 שיאפשר לעצב אפליקציה תוך כדי ריצה!
היכולת הזו לא פחות ממדהימה, ולמעשה מאפשרת את היכולת הכי חזקה של MVVM – בלנדאביליות (Blendability) בלי טיפת מאמץ ועם הרבה יותר כוח. (הפיצ’ר המדהים ביותר שראיתי מזה הרבה זמן. ארחיב עליו בפוסט עתידי)
3. היות ו-HTML5 עובד דרך IE10, מובטחים לנו את כל הפיצ’רים של HTML5 עם סטנדרטים מלאים, אין צורך בהתאמה לאחור במידה וכותבים לחלונות 8.
4. לכתוב פעם אחת ולהריץ בכל מקום כבר אמרנו?

למתכנתים יש נטייה לעיתים קרובות להתאהב בטכנולוגיה בה הם כותבים (וגם אני חוטא בזה מדי פעם), אבל חשוב לזכור שטכנולוגיה היא רק כלי. במידה ואני יכול לעשות עם שפה X מה שאני רוצה לא באמת אכפת לי איזו שפה זו. לכל אחת מהטכנולוגיות יש פלוסים ומינוסים ברורים, ואני מניח שיצא לי לפתח לא מעט לשלושתן. יחד עם זאת, HTML5 נראה לי מרתק במיוחד, היות וזה הפתח היחידי לטכנלוגיה שהיא באמת Cross-Platfrom בסופו של יום, ולכן בסדרת הפוסטים הנוכחית נתרכז בטכנולוגיה הזו.

פוסט זה פורסם לראשונה בבלוג "לגו של גדולים"

אלעד כץ

ארכיטקט תוכנה בחברת סלע המתמחה ב-WPF, סילברלייט, ו-Asp.NET. בעל ניסיון של יותר מעשר שנים בטכנולוגיות דוט נט השונות

הגב

6 Comments on "חלונות 8 מאחורי הקלעים: WinRT וטכנולוגיות הפיתוח החדשות"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 
Sort by:   newest | oldest | most voted
אבי
Guest
תודה אלעד, חידדת כאן כמה דברים שהיו קצת בערפל, לפחות לגבי עתיד Silverlight … כי קצת לא ברור מה הולך עם זה והאם יש לזה עתיד, עם כל פליטות הפה של עובדי מיקרוסופט זה בהחלט נשמע כאילו SL הולכת להעלם או אולי להתקיים רק ב-WP7 והלאה… והמהלך של Adobe לגבי סוף עידן פלאש כפלאגין לדפדפני מובייל לא תרם גם להשערות בנוגע לעתיד Silverlight ב-WEB… אז דומה שלמיקרוסופט יש תוכניות אופטימיות לגבי SL וזה טוב, מה שיותר משמח אותי כאיש UI זה של-XAML יש עתיד גם בגזרת ה-HTML5 וזה מצויין! כבר הספקתי לראות שבגרסאת BLEND5 שבאה עם WIN8 יש אופצייה לפתח… Read more »
אלעד
Guest
@אבי: 1. לגבי סילברלייט אני לא כל כך רואה מקום לאופטימיות. המודל של הפלאגין די ננטש. זה נכון שיהיה אפשר להריץ אותו בממשק הישן של חלונות 8, אבל יש סיבה שקוראים לו הממשק הישן. זה בפירוש לא העתיד. לגבי סילברלייט עצמו, גרסה 5 מעבר לפינה, אבל לא ידוע כלום לגבי הכוונות של מיקרוסופט להמשך הדרך – סילברלייט 6, ולהערכתי מיקרוסופט עצמם עדיין לא יודעים אם יהיה לזה המשך. רוב ההשקעה של מפתחים וחברות בסילברלייט לא יורדת לטמיון, אך סילברלייט כפלאגין נראה לי כחסר עתיד. 2. WP7 זה דוגמא מאוד טובה. זה ש*קוראים* לזה סילברלייט לא הופך את זה לסילברלייט. שם… Read more »
אבי
Guest
דווקא קיוויתי שאפשר להיות קצת אופטימיים לגבי SL, אבל אני מניח שלא אתה ולא אני נצליח להבין את מה שמיקרוסופט לא ממש טורחת להבהיר… וכן, כמו שאמרתי, כל נושא הפלאגינים לא ממש משדר תקווה לעתיד, בין אם זה מבחינת בעיות אבטחה ושאר הסיבות… לפי מה שאתה אומר, אז גם לא שווה להמר על SL כי למרות שמיקרוסופט לא באמת "הורגת" את זה, מתישהו כך או כך זה ידעך… אז WPF נשארת אחלה של אופציה… נכון שכרגע BLEND5 יודע רק לייצא HTML5 לממשק המטרו, אך אני מאמין שמיקרוסופט ינקטו בפעולה דומה לזו של אדובי ויאפשרו לייצא HTML5 לשלל הדפדפנים דרך BLEND5…… Read more »
אלעד
Guest
@אבי, בלנד עצמו לא קשור ישירות לMetro, והוא מאפשר לעבוד עם HTML בצורה כללית. יחד עם זאת, ממה שראיתי עד עכשיו (וזה לא הרבה) בבלנד, יש לו התנהגויות מסוימות שכן קשורות לחלונות8 ספציפית, כמו עבודה עם קונטרולים של WinJS וכיוצא בזה, אם כי אני עדיין לא בטוח. תמיד כדאי להסתכל על דברים מהסוג הזה על פי האינטרסים של החברות המדוברות. למיקרוסופט יש מערכת הפעלה, ומטרתה היא להקל על כתיבת אפליקציות למערכת ההפעלה שלה. שווה למיקרוסופט להצטייר ככזו שתומכת בסטנדרטים פתוחים והכל, אבל מה שמעניין אותה בשורה התחתונה זו מערכת ההפעלה שלה. האינטרסים של אפל די דומים, אבל האינטרסים של אדובי… Read more »
אבי
Guest
אכן, כפי שאמרת, לכל חברה יש את האינטרסים שלה, מסכים לגמרי, אך אני עדיין חושב שאם מיקרוסופט תאפשר לפתח בכלים שלה אפליקציות HTML5 שהן לא רק לממשק המטרו שלה, היא רק תרוויח מזה, כי מכולן יחד, נכון לעכשיו לאדובי יש את היתרון הכי גדול בלתת פתרונות פיתוח לHTML5 בדומה למה שהיא עושה בגזרת הפלאש, נורא קל להם לאפשר לנו כבר כיום לייצא דברים (לא מורכבים מדי נכון לעכשיו) לHTML5 במקום לעשות זאת מאפס ולפתח פעם אחת בפלאש ופעם שניה בHTML… וגם לפי הKEYNOTE האחרון של אדובי – http://max.adobe.com/online/ אפשר לראות את היתרון שלהם בבירור, הם כבר עובדים על כלים שיקלו… Read more »
אלעד
Guest

@אבי

גוגל מיקרוסופט ופייסבוק הן חברות פלטפורמה, אדובי לא. ככזו היא שבירה מאוד לעומתן.
חברות פלטפורמה *נורא* קשה לנצח במגרש שלהן, עד בלתי אפשרי.

wpDiscuz

תגיות לכתבה: