框架(Framework)和平台(Platform)是软件行业中经常看到的术语,应当说也是这个行业发展的方向。在讨论其重要性之前,我们先看看两者在概念上的区别。
   
    框架是针对一定的应用领域进行开发的,比如,ACE(Adaptive Communication Environment)就是针对网络通讯而开发的一个框架。框架通常对于应用进行了一定的抽象,将需要的一些通用的功能做成了软件模块。当用户(或开发人员)需要对应用进行开发时(即实现应用的功能时),如果采用框架,则只要实现针对应用的特定代码就行了。或者,我们可以理为:解框架为相类似的应用设计了一个骨架,而具体的应用只是在这个骨架上填上肉和皮肤。假如要做一个Server/Client程序,如果采用ACE,我们可以在Server侧用Acceptor来监听连接请求,而在Client侧则用Connector来发起连接。最后,Server与Client之间是一定有协议的,这些协议是针对特点的应用的,并不是框架的一部分,是用户必须其于框架去实现的特定的代码。
 
    平台是通常和一定的操作系统相关,是对操作系统更高层次的抽象。平台一方面提供了所有使用硬件资源的API,另一方面也实现了一些通用的组件,这些组件可以服务于不同的应用领域。比如,常用的平台模块有,内存管理模块、Log管理模块、设备管理模块,等等。
 
    如果用分层的概念来看框架和平台,假设上面是应用层,下面是硬件层,那么,我们可以认为框架是在平台之上的,是更加接近应用的。而平台是在框架之下的,是更加的通用的。同一个平台可以为不同的框架(应用领域)服务的。
 
    框架和平台是目前行业很重要的开发方向,这足以体现了其重要性,那为什么会如此重要呢?我想总的来说应当是:为了代码重用和开发出高质量的软件。无论是框架还是平台,其思想都是为了代码重用。代码重用的好处,一是缩短开发时间,二是可以少犯相同的错误,而这也就提高了软件质量。此外,两者都是更高抽象层次的软件开发方法,是避免“重新造轮子”的开发方法。
 
    通常一个好的框架设计都会基于一定的平台的,当然,平台可以有简单和复杂,框架中所使用的平台是应当是简单还是复杂,其标准应当是:保证框架能很快的被移植到新的操作系统。可见,有平台概念的框架有更强的适应性和生命力。应当说JAVA的兴起,给框架的发展打开了全新的篇章。
 
    平台的设计除了对于现有的操作系统进行更高抽象层次的封装外,我认为基于虚拟机的语言的开发是一种新形式的平台开发。比如,Python、Java,其本身是构建在虚拟机上的,而其丰富的库可以说构建了平台的功能。这种形式的好处是,跨平台成了开发虚拟机的工作,而这通常都是由语言的创造者(社区或是公司)去完成的。