以上是我个人绘制的一张IT业界技术概览图,现在新技术太多,而且新技术细分的越来越厉害,尤其很多新技术都是A+B型,也就是既能解决A领域的问题,也涉及到解决B领域的问题,但都不是解决A或B最佳的技术方案,这就令人尴尬。但是仍然有一些技术,是专门解决A和B领域整合的技术,它们尤其需要受到关注。如此玲琅满目的技术,如果不把他们归好类,明白他们是属于什么领域,是否是值得自己关注的领域,他们是为了解决什么问题而产生的,他们是从哪些现有技术衍生而来的,如果不明白这些问题,我们面对技术就茫然、盲从,最终追逐潮流、一无所获。
我没有在嵌入设备层上写什么,因为我对这一技术领域非常陌生,现在自动化控制、嵌入式开发在工业、家电、数码、通信、交通、汽车等等许多领域颇为繁荣,是中国最需要的IT技术,我却没有从事,而且IT业界的媒体也很少深入报道这一块。
我也对网络游戏、娱乐产品领域非常陌生,而这恰恰是中国IT消费品非常赚钱的一块。
我一直从事企业IT领域,关注的一直是企业在互联网、在内部管理的应用,虽然企业在创新产品、加快生产、稳定生产上非常需要嵌入技术,但是这和纯粹软件技术仍然隔的比较远。我个人观点,未来面向企业服务的IT提供商,纯粹的提供IT产品的厂商一定无法存活,他们必定在企业咨询、企业IT建设、企业业务外包、企业上下游整合、企业生产流水线嵌入设备制造、企业产品设计、企业嵌入产品制造上面深度切入。我们现在已经看到许多公司,说是媒体不像媒体,说是IT不想IT,说是渠道不像渠道,说是电子商务公司不像电子商务公司,他们的目标是使面对的行业企业更有竞争力,而非辩解自己是一个什么公司,因为只有确实有用,企业才会买单,而现在,单纯解决一个企业方面问题的IT提供商,是无法产生综合竞争力的,也无法持续营业额增长。很多公司做行业企业,却远远站在企业的另一边,认为自己只是一个擅长编码的软件公司,显然无法真实而有效的解决企业问题。这是我对2008年企业级市场风云变幻现状总结后得出的一种对未来的判断。
在这样的判断下,来寻找我需要什么技术,我需要关注哪些技术,我需要专注哪些技术,只有了解了客户未来的变化,需要什么才能明晰。这是我的一贯分析思路。许多人只是看新技术一波又一波,却不明白为什么这些技术会兴起。其实技术的兴起都是为了暗合企业未来的变化与挑战。我没有一上来就对2008年技术做评头论足,就是希望告知大家,研究技术,一定要在一个大背景下去研究,不要纯粹为了学习学会某个技术而去学技术。
好了,咱们接下来用这张概览图来一一总计一下2008年全年技术热点。
在最底层,当然是硬件层面。我把硬件层面一向是看为四个层面:服务器硬件领域、个人电脑领域、移动设备或手持设备领域、嵌入式设备领域。每个层面的硬件能力不同,解决的问题不同,所以对于不同硬件层面的软件系统也不一样,所以我们看到JAVA和.NET,对应各个硬件层面都有相应的Framework。
前面我也说了,嵌入式设备层面我不了解,我就说说移动设备层面。2008年是移动计算设备领域的热点年。首先,Andriod联盟发布,源代码开放,应用软件开发大赛举办,并且第一款真正的Android真机发布。因为Andriod的发展战略是开放联盟型的,所以最近爆出不少关于这方面的新闻,中国移动要有自己的Android机型,联想也开发了自己的Android机型,华为也同样。如果把联发科比作是山寨手机硬件标准,让手机硬件制造成本速降,那么Android就是山寨手机软件标准,这些是手机最大的成本所在,一旦这些都降了下来,大家想想联发科给手机行业带来的震动,就可想未来手机行业必然会发动一场新的革命。
显然,大家都已经看到了这场革命。比Android更提前看到并且做到的就是iPhone。在iPhone之前,手机还是咱们平常意义的手机。但iPhone来了,手机实质上已经变成了一台人手都可拿的一部笔记本电脑。虽然,大家表面上看到的iphone,可能是被它的外形工业设计所倾倒,但它实质给移动设备业界带来的革命实在巨大,手机不仅仅是那个打电话发短信的东西了。
显然,手机最大份额厂商Nokia也看到了这一个手机革命,Nokia迫不及待的宣布自己转型成为互联网提供商。通信转型互联网,华为制造Android手机也是这个想法。而最近另外一个大消息就是李一男担任百度CTO,互联网、通信的不断互相侵入对方互相融合,是天下大势。中国移动也从通信转型互联网,在邮箱、IM、个人空间这些最基础的最有增值效应最有粘稠度的互联网应用上面发力,而且打通手机通信和3G网络,是很高的招。看起来,通信行业上下游各个链条都在转型互联网,Nokia当然不甘落后。全额掌控Symbian,并且开源,是Nokia面对华为、联发科、Android、iPhone、中国移动转型格局必须要这么做的。
在个人电脑和服务器硬件领域,多核编程是2008年继续发展的软件技术。2006就多核CPU的发布,多核编程被大家关注,2007年业界广为关注的Erlang,但仍然没有普及,但发展非常迅猛。2008年,多核编程仍然在路上,包括微软声称发布F语言,函数式编程、多核编程在2008年仍然暗潮迅猛,但仍未露出海面。因为中国目前的开发大多都在应用层面,应用多核优化,也一般都交给了操作系统来办,所以多核编程再发展也只能是小众群体。但是对于做中间件和服务器系统软件的,不关注多核是不行的。做应用,还是做中间件或服务器系统软件,主要也是看大家所处的目标客户和技术实力。虽然说中间件或服务器系统软件在中国大部分还都在国外厂商的控制之下,但我们的应用领域,如大型网站、大型网络游戏都需要很坚实的中间件和服务器系统软件,这是我们的机会。虽然我们现在对开源中间件和服务器系统软件使用的多贡献的少,但我已经欣喜的看到许多大型互联网企业在开源这块已经进步不少。但开源的盈利模式仍然模糊,给中间件和服务器系统软件的开源项目发展带来不少不确定,现在全世界的商业公司,如IBM、SUN等等都在烧钱深度参与与支持开源行业,如何平衡商业和免费开源之间的利益,仍然值得不断探索,至少Red Hat活的仍然不好,可见模式仍然有问题。360安全卫士一举打破安全领域这块丰厚利润市场,免费,但如何盈利,现今仍未看到。不过从共享软件捆绑插件来看,免费的未必无法盈利,但这个盈利的方法值得商榷。
在操作系统层面,2008年的Linux在业界没听见大的声响,可能一直专注Linux领域的人知道发生了更多的大事,但是对我这个经常关注业界新闻的人来说,没有看到大声响。windows Server2008虽然今年发布,算是操作系统界的一个大事,但我仍然没有关注。微软似乎已经陷入自己做的一个局里面了,微软的三大当家花旦:Windows、SQLSERVER、OFFICE,大家都没怎么升级,虽然2005、2008等等不断推出,但人们主流还在停留在2003年之前的版本。更由于Vista的差强人意,让大家对Windows7也没什么可期盼的。XP在易用、安全、稳定方面达到了一个很好的均衡,影响了windows后续版本的销售。微软一直有个理念是不要太好,刚刚好。但显然,微软自己这次违背了自己的初衷。
在虚拟系统层面上,可是今年的热点。我之所以把这一层面的技术都统称为虚拟系统层面,是由于这些技术实现的是操作系统的功能,但又和咱们现在使用的操作系统不太一样。他们就是云计算、虚拟化、虚拟机Framework。尤其以云计算和虚拟化为今年的热点代表。
其实,这些技术都和过去用户的需求是暗合的,简化IT投资,简化IT维护,安全隔离。现在的PC与PC服务器计算能力越来越强,如何一机多用还能彼此隔离,如何让更多的廉价PC服务器集群达到全球计算网络,让互联网就是一个巨大的虚拟计算机成为现实,是用户和IT厂商共同的心愿。如果把互联网堪称一个巨大的虚拟计算机,每个互联网上的计算机都可以看作是这个虚拟计算机的一部分,这个巨大的虚拟计算机有无数个分散的CPU,无数个分散的硬盘和内存,那么如何把这些分散的硬件计算资源在软件的层面上抽象成一个统一的,这些你的应用计算就可以使用无限强大的CPU和内存和硬盘存储。那么这个统一的软件层面就是云计算。
但是不同的云技术厂商,自己处的竞争位置不同,所以说的都是云技术,但都从自己利益出发,把客户导向有利于自己的一方面。Google和Amazon和SalesForce来源于互联网,当然希望大家把他们的计算资源当作云操作系统就可以了。但对于IBM、微软、SUN公司,他们强于服务器操作系统和服务器硬件,他们希望给客户提供一个云技术,让客户自己搭建自己的用。
到底是让客户自己搭建云,还是客户直接把应用托付给Google这样的大云,这和SaaS的考虑是一样的。有人认为自己去搭建SaaS环境,有人认为没有必要完全托管到专业的SaaS厂商就可以。这两类都是现实的客户需求,与其说服,不如都提供。所以现在国内的800app就在这么做。
操作系统层面说完了,就轮到数据层面了。今年数据库领域最大的事件就是MySQL被收购。现在,数据库领域,MySQL凭借LAMP异军突起,在SQLSERVER/ORACLE/DB2这三大主流数据库产品中又挤入了第四席,当然不得不让人侧目。而业界谁最需要数据库产品?数据库产品在操作系统之上,中间件之下。能拥有这两类产品的厂商但又不拥有数据库产品的厂商实在不多。随着未来的竞争加剧,最令人担心的收购就是Red Hat和JBOSS。大家可以看看各个巨无霸公司的产品线,从ERP、OFFICE、开发工具、软件工程工具、中间件、数据库、操作系统、硬件服务器来看,看看微软、ORACLE、IBM、SUN、Sybase、Borland。为什么Oracle要吃掉BEA,不就是中间件是在数据库之上,但又在ERP之下?从这里来看,大家就能明白Red Hat和JBOSS的命运了吧,花落谁家,各位自想。
说完数据库,就到了中间件级别了,虽然说数据持久层严格意义来说就是中间件,但它还是相对靠近开发框架,不太属于拿来配置就用的数据库产品或中间件产品。但数据持久层作为相对独立的一层,必然要单独拿出来。Hibernate是发源于XML配置型的数据持久层,而ADO.NET走的是另外的思路,虽然中间还冒出一个LINQ,但又被合并进下一代ADO.NET框架中。我在行业信息化领域工作多年,非常关注数据持久化这一领域。我个人观点是,未来数据持久化层面,必定是DSL脚本类型的语言配合框架。ADO.NET的思路是最先进的,但发展历史有些弯弯绕,有不少包袱。而Hibernate在配置型上走的太远,反而DSL脚本型一直转型不佳。
大家可以想想,未来的企业管理软件,客户端UI是XML描述的(这就是脚本型了,不是二进制了),客户端操作是JAVASCRIPT了,也是脚本了,中间数据处理层,也是DSL脚本了,虽然可以改,不需要编译不需要开发工具,而数据库层,也是SQL这样的DSL语言了。做企业管理软件开发的,一直梦想着灵活更改,只有所有的都是脚本型的,解释型的,才有可能实现这个目标。所以我一直很关注PHP,这是目前最成熟的解释型语言,应用啊、类库啊、开源项目啊、技术文档啊、技术社区啊,可以和JAVA、.NET这样的主流语言相比。大家想想XML UI(FLEX和SilverLight都是这样子的UI技术)+Javascript+DSL中间数据处理技术+PHP+数据持久层框架+SQL数据层技术,都是脚本型了,有问题,打开文件,改完保存就OK。根本不用安装开发工具、第三方控件、调试跟踪。有人说都是这样的明脚本了,很容易被人盗去源代码,这不就没有竞争力了么?大家可能对企业市场还理解不够,在企业市场,并不害怕盗版,因为企业市场看重的是提供商的品牌、成功案例、行业经验、稳定、可持续服务。大家都知道,一个ERP,不同的人来实施,效果就可能不同,而现在IBM这类企业市场的巨无霸都在不断探索开源,不断转型服务,人家标杆都这么做了,我们这些企业市场的小虾米还不跟进未来趋势?
在业务组件层面,过去的CORBA组件、EJB组件、COM+组件、.NET组件,现在为了这些组件之间互通,都需要包装一个统一的壳,而且还可以跨互联网访问,那必然是一个统一的组件模型,还需要配合底层的WebService技术才能达到统一并且跨互联网。那么这个统一的组件模型,就是SCA/SDO了。有统一的组件模型,就有了组件运行的容器环境,那自然就是ESB的发扬天地。组件之间的数据交互,统一为SDO数据格式,组件之间的交互消息事件触发,由BPEL引擎驱动。这就是SOA的三大落实技术:SCA/SDO+ESB+BPEL。在企业级领域,这是最好的技术。不过,如果你的产品,根本没有采用组件,也不用跨组件模型和互联网访问,那么SOA对你来说用处不大。有人说现在企业都还在上第一代软件,有的企业在整体重新上第二代软件,少部分企业在做老系统整合和上下游整合,所以有SOA需求的仅仅是这少部分企业。我也曾经这么认为,是因为我也片面的把SOA认为是整合技术。但我反复做了不少左右手互搏不断自我否定之否定,觉得SOA产生一定是和我最开头讲的未来企业生存环境变化有关,而非和系统整合有关。系统整合,我过去也做过几个,都是消息中间件+WebService构成,根本没有使用SOA。而未来的企业生存环境,在中国内地包括全球,包括我们都在推崇DELL和PPG这样的轻公司模式,包括我们现在都在做的OpenAPI和Mashups,还有现在的云计算服务如Amazon的S3服务,还有所说的中国读过金融危机的出路不是技术产业升级,而是6+1的整合。从这样的企业竞争环境变化来看,SOA是为了适应未来企业这种生存环境的,是业务需要SOA技术,而非系统整合。
面对未来企业竞争环境变革,简化IT、敏捷IT、即时IT需求不断呼声,云计算、SaaS、OSGi技术也不断涌现。这也是2008年非常热点的技术。SaaS、OSGi等等都是为了简化IT、敏捷IT、即时IT。
用SOA组件技术,用SaaS架构技术搭建好业务应用,就要让用户访问了。要让用户访问,就要提供接口。这就是2008年非常热点的OpenAPI技术,在企业市场,大家热衷采用WebServce和SOA,在消费市场和互联网市场,大家更喜欢轻巧的Atmo app、REST、Mashups。尤其以Google为代表,Google开放了自己大量的服务API,让大家在各自的应用中调用,我发现国内很多网站都在遵照GDATA的样式构建自己的OpenAPI。
如果把云计算比作Windows操作系统,那么OpenAPI就相当于Windows API。如果没有Windows API,那么就不能有更多的开发商参与进来构建更多的应用,如果没有更多的应用,那么这个操作系统也就没什么用了。所以OpenAPI非常重要。
有了云操作系统和API,还需要适合云操作系统这个巨大虚拟互联网超级计算机的开发工具和开发语言。Google提出了AppEngine。盖茨在退休后也提出来非常关注云计算的开发工具和开发语言。但现在发布的云计算开发工具和开发语言,都还不具备和云计算形神兼备的程度,还需要我们在2009年持续关注。
有了操作系统、数据库、中间件,就到了客户端层面。现在客户端都趋向于B/S结构,也就是浏览器应用。所以浏览器是必定跨步过去的一个重要环节,它是让用户进入这个链条的KEY。所以近几年浏览器大战不断发生。外行看热闹,以为是为了更好的体验,什么傲游、TT皆上。但实际上,浏览器的竞争,是为了整个产业链的战略,而非仅仅这一个小小浏览器。IE8今年发布,Chrome采用多进程和沙箱,Firefox发布,更小更快更安全,让今年成为浏览器的大混战。在取悦用户的表面之后,是整个产业链的竞争。在技术层面,我把这些浏览器都称为应用的表现容器,所有表现端的技术都要在这些浏览器中执行。
微软说,我们不担心FLEX,我们不担心Chrome,我们担心的是Javascript。也许很多人不了解这句话,这和javascript有什么关系。但大家想想,为什么chrome一直关注javascript执行优化,为什么FLAX采用的是ActionScript类Javascript语言,为什么Google大量应用依靠AJAX技术,而AJAX技术的核心就是也是javascript。
那是因为,在浏览器这个沙箱里,JAVA和.NET和PHP等都不起作用了,他们都是服务器层的开发语言,浏览器这个客户端,要想编程,目前只有javascript是共性。也就是说,javascript是客户端编程的唯一语言。这也是为什么今年Script标准化如此难产的原因,每一个厂商都有自己的利益和未来生死存亡的考虑。2009年,这一层面的竞争会更加激烈。我的朋友周爱民,关注界面层和业务层脱离,关注多核,关注JAVASCRIPT,我很佩服他的眼光和落实能力,我还在思考,他已经做了,并且已经初步做了出来。
在最高处的变现UI层,现在有三大主流技术,FLEX、Silverlight、AJAX。诸如ExtJs之类的,我也把他们归到AJAX之类中,因为他们的核心都是javascript配合xmlHttpRequest产生C/S般的特效。而FLEX和silverlight非常类似,都是XML UI描述,javascript操作UI,现在两者都在UI控件表现、javascript类库,开发工具,和主流语言整合上面不断做文章。看看silverlight最近的进展,在visual studio中增加了不少UI控件、也增强了很多javascript类库,也给visual studio增加了更强的javascript跟踪调试功能,而且和C#语言整合的更好。而FLEX呢,Adobe也不甘示弱,UI控件比微软先行一步,javascript类库也比silverlight要先行几年,开发工具也是借助Eclipse直上青天无须从零开始,而主流开发语言,比微软更开放,主流支持C#、PHP、JAVA。而且还提供了RemoteConnection、HttpService、WebService三种访问方式,让各种现在的现成应用,都可以通过合适的通信技术连接起来,用FLEX表现出来。
最近,葛优葛爷的新片《非诚勿扰》也上映了,让我想起葛爷在贺岁片《甲方乙方》的最后一句台词“1997年过去了,我很怀念它”。
2008年发生了许多事,不管是雪灾、、地震、奥运、飞船出舱、金融危机,还是令我永久记忆的SD2.0大会《走出软件作坊》首发、讲课、签名售书、朋友聚会,爱民帮我介绍博文视点,都非常值得怀念。
对,2008年过去了,我很怀念它。
(本文大量内容引自《走出软件作坊》中的章节《沙尘暴-令人焦虑的技术时代》)