〉 2、使用JAVA开发windows界面风格的应用程序成本太大(代码量大);Eclipse 和 JB 的GUI都是用 java开发的>  还有一点,是站在个人自私的角度,我觉得J2SE的市场份额太小,不值得去研究J2SE 5.0 新增了一个海洋LookAndFeel很多,比以前漂亮不少
并且Java系统的的运行速度比以前得到了显著提高

解决方案 »

  1.   

    个人觉得,和c#相比,java设计界面的能力肯定要麻烦一些,但是要是非要用java开发
    windows界面风格的程序也可以,烦就是了!呵呵,基本上我是同意楼主的想法的!
      

  2.   

    swing很难吗?不会吧.而且有那么多的swing开源项目,都可以帮你设计一个好的界面.更何况研究swing对你的java水平的提高大有好处.何乐而不为呢.
      

  3.   

    、深入了解J2SE的人不多,大家基本都在研究J2EE、J2ME,遇到问题很难解决;(高手多着呢,只是你不知道)
       2、使用JAVA开发windows界面风格的应用程序成本太大(代码量大);(不熟悉就上,成本当然高)
       3、开发出来的东西性能估计太低;(不知道你根据什么得出的结论)
       4、资料太少,市场上关于这方面的书只有不到5本,而且讲的很简单;(这年头,最厚的就是jfc的书了)
       5、市场上这样的成功案例不多,只有DB2的客户端、ORACLE9i等,而这些界面的可操作性要求不强,界面也不是很复杂。(还有个jb啊,不知算不算复杂)
      

  4.   

    我们公司就曾开发过这样的产品,总的来说是要比用PB.DH或VB要麻烦很多,成本确实高不少,但可行性还是不错的,速度也不会慢得太多,总之还是可以接受吧
    楼主所说的有些地方不成立,有些地方问题还是有的
      

  5.   

    leafxx(昱奕之蓝:因为音乐,所以自由):谢谢你!我会研究一下“J2SE 5.0 新增了一个海洋LookAndFeel很多,比以前漂亮不少,并且Java系统的的运行速度比以前得到了显著提高”!
      

  6.   

    leonbule(沉默的钳工):谢谢你!感觉哪玩意太烦了!
      

  7.   

    你用Swing技术上没什么风险,不管是C/S还是C/S/S,刚开始你会觉得有点复杂,内容狂多,但是做过两年你就会觉得他简单啦,至少比MFC,Win32SDK简单太多了,如果你们没有精通Swing的人可以去招人么另外,Swing表现力不比C#的WinForm差,就是慢一些,在新机器上感觉有时候也不是那么明显,当然,如果你不太理解Swing,在消息分发线程里做大量计算或者是用了其他什么不好的结构,那就另当别论了总之,风险在人,在你自己,不在技术
      

  8.   

    AllError(错误大全):谢谢!
       1、“有那么多的swing开源项目”
              [麻烦您提供一下网址我去研究一下,好吗?]
       2、深入了解J2SE的人不多,大家基本都在研究J2EE、J2ME,遇到问题很难解决;(高手多着呢,只是你不知道)
              [不知道您身在何处?西安使用J2SE的公司我还真不知道有哪些公司,只有个别的公司用J2SE做很小的一部分,大家基本都在研究J2EE,而且个人觉得市场份额J2SE也太小了]
       3、使用JAVA开发windows界面风格的应用程序成本太大(代码量大);(不熟悉就上,成本当然高)
              [整个行业研究J2SE的人又有多少,又多少公司或人有这方面的工作经验、熟悉这个呢?]
       4、开发出来的东西性能估计太低;(不知道你根据什么得出的结论)
              [DB2的客户端、ORACLE9i是专家开发的吧,可对机器的配置要求呢?很高,可运行也很慢]
       5、资料太少,市场上关于这方面的书只有不到5本,而且讲的很简单;(这年头,最厚的就是jfc的书了)
              [对,JFC第二版就是比较厚、比VC中的MFC能薄一点,可不是最厚的(仅仅从厚度来说),可从知识含量来说应该算很厚了,麻烦您能推荐几本好书]
       6、市场上这样的成功案例不多,只有DB2的客户端、ORACLE9i等,而这些界面的可操作性要求不强,界面也不是很复杂。(还有个jb啊,不知算不算复杂)
              [啊!JB也是用这开发的,复杂,谢谢!可这是多少专家开发的呀,一个公司要用这个来开发,个人觉得风险真的太大了,有点担心]
       谢谢您的详细分析,我只能静心去研究了,没办法,公司决定了呀!还望您能提供一点资源、学习方法、建议和开发的注意事项等等,谢谢您!
      

  9.   

    wdman(天空) :谢谢您,我会研究一下“ibm的swt”!
      

  10.   

    azqf121(阿晚):谢谢您!“可行性还是不错的,速度也不会慢得太多”,哪就最好了!个人觉得真的好难,感觉就象用VC去开发这个一样(可能因为自己这方面理解的太浅了),麻烦您能给我提一点建议、开发的注意事项、谈谈您开发的经验好吗?再介绍一点这方面的资源好吗?谢谢您!
      

  11.   

    建议考虑用SWT,比Swing各方面要好得多。就是比较新,会的人还不多,不过eclipse提供的文档和Example还算丰富。实现windows的界面很方便。偶以前弄Swing时总是弄不清楚他的逻辑,没头绪,但SWT就很快上手。
      

  12.   

    不建议用SWT,呵呵SWT比Swing简单易学,但是其实不太好,SWT的资源释放,跨平台性,OO结构都比Swing差
    就是比Swing快一点(因为默认是native peer实现).
      

  13.   

    试试,基于swt的eclipse的rcp:Eclipse Rich Client Platform
    http://www.eclipse.org/rcp/main.html
      

  14.   

    永中office是用j2se做的  很好用  可以看一下
      

  15.   

    刚从C#阵营跳过来开发Java,抱着学习的态度。
    一开始是有些慢,但后来的加速度不错,语言都是越用越熟的。
      

  16.   

    SWING开发速度并不慢,只要设计的好,代码实现应该都可以,我做SWING也有两年时间,碰到问题
    一般都能在网上查到资料解决。至于速度,排除代码的不合理性因素,不会太慢的。
      

  17.   

    使用应用程序框架平台可以完美的解决你的问题,他们都是桌面程序:netbeans platform 4.0Eclipse RCP 3.0很好的桌面程序平台。
      

  18.   

    DanielYWoo(绿色毒汁) :谢谢您!ibm的swt如何呀?我也觉的这方面的资料太少。
    FROM(世界):谢谢您,eclipse是不是资料太少,有的都是英文的,用这个IDE的和用JB你觉得哪个更好呢?谢谢您!
    dyhml(VirusCamp):谢谢您!
    wanghp_xj(闲逛):谢谢您!我会下载下来看的!
    BasaraTracy(不屈斗志):谢谢您!我也用过C#做过一个项目,不过没有分层。
    cyicecream(为了升仙(星)到处UP) :谢谢您!“只要设计的好”,这种SWING的程序前期如何做设计呀!
    ramjet(雨林) :谢谢您!我会看的netbeans platform 4.0我才第一次听,谢谢您,我会在网上查,研究的!
      

  19.   

    谢谢大家,麻烦大家讲解一下如何学习,用什么IDE,如何做好前期设计,谢谢大家!
      

  20.   

    下面请大家谈谈如何能更好的使用JAVA开发出优秀的具有WINDOWS界面风格的应用程序!
    我个人觉得可以围绕以下几点谈谈:
        1、采用是设计模式,软件的架构、设计时的注意事项等等;
        2、采用的技术:JSF、JFC、SWING技术的学习、例子、资料等;
        3、使用的IDE:JB9(可使用其控件、节约开发时间)、eclipse+插件等;
        4、如何快速的学习等等;
    请大家赐教、请大家补充其他相关的项,我会补分的!
    真诚的谢谢大家,还望各位多多赐教!
      

  21.   

    我正在钻研swing,这方面的书肯定是不止5本这么少的,我前几天在书店看到一本新出的奥里莱的讲swing,很厚,128元,其实只要是高级语言、面向对象的,做起界面来肯定不如VB、delphi这么方便了,这是肯定,要的,要用高级语言做就是这样,还有,别人不用j2se做桌面程序,你们就不做吗?这不是跟风吗,有没有自己的特点。何况,这可能只是中国的情况,你不妨看得远一些,如果将来又出来一些操作系统,那么开发桌面程序也必然要求跨平台,早点学习,不是可以抢得先机吗?这不是没有可能的。《java核心技术》对swing介绍得很全面了,再看看jb,深入学习一下数据库的组件,那么,做什么都不在话下了。
      

  22.   

    JB设计Swing没试过,Eclipse+插件的方式我感觉不太好,每一个控件它都会用一个方法来建立,控件之间如果有联系的话很难看的出来(当然也可能是我也不太熟悉这个插件的缘故,但是说实话,它生成的代码的可读性很不好).
    其实一个应用程序也就主界面麻烦,完全可以用手工布局,不一定非得用工具,这样代码可重用性和可读性都会大大增强,而且主界面布局好了下面的子模块的布局就简单了.
    SWT我没试过,Swing其实绝大部分控件的用法都很简单.最复杂的是JTable和JTree,可以让其中一两个人专门负责这两块的公用模块的编写.
    其实主要技术难度还是在于多线程,并发控制之类的.Swing本身可以看成WEB开发中的JSP+HTML,只管布局的页面,主要的逻辑还得在事件和线程中进行处理.感觉和一般的J2EE开发区别不太大
      

  23.   

    askr(ask):您好!
       1、这方面的书真不超过5本(包括手册在内),少的可怜;
       2、希望是抢的的先机;
      还希望您能多谈谈这方面的东西,谢谢!
    Eraserpro(叶·飘·零):您好!
       1、我也感觉JB设计Swing能好些:资料多、发展的比较平稳;
       2、公用模块我想先都抽象出来,最好能做出模版来;
       3、多线程,并发控制我回多考虑的。
      也希望您能多提点这方面的设计等,谢谢!
      

  24.   

    用Swing做的应用程序就一定是J2SE吗?我认为不一定
    J2EE的Tutorial里有一个J2EE的框架图用来描述分布式应用程序的如下:   J2EE               J2EE     
    Application1      Application2     
    ----------------------------------
     Application           Dynamic    ----- Client Tier
        Client           HTML Pages
        
                           JSP Pages  ----- Web Tier Enterprise           Enterprise  
       Beans                 Beans    ----- Business Tier
       
      DataBase             DataBase   ----- EIS Tier
    -------------------------------------------------------
    其中Application部分就可以用Swing来开发,用Servlet通信,通过Web Starst方式运行
    这应该也是遵守J2EE规范的吧!至少我们公司开发的产品是用这种方式的,小弟对J2EE理解的不深
    说的不对的地方请指正
      

  25.   

    其实用java做桌面版的程序见仁见智了,以及客户的机子的配置了
    很多人是批评swing的速度不行,内存不好控制
    不过很想说一句,代码一定要精(精不是少的意思)点,速度不见得会慢得不能忍受关于界面,要做window风格只需要几行代码而已,不用什么代码量。
    http://www.javootoo.com/  里头会有你想要的包的。
      

  26.   

    mail25(■■ 随风飘 :相当郁闷的一次性生活!■■) :谢谢您!
      1、用Swing做的应用程序就一定是J2SE吗?我认为不一定
             [您说的对!现在用JAVA做GUI程序,基本都不会遵循一种,客户端、服务器端遵循的是一种混合的模式,结合了J2SE、J2EE。就象有的还要调取EJB等。]
     yonghar(ohno) :谢谢您!
             我会查您提供的资料的,谢谢您!
      

  27.   

    嗯,我是个什么都不懂的人,我记得SCJP老师说过:连SUN公司自己也不是太推荐别人用它的SWING做楼主所说得这类开发,教师既然这么说,肯定有典故,这句话应该可以在SUN的某个角落得到印证的。——找到这句话,到了公司就有了说服力了。这句话从味道上,也说明了许多问题了。
      

  28.   

    to 楼主:
     可能是你们那里书太少了吗。我们这里讲j2se的书很多,且都是大部头,学个一两本就够用了,我还看到过一本jfc手册的,很厚,很全,每个类的介绍都有。好像有本书叫《swing图形编程》的书,虽然挺旧的,但内容很好。
     我也是初学者,谈不上什么实际的开发经验,不过,如某人所言,最难的就是jtable和jtree了,也是使用了MVC思想的两个东西。需要你对底层的机制了解得非常多,编起来代码量也很多,要做绘制器、编辑器,实现很多接口。其它的都挺简单。线程我还掌握得很不清楚,不过,一时半会还用不上,以后再说。swing跨平台性比awt要好,不过,速度有点慢,1.5不知提高了多少,但是,java也是可以编译成本机码的,嫌速度慢,可以这样编译,不过,我没试过,也不知怎么试,《编程思想》上说的,谁要是知道麻烦告诉我一声
      

  29.   

    对于用户来讲,是不是window应用程序都没有问题,用户只关心怎么用得习惯,
    对于我们程序员来讲,开发与维护是最大的问题,我认为这种方面的应用程序也不一定是要用j2se,
    像楼上有位说的,可以用java web start进行开发.也是很实用的,不知道大家有没有见过oracle的erp系统,他用的就是oracle加上webstart,其实也非常好,只是在第一次启动的时候慢了一点而已.还有一种方案是我做过的:就是基于web service的技术,可以用hta做为客户端,通过xml与服务器通讯,这样简化了界面的编程,操作习惯上也与windows的应用程序相差无几,最这个结构最好的就是代码可以统一管理,就像做b/s结构的系统一样的.这要的系统即有window应用程序的友好界面,又有web系统的易维护性.只有一个缺点,就是代码保护难得处理一些.....小弟的一点意见.....
      

  30.   

    SWT + JFace没 Swing/AWT 经验更好,直接跳过他们
      

  31.   

    jtable,jtree可以自己重新写model,你写一个以后就知道那感觉有多爽了。
      

  32.   

    >>嗯,我是个什么都不懂的人,我记得SCJP老师说过:连SUN公司自己也不是太推荐别人用它的SWING做楼主所说得这类开发,教师既然这么说,肯定有典故,这句话应该可以在SUN的某个角落得到印证的。——找到这句话,到了公司就有了说服力了。我以前待的公司的总部有一帮架构专家,他们和SUN关系不错,当时要做一个5-8年的项目,这个系统是C/S/S的,中间是WebLogic Cluster,后面是Oralce和Sybase. 从SUN得到的建议是客户端用Swing,SWT根本不在考虑之列(另外,当时SUN虽然鼓吹EJB,但是对总部的架构师私下建议不要用Entity Bean,只用SLSB,MDB哈哈,还有更多好笑的内幕...)>>DanielYWoo(绿色毒汁) :谢谢您!ibm的swt如何呀?我也觉的这方面的资料太少。不推荐,还是Swing好啊,其实Swing真的学起来不难
      

  33.   

    delphi有什么比java优秀的地方呢?eclipse, jbuilder也可以拖拉控件进行界面开发。
    delphi有大量控件。java有大量开源项目。都差不多。
      

  34.   

    Java1.5版本以后,Swing的性能有了很大的提升,运行速度上虽不及VB VC开发的程序,但是在当前主流配置的机器上运行已经相当不错了.如果可以SWT JFace的话就更好了,它的执行效率高过Swing.
    现在很多桌面程序都选择了Java.比如:JBuilder,Toghter,Ecilipse,Nokia的一些应用软件也是用Java写的.具体也可以去sf找些Java开源程序参考一下.
      

  35.   

    我用Swing做开发已一年有余,就觉得非常好,主要参考如下三本书
    《深入学习:JFC Swing——Java基础类组件集》;
    《Swing》Matthew Robinson 和Pavel Vorobiew合著,好像有中文版了;
    《java2 graphic 2 Swing》。
    目前以还没有发现其它软件界面拥有的功能我用Swing开发不出来的,swing跨平台性非常好,我在Windows2000+Eclipse上开发的软件到Linux上运行基本上不需要修改任何代码!
    另外,用Swing做界面的开源软件非常多,如Argouml,都可以从中学到不少的东西!
      

  36.   

    用Swing比用MFC容易多了,一个字:超爽。
      

  37.   

    再加一句,我们这J2SE的书不超过50本。
      

  38.   

    楼主设计好后把设计文档发一部分给我,我来做CODER,现成地提高水平也不错……
      

  39.   

    tangqiuzheng(恭喜发财万事如意):谢谢您!反正公司已经决定了,个人也觉得虽然现在J2EE占有的市场份额更大,可软件发展的趋势C/S、B/S可能会更模糊,也许以后在这方面的发展能会更好,物以稀为归啊,哈哈!
    askr(ask) :谢谢您!我已买了JFC手册,正在学习!
    joe642(孤单一族):谢谢您!您说的对“对于用户来讲,是不是window应用程序都没有问题,用户只关心怎么用得习惯”,我也正在看java web start的东西呢。正在考虑架构的设计。
    onefox(一品狐):谢谢您!公司为了稳妥已确定用SWING了,放弃了SWT,担心风险太大。
    yonghar(ohno):谢谢您!可以讲讲这方面的架构设计吗?
    DanielYWoo(绿色毒汁) :谢谢您!公司为了稳妥已确定用SWING了,我正在学习这个玩意,您能讲讲这方面的架构设计吗?
    cm4ever(小P):谢谢您!
    Goal3(拼命三郎):谢谢您!
    hu1hao2(huhao):谢谢您!
    hpy121(孩子):谢谢您!能讲讲这方面的架构设计吗?谈谈这方面的学习吧,能提供一点这方面资料的网址吗?谢谢您!
    vssivl(克斯):谢谢您!能讲讲这方面的架构设计吗?提供一点这方面资料的网址吗?谢谢您!
    mubing1126(木冰) :谢谢您!为何迷茫呀?难道阁下和我一样也在研究这个吗?
    tangqiuzheng(恭喜发财万事如意):谢谢您!我也处于学习研究阶段,如有成果我会告诉大家的。
      

  40.   

    我们公司开发C/S架构一年多以来的感想,我来说一下:
    首先,要对数据库库操作比较熟悉,应该有人精通数据的并发操作和程序的多线程一类的东西有深入了解,这个人应该精通JDBC这一块,能够做出一套通用的数据操作的框架,比如数据的增删存等操作的缓存,事务的处理等,给外部留接口,并能对数据的表现,如日期时间,下拉等,这又要结合到JTABLE等一些SWING控件,所以要对事件处理机制熟悉,像数据变化时如何通知界面等等操作,其中的机制,建议参考PB的数据窗口,我们就是以他为范本.
    其次,事件控制.因为C/S肯定是胖客户端,所以显得客户端方面比较庞大,何时表现什么样式,怎样表现,用户的操作怎样通知界面和后台操作数据库?就是这一层的任务了,对于事件的处理,则是使用到较多多线程的东东.
    再次,是界面,界面的表现,当然不是拉几个控件就好了,需要有扩展的操作数据库的控件,这里,JBUILD里的表现模式是最好的参照,建议有空可以研究一下,或者直接使用.外现样式可能有点难看,但可以使用外观渲染包,网上有下,或者自已开发一个可能也不是太难.当然,这一切需要时间和成本,这可能是你说服BOSS不使用JAVA开发C/S模式的一个重要理由.不过,只要有了自已的一套框架以后,开发速度也挺快的,估计不会比PB或DH要慢多少
      

  41.   

    我一般是这样作的,说的不好大家别笑啊。
    一.XXXApp类。两个作用。
    1.只作界面。
    2.就像一个集中站,所有Swing对象和辅助对象的引用比如某个JTableModel都在这里,有需要的不加限定符,类外可以用。我感觉和ServletContext比较像。
    二.事件监听类
    把XXXApp的引用传给它,它就能读取界面的参数,在处理完业务层的函数之后可以设置界面元素,比如显示数据,设定某些按钮的Enable状态。在这个类里有业务层类的引用,可以调用其函数来完成工作。
    三.业务层类
    在这里有两种情况,第一种情况业务全放在存储过程里,这样的话就没有业务层了。第二种情况,根据用例图,抽象出接口,找出继承关系,作具体类,满足需求
    四.数据存取层
    五.ConnectDatabase类
    用来获取数据库连接和有关数据库操作的静态函数。
      

  42.   

    >>DanielYWoo(绿色毒汁) :谢谢您!公司为了稳妥已确定用SWING了,我正在学习这个玩意,您能讲讲这方面的架构设计吗?说到架构,五花八门,我也说不好,我就说一说我最常用的吧
    砖帖,绝对砖帖!
    客户端:
    View层
    *XXXApp类,用来监测命令行启动参数,资源释放,提供入口main函数,包含对主要Frame的引用
    *MainFrame, XXXFrame类,这些主窗口类
    *XXXDlg, 弹出式窗口
    *组件类,使用相关的XXXModel和XXXHandler,比如一个XXXTable, XXXPanelControl层
    *XXXHandler,就是实现了那些XXXListener的类,响应事件,调用相应的业务类Model层
    *XXXModel,顾名思义,model,包含XXXEntity数据
    *XXXEntity,业务实体,这个东西类似DTO模式,也有叫BO的,反正简单说就是在层间传递数据的实体后面的就比较灵活多变了业务层
    *XXXMgr或者XXXBO,业务类,就是业务了,比如银行转账,更改信用额度什么的。这些会调用EJB,JMS,Socket,JDBC,JCA,WebServices很多东西,为了避免业务层出现创建connection, statement这些鸟东西,下面再做一个DAO层,还有EJB层等等。数据层
    *DAO层,JMS层,EJB层等等,他们封装底层的操作,比如繁琐的lookup过程等,可以简化业务层。比如用DAO层实现XXXEntity的持久化,JMS层进行消息的处理等。这里的DAO,JMS,EJB等等,如何分层视情况而定。简单的有时候可能就只有一个DAO层调Hibernate,iBatis,JDBC什么的。服务器端:
    *部署EJB, JMS Destination,Datasource等等。EJB本身还可以分层,比如各种EJB模式
      

  43.   

    >>hpy121(孩子):谢谢您!能讲讲这方面的架构设计吗?谈谈这方面的学习吧,能提供一点这方面资料的网址吗?谢谢您!我就只要用Swing在View方面的设计或实现
    1、结合XML;使所有的Dialog和Frame的界面信息都能用XML文件保存,只需写个解析器进行转换即可,这样将为你减少好多不必要的代码,如果能很好的结合XML,你会发现做界面非常容易。
    2、数据处理和界面绝不要写在一个类里面,应该分开。可以通过建立convert包对其进行转换!
    3、一个用于统一Action管理的包是必要的,可以用抽象类对Action进行抽象,以便共享。通常,如下包是必要的:
    api;
    swing.component:自定义的component;
    builder.action;
    builder.frame;
    builder.dialog;
    builder.convert.至于资料
    http://www.java-cn.net/book/
    上的电子书可以参考参考