1. 下岗再就业。 2003年7月,我离开了工作6年的公司,开始新的生活。我已经开始喜欢,
并用Java做了一些JSP/Servlet应用。此前我主要是在Delphi下工作,8年Delphi经验,枉为开发部经理。
2. 想法。 一个朋友用Delphi开发了矢量控件,卖得不错,触动了我.我也想做一个,用业余时间,用什么? java,想都没想过Swing/awt是什么东西就开始准备。自以为基础还可以,因为
做过Delphi矢量程序方面的经验,语言不同,方法相同。
3. 选择。
1)JBuilder, Eclipse这两个东西,一个要付费的,一个是免费的。不过到了目前国人手里,基本都是免费的。用哪个?试了半天,都好。前者因为收到过Borland的律师信,所以不敢用,而且速度慢,配置要求高,而且没有Pure sun java,所以不用。后者前身是IBM(没有记错的话)的东西,果然不错,但是还是没用。因为看了好久,也没觉得他们胜过UltraEdit多少。说到这,看官可能以为我蠢得可以,我也这样觉得。但最终选择了UltraEdit和Unix VI作为主要开发工具。
2) Java2D能做什么?我看了半天,可能JGraph这个开源项目是经典吧。我总结了一下JGrpah:设计非常好,扩展很容易,至少很多人这么说的。我也这么觉得。缺点是,很奇怪,速度很慢。程序宠大,自信靠一人之力,做不出来的,这是Team job.
Java2D太好了,很多功能,但是根据以前的经验,它往往有不足,不足在什么地方?就是没有完整的矢量应用。后来看到用Java2D做SVG和Flash的,才知道还不错,只是自己误解了。但是考虑到可能的产品移植,比如其它的语言环境,我还是放弃了大多数Java2D的功能。决定自己实现如Intersect,contains等等功能。即重写Rectangle2D,Line2D,Point2D等东西。可能蠢了点,看官不要笑话。
3)没仔细看过Swing/Awt什么东西,也真的不太熟悉MVC,就做?可能吗。我不去想了,先设计设计吧,大年初一就设计了。先不管那么多。事实上我就这样过来了,而且还走得顺利。只是有很多地方要Refactoring罢了。这里,要感谢Google.
4. 开动。
1)早看过了UML,也了解OO,以前还给同事上过OO的课呢,但是还是不了解OO.在设计时,定义的不少 接口,都变成了AbstractClass,不知何故,只是因为在下面Implements一下之后,就一定要写东西,即使 没东西可写也要写一下,后来就换成了AbstractClass,烦。
2)以前写矢量程序,是不得已,这次是自找苦吃,那么应该补一点课吧,买了好多几何书,没一本说全的,最后还是看看国外的MathForum,说得很好。记得有一篇文章是这样说的,看完这些东西,你又回到了高一水平。
3) 写成英文版吧,要换成中文也不难,但是换过去就麻烦了。所有的Comments/API documents都要写成英文,中文就回不去了。 英文水平实在不佳,但将就吧。
4) 实现所有的类库,实在是累,整整6个月的业余时间。中间还负责洗了两个月的碗,家庭支持最重要。当初选择UltraEdit是一时性起,但是调试过程实在是痛苦。不过现在感觉好多了。
5)从Point做起,Rectangle,Ellipse,Bezier Curve, Arc/chord/pie, 一直往前台写。怎么看都觉得不如 Point2D,Rectangle2D,Curve2D..但是后来运行正常,也觉得可以,因为不需要因为继承Java2D而承担过多的压力。
6)程序中,难免用上XML,我选择了JDOM, 在我的1.0.0版程序中, JDOM让我的JAR文件变成了1.5MB,我火大,自己写了一个MiniDOM,Jar文件缩小为380KB,开心.
5.发布。
1)起个名吧,虽然前面Java定义了Package name,但觉得不好,我又改了,就定为JFDraw(现在可以在Google上查); 跟JDraw有点混,但不是一回事。
2)先发布个Free version再说,对于Java,写Shareware要担一点风险,所以还是先发布个Freeware吧。起名JFDraw Free Version 1.0.0.
3)做了网页,到国内外网站上发布了一下,过了几天,有个England的朋友给我回信:
... My first impression is that it's the best vector draw freeware
program I've come across, and I'll no doubt be saying that on the
details page ...
看上去还不错,有点夸大其辞,不过给了我信心。
4)还有个朋友说,在Linux下运行良好,但事实上我没有在Linux下调试过(没空调试),很高兴。
5)然后就是要求改进的信了,呵呵,心下想,这下可有事做了,有朋友支持就行。总算辛苦没有白费。
6. 继续努力。
事情还远没有结束,这个程序才开了个头,不过,还是有很多想法,希望朋友们支持,以后多多努力以感谢大家。