Java的跨平台性

今天突然被问为什么大家推崇Java时经常提到跨平台性,当时没想明白……回来又想了想,大概是这个意思:

Java刚推出时,当时C/S架构仍然是流行的,这个时候Java跨平台的优势是很大的。毕竟如果真能做到“一次编写,到处运行”,那么这是非常诱人的。但是问题在于当时awt、swing在客户端上的拙劣表现,另外就是运行速度的问题(假设如果当时有eclipse或者SWT,而PC的运行速度有现在的高端机的表现,那么估计历史就会改写了),这些使得这个Java编写跨平台Client的想法并没有被广泛执行过,加上C/S架构一些固有问题(比如客户端的部署和升级),终于第二次浪潮(B/S)以不可逆转之势来临了。

也许不能否认Java的跨平台特性为Java积攒了不少人气(事实证明人们对任何有可能或者至少看起来像能抵抗MS的东西从来都保持一种宽容的态度),但而后Java(或者说J2EE)在企业级开发方面占据主导,这些可能更归功于Java语言本身的表现力(一些语言的特性)加上J2EE本身的先进性(当时还没有一个类似的完善的企业级解决方案)以及成功的商业运作。

而现在的J2ee应用虽然没绑到os上却被绑到中间件上了;至于桌面应用有没人用java来做很难说;倒是J2me貌似很是得意于跨平台型,不过我不了解这部分,所以也是妄下断言。不过总体感觉上现在Java的流行和跨平台特性联系是不怎么大的。