[閒聊] 有關Windows 10 UWP 和 Win10M

看板MobileComm作者 (饕餮)時間10年前 (2015/07/17 02:42), 編輯推噓10(100240)
留言250則, 14人參與, 最新討論串1/1
這篇文章看似和Mobile好像無關,但其實因為Windows 10 的特別性,和Mobile習習相關,請版主看看是否可以放在這裡吧! 0729 Windows 10 就會上市了。最近MS關掉芬蘭前NOKIA總部,有一堆人就在說MS不做手機了。但前幾天MS CEO又說會走 Surface 模式。因為中文媒體特別是台媒常常都是二手三手消息了,加上不見得有時間深入了解。正好小弟我因為需求而有研究,就在此和大家分享一下。 直接結論: MS的目標並不是希望用Windows 10 帶動Windows 10 Mobile。 而是他想要推行Windows 10 這個平台。 Win10M只是這個平台一個樣版應用,因此他會像Surface 一樣每年出少量的機子,不論成敗。 Win10M 最大的弱點就是App的數量。而Win10的升級率將會直接影響Win10M。會不會成功我不知道,但如果Win10很成功,那我覺得Win10M放個幾年一定會成功,不然就是直接變成完整的Win10。 (在省電上Win10M還是比Win10適合手機) "為什麼我會這樣說呢? 這是因為Win 10 有一個新的API => UWP。" 什麼是UWP? UWP 是 Win10 新的API,主打One API / One Binary /One Platform 。只要是純粹的UWP程式就可以在所有Win10的平台上執行。 他是基於.Net Framework,近年.Net已經Open source外加可以直接Compile 成Native 語言,因此速度上還滿優秀的。 Window10附的Edge 瀏覽器就是一個UWP程式,他在我的SP3上跑得比Chrome還快哩。 Window10 免費附送的Office 系列也是UWP。 One API,代表不會發生PC程式時和寫手機時相同功能因為API命名空間不同,而要重新寫這個問題。 One Binary,代表只會產生一個執行檔。 One Platform,是指所有Windows家族都會可以執行這個程式。所以理論上可以把同個編譯好的程式直接拖到另一個平台就能直接執行。 "只是為了用Windows桌機去救手機而已,有必要搞這麼大?" UWP並不是只針對跨PC/手機而已,而是所有Windows10平台都可以。 因此近年流行的IOT(internet of thing) 如Resbarry pi2 也可以跑Win10,你可以在上市跑和你在電腦上相同的日曆程式,讓那台IOT做專門的日歷機。你也可以把日曆放到XBOX上用,你更可以讓同個程式直接在之後會出的Hololens上跑。 只要是Win10平台,你就可以執行純UWP。 "不同平台的I/O有很大的差別,那這樣會好用嗎?" 我們知道不同平台使用者介面會有很大的不同。在桌機上我們習慣用鼠鍵、在手機上我們會用觸控、在Hololens 上如果還是只是平面的日曆程式不是很沒有誠意嗎? 因此UWP也可以針對不同Device做特化。你可以在桌機上做出適合鼠標的介面,然後針在Hololens做可以互動立體的AR-UI。 UWP可以辨別自已是在哪個平台上執行,而會執行該平台的介面和特定的功能。 如果這樣,是不是任何程式只要用UWP寫的,就可以在Win10m上執行呢? 因為會有平台特化的問題,所以有些程式會因為沒有實作該平台的特化而不會讓你在該設備上安裝。所以是理論上可行,但開發商還是可以決定要不要。 但因為上架費都一樣,如果是一些簡單的、純UWP的程式,不用改就可以上架的,那開發商也許就有可能順便上架。這也是MS所希望的。 這就是為什麼MS的CEO說: 開發者並不會為了3%的市場開發Windows10Mobile。但是他會為了Windows而開發。 "我可以在Win10M上跑X86程式嗎?" 不可以。只有純UWP寫的程式才能全平台跑。 "傳言說Win 10 可以執行Android /iOS 的程式?" 正確來說,是可以把Android / iOS的程式 在86%程式碼不變動的情況下改寫成Win10 UWP程式。 因為我們寫程式其實除了和系統溝通的程式外,多數都是寫應用程式的邏輯,因為MS想要讓iOS/Android平台的開發者更方便的改寫過來。86%這個數字是MS 自已說的。MS讓VS可以編輯Obj-c ,也寫了個外掛給Android studio讓他可以開發Windows 10 UWP。 C++的部份當然MS這沒有問題。Swift MS之前也說會支援。 MS還基於Hyper-V寫了一個非常強大的Android 模擬器,大概是目前出現過的最強的了。可以直接把APK拖上去就能跑… 順便一題,現在大家的iOS /Android上面的Office就是和 UWP 共用C++程式碼寫的。86%這個數字就是Office共用程式碼的比率。 "那x86程式怎麼辨?" MS在Build大會時說過,為了讓大家利用自已寫過的程式,他們把從Win32、MFC、WPF、到.Net Framework所有的API ,去除一些會動到系統的指令外,都盡量實作到Win10 UWP中。 MS有舉例,如果有一個人用最老的Winsock 寫了個程式,他不會叫你換API,因為就算是老程式,但可以執行就是好程式。而是,他會讓你直接用Winsock 來寫UWP。 另外MS也有提供把X86程式打包的功能,讓他可以直接變成PC專用的UWP。 你可能會問,PC專用,為什麼還要變成UWP呢? 因為這樣就可以丟到MS市集上,MS幫你做版本管理,你就不用自已還要寫更新程式。市集沙盒,如同OSX 那樣,也會減少登錄檔的使用,使得電腦不會變慢。 當然,一些會用到系統權限的程式,這種就不能變成UWP。如防毒軟體,這在OSX上也是要用安裝而非沙盒。 為了寫這篇文章,我還特地去找我之前在Mac做的投影片XDD。基本上,我的看法就是Win10成功,UWP成功,Win10m就有機會成功。MS放置Play就可以了。 但,現在最大的變因就是如果 Win10成功,但很多人還是寫傳統API而非UWP,那Win10M就尷尬啦! 不過UWP有滿多好處,就當成是一個誘因吧! 未來就是變化才有趣。 附上MS 未來的Device願景: 反正MS很會畫大餅 http://imgur.com/jUUofck
附加嘴碎~~~~ 之前看版上很多流言,讓我忍不住想來終結一下: Q: MS是不是快倒了? A: MS 這家公司1985年開始只有兩季是負是,是因為買了的公司不賺而變負。其他都是賺的。MS主要的收益並非消費者,而是企業界。 這幾年Windows office 已經不完全是主力,而是Azure 在和 Amazon 掙一二名中。 Q:不是一家只會買別人的沒技術公司嗎? A: 聽過Microsoft research嗎? 看過MSR才知道什麼才是外星黑科技。 MS說自已在資訊界技術只是老二,應該只有IBM敢和他嗆聲。 -- Sent from my Windows -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.129.34.132 ※ 文章網址: https://www.ptt.cc/bbs/MobileComm/M.1437072172.A.7DE.html

07/17 03:06, , 1F
從沒質疑微軟的實力 只不過懷疑它併購的眼光
07/17 03:06, 1F

07/17 03:15, , 2F
微軟超好的,如果沒微軟我都不敢想像未來會怎樣了
07/17 03:15, 2F

07/17 03:15, , 3F
你知道的...跟鄉民認真就輸了
07/17 03:15, 3F

07/17 04:41, , 4F
用心給推
07/17 04:41, 4F

07/17 04:42, , 5F
而且Win10試用之後覺得很好用,比Win8.1這__作好太
07/17 04:42, 5F

07/17 04:42, , 6F
07/17 04:42, 6F

07/17 08:27, , 7F
一句話 手機不能跑X86是成是敗 看Surface便知一二
07/17 08:27, 7F

07/17 08:28, , 8F
還有微軟的眼光 看看WIMAX吧XD
07/17 08:28, 8F

07/17 08:31, , 9F
iOS7.x跟android4.0/4.2都花起碼半年解決UI/相容性
07/17 08:31, 9F

07/17 08:31, , 10F
android 5.0更不用說 有4.4測ART 到目前還很多問題
07/17 08:31, 10F

07/17 08:32, , 11F
UWP是更大的api/UI變化 要說win10成功會帶動W10M
07/17 08:32, 11F

07/17 08:34, , 12F
真是太難連起來的因果關係 畢竟W10M市場不易有多大
07/17 08:34, 12F

07/17 08:35, , 13F
至於WiMAX 微軟雖然算有壓寶 但實在不算重點
07/17 08:35, 13F

07/17 08:56, , 14F
只能說太樂觀了,兩個重點:1.java比.net更早,x86的手
07/17 08:56, 14F

07/17 08:57, , 15F
機至今仍沒有完全消除相容性問題. 2.即使相同CPU,在
07/17 08:57, 15F

07/17 08:57, , 16F
不同尺寸及輸入/輸出裝置,就是需要不同應用程式,甚
07/17 08:57, 16F

07/17 08:58, , 17F
至是要重寫一套. 以firefox/chrome為例,它們在不同
07/17 08:58, 17F

07/17 08:58, , 18F
x86的不同OS下所有功能幾乎相同(只有menu編排適應不
07/17 08:58, 18F

07/17 08:59, , 19F
同OS的習慣,layout稍有不同,但功能都幾乎一樣),一到
07/17 08:59, 19F

07/17 09:00, , 20F
android行動裝置,不看程式名稱根本認不出是firefox/
07/17 09:00, 20F

07/17 09:01, , 21F
chrome,甚至連手機和平板因應不同尺寸,ui layout還
07/17 09:01, 21F

07/17 09:01, , 22F
不一樣.認為有相同binary就能增加app的,只能說太樂
07/17 09:01, 22F

07/17 09:02, , 23F
觀了.
07/17 09:02, 23F

07/17 09:02, , 24F
知乎有篇說one binary是把各平台的執行檔封裝成一包
07/17 09:02, 24F

07/17 09:03, , 25F
要上架到哪些平台,就build哪些出來
07/17 09:03, 25F

07/17 09:03, , 26F
07/17 09:03, 26F

07/17 09:03, , 27F
再補一點,小程式是小公司/個人所寫,大程式是大公司
07/17 09:03, 27F

07/17 09:03, , 28F
所寫,再好開發卻不肯花一點力氣的共通原因是:成本,
07/17 09:03, 28F

07/17 09:04, , 29F
沒有預期收入的平台,要多投入開發/維護/更新/客服等
07/17 09:04, 29F

07/17 09:04, , 30F
成本,這是多數開發者不太考慮的事
07/17 09:04, 30F

07/17 09:05, , 31F
現在手遊或app公司 其實都不算什麼大公司
07/17 09:05, 31F

07/17 09:05, , 32F
但現在像手遊 2週一小更 3週一大更 其實還是要花人
07/17 09:05, 32F

07/17 09:06, , 33F
看規模啊,手機遊戲相對PC版本,遊戲本身規模就不能比
07/17 09:06, 33F

07/17 09:06, , 34F
PC能做好幾GB的DVD,手機不行.所以相對手機有小公司
07/17 09:06, 34F

07/17 09:06, , 35F
力在那邊 而且 像光吼的遊戲 移到pc上好像沒一個
07/17 09:06, 35F

07/17 09:06, , 36F
有搞頭的....
07/17 09:06, 36F

07/17 09:06, , 37F
如果軟軟能讓write once, run很多地方的成本變超低
07/17 09:06, 37F

07/17 09:06, , 38F
出頭機會,但小公司一樣以投入有機會賺錢的平台優先
07/17 09:06, 38F

07/17 09:06, , 39F
那就超神啦XDDD
07/17 09:06, 39F
還有 171 則推文
07/17 10:17, , 211F
Java在x86手機相容性問題不是Java的錯吧?...主因應
07/17 10:17, 211F

07/17 10:17, , 212F
該是用了JNI接了C的Native library...這東西就不是
07/17 10:17, 212F

07/17 10:17, , 213F
可以互通的了
07/17 10:17, 213F

07/17 12:47, , 214F
連fb都曾不相容, http://tinyurl.com/lmtvwjo
07/17 12:47, 214F

07/17 12:48, , 215F
Intel 對Native程式部分是用BT
07/17 12:48, 215F

07/17 16:18, , 216F
看起來win10微軟做好多苦工
07/17 16:18, 216F

07/17 16:51, , 217F
FB當初打掉Android 2.1時代的HTML5 APP後記得就為了
07/17 16:51, 217F

07/17 16:52, , 218F
效率改用C做Native APP了...
07/17 16:52, 218F

07/17 16:52, , 219F
這樣就不能以Java的相容性看待了
07/17 16:52, 219F

07/17 17:25, , 220F
目前MS腳步還是太慢了 預期的餅如果在年底出不來...
07/17 17:25, 220F

07/17 17:26, , 221F
我都不敢想像會怎樣被各種親果媒體狂噴
07/17 17:26, 221F

07/17 18:27, , 222F
預期的餅 怎可能年底出來XD 十月才上win10m 七
07/17 18:27, 222F

07/17 18:27, , 223F
月是wi10
07/17 18:27, 223F

07/17 18:28, , 224F
至少目前看來win10會是升級率不錯
07/17 18:28, 224F

07/17 18:29, , 225F
我的意思就是,你Java會遇到JNI/Native client的問題
07/17 18:29, 225F

07/17 18:30, , 226F
不過未來難說 win10升級率高 就代表大家不會換電
07/17 18:30, 226F

07/17 18:30, , 227F
腦 ms目的達到 但intel哭哭 媒體一樣酸吧
07/17 18:30, 227F

07/17 18:30, , 228F
沒理由.Net就不會,別告訴我Intel在windows phone就
07/17 18:30, 228F

07/17 18:30, , 229F
會突然技術突飛猛進
07/17 18:30, 229F

07/17 18:32, , 230F
.net 是直接編成native了 所以都是ms 認證的硬體才
07/17 18:32, 230F

07/17 18:32, , 231F
能跑
07/17 18:32, 231F

07/17 18:33, , 232F
純.net部分和純java部分一樣,編譯或解譯只是效能差
07/17 18:33, 232F

07/17 18:33, , 233F
異,不同cpu一定會遇到一開始就想用native的部分(如
07/17 18:33, 233F

07/17 18:33, , 234F
影音或game),這部分有人用Java+JNI,有人用純native
07/17 18:33, 234F

07/17 18:34, , 235F
.Net一樣會面臨此類問題
07/17 18:34, 235F

07/17 18:34, , 236F
純.net 以前的確是像java vm 但 現在改成直接nativ
07/17 18:34, 236F

07/17 18:34, , 237F
e 這是今年build大會才release的
07/17 18:34, 237F

07/17 18:35, , 238F
所謂的直接native,java也可以做,但和我說的問題不同
07/17 18:35, 238F

07/17 18:35, , 239F
哦 我看懂你意思
07/17 18:35, 239F

07/17 18:35, , 240F
java preJIT是很久以前的東西了,但這和JNI及純nativ
07/17 18:35, 240F

07/17 18:35, , 241F
是不同東西
07/17 18:35, 241F

07/17 18:35, , 242F
我說 推文討論真的容易誤會XD 次序都交差
07/17 18:35, 242F

07/17 18:46, , 243F
不過win10m也是arm的 他所謂一包binary 基本上是a
07/17 18:46, 243F

07/17 18:46, , 244F
rm x86都打包一起 看平台執行 而平台都是win10認證
07/17 18:46, 244F

07/17 18:46, , 245F
的 同時ms有給一些thirdparty api 寫arm版
07/17 18:46, 245F

07/17 18:47, , 246F
所以 其實不用intel 技術 而是純ms就可以搞定 但
07/17 18:47, 246F

07/17 18:47, , 247F
我在想uwp程式應該都會滿大的
07/17 18:47, 247F

07/17 18:49, , 248F
btw 該平台沒有的api uwp會做空的不執行 寫的人
07/17 18:49, 248F

07/17 18:49, , 249F
要判斷是不是平台有那個api
07/17 18:49, 249F

07/17 18:50, , 250F
他會這樣玩 也有一點 ms 本身的api就可以包山包海了
07/17 18:50, 250F
文章代碼(AID): #1Lf_iiVU (MobileComm)