弓满月的专栏

——会挽雕弓如满月,西北望,射天狼

张绍林ID:yawolf
15251次访问,排名7474(-7)好友0人,关注者0
爱好:围棋、书法、文学、户外运动。
yawolf的文章
原创 19 篇
翻译 6 篇
转载 4 篇
评论 18 篇
弓满月的公告
联网售票系统在Oralce9i,MS SQL Server 2000,MySQL5,Sybase12.5 四种数据库环境下测试通过.
最近评论
yawolf:如果网友有发现新的免费Eclipse插件(支持Ganymede),请告诉我更新上去。
wangyi878750:倒是觉得没有这个必要
cubit:如何将ServerSocket通信加入到RCP中呢?
AppleQ:不错啊,我以前一直做BS,看到GUI开发然后进入了RCP,前辈这个自己的东西做的好!是对我们的鼓励啊。
Sunrise:谢谢,对我鼓舞很大。
文章分类
收藏
    相册
    美图共赏
    友情链接
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 Eclipse 助我成功收藏

    新一篇: 在Eclipe中实现工具栏,兼答suxiaoxiao网友问 | 旧一篇: Eclipse 3.3正式发布

        期盼很久的Eclipse europa版本今天正式发布。早上一起床我就登上了Eclipse网站,果真可以下载了,激动之情难以言表,逐赶紧下载。下载后,解压、运行、升级,一切OK。Eclipse对我的帮助是非常大的,她帮助我成功地开发了汽车客运站联网售票系统。衷心感谢Eclipse基金会!我要告诉大家,选择Eclipse就是选择成功!
    一、 选择Eclipse
        2006年5月,是我人生的转折点,我决定自己创业。
        我创业的项目是汽车客运站联网售票系统,当时国内的售票软件都是采用Delphi、Powerbuiler、VB或VC开发的,都是基于Windows操作系统及单一的数据库产品,要么是Oracle,要么是SQL Server。这此产品,不仅可扩展性差、价格昂贵,而且用户的投入成本也很大,对那些欠开发、欠发达的农村客运站来说,简直是可望不可及。这些售票软件要实现联网售票,一般采用两种解决方案:一是采用交易中间件(如Tuxdeo),然后由各客运站的售票软件供应商修改各自的软件,实现联网售票;二是采用WebService,中心采用Java开发,售票系统用WebService对售票部分进行封装。这两种方案都不是最佳方案,可扩展性差、性能低、投资成本大,还存在安全性问题。另外,这两种方案要实现全省、全国联网售票,还需要做很大的改造。因此,我就想开发一个100%纯Java的联网售票系统,实现跨平台、跨区域、支持多种数据库。刚好JavaEE5.0 和EJB3.0在2006年5月发布,让我坚定了创业的决心,决定使用Eclipse作为开发工具,基于JavaEE5.0、EJB3.0、JBoss4、Web2.0构建全国联网售票系统。
        以前在公司时使用JBuilder开发Java应用,虽然下载了Eclipse也没时间学习。自己创业决定使用Eclipse,之所以选择Eclipse,一则是因为她免费、开源,能够降低开发成本;二则是在使用JBuilder时,总觉得有些不爽,比如设计EJB时,当EJB数量增多时,保存.ejbgrpx这个XML文件常常会出错,而我使用Eclipse一年多时间以来,稳定极了,从来没有出现此类低级错误。Eclipse简单易学,很快就上手了,如今已经不记得JBuilder是什么样子!
    二、 将Java Application移植到Eclipse RCP
        构建客户端应用程序时,有几个基本问题是开发人员必须考虑的:
     如何启动应用程序?
     如何为不同的角色授予相应的操作权限?
     如何保证系统的可扩展性?
     如何进行系统的升级更新?
     如何显示联机帮助?
        普通Java 应用程序是通过批处理来启动的,总觉得不太好;为不同的角色授予相应的操作权限,编程实现也特别烦琐;版本升级比较麻烦,一般使用Java Web Start技术实现;集成联机帮助也需要编码实现;另外,您必须自己实现MVC架构,更甭谈可扩展性了。
        经过对Eclipse RCP(胖客户端平台)进行研究,我决定使用RCP构建客户端应用,这是因为Eclipse RCP提供了以下好处:
        1、可以通过一个EXE文件启动应用程序;
        2、可以扩展ActionDelegate的init方法,为不同的角色授予相应的操作权限;
        3、拥有集成完全不同的工具和应用程序的能力,易扩展性和易定制性是Eclipse深受程序员喜爱的原因之一。
        4、可以通过使用Update Manager来更新客户端的应用程序,实现应用程序的升级替代。
        5、提供了一个全面的框架,能够在应用程序中提供在线帮助。
        将Java Application移值到Eclipse RCP,还需要将Swing移植到SWT,需要学习SWT、JFace等相关知识,尤其是在项目的后期,这种移植的工作量非常大,是需要下很大的决心的。
    三、 将Swing移植到SWT
        将Java Application移植到Eclipse RCP就注定了必须将Swing移植到SWT,放弃Swing是跟我这个项目有关的。售票系统注重实时性和人机交互,特别是在售票的时候,能够希望只通过键盘实现快捷操作。而Swing的JTable却很难做到这一点,在JTable上单击回车键,光标就自动下移一行,用户根本不知道自己究竟选择了哪一行,挺烦的,而SWT能够实现精确控制。另外,SWT在界面上也比Swing漂亮许多,JFace还提供了许多控件,让编程更加简单。将项目从Swing移植到SWT虽然花费了我近两个月的时间,但是效果却很明显:控制操作可随心所欲了、程序运行变快了、界面更美观了、结构更简单了。
    四、升级到3.3版本
        虽然3.3版本新增了许多功能,比如拼写检查、对类的成员排序、显示插件依赖情况等,但我最喜欢的还是Datetime控件。由于我的应用程序在许多地方需要使用日期,比如发车日期、售票日期,这使得我需求一个控件能够让用户很方便地选择日期。搜索了第三方日期插件,总觉得不理想。当看到3.3版本提供了Datetime控件时,我立马升级了 Eclipse版本。不过,美中不足的是,Datetime控件提供的方法还不太丰富,需要我们自己扩展。
    五、 喜欢Eclipse
        经历过汇编、VC、Delphi、Powerbuilder,我喜欢上Java,因为Java我喜欢上Eclipse,而Eclipse又使我更加喜欢Java。喜欢Eclipse不仅因为她免费、开放源码、易定制和稳定,喜欢Eclipse更因为她可扩展的架构。正如Robert C.Martin所说:“The beauty of software is in it's function, in it's internal structure, and in the way in which it is created by a team.(软件之美在于它的功能,在于它的内部结构,还在于团队创建它的过程)”。
        使用新技术是有风险的,而Eclipse为我们降低了风险,帮助我们取得成功。面对新技术,我们不应该畏惧不前,而应该提高驾驭风险的能力。
        衷心感谢这些开源软件,开源让社会变得更加和谐,开源让生活变得更加美好!
        Eclipse europa今天正式发布,恰逢香港回归十周年,吾儿出生三周岁之际,按奈不住激动之情,聊作此文,以兹纪念。
     

    发表于 @ 2007年06月30日 21:49:00|评论(loading...)|收藏

    新一篇: 在Eclipe中实现工具栏,兼答suxiaoxiao网友问 | 旧一篇: Eclipse 3.3正式发布

    评论

    #FANHR 发表于2007-06-30 22:14:36  IP: 221.6.3.*
    真为你高兴,有自己的东西,很不错哦!
    #yawolf 发表于2007-06-30 22:26:48  IP: 218.18.44.*
    谢谢鼓励!感谢开源组织啊
    #djsl6071 发表于2007-07-09 10:51:41  IP: 59.59.6.*
    哇,这么多高兴的事啊,恭喜你,我也正研究eclipse呢,看了你的文章考虑去看看RCP了。
    #yawolf 发表于2007-07-09 12:11:09  IP: 218.18.43.*
    谢谢!RCP挺不错的,值得研究!
    #javalover 发表于2007-07-09 14:14:17  IP: 220.163.195.*
    你的界面做得很漂亮啊
    #suxiaoxiao 发表于2007-07-25 09:23:37  IP: 202.120.40.*
    可以请教下工具栏那部分怎么做吗?
    如果不是rcp自带的action的话
    比如,做个‘open‘ 的工具 谢谢了~~~
    #yawolf 发表于2007-07-25 20:41:54  IP: 61.141.180.*
    1.在ActionBarAdvisor类中定义工具栏位置
    public final class NetStarActionBarAdvisor extends ActionBarAdvisor {

    /** 售票管理工具条. */
    private static final String TOOLBAR_SELL_TICKET = "tbSellTicket";

    @Override
    protected void fillCoolBar(final ICoolBarManager coolBar) {
    coolBar.add(new ToolBarContributionItem(createSellTicketToolBar(coolBar
    } .getStyle()), TOOLBAR_SELL_TICKET));

    private IToolBarManager createSellTicketToolBar(final int style) {
    final IToolBarManager toolBar = new ToolBarManager(style);
    toolBar.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
    return toolBar;
    }
    ...
    }
    2.扩展Action,指定toolbarPath位置为"tbSellTicket/groupMarker1",其中groupMarker1是分组,tbSellTicket可以有多个组。
    <action
    accelerator="F2"
    class="com.cepiao.netstar.client.ticket.actions.TicketAction"
    definitionId="netstar.client.ticket.actions.SellTicket"
    icon="icons/saleticket.gif"
    id="com.cepiao.netstar.client.ticket.TicketAction"
    label="售票(&amp;S)"
    menubarPath="sellTicket/groupMarker1"
    style="push"
    toolbarPath="tbSellTicket/groupMarker1"
    tooltip="售票、售留票、改票">
    </action>
    3.实现Action类,继承ActionDelegate.
    /**
    * @(#)MyTicketAction.java 1.0 2007/07/25 20:36:43
    #lodi 发表于2007-08-03 13:34:40  IP: 210.21.59.*
    你的信心和高兴传递了给我,谢谢!
    #Cai 发表于2007-09-05 10:38:35  IP: 58.252.15.*
    当我困惑java界面开发时,有幸看到你的文章,让我重拾了java方向的志向。谢谢你。永爱Java。
    #Sunrise 发表于2007-09-19 19:29:43  IP: 218.85.84.*
    谢谢,对我鼓舞很大。
    #AppleQ 发表于2007-11-27 10:50:43  IP: 221.218.170.*
    不错啊,我以前一直做BS,看到GUI开发然后进入了RCP,前辈这个自己的东西做的好!是对我们的鼓励啊。
    #cubit 发表于2008-06-06 16:44:29  IP: 59.44.29.*
    如何将ServerSocket通信加入到RCP中呢?
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 弓满月