从Linux到.net到Node.js,微软在开源的路上越走越远。日前,微软和Node.js基金会在北京联合举办了Node.js Live活动,Node.js基金社区经理Mikeal Rogers、微软全球开放工具组产品经理PJ Meyer和微软开放技术中心董事总经理云浪生接受CSDN记者采访,介绍了Node.js的社区建设和在中国的发展情况,以及微软在开源社区尤其是Node.js社区所做的工作和规划。
微软表示,支持和赞助Node.js是微软开源工作的重要一环,Node.js具有广泛的应用场景和强大的生命力,包括在Azure、Windows和Visual Studio Code上,微软的各种工具和服务都希望很好地支持Node.js,让开发者可以开发一些相应的云计算、物联网应用。
作为一个开源的JavaScript服务端框架,Node.js的增长很快,在全球范围内已有400万的用户,每年增长率达到100%,在中国也有专门的Node.js论坛,活跃用户数量约为35万。
在Mikeal Rogers看来,Node.js最为独特之处是它适用于当代应用所有的环境,使得JavaScript几乎能够运行在所有的平台上。比如说现在一个新的应用可能需要有Web端+云端,它可能是移动工具上可以用,桌面电脑上也可以用,另外它使用的是API的解决方案。
综上所述,Node.js是一个从前端到后端可以建立的平台。在万物互联的阶段,可以把物联网设备、PC都连接起来,做各种各样的编程的工作,降低了开发的门槛和技术的难度,让很多热爱开发的人容易开发出各种各样的应用。
由微软与其他大型科技企业共同建立的Node.js基金会,就是要更好地支持Node.js获得更广泛的应用,Node.js基金会也得到了Linux基金会的支持。
Mikeal Rogers表示,希望在全球范围内让越来越多的人在Node.js社区贡献,降低开发人员进行新的应用开发的门槛降低,比如说在做IoT相关的开发中可以使用到Node.js。
微软在2010年开始支持Node.js项目,参与创立Node.js基金会之后加入了技术指导委员会,加大对Node.js平台的技术投入和指导。PJ Meyer表示微软对Node.js社区的发展引以为荣,不仅仅是作为一个开发工具,还因为微软员工用专业知识和时间为Node.js平台作出了贡献。
Node.js在微软有广泛的支持,微软有一些相关的工具和服务,使得Node.js的开发者可以开发一些相应的为云而做的应用。来自微软的非常受欢迎的一些Node.js使用工具,一个是Node.js Tools for Visual Studio,一个是Visual Studio Code,具有IntelliSense之类的智能编码特性,可以让开发人员来做相应的调试和编辑。Visual Studio Code是开源的,而且在Linux、Windows上都可以运行。
Azure上还有一个TypeScript的开源语言。有了它就可以使Node.js的开发者能够建立云上的一些相应的应用,例如Visual Studio Code也是用TypeScript开发出来的工具。所以说,不管Node.js是用任何的平台还是用任何的工具,这些工具都是可以用得到的。
同时,微软智能云Azure为Node应用程序提供了云平台服务。通过Azure,Node.js的开发者可利用虚拟机或存储容器从基础架构上部署Node.js应用程序。
对于Node.js在工具上的应用,微软在Windows 10 IoT Core有相应的技术,可以使得物联网相关的工具能得到开放的开发。PJ Meyer表示,开发商想用Node.js或者是JavaScript来进行IoT方面的开发,这个很自然是服务器和云的相应技能的拓展。微软和Windows 10 IoT Core所做的工作是,把在云端可以运行的环境搬到IoT的环境里,这样就可以运行起来。
Mikeal Rogers补充说,JavaScript对物联网相关的开发来讲也是一个非常好的语言,在浏览器上一切都是创造出来的,实际上在物联网上应用是一样的,比如说一个传感器是怎么来传送的,跟浏览器是一样的。在社区里有大概30多万的模块,开发者也可以建立自己的代码。
Node.js只是微软支持的开源技术之一。微软的开源之路到现在已经有12年的时间。2004年的时候从微软开源出去的就是WIX,当时其实Visual Studio是一个能打包的工具,有两个开发人员觉得可能对外面的社区也会有帮助,社区也会有需求,所以就开源出去了。现在这个软件包已经成为了Visual Studio核心组件之一,还有一个非常好的社区在维护它。
微软从2008年开始对Hadoop的软件有所贡献,在2009年的时候对Linux的内核也有2万行代码的贡献,当时在所有的Linux贡献者中是名列前茅的。在2012年也专门成立了微软开放技术公司来推进公司在开源和开放性方面的工作。之后.net Core也开源了。2016年微软也有很多开源的举动,包括开始支持红帽Linux,SQL Server也支持Linux,还有Windows也支持Linux,还有Bash on Windows(支持在Windows上运行Ubuntu原生Bash)。
云平台上,微软Azure希望支持各种各样的Linux操作系统版本,并集成业界领先的一些开源的产品,对用户提供更好的服务,除了Node.js的支持,微软还还发了许多的产品,比如HDInsight就是微软开发的Hadoop产品。
云浪生介绍,自萨提亚上任微软CEO并提出“Microsoft loves Linux”之后,整个微软公司都走向了开源。现在微软在做项目时会思考能否让开源社区参与进来共同开发(只要能胜任项目和产品研发任务),现在已经有一些团队在做这样的事情,当然这需要一个过程,而且这是一个非常大的工程。还有一些团队在做项目的时候可能要另起炉灶从头去做,尽量去利用开源的语言或者工具,以开放的心态来接受和推进开源的发展。
原来可能会问为什么要开源,现在要把这个问题倒过来:我有一个项目,我为什么不选择开源?这是一个观念的转换。微软不会像原来一样控制得比较紧,现在是完全开放的姿态,让每一个团队、每一个产品都能把开源作为工作的一部分。
Q:Node.js是最快的增长的平台,另外比较广泛应用的就是Java,跟Java比有没有比较显著的优势?
Mikeal Rogers:Java主要是在特定的地方,现在还有更多的新的平台,因此它有局限性。
PJ Meyer:Java和JavaScript是不同的语言,Node.js是建立在JavaScript上的。
Mikeal Rogers:我们跟很多企业接触,以前这些企业使用的是Java现在使用的是Node.js,有了这个以后他们可以用很少的精力做更多的事情,效率和速度都提高了。
云浪生:总的来说是Node.js可以使用的平台和产品比Java要广泛。
Q: 如何看待Node.js和Java在VM性能方面的区别?
Mikeal Rogers:最大的差异是,Node.js要最有效而且是在单一流程中最有效。不一样的地方是,Java使用的是尽可能多的资源,而Node.js在流程上或者在I/O上都是用非常少的CPU,现在微服务、容器应用越来越多,使用Node.js可以用更少一些的资源。
云浪生:所以Node.js更适合在IoT设备上,它消耗的Memory是非常有限的,如果说用Java可能会很耗资源。
Q:Node.js近期发展有哪些让您感觉到特兴奋的事情?对Node.js社区的推广及壮大有什么样的想法?
Mikeal Rogers:从基金建立开始到现在核心的贡献者原来可能是4、5个,现在已经到了7个了。
云浪生:自己可以把代码贡献到Node.js上面去。
Mikeal Rogers:而且这段时间里在这些项目中做开发的这些人的数量也是增长到了500多个,因为从Node诞生用户是非常多的可是没有问题的,可是在核上做贡献的人是非常少的,直到我们建立了基金会。从技术上来讲展望就是要稳定C++,使它有更多的API,另外有更多的在虚拟机上的应用。社区的规模每年都翻一番,这是令我非常激动的,而且规模是非常庞大的。
Q:用什么样的机制来决定Node.js未来的发展方向?
Mikeal Rogers:这个问题回答起来很长,我们都有相应的文件。在这里想说,我们非常独特的地方在于,目前我们没有未来发展的路线图,如果任何人想加入这个项目,做开发,只要这是有道理的那么就做,我们不会因为他不符合我们的一些要求而不让他发展。因为现在有这么多的新的贡献者,所以我们也要不断地发展对贡献者贡献的东西进行审议的人,有一帮正常核心的审议者,另外假如说有一个新的贡献者有非常独特的贡献,我们就跟他们一起来看这个。
云浪生:从你开始贡献代码,你贡献得得了得到了社会的认可了,就变成了核心,你就可以去review检查别人的code,决定让不让他提高,这是一个从量变到质变的过程。
Mikeal Rogers:还有一个做法是把项目分成一块一块的,这样有不同的小组来并行地做相应的项目,彼此也会牵制,有的项目可以做Web的API,有的是做流的API。特别难做的一些东西我们也会通过这样的方法来做,比如说C++的API。
Q:微软在在未来Node.js的开源发展方面还有什么计划?
PJ Meyer:微软和Node.js基金会一起来界定未来的发展,看社区想让它未来走向何处,微软是非常核心的成员,还是Node.js的技术执委会、董事会的成员。
云浪生:比如说在微软对Node.js有一个全面的支持,因为微软的产品是非常丰富的,有云的产品,也有IoT的生态链系统的产品,当然也有Windows各种各样的设备,微软可以在所有的平台上非常好地支持Node.js。
Q:微软全面支持Node.js有什么困难?
PJ Meyer:从工程角度来讲我认为没有什么技术挑战。Electron可以体验到Windows、Mac、Linux上运行的情况,可以写出Visual Studio Code来,而且只写一次就可以了。
云浪生:如果说这个Node.js在业界能够有一个很好的发展,业界都能采用它,微软作为其中的积极参与者,就可以建立起生态系统;如果微软只是自己具体地做,把各个平台支持得很好,但是在业界没有很好的支持那也是不会有很好的效果的。从大的层面来看这是最大的挑战,怎么样让这些技术在业界得到广泛的采用,微软能够在中间起到很好的作用,微软是想做好这件事情。
关于:中科研拓
深圳市中科研拓科技有限公司专注提供软件外包、app开发、智能硬件开发、O2O电商平台、手机应用程序、大数据系统、物联网项目等开发外包服务,十年研发经验,上百成功案例,中科院软件外包合作企业。通过IT技术实现创造客户和社会的价值,致力于为用户提供很好的软件解决方案。联系电话400-0316-532,邮箱sales@zhongkerd.com,网址www.zhongkerd.com