חלונות 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 בסופו של יום, ולכן בסדרת הפוסטים הנוכחית נתרכז בטכנולוגיה הזו.
פוסט זה פורסם לראשונה בבלוג "לגו של גדולים"
הגב
6 תגובות על "חלונות 8 מאחורי הקלעים: WinRT וטכנולוגיות הפיתוח החדשות"
* היי, אנחנו אוהבים תגובות!
תיקונים, תגובות קוטלות וכמובן תגובות מפרגנות - בכיף.
חופש הביטוי הוא ערך עליון, אבל לא נוכל להשלים עם תגובות שכוללות הסתה, הוצאת דיבה, תגובות שכוללות מידע המפר את תנאי השימוש של Geektime, תגובות שחורגות מהטעם הטוב ותגובות שהן בניגוד לדין. תגובות כאלו יימחקו מייד.
@אבי
גוגל מיקרוסופט ופייסבוק הן חברות פלטפורמה, אדובי לא. ככזו היא שבירה מאוד לעומתן.
חברות פלטפורמה *נורא* קשה לנצח במגרש שלהן, עד בלתי אפשרי.