向跨平台前进
2002年中,研发中心传来863项目中标的消息。这个863项目的名字很长,读起来也比较拗口,叫做"面向网络海量空间数据大型地理信息系统"。项目要求最终的GIS平台要能够运行在UNIX操作系统之上,这在当时其实是个很让人费解的要求。因为2000年左右正是PC一统天下的时候,微软如日中天,很多原本运行在UNIX上的GIS和遥感图像处理软件都纷纷向Windows上移植,可现在却要开发UNIX上的应用,着实让人感到很不情愿。如果兼顾跨操作系统,那使用Java平台开发是一个非常好的办法,因为Java可以一次编写到处运行,UNIX和Windows通吃。但是Java也有一个比较大的问题,那就是一旦使用Java开发,那就基本上绑死在了Java语言之上,什么C/C++, C#, VB.NET, Pascal统统都无用武之地,Windows上开发者修炼多年的武功招式都成了花拳绣腿,这相当于要放弃所有的Windows上的开发者,彻底投身到Java社区内。对微软说不,谁也无法下这样大的决心。
那有没有什么办法让GIS既兼顾跨操作系统运行又能满足多种语言开发呢?或者我们反过来问,地理信息系统是不是真的需要既需要跨操作系统运行又要能够使用多种语言开发呢?对于这两个问题,我们的答案都是肯定的。我曾经不止一次看到过有人希望在PHP,Fortran中调用GIS的图形功能,我自己也曾经尝试过用RoR开发一个地图网站,用J2ME开发一个手机地图应用等。怪只怪生活需要地图的时候太多啊!
在软件的世界里,没有什么是做不到的。又跨平台又支持多种语言,其实算得上什么难题?!不是有高手能够用小刀在硬盘上刻数据吗? 研发中心很快就想出来一个利用C++“一次编写,到处编译”的办法,解决了多操作系统的问题。还有一个重要的问题,就是多种开发语言的问题怎么办?Java调用C++,可以使用JNI;那C#,VB.NET怎么办呢?.NET1.0提供的Managered C++实在是惨不忍睹,我们当时就有感觉这个托 管的C++恐怕托 管不了多久。果然不久之后,Lippman
和Sutter又搞出来一个C++/CLI,这样也就解决了.NET调用C++的问题。
由于我们将要开发的这个GIS是又跨平台,又支持多种开发语言,还支持多种数据库的产品,我们感到必须要给她起个很宏大的名字,比如“无敌GIS”,“通用GIS”,“统一GIS”等等,最后讨论的结果就是“Universal GIS”。
为了尽快完成项目的开发实施,研发中心抽调了部分人员封闭开发UGC。本来以为我会参加封闭的,但最终没能进大名单,继续负责SuperMap的日常开发维护。不过当时对UGC的热情实在太大,我几乎每天都要去封闭的办公室去看看开发进展,没有凳子就坐在机箱上看。
原以为快乐的开发生活可以一直继续下去,但很快有一天领导找到我:“有一个新的重要的任务要交给你...”