Java和Python
不得不承认,我一直对解释型的计算机程序设计语言心存偏见。
直到亲眼看到很多牛人从C++阵营转投Java阵营,直到亲眼看到很多应用程序用Java和Python开发,生产效率大幅度提高。直到最近因项目要求而亲自体会到Java的强大,直到今天知道Java也可以不那么慢,甚至可以不靠解释执行。
由于喜欢系统程序,崇尚实时控制,所以一直把软件的性能看得很重。虽然我也知道,最好的解决方案,不一定是最快的。若非系统软件,可以牺牲性能来获得更好的生产效率。很多场合使用Java,并不图它的可移植性,而是为了更高的生产效率。日益壮大的程序库,良好的错误处理和安全特性,使得Java的开发效率和C/C++相比成倍提高。抛开B/S应用不谈,开发同样的应用程序,Java可能比C++容易实现。
Java解释执行确实很慢,但运行慢,是有办法解决的。从《Java编程思想》中得知了几个方法,顺手用Google搜索了一下,找到以下信息。通过JIT,Native code,或Sun推出的HotSpot技术提高Java程序的执行速度。在不要求应用程序可移植的情况下,我觉得native code是个不错的选择。这样编译后的Java程序,失去了移植性,却获得了接近C++程序的运行速度。
http://www.trl.ibm.com/projects/jit/index_e.htm
http://disordered.org/Java-JIT.html
why_native
java_native_code
http://java.sun.com/javase/technologies/hotspot
比Java更加方便,语言本身的演化也更快的Python,被人们认为是更适合编程的动态语言。
也列出几个Python的资源。
http://www.python.org/
http://docs.python.org/
http://python.cn/
python_doc_cn
Update:
经过一番将Java编译为native code的尝试,认为以下几个工具不错。
gcj(http://gcc.gnu.org/java/):
ubuntu默认安装了,但gcj不支持swt,awt等图形库。
JNC(http://jnc.mtsystems.ch/):
不是完全免费的,但支持awt/swing,似乎也支持swt。但功能依然很简陋。
Excelsior JET(http://www.excelsior-usa.com/jet.html):
支持swt,awt,IDE式的图形化集成环境,操作便利。有Linux版本和Windows版本。
可惜是商业软件,并且十分贵(1200-5000美金),但可以免费试用30-90天。
我试图用它编译巨慢无比的LumaQQ,出错了。
报告bug给该公司,他们说已经重现了问题,解决后会与我联系。
之后经过反复交流,他们修正了bug,态度非常积极热情。尽管我没有买他们的产品。
编译后的LumaQQ,使用JET的打包程序,可以安装到其他机器上使用。
不太满意的一点是,速度虽然比解释执行快了,但幅度似乎不大。
另外打包的时候,会把一个很大的JET的Runtime也一并打包进去,否则无法运行。
另外,试用版的JET会在LumaQQ退出的时候,显示一个关于版权的警告信息。
不过就功能而言,JET比前面两个工具要好很多。
找到一份关于解释型语言与C语言开发效率对比的文章:
动态语言开发效能的一个案例研究
另外听说Ruby on Rails可能与J2EE并存,成为Web开发的新模式。
很是激动人心。
标签: 反动言论

Atom


3 条评论:
“Java的开发效率和C/C++相比成倍提高”
是否有些夸张?
是。措词有些问题。据说可能有两倍的速度提升。但具体的统计不得而知。我认为可能是当开发C++和Java同样容易实现的项目时,Java的开发时间会短一些。其实我更喜欢C++,如果不是项目要求,可能至今也不使用Java。除STL外,C++同样有很多程序库可以使用。
当然我不用Java完全是由于我面向的问题中没有这样的需要。“你不用,不代表她不强大”,这是大家常常教导我的话。
发表评论
<< 主页