Java是一门适合于企业级应用的语言,它并不适合做个人桌面应用开发,如果你要开发一个游戏/音乐播发器/下载工具/浏览器..等等桌面应用.你***不要选择Java,因为这样做你可能会遇到两种情况.
1.完全做不出来
2.做出来没人用
Java Swing适合开发企业级应用的桌面程序.
企业级应用是一个工作环境,用户不会关心程序是如何安装的,不用关心是否占用了我过多的内存这些问题.只要在目标机器上能够稳定运行就可以.企业级应用的程序桌面不需要像游戏一样复杂的图像效果.
由于这样的假设条件,Java Swing做富客户端应用有以下好处:
a.Java程序员不用关心内存的释放问题,大大减少编程的复杂程度.
b.Java的跨平台性.
c.Java丰富的企业级应用支持.
...Java本身的其他优势
哇,看起来Java真是太美好了,但这是在用户接受了假设条件的前提下才可以获得的好处.
Java Swing还可以 做工具类软件
这些工具大多也是工作上使用的,比如IDE/一些分析工具.如果使用Java做工具,那么我们需要安装JDK,即使软件自带了JRE,它也会比同类的软件体积要大,并且会占用更多的内存.这些需要付出的代价对于一个非Java程序员来说,必然是会考虑的要素.当然,工具类软件,我们更关心的是它的功能,即使部署成本和计算机资源占用高一些,只要功能完善我们还是会去选择.在用Java做工具类软件时,比较重要的一点是Java的跨平台特性.
Java Swing不适合 做个人用户的桌面应用程序 也不适合做游戏
个人桌面应用与企业应用相比有很多不同:
1.个人桌面应用对于软件体积是十分关注的,这一点并不是因为我们的硬盘不够大,而是因为小的软件更容易被下载.一个1mb的软件和一个15mb的软件是对于个人用户来说是有明显区别的.有一个翻译软件叫灵格斯,其中一个非常重要的特性就是小.
Java的Jre6是15.5MB.如果是一个400mb的软件,或许这15mb并不多,但对于一个1-2mb的软件来说,这15mb就很多了.
2.安装的复杂程度,个人用户并不是专家,安装的复杂度,时间长短对于一个软件来说都非常重要.一个安装20秒的软件比一个需要安装1分钟的软件有更强的竞争力.
3.软件的执行速度和计算机资源的占用率,这一点在计算机不断增强的硬件性能上看来,被弱化了一些,但是在个人桌面应用中,往往会打开很多个其他应用,更少的计算机资源占用会使产品获得更强的竞争力.Java产品总是要占用大概80mb的内存.
4.Java对于复杂的高性能的图像编程来说,支持比C++少很多
有一些Java的图形游戏Demo,这些产品看起来更像是在表达一种"我也能"\"我也可以做游戏"这样的声音.而往往看到这些Demo的初学者就会产生错觉.如果你了解了osg,你或许就会觉得Java图形编程与c++的差距.
关于JavaFX
JavaFX前途未卜,Oracle以后是否会继续推行这是不可能从任何人发表的任何言论里得出结果的.但就目前来看,JavaFX还存在很多问题,它支持的IDE很少,几乎只有NetBeans它的Eclipse插件就有很多bug.当然这里NetBeans的用户和text的用户不用来拍砖.我想说的只是一个事实JavaFX如果连Eclipse插件都不能提供,那它必然会失去很多用户,而且Eclipse插件的issue已经提出了很长时间,却没有人在修正.从对JavaFX当前的投入来看,JavaFX的前景明显要比Adobe的Flex和MS的silverlight要更加另人担心.MS的 Silverlight有一个很好的Eclipse插件.
关于Flex/JavaFX/Silverlight
我觉得RIA***的问题还是安全性,因为安全性的要求比较高,所以它们还是比桌面应用多了很多限制,比如cross domain access.这一点对于P2P或者调用第三方组件来说就是很致命的弱点.不过这不是很多RIA应用都需要的特性.如果你的应用需要这样的特性,你就不能选择RIA.
【编辑推荐】