软件战争(六)软件的插件化
软件这个名词在诞生以来一直似乎都是运行在特定的操作系统上,所以基本上与所有的平台都有关。这一特点面临的一个突出挑战是:对于不同的系统,程序员往往要开发多个系统下相同功能的但是程序代码完全不一样的程序,这不仅造成开发资源的浪费,也使得程序在不同的系统上并不能很好的获得一致的用户体验。举个例子来说,比如qq,mac版本下的qq和windows下的qq就有很明显的区别。
对于很多公司来说,尤其是中小型公司他们不得不放弃在其他非主流的操作系统上的软件开发而选择一个操作系统作为主流。正因为如此很多公司的开发没有成为一个全方位的成果。值得庆幸的是,这一问题正在逐步改变,不过同样的,也存在很多的问题。似乎最先看到这方面问题的就是macromedia,他们开发出一个类似虚拟机的东西解决了跨平台的问题,不过应用面似乎主要在2d的游戏开发上面,后期的adobe air似乎更好些,但是限制于图形图像专业和html5的出现,似乎已经基本无法撼动历史的潮流。之所以用似乎这个字眼,是因为html5的应用是基于互联网的,就目前的浏览器技术而言,它并不能完全满足开发一个大型软件所需要的全部功能的条件。这是adobe air的一个机会,但首先adobe必须使得air成为一个html5的补充标准或者类似的东西。
应该认识到的是并非只是个别的几家企业认识到这个方面的广泛的前景。如果你使用过chrome或者基于chrome开发的其他的浏览器,甚至是safari,你都会发现庞大的插件类软件正在逐步形成,而这些插件正在逐步的实现一个完整软件所需要解决问题的各种手段。chrome os或许在不久的将来就会成功,不过目前他们需要解决的还是使用浏览器充分的利用计算机资源而不是正在发展起来的云端。
我所描述的以上种种,实际上可以看作是一个平台化的方案,区别于微软的底层的.net方案,这个方案想要实现的不是语言级别的抽象,而是应用级别的抽象。.net是将可以使用的语言在一个.net平台上运行,而这种方案是将应用软件放在一个平台上。这样的好处显而易见,只有一个公司需要维护这个软件的中间层平台,应用软件只需要基于这个平台,从而避免了对多版本的开发。想要满足成为这一平台的条件,需要对这一平台进行深层次的架构思考,大大的提升运行效率和独立性才是插件化的前提。
这些都是软件战争的一部分。就相似性方面来说,所有战争的目的几乎都是获取更大的利益,战争的过程当中不仅要学会组织和利用可以利用的各个方面的优势,还要有充分的战略意识和思考。国内的许多门户思想需要变变了,因为看大门收门票的随时都有可能被解雇。