to 楼主: 可能是你们那里书太少了吗。我们这里讲j2se的书很多,且都是大部头,学个一两本就够用了,我还看到过一本jfc手册的,很厚,很全,每个类的介绍都有。好像有本书叫《swing图形编程》的书,虽然挺旧的,但内容很好。 我也是初学者,谈不上什么实际的开发经验,不过,如某人所言,最难的就是jtable和jtree了,也是使用了MVC思想的两个东西。需要你对底层的机制了解得非常多,编起来代码量也很多,要做绘制器、编辑器,实现很多接口。其它的都挺简单。线程我还掌握得很不清楚,不过,一时半会还用不上,以后再说。swing跨平台性比awt要好,不过,速度有点慢,1.5不知提高了多少,但是,java也是可以编译成本机码的,嫌速度慢,可以这样编译,不过,我没试过,也不知怎么试,《编程思想》上说的,谁要是知道麻烦告诉我一声
对于用户来讲,是不是window应用程序都没有问题,用户只关心怎么用得习惯, 对于我们程序员来讲,开发与维护是最大的问题,我认为这种方面的应用程序也不一定是要用j2se, 像楼上有位说的,可以用java web start进行开发.也是很实用的,不知道大家有没有见过oracle的erp系统,他用的就是oracle加上webstart,其实也非常好,只是在第一次启动的时候慢了一点而已.还有一种方案是我做过的:就是基于web service的技术,可以用hta做为客户端,通过xml与服务器通讯,这样简化了界面的编程,操作习惯上也与windows的应用程序相差无几,最这个结构最好的就是代码可以统一管理,就像做b/s结构的系统一样的.这要的系统即有window应用程序的友好界面,又有web系统的易维护性.只有一个缺点,就是代码保护难得处理一些.....小弟的一点意见.....
windows界面风格的程序也可以,烦就是了!呵呵,基本上我是同意楼主的想法的!
2、使用JAVA开发windows界面风格的应用程序成本太大(代码量大);(不熟悉就上,成本当然高)
3、开发出来的东西性能估计太低;(不知道你根据什么得出的结论)
4、资料太少,市场上关于这方面的书只有不到5本,而且讲的很简单;(这年头,最厚的就是jfc的书了)
5、市场上这样的成功案例不多,只有DB2的客户端、ORACLE9i等,而这些界面的可操作性要求不强,界面也不是很复杂。(还有个jb啊,不知算不算复杂)
楼主所说的有些地方不成立,有些地方问题还是有的
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也是用这开发的,复杂,谢谢!可这是多少专家开发的呀,一个公司要用这个来开发,个人觉得风险真的太大了,有点担心]
谢谢您的详细分析,我只能静心去研究了,没办法,公司决定了呀!还望您能提供一点资源、学习方法、建议和开发的注意事项等等,谢谢您!
就是比Swing快一点(因为默认是native peer实现).
http://www.eclipse.org/rcp/main.html
一开始是有些慢,但后来的加速度不错,语言都是越用越熟的。
一般都能在网上查到资料解决。至于速度,排除代码的不合理性因素,不会太慢的。
FROM(世界):谢谢您,eclipse是不是资料太少,有的都是英文的,用这个IDE的和用JB你觉得哪个更好呢?谢谢您!
dyhml(VirusCamp):谢谢您!
wanghp_xj(闲逛):谢谢您!我会下载下来看的!
BasaraTracy(不屈斗志):谢谢您!我也用过C#做过一个项目,不过没有分层。
cyicecream(为了升仙(星)到处UP) :谢谢您!“只要设计的好”,这种SWING的程序前期如何做设计呀!
ramjet(雨林) :谢谢您!我会看的netbeans platform 4.0我才第一次听,谢谢您,我会在网上查,研究的!
我个人觉得可以围绕以下几点谈谈:
1、采用是设计模式,软件的架构、设计时的注意事项等等;
2、采用的技术:JSF、JFC、SWING技术的学习、例子、资料等;
3、使用的IDE:JB9(可使用其控件、节约开发时间)、eclipse+插件等;
4、如何快速的学习等等;
请大家赐教、请大家补充其他相关的项,我会补分的!
真诚的谢谢大家,还望各位多多赐教!
其实一个应用程序也就主界面麻烦,完全可以用手工布局,不一定非得用工具,这样代码可重用性和可读性都会大大增强,而且主界面布局好了下面的子模块的布局就简单了.
SWT我没试过,Swing其实绝大部分控件的用法都很简单.最复杂的是JTable和JTree,可以让其中一两个人专门负责这两块的公用模块的编写.
其实主要技术难度还是在于多线程,并发控制之类的.Swing本身可以看成WEB开发中的JSP+HTML,只管布局的页面,主要的逻辑还得在事件和线程中进行处理.感觉和一般的J2EE开发区别不太大
1、这方面的书真不超过5本(包括手册在内),少的可怜;
2、希望是抢的的先机;
还希望您能多谈谈这方面的东西,谢谢!
Eraserpro(叶·飘·零):您好!
1、我也感觉JB设计Swing能好些:资料多、发展的比较平稳;
2、公用模块我想先都抽象出来,最好能做出模版来;
3、多线程,并发控制我回多考虑的。
也希望您能多提点这方面的设计等,谢谢!
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理解的不深
说的不对的地方请指正
很多人是批评swing的速度不行,内存不好控制
不过很想说一句,代码一定要精(精不是少的意思)点,速度不见得会慢得不能忍受关于界面,要做window风格只需要几行代码而已,不用什么代码量。
http://www.javootoo.com/ 里头会有你想要的包的。
1、用Swing做的应用程序就一定是J2SE吗?我认为不一定
[您说的对!现在用JAVA做GUI程序,基本都不会遵循一种,客户端、服务器端遵循的是一种混合的模式,结合了J2SE、J2EE。就象有的还要调取EJB等。]
yonghar(ohno) :谢谢您!
我会查您提供的资料的,谢谢您!
可能是你们那里书太少了吗。我们这里讲j2se的书很多,且都是大部头,学个一两本就够用了,我还看到过一本jfc手册的,很厚,很全,每个类的介绍都有。好像有本书叫《swing图形编程》的书,虽然挺旧的,但内容很好。
我也是初学者,谈不上什么实际的开发经验,不过,如某人所言,最难的就是jtable和jtree了,也是使用了MVC思想的两个东西。需要你对底层的机制了解得非常多,编起来代码量也很多,要做绘制器、编辑器,实现很多接口。其它的都挺简单。线程我还掌握得很不清楚,不过,一时半会还用不上,以后再说。swing跨平台性比awt要好,不过,速度有点慢,1.5不知提高了多少,但是,java也是可以编译成本机码的,嫌速度慢,可以这样编译,不过,我没试过,也不知怎么试,《编程思想》上说的,谁要是知道麻烦告诉我一声
对于我们程序员来讲,开发与维护是最大的问题,我认为这种方面的应用程序也不一定是要用j2se,
像楼上有位说的,可以用java web start进行开发.也是很实用的,不知道大家有没有见过oracle的erp系统,他用的就是oracle加上webstart,其实也非常好,只是在第一次启动的时候慢了一点而已.还有一种方案是我做过的:就是基于web service的技术,可以用hta做为客户端,通过xml与服务器通讯,这样简化了界面的编程,操作习惯上也与windows的应用程序相差无几,最这个结构最好的就是代码可以统一管理,就像做b/s结构的系统一样的.这要的系统即有window应用程序的友好界面,又有web系统的易维护性.只有一个缺点,就是代码保护难得处理一些.....小弟的一点意见.....
delphi有大量控件。java有大量开源项目。都差不多。
现在很多桌面程序都选择了Java.比如:JBuilder,Toghter,Ecilipse,Nokia的一些应用软件也是用Java写的.具体也可以去sf找些Java开源程序参考一下.
《深入学习:JFC Swing——Java基础类组件集》;
《Swing》Matthew Robinson 和Pavel Vorobiew合著,好像有中文版了;
《java2 graphic 2 Swing》。
目前以还没有发现其它软件界面拥有的功能我用Swing开发不出来的,swing跨平台性非常好,我在Windows2000+Eclipse上开发的软件到Linux上运行基本上不需要修改任何代码!
另外,用Swing做界面的开源软件非常多,如Argouml,都可以从中学到不少的东西!
askr(ask) :谢谢您!我已买了JFC手册,正在学习!
joe642(孤单一族):谢谢您!您说的对“对于用户来讲,是不是window应用程序都没有问题,用户只关心怎么用得习惯”,我也正在看java web start的东西呢。正在考虑架构的设计。
onefox(一品狐):谢谢您!公司为了稳妥已确定用SWING了,放弃了SWT,担心风险太大。
yonghar(ohno):谢谢您!可以讲讲这方面的架构设计吗?
DanielYWoo(绿色毒汁) :谢谢您!公司为了稳妥已确定用SWING了,我正在学习这个玩意,您能讲讲这方面的架构设计吗?
cm4ever(小P):谢谢您!
Goal3(拼命三郎):谢谢您!
hu1hao2(huhao):谢谢您!
hpy121(孩子):谢谢您!能讲讲这方面的架构设计吗?谈谈这方面的学习吧,能提供一点这方面资料的网址吗?谢谢您!
vssivl(克斯):谢谢您!能讲讲这方面的架构设计吗?提供一点这方面资料的网址吗?谢谢您!
mubing1126(木冰) :谢谢您!为何迷茫呀?难道阁下和我一样也在研究这个吗?
tangqiuzheng(恭喜发财万事如意):谢谢您!我也处于学习研究阶段,如有成果我会告诉大家的。
首先,要对数据库库操作比较熟悉,应该有人精通数据的并发操作和程序的多线程一类的东西有深入了解,这个人应该精通JDBC这一块,能够做出一套通用的数据操作的框架,比如数据的增删存等操作的缓存,事务的处理等,给外部留接口,并能对数据的表现,如日期时间,下拉等,这又要结合到JTABLE等一些SWING控件,所以要对事件处理机制熟悉,像数据变化时如何通知界面等等操作,其中的机制,建议参考PB的数据窗口,我们就是以他为范本.
其次,事件控制.因为C/S肯定是胖客户端,所以显得客户端方面比较庞大,何时表现什么样式,怎样表现,用户的操作怎样通知界面和后台操作数据库?就是这一层的任务了,对于事件的处理,则是使用到较多多线程的东东.
再次,是界面,界面的表现,当然不是拉几个控件就好了,需要有扩展的操作数据库的控件,这里,JBUILD里的表现模式是最好的参照,建议有空可以研究一下,或者直接使用.外现样式可能有点难看,但可以使用外观渲染包,网上有下,或者自已开发一个可能也不是太难.当然,这一切需要时间和成本,这可能是你说服BOSS不使用JAVA开发C/S模式的一个重要理由.不过,只要有了自已的一套框架以后,开发速度也挺快的,估计不会比PB或DH要慢多少
一.XXXApp类。两个作用。
1.只作界面。
2.就像一个集中站,所有Swing对象和辅助对象的引用比如某个JTableModel都在这里,有需要的不加限定符,类外可以用。我感觉和ServletContext比较像。
二.事件监听类
把XXXApp的引用传给它,它就能读取界面的参数,在处理完业务层的函数之后可以设置界面元素,比如显示数据,设定某些按钮的Enable状态。在这个类里有业务层类的引用,可以调用其函数来完成工作。
三.业务层类
在这里有两种情况,第一种情况业务全放在存储过程里,这样的话就没有业务层了。第二种情况,根据用例图,抽象出接口,找出继承关系,作具体类,满足需求
四.数据存取层
五.ConnectDatabase类
用来获取数据库连接和有关数据库操作的静态函数。
砖帖,绝对砖帖!
客户端:
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模式
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/
上的电子书可以参考参考