众所周知,最近几年,微软一直在操作系统上进行统一化的尝试。第一次尝试的产品——Windows 8/8.1操作系统完全谈不上成功。请看下图:

我个人认为,这并不意味着操作系统统一化的策略是错误的,只能算是一个小小的失败。将近三年之后,微软的重头产品Windows 10终于横空出世。自7月29发布之后,Windows 10的市场占有率是节节攀升。请看下图:

短短4天,市场占有率已经逼近了Windows 8。哇,这完全是大圣归来的节奏啊!不知道有多少骂了3年娘的Windows 8的用户在这一刻热泪盈眶。笔者三年前买的平板也赶着这股热潮,更新为Windows 10。使用了几天,感受就是绝不会比Windows 8/8.1差!如果按照这个趋势,“3年10亿PC跑Windows10”恐怕也不是妄言。

更加吸引广大码农眼球的,无疑是随之而来的UWP(Universal Windows Platform)。这些年来,微软研发了多种设备,例如平板、手机、Xbox等等,如果每种设备都开发一套操作系统和运行在该系统上的程序。工作量和复杂度可想而知。UWP也因此应运而生。按照微软的设计,我们只要开发一套UWP的App,就可以在平板、手机、PC等设备上运行,无需额外的转换。显而易见,这将大大减少多平台的开发成本。各位码农,是不是很兴奋?

其实,早在Windows 8.1系统更新发布的时候,微软就已经准备类似的尝试了——Windows 8.1 Universal Apps。我做了一个简单的对比,希望能让大家有一个清晰的了解。

 

Windows 8.1 Universal Apps

UWP Apps

支持设备

PC,平板,手机

所有设备

支持Shared Code

支持

支持

需要开发几套程序

两套

一套

是否所有设备具备所有API

做过Windows 8.1 Universal Apps的开发人员可能都有同感,除了逻辑代码可以共用之外,UI展示,部分事件(如:Windows.Phone.UI.Input.HardwareButtons.BackPressed)等,都要写在不同的2套程序里。在某种意义上,这是“部分”Universal,而UWP是真正的Universal。我们可以通过下图去了解一下开发平台统一化的进程。

Component One是一家紧跟技术前沿的专业控件公司。在Windows 8发布之后不久,我们就推出了Windows Runtime控件包。在Windows 8.1 发布不久,我们又推出了Windows Runtime Phone 8.1 控件包。目前,用户可以使用我们的ComponentOne Studio for WinRT XAML 控件包,非常便利地研发属于自己可以运行在PC、平板、手机上的App了。而且,经过验证,用户开发的在Windows 8.1系统上运行的App可以在Windows 10操作系统上运行。

看到这里,也许你会问:既然微软都出了UWP,ComponentOne打算要出一套UWP控件吗?我非常高兴地告诉你:是的!我们已经预计在数月后推出一套Beta版本的UWP控件供用户使用。ComponentOne Studio for UWP 控件中,包含了大家熟悉的Chart,FlexGrid等。

Windows10的革命之路-全新UWP开发平台的更多相关文章

  1. Windows10 UWP开发 - 响应式设计

      Windows10 UWP开发 - 响应式设计 本篇随笔与大家简单讨论一下在开发适配不同分辨率.宽高比的Windows10 Universal App布局时的可行方式与小技巧.经验均从实践中总结, ...

  2. UWP 统一平台开发介绍

    什么是UWP? 很多程序员都有一个梦想:希望自己开发的软件能够轻而易举的在所有平台上运行,而不是把同样的需求,用不同的技术.工具重新开发才能够运行在所有平台上.这就是跨平台,很多软件从业者都在为这个梦 ...

  3. Windows10(uwp)开发中的侧滑

    还是在持续的开发一款Windows10的应用中,除了上篇博客讲讲我在Windows10(uwp)开发中遇到的一些坑,其实还有很多不完善的地方,比如(UIElement.Foreground).(Gra ...

  4. 全新的跨平台app软件开发工具——Lae软件开发平台

    Lae是一款运行于windows的界面开发工具,具有所见即所得.开发跨平台.UI布局自由.机制简单.维护容易等诸多优点,可以开发同时运行在windows.Linux.MacOX.iOS.Android ...

  5. 通过几个Hello World感受.NET Core全新的开发体验

    2016年6月27日,这是一个特殊的日子,微软全新的.NET开发平台.NET Core的RTM版本正式发布.我个人将.NET Core的核心特性归结为三点,它们的首字母组成一个非常好记的简称——COM ...

  6. UWP开发:APP之间的数据交互(以微信为例)

    目录 说明 UWP应用唤醒方式 跟微信APP交互数据 APP之间交互数据的前提 说明 我们经常看到,在手机上不需要退到桌面,APP之间就可以相互切换,并且可以传递数据.比如我在使用知乎APP的时候,需 ...

  7. Win10 UWP开发系列:使用VS2015 Update2+ionic开发第一个Cordova App

    安装VS2015 Update2的过程是非常曲折的.还好经过不懈的努力,终于折腾成功了. 如果开发Cordova项目的话,推荐大家用一下ionic这个框架,效果还不错.对于Cordova.PhoneG ...

  8. UWP开发之控件:用WebView做聊天框

    目录 说明 WebView存在的价值 使用WebView的几个重要技巧 使用WebView做的聊天框 说明 大家都知道,无论是之前的Winform.WPF还是现在的IOS.Android开发中,都存在 ...

  9. Win10 UWP 开发系列:使用SQLite

    在App开发过程中,肯定需要有一些数据要存储在本地,简单的配置可以序列化后存成文件,比如LocalSettings的方式,或保存在独立存储中.但如果数据多的话,还是需要本地数据库的支持.在UWP开发中 ...

随机推荐

  1. 我的runtime学习笔记

    0.简介: OC方法不同于C语言函数,属于动态调用过程,在编译的时候并不能决定真正调用哪个函数,只有在真正运行的时候才会根据函数的名称找到对应的函数来调用. 至于其他理论上的东西不必讲太多,编程讲的就 ...

  2. (转)内置系统账户:Local system/Network service/Local Service 区别

    最近会转载一些 MSSQL 基础相关的文章. 参考文献: http://www.cnblogs.com/xianspace/archive/2009/04/05/1429835.html 前言 今天在 ...

  3. EC笔记,第二部分:9.不在构造、析构函数中调用虚函数

    9.不在构造.析构函数中调用虚函数 1.在构造函数和析构函数中调用虚函数会产生什么结果呢? #; } 上述程序会产生什么样的输出呢? 你一定会以为会输出: cls2 make cls2 delete ...

  4. Scalaz(57)- scalaz-stream: fs2-多线程编程,fs2 concurrency

    fs2的多线程编程模式不但提供了无阻碍I/O(java nio)能力,更为并行运算提供了良好的编程工具.在进入并行运算讨论前我们先示范一下fs2 pipe2对象里的一些Stream合并功能.我们先设计 ...

  5. 关于Java数组

    今天,我们将要谈到的是Java里的数组 数组是一种容器,它是一些相同类型元素的集合.我们可以用数组,去存储一些相同类型的数据,比如,整数,浮点数,字符,...事实上,数组甚至可以用来存储同一个类的多个 ...

  6. 一起谈谈MD5加密算法

    MD5是一个安全的散列算法,输入两个不同的明文不会得到相同的输出值,根据输出值,不能得到原始的明文,即其过程不可逆:所以要解密MD5没有现成的算法,只能用穷举法,把可能出现的明文,用MD5算法散列之后 ...

  7. Linux(CentOS 6.7)下配置Mono和Jexus并且部署ASP.NET MVC3、4、5和WebApi(跨平台)

    1.开篇说明 a. 首先我在写这篇博客之前,已经在自己本地配置了mono和jexus并且成功部署了asp.net mvc项目,我也是依赖于在网上查找的各种资料来配置环境并且部署项目的,而其在网上也已有 ...

  8. SQL复制表结构或表数据

    需求: 软件开发过程中,一般会部署两个数据库:一个测试数据库提供给开发和测试过程使用:一个运维数据库提供上线使用.当需求变化需增加表时,会遇到数据库表结构或表数据同步的问题,这时就要复制表结构或表数据 ...

  9. 2015年最佳的12个 CSS 开发工具推荐

    CSS所能做的就是改变网页的布局.排版和调整字间距等,但编写 CSS 并不是一项容易的任务,当你接触新的 CSS3 属性及其各自的浏览器前缀的时候,你会发现很伤脑经.值得庆幸的是一些优秀的开发人员提供 ...

  10. ["1", "2", "3"].map(parseInt)?

    ["1", "2", "3"].map(parseInt)得到什么? 答案是:[1, NaN, NaN]. 原因:parseInt接收的是两 ...