使用Java 开发桌面应用程序已近两年,基于Windows平台,开发的项目也有一些,感觉挺好,而光环背后的黑暗比起纯粹的黑暗更可怕。
为什么Java SE开发的软件能顺利在我们的机器上运行呢?因为java是站在巨人的肩膀上,而这个巨人便是JVM,所幸的是我们的Windows拥有这个巨人平台,让我们的软件拥有发挥的舞台,而没有了JVM,什么都是扯淡,就像没有了Windows很多软件无法生存一样。放眼计算机操作系统世界,目前的霸主依然是Windows,这是一个无法改变的事实,而且这一主流趋势在短时间内无法改变,可见win的毒性已深侵人心。
让我们来看一组很有说服力的数据:2009年2月pc操作系统统计数据
而且Windows的市场份额不但没有下滑的趋势,而且还在上涨。
Swing hacks 说:是桌面催生了java,未来也必将是桌面应用让java更加光彩夺目。很遗憾,我现在无法同意这样的观点,虽然电子商务应用方面Java EE已经占据主流地位,但是我依然看不到Java SE的未来。再说Java的跨平台,以前错认为的是“一次编写,到处运行”是你编写一次代码,能在很多平台上运行,其实不然,所谓的跨平台是有条件的,而这个条件就是前面所讲的JVM,Java用JVM掩盖了这一事实。诚然,java语言是跨平台的,而Java开发出来的字节码也是跨平台的,可以在任何平台上的java虚拟机的帮助下解释运行,但对于没有装JVM的平台呢?很明显是不能成立的。由以上的分析,Win的市场份儿在85%以上,在这85%里面,装JVM的机器又有多少?可想而知很少,因为除了相关专业的人员,一般用户都不会在机器上安装JVM的。当然也有解决的办法,例如讲java应用程序jar转为exe,是可以使用exe4j、jsmooth、installanywhere等一些软件实现,但是依然没有解决根本问题,鱼儿离不开水,转化的exe可执行文件依然没有办法脱离JVM独立运行,解决的办法是将jre嵌入在运用程序当中,但是你试想,原本几十kB的jar文件转成exe后变成了十几兆的exe文件,无法接受,而执行效率依然停留在蜗牛状态。网上有句话说“java语言是方便了程序员,苦了用户”,我认为说得很正确,当然这一说法不在java EE方面成立,在Java SE和Java ME方面相当有道理。而开发软件的目的是为了方便用户,显然这有违初衷。
而在对自己的思想进行一番战斗之后,我想起了任何事物都不可能十全十美的,有所得便有所失。而我是该继续登顶,还是浅尝辄止?
也许答案只有自己知道。