เรื่องเล่าของ Windows Phone 8 ภาคคนพัฒนาแอพ

นั่งอ่านเรื่อง Windows Phone 8 ในเชิงการพัฒนาแอพบนนี้ โดยศึกษามา 3-4 วัน เพราะสมัครเป็น Windows Phone ISV เมื่อวันเสาร์ที่ผ่านมา

ผมขอสรุปคราวๆ ตามนี้

Windows Phone 8 (codename ชื่อ Apollo) เป็นรุ่นที่ใช้ Windows NT kernel ซึ่งเป็ย Kernel ชนิดเดียวกับ Windows 2000 (NT 5.0), XP (NT 5.1), Vista (NT 6.0) และ 7 (NT 6.1) แต่ปรับปรุงให้เล็กลงมากๆ และได้ใช้ core components ระบบที่แชร์การพัฒนาร่วมกับ Windows 8 โดยเอามาแทนที่ Windows CE Kernel ที่อยู่ใน Windows Mobile และ Windows Phone 7, 7.5 และ 7.8 ที่มีอยู่ตอนนี้ พูดง่ายๆ คือล้างไพ่ใหม่หมด จริงๆ ก็เสี่ยงมากนะ แต่คงต้องทำ ซึ่งเป็นวิธีคิดเดียวกับที่ Apple ทำ ก็คือ iOS ใช้ OS X Kernel ตั้งแต่แรก

จากการที่ใช้ NT Kernel ทำให้มันรองรับ multi-core CPUs มากถึง 64 cores ตั้งแต่เริ่มต้น (โหดสัส!!!)

ในตอนนนี้ยินยันว่ารองรับจอภาพ 3 ขนาดเท่านั้น คือ WVGA 800×480 15:9,WXGA 1280×768 15:9 และ HD 720p 1280×720 16:9 ทำให้การออกแบบ Apps จำกัดเพียงเท่านั้น ถ้าใหญ่กว่านี้จะถูกผนักให้ไปพัฒนาบน Windows RT หรือ Windows 8 Apps แทน โดย Windows 8 Apps รองรับการแสดงผล 2560×1440 pixel บนจอภาพ 27"!!!

โดยจากที่ไล่ดู conponents/api ส่วนใหญ่สามารถ port ตัว Windows 8 apps มา Windows Phone 8 ด้วย code behind ในบางส่วน (ออกแบบดีๆ ทำได้เลย) แต่เสียดาย Windows Phone 8 ไม่มี WinJS เลยลำบากหน่อย ถ้าใช้ผ่าน WebClient บน VB.NET แทน คือจะเขียนแบบ HTML5, CSS3 และ JavaScript แบบ Windows 8 Apps ล้วนๆ มันทำไม่ได้ต้องใช้ C++, C# หรือ VB.NET เขียน หรือถ้าใช้ติดต่อเว็บเยอะๆ ทำ Web View ก็ใช้ WebBrowser Control มาใส่ ถ้าจะติดต่ออะไรยากๆ เขียน JavaScript ผ่าน WinJS ไม่ได้ ต้องผ่าน WebBrowser.ScriptNotify Event และ WebBrowser.InvokeScript Method เพื่อส่งข้อมูลระหว่าง WebBrowser Control กับ VB.NET ที่เป็น Base Apps เพื่อให้มันไปทำงานต่อกับ H/W หรือ Call Network บางส่วนแทน ><" (กว่าจะหาวิธีได้)

ตัว Windows Phone 8 มี Internet Explorer 10 ที่เร็วมาก ไม่คิดว่ามันจะเร็วได้ขนาดนี้ มันความรู้สึกเดียวกับบน Windows 8 เลย คือกดปุ๊บมาปั้บ แบบร้องเฮ้ย! เปิด IE10 เร็วกว่า Chrome เป็นไปได้!

ระบบ Background multitasking อันนี้ประหยัดแบตด้วยเท่าที่เล่นมา ข้อเสียรู้สึกมันจะไม่ realtime ต้องรันเป็น schedule/polling เอา ถ้าอยาก realtime ต้องใช้ push services แทน (ต้องต่อ internet ร่วมด้วย) อันนี้จากที่นั่งไล่ระบบมานะ ผมยังไม่ได้ดูเยอะ เพราะยังไม่ได้เล่นอะไรขนาดนั้น

[เพิ่มเติม] ผมพัฒนา Project บน Project ที่ใช้ภาษา VB.NET + HTML5 ในการพัฒนา Apps เป็นหลัก แต่จะใช้ C++ หรือ C# พัฒนาร่วมกับ HTML5 ก็ทำได้ (แต่ต้องเลือกอย่างใดอย่างหนึ่งเวลาสร้าง Project)