Pervasive Java
引言
进入正文之前,先来点废话。
这要从那部追随我近20个月之久的Nokia 3350说起。在去年5月的某一天,就在我上公汽的那一刹那,它被迫离开了我。后来买了一部N3100,就是经常可以在公汽和校园里见到的很多人在用的那种。它是彩屏的,可以支持java游戏,准确的说它采用了Nokia S40平台,可以支持MIDP 1.0。后来买了根COM口的数据线,从PC下载些图片和铃声,然后是游戏和应用软件。期间,我一直有一个想法,就是给它写一个小的游戏或者应用软件。因为自己的研究方向就是嵌入式系统,这种想法变得越来越强烈。在毕设的PCB设计脱手之后,我实现了这种想法。虽然只是编了个很简单很简单的东西,但是经历了全部的流程,对这件事情也有了个初步的熟悉。就这点粗浅的熟悉本不足撰文以记之的,但是有两个原因使我决定写这篇小文。我猜你一定在说,这些个读书人真是麻烦,写个文章还要扯这么多理由。名正则言顺嘛,约女生出来还得找个借书还书之类的幌子。
其一是因为好友yuanqs很喜欢钻研软件,而且对逆向工程比较有爱好,经常和我交流心得,我每每劝他整理个文档,这样比较有条理,也便于日后拿起来。前一段预备和他一起研究一个Python写的应用软件,后来因为毕设和写手机程序就耽搁了。而且说起来轻易,其实我也很少就自己学习的东西整理出个书面的东西,所以想想也不能光说不做。
其二是因为接下来的一段时间要调试硬件,写板子的程序(主要是C),并且要花很多时间写毕业论文,所以估计不会有很多时间去学习Java的东西。所以这篇文章也算是对之前学习的一个小节。
也许有点厌烦那些道听途说,众口一词的套话。我现在的想法是不说没有用的正确的废话,宁愿说一些有自己见解的不一定全面的看法。
学习Java于我是一个断断续续的过程,而且也没有长时间的在实际项目中使用它,所以对Java的理解一直是比较粗浅和有限的,我想即便现在也是。但是因为工作和学习内容的变化使得我有机会能接触到Java针对不同平台的版本,所以可以从不同的侧面来看Java,因而可能会有些不同的体会。这里我不想讨论具体的技术细节,那是汗牛充栋的东西。我想做的是叙述一个开发者对Java的理解和熟悉,以期与其他人的交流,并希望别人可以指出我的看法中不对和偏颇的地方,或者在一段时间之后再读到此文,觉得太粗鄙,那就说明是一种进步。
Java on Desktop
最早接触的是Java的桌面版本,当初学习它是因为热门,我想我说是因为看到Java的光明前途你也不会信的。花了两天的时间匆匆看完了两本Java核心技术,因为觉得很多语法和C++类似,当时还心存迷惑,有了C++,为什么还要搞这个,而且又很慢。语言究竟是一个工具,所以我觉得看它怎么样还要看它能做出或者已经做出了什么样的东西。那时用Java做的桌面应用软件还比较少,看到相关的文章,当时对于纯Java能否做出一些比较大的实用的软件,很多人还是心存疑虑的。我所了解的用Java写的应用软件主要有几类。
第一类是软件的安装程序,以Oracle数据库的安装程序为典型,我想主要是因为数据库有不同平台的版本,核心的组件无法跨平台,但是安装模块却可以只做一个,这可以省掉很多的工作,确实很好的利用了Java的跨平台的优点。
第二类是一些IDE,以JBuilder为代表。到后来的几个版本,几乎是纯Java的代码了。当然JBuilder也继续了Java启动比较慢的特点,也是经常被诟病的地方。
第三类就是Java的应用服务器,例如WebLogic,WebSphere,SunOne。这些应用服务器对平台无关性的要求使得Java几乎成了一个必然的选择,否则为每个平台开发一个版本确实有点难以承受。
第四类是一个服务端软件的控制台,例如数据库和应用服务器。
第五类是通用的商业应用软件,例如永中Office等。
第六类是开源的软件,现在这方面发展很快,好的作品也越来越多,比如大家熟悉的JBoss, Eclipse等等。