פיתוח אפליקציות לחלונות 8 ול-Windows Phone [חלק ראשון]

מה צריך לדעת מפתח לפני שהוא מתחיל להעביר את היישום שלו לחלונות 8 ול-Windows Phone 8? חלק ראשון: שיקולי חומרה וממשק משתמש

תמונה: יח”צ

יש הרבה בלבול וחוסר בהירות בקשר לחלונות 8 ולמחשבים עליהם תרוץ, ויחד עם זאת התוספת של Windows Phone 8 אינה הופכת את העניינים לפשוטים יותר. על מנת לפזר את הערפל, אנחנו צריכים קודם כל לדון בצד החומרה. חלונות 8 מגיעה בשתי גירסאות עיקריות: גירסה שנועדה למחשבים בארכיטקטורת אינטל, וגירסה שרצה על מעבדי ARM. יש הרבה דמיון בין הגירסאות, אבל יש גם הרבה הבדלים. לפני שנתחיל לדון במשמעויות של ההבחנה הזו על הקוד שהמפתח כותב או ממיר. אנחנו צריכים לדבר קצת על החומרה.

המהפכה הגדולה בחלונות 8 היא בתמיכה שלה במעבדי ה-ARM. זו פחות או יותר הפעם הראשונה שמיקרוסופט מכירה בעובדה שיש בשוק מעבדים שאינם של אינטל. למה ה-ARM הפך להיות כל כך חשוב למיקרוסופט? בגלל שזה המעבד הנפוץ ביותר בעולם הטאבלטים. ויש לזה סיבה טובה, צריכת האנרגיה של מעבדי ARM נמוכה משמעותית מצריכת האנרגיה של המעבדים של אינטל. בעוד שאינטל הלכה כל הזמן קדימה בכיוון של ביצועים טובים יותר, גם אם זה צורך יותר אנרגיה, ה-ARM הלכה לכיוון של חסכון באנרגיה גם אם זה בא על חשבון ביצועים. השורה התחתונה היא שמעבדי ה-ARM יעבדו הרבה יותר זמן עם סוללה קטנה יותר, וזו תכונה שקריטית ליצרן חומרה שרוצה שהטאבלט שלו יעבוד יום שלם ללא צורך בטעינה.

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

סוגיית הביצועים

למי שלא מכיר את ההיסטוריה של מערכת ההפעלה חלונות, זו נראית אולי משימה קשה, אבל הארכיטקטורה של חלונות מאז NT הראשון, היא ארכיטקטורה שבנויה על מנת לתמוך בהרבה סוגים של מעבדים. יש שכבת הפשטה בין מערכת ההפעלה לחומרה (HAL), שגורמת לכך שרוב הקוד של מערכת ההפעלה לא תלוי בחומרה, ורק חלק קטן ממנו הינו תלוי חומרה, כך שכך מה שמיקרוסופט היתה צריכה לעשות כדי לעבור ל-ARM, זה להתאים חלק קטן מהקוד למעבד החדש ולקמפל את כל המערכת. וככה הם קיבלו די מהר מערכת הפעלה מוכנה לשימוש על ARM. התהליך הזה הוא לא דבר חדש, מערכות ההפעלה של מיקרוסופט עבדו לאורך השנים על מעבדי MIBS ועל Power Pc ועל Itanium ועל עוד כמה מעבדים שאף אחד לא זוכר היום. לא ארכיטקטורת המעבד היתה הבעיה של מיקרוסופט.

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

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

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

סט ה-API החדש הזה נקרא WinRT. במקביל, ל-WinRT, סט מאד קטן של ה API הישן והמוכר, עדיין עובד גם בארכיטקטורת ARM, כשבחלק מהפונקציות בסט המצומצם הזה, היכולות של הפונקציות צומצמו בצורה משמעותית. מה שאומר שברוב המקרים, הקוד הקיים שלך ידרוש יותר מסתם קומפילציה כדי לעבוד בסביבת ה-ARM.

תמונה: יח”צ, כוח העיבוד החזק של אינטל מול היתרונות של מעבדי ה-ARM

הגיעה העת להכריע

אז בואו נחזור להתחלה, יש שני דגמים של חלונות 8: אחד שרץ על ארכיטקטורת אינטל ואחר שרץ על ארכיטקטורת ARM. אם אתם רוצים לייצר קוד שרץ על שתי הארכיטקטורות, אתם חייבים להתאים את הקוד שלכם, ולפתח את היישום שלכם, עם האילוצים של התמיכה המצומצמת של ה-API של WinRT. ולעומת זאת, אם אתם מוכנים לעשות פשרה מאד כואבת ומאד לא נכונה מבחינה שיווקית, תחליטו שאתם מפתחים רק לארכיטקטורת אינטל, ואז בעצם  לא תצטרכו לשנות כלום. מערכת ההפעלה שתומכת בארכיטקטורת אינטל, אינה שונה ביכולות שלה ממה שאתם רגילים אליו בחלונות 7.

זו נקודה שחשוב מאד להבין את המשמעויות שלה מבחינת תאימות. הקוד שלכם ירוץ ללא כל שינוי על חלונות 8 שרץ על ארכיטקטורת אינטל. בסביבת אינטל יש לכם Desk Top רגיל, בדיוק כמו בחלונות 7. הכל ירוץ שם כמו שאתם רגילים אליו, בזמן שאתם מפתחים אתם יכולים להתעלם בכלל מ-WinRT ולהשתמש בכל סט ה-API הישן והמוכר (עם כמה תוספות חדשות). זו בשורה חשובה בעיקר למפתחי ישומים לארגונים, ששם רוב המחשבים הם בארכיטקטורת אינטל, והיישומים אינם יישומי מגע ובטח זו בשורה חשובה לכל מי שעושה תוכנות לשרת, שגם שם השינוי הוא מינורי. היתרון העיקרי שאתם מקבלים בהרצת יישום קיים בסביבת חלונות 8 בארכיטקטורת אינטל בלבד, יתבטא בזה שהיישום שלך ירוץ מהר יותר ויעיל יותר, בגלל כל השיפורים שנעשו במערכת ההפעלה.

ממשק מגע

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

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

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

מתעדכנים בזמן אמת

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

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

זה לא מסתיים רק בזה. צורת הכתיבה שלך צריכה להיות כזו שחוסכת באנרגיה, מה שמוליך לימוד עבודה אסינכרוני ולסגנון כתיבה שונה של קוד. בקיצור, זה לכתוב הרבה קוד חדש. ותכנון חדש של ממשק המשתמש. זה הזמן לדבר על אספקט חומרתי נוסף שיש לו השפעה על היישום שלך וזה גודל המסך העומד לרשות היישום שלך. זה נע ממסכים של אינצ’ים בודדים (אינץ” זה 2.54 ס”מ) לעשרות רבות של אינצ’ים. יש היום בשוק מסכים של 82 אינץ’ (שני מטר) עם מגע וזה עוד לא הסוף. אם אתה רוצה לתמוך במגוון כזה גדול של מסכים אתה צריך לחשוב על קונספט גרפי שיהיה מספיק גמיש ויתאים את עצמו לכל הגדלים האלה. ממשק המשתמש החדש של חלונות 8 שצמח מתוך ממשק המשתמש של Window Phone 7 הינו מהפכה עיצובית שמספקת קונספט עבודה שונה וחדש ולא מדובר פה רק על האריחים אלא על העיקביות של הממשק כולו וההתאמה שלו למחוות מגע.

התכנון של ממשק המשתמש ליישום שלך צריך לפעול לפי אותם עקרונות כדי שהיישום שלך ישתלב יפה עם עצמו החוויה שהמשתמש מצפה לה ועם שאר היישומים במחשב. המטפורות הישנות של Windows forms, שהחזיקו מעמד כל כך הרבה שנים ב-Desktop, פשוט לא מתאימות לעולם החדש.

אז בואו ונסכם את הקטע הזה. עולם החפיצים מתקדם, צפויים לנו המון מחשבים חדשים מכל מיני גדלים ומכל מיני צורות, לכולם יהיה Touch או משהו שמתנהג כמו Touch (למשל Pad) והמרת היישום שלך לעולם הזה כרוכה בהרבה מחשבה מחדש על מהות היישום ועל איך הוא מתקשר עם המשתמש ועם המערכת. ביחד עם מעבר לאוסף חדש ושונה של API לממשק עם מערכת ההפעלה.

ומה כל זה קשור ל Windows Phone 8? קשור ולא קשור. ממשק המשתמש עם האריחים זהה, ה-Windows Phone 8 רץ על ארכיטקטורת ARM, הגרעין הבסיסי של מערכת ההפעלה כמעט זהה. אבל יש גם הרבה שוני, שאדון בו בנפרד בפוסט אחר.

גד מאיר הוא מנהל מו”פ בחברת ידאג בע”מ והוא כותב בבלוג שלו על החוויות של שרברב בעולם הקיברנטי.

גד מאיר

גדי עוסק בתחום המחשבים כבר הרבה שנים, תחום העיסוק העיקרי שלו הוא שרברבות, ההתמחות שלו היא איתור בעיות מערכתיות בתהליכי פיתוח והטמעה (איתור סתימות ושיחרור חסמים). עיקר תפקידו הוא לנסות למנוע בעיות כאלה עוד בשלב תכנון הפרויקט. למרות שבדרך כלל, מזעיקים אותו לניתוח לאחר המוות. התפקיד האהוב עליו הוא ליווי פרויקטים כיועץ וכמנחה מקצועי, פעילות שחושפת אותו למגוון רחב של בעיות מעניינות להן הוא אמור למצוא פתרונות יצירתיים. גדי מקפיד להדריך מדי פעם, הוא משמש כמנהל מו"פ בחברת ידאג בע"מ www.idag.co.il ויש לו בלוג באתר הבלוגים של מיקרוסופט ישראל http://blogs.microsoft.co.il/blogs/gadim.

הגב

2 תגובות על "פיתוח אפליקציות לחלונות 8 ול-Windows Phone [חלק ראשון]"

avatar
Photo and Image Files
 
 
 
Audio and Video Files
 
 
 
Other File Types
 
 
 

* היי, אנחנו אוהבים תגובות!
תיקונים, תגובות קוטלות וכמובן תגובות מפרגנות - בכיף.
חופש הביטוי הוא ערך עליון, אבל לא נוכל להשלים עם תגובות שכוללות הסתה, הוצאת דיבה, תגובות שכוללות מידע המפר את תנאי השימוש של Geektime, תגובות שחורגות מהטעם הטוב ותגובות שהן בניגוד לדין. תגובות כאלו יימחקו מייד.

סידור לפי:   חדש | ישן | הכי מדורגים
איציק
Guest

כתבה תענוג! ותודה על הטמעת מילות האקדמיה לעברית. בסופו של דבר עברית ההיא שפתינו לעד!

דודו
Guest

אינפורמטיבי ומובן, כתבה מצויינת!

תודה.

wpDiscuz

תגיות לכתבה: