Java桌面技术

Java Desktop Technology

常用链接

统计

最新评论

netBeans6.0咸鱼翻身与Swing称霸桌面应用

    长期以来,Java被认为是服务器端的佼佼者而在桌面领域并无建树,早期的Swing

在外观和性能上都差强人意,成功案例不多,基于Swing的netBeans无疑惨遭厄运,这

样的局面下滋生了SWT和Eclipse这种违背Java原则的产物。
    05年大学毕业时,偶然的机会购买了陈刚写的那本《Eclipse从入门到精通》,这

是国内第一本讲述Eclipse和SWT的书籍,我从那时候起接触的Eclipse和SWT,当时的

感觉就是Eclipse太好用了,免费的,安装比JBuilder省事多了,解压便可,但凭这两

点我就爱上它了,而且功能丝毫不比JBuilder差。借助Eclipse我自然而然对SWT产生

了好感,加上当时我的桌面开发经验、技术不足,我很容易地轻信了书中“SWT好、

Swing不好”的结论。
    随着互联网的普及,应用的架构由C/S逐渐向B/S过度,用户已经厌倦了为客户端

下载升级补丁然后再安装这样烦琐的工作,他们喜欢浏览器这个通用客户端。近些年

来Ajax这个不算什么新玩意的新玩意被世人捧得天花乱坠,甚至Ajax的出现动摇了延

用多年的经典Model2设计模式。但是毕竟Ajax是用JavaScript来展现的,有些工作还

是办不到的,例如如音、视频等,怎么办?答案不是Applet和JWS,而是ActiveX。因

为前者是依赖JVM的,就这么简单,使得用户宁可冒险运行不安全的控件和顶着被拦截

的可能,也不愿意下载JRE。
    早期的Java应用程序缺乏像MFC这样成熟的Framework,程序员编写程序总是从

main函数入手,最多依靠JBuilder、Eclipse、netBeans等工具生成简单的JFrame窗口

代码。RCP(Rich Client Application)的出现打破了这一局面,但是得益的不是

netBeans而是Eclipse,04年Eclipse3.0发布,以其插件机制彻底地打败了JBuilder从

而主宰了JavaIDE市场,那时候的netBeans3.5、3.6还只是玩具,根本没有资格参与

IDE大战。
    不仅在桌面应用,在server端Sun似乎也无大优势。撇开.net不说,在开源界,

EJB2.x的冷落使得Spring、Hibernate流行,从而形成时下很时髦的SSHJ,而以

Linux+Apache+Mysql+PHP构成的LAMP也形成了一股势力,EJB3.0与JSF1.2等组成的

JavaEE5想要挽回局面短时期还很难。
    综上所述,Sun技术之路的窘境很令Java开发员寒心,至少我是这么想。在大多人

眼中,唯一认可的Sun技术可能只有Java了。但是Sun不会坐以待毙的,可喜的是,Sun

作了战略调整,在桌面应用领域将有所突破。从JDK1.6及后续版中,Swing的功能将会

不断加强、性能也大幅度提升,Applet的稳定性和速度也今非昔比,JRE UpdateN、

JavaFX也相继问世。据说在JDK7中将实现窗口非矩形、半透明的效果,还支持嵌入浏

览器,真是不小的进步。随着netBeans6.0的发布,相信很多Java开发员会转向

netBeans,同时也会有很多优秀的netBeans插件和应用程序客户端出现。
    中国有句俗话“风水轮流转”,相信netBeans能咸鱼翻身,Java借助Swing的跨平台

优势能在桌面领域称霸!

posted on 2007-10-26 13:59 sun_java_studio@yahoo.com.cn(电玩) 阅读(3908) 评论(31)  编辑  收藏 所属分类: NetBeans

评论

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-10-26 14:34 zht

期待Swing  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-10-26 15:25 交口称赞

不太可能
  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-10-26 15:46 RaviLi

@交口称赞
不太可能永远翻不了身吧。  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-10-26 16:47 BeanSoft

呵呵 还翻身呢. Java 做 UI 目前就没一个敢说自己能和本地应用竞争的(含一切用 Java 开发的桌面 UI 组件, 如 AWT, Swing, SWT).  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-10-26 17:25 cnodin

eclipse的UI不好吗?  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-10-26 17:32 sun_java_studio@yahoo.com.cn(电玩)

@cnodin
如果满足于Windows默认改观,那么SWT可能适合你,但是swing支持自定义外观,利用swing可以将界面做得很酷,这一点SWT是做不到的。  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-10-26 17:33 sitinspring

Sun的思想天下无敌,Sun的产品惨不忍睹.  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-10-26 17:37 sun_java_studio@yahoo.com.cn(电玩)

据可靠消息,VB Delph的程序员极具减少,我想Java之所以在桌面开发不乐观是和中国人懒得安装JVM有很大关系,如果JVM向IE一样普及,swing借助跨平台在桌面打到VB只是时间的问题。  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用[未登录] 2007-10-26 18:21 robin

比起Java Web那些低级应用,客户端开发在技术上是要求高些。  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-10-26 22:23 Matthew Chen

从诞生以来,Java一直被认为是一个拥有面向对象的高级语言特性并拥有健壮稳定运行平台的技术,它作为语言和平台的双重身份而被程序员所接受,编写富于编程思想和设计模式体系的软件产品。
它的优点是虚拟机,使其轻易实现了跨平台,强大的垃圾回收和相当纯粹的面向对象编程法则,这些都是上层建筑,而在底层支持的,是一个仿真的机器,字节码的解读是以jvm的指令序列的方式,在底层,抛开了所有高级语言的特性,那就是接近汇编级别的指令。这样的层次结构,不仅有利于跨平台的实现,更有利于语言技术的自适应发展,随时调整自身的语法和结构,与时俱进。  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-10-26 23:02 Matthew Chen

Swing是Java平台的标准桌面实现,awt的早期的成型为Java技术在桌面的发展奠定了坚实的基础,最底层的实现显然是对等体来铺垫的,往上走产生了两种不同的思路,Swing和SWT,他们生来都是为了一个目的,让Java更好用,更多人用,Swing是了不起的框架,经典的设计,复杂而灵活,SWT晚出生一点,它是看着Swing的不足在发展自己的,它一出生并没有想过和Swing争,所以只是从实际的产品除非,满足实际的需要,只是eclipse用得好了自然而然的想到借鉴它成功的因素,才想着复用自己的那一套,所以它一出生,就烙着便利软件产品的特点,即便是到了如今,JFace出来了,RCP出来了,哪一个不都是走在Swing前面,Swing开源的api也是有不少的,Application级的全栈式框架也不是没人做过,为什么sun从来都没有加入过JFC中,直到今天,Netbeans来了,带来了这一些,但还是没赶上SWT的,用过JFace的人都知道,IBM在其中开发了多少成熟的组件,Preference,Wizard,一个个很简单,却是现代软件产品中已经上升到了经典范畴的概念,Swing的api中有吗?还要复用多少次才会被加进去呢?
SWT的gc,它同样可以绘制一切,那它的速度不会比Swing快多少吧?Swing中有象SWT中的FileDialog那样借助操作系统实现的组件吗?我用过JFileChooser,速度比FileDialog起码慢5倍,创建完了不能释放,以便下次打开保持较快的速度,这期间占用了多少内存?跨越的基本是整个产品的生命周期,实际项目中,一个JFileChooser,足够否决Swing的理由了,何况象JFileChooser一样慢的,有多少个。SWT的一大弊端是jni,本地方法调用的时间消耗和内存管理成本会在运行时和编程上产生不利的影响,特别涉及纯Java对象在本地组件上的呈现,会是很大的问题,暂时并没有好的解决方法,主要是绕过,缺失某些极具表现力的界面效果,而一板一眼,中规中矩。
Swing没有错,错的是它身后的SUN,SWT并不是最好的,但它得益于IBM。从今天开始追来得及吗?除非你让我在Swing中用FileDialog,既然我已经可以多少用些SWT_AWT了。  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-10-27 04:33 wing5jface

>>利用swing可以将界面做得很酷
这一理由在目前来说,只能视为一种炒作,中看不中用.同意楼上的实际项目中,一个JFileChooser,足够否决Swing的理由了.Swing没有错,错的是它身后的SUN.

相对来说本人更喜欢SWT对资源的管理,可以更快更及时清理资源,结合手动与自动GC的灵活性.

另外:JRE下载也不是太大的问题的了,2-6M速度的ADSL自动下载安装运行JWS是很快的,基本上花不了多少时间(比安装QQ游戏平台多不了多少时间),用户都习惯的了,再说现在加速下载的TOOLS(flashget,迅雷,QQ下载等)有多种选择,JRE 安装不再是太大问题,给用户体验一下VNC 5800 HTTP全部使用效果就比较清楚的了.
  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-10-27 10:12 BeanSoft

SWT, Swing 都不是问题, 问题在于: Java 或者 .NET 这样的虚拟机跑大型程序, 太吃内存了!

Eclipse, Netbeans, 哪个不是吃内存的怪兽, 而且容易出现界面忽然卡住不动的问题.

.NET 的程序也有这个问题, 一是启动慢, 二是耗内存, 三就是一会不用回来界面就死了. 貌似 Office 2007 用 .NET 开发, 结果可好了, 也是一样的问题, 比 Office 2003 慢不是一个级别.

现在的虚拟机技术还是有待继续进步.  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-10-27 16:48 zongxing

eclipse好像有从从倒退的趋势呀,这可能是netbeans翻身的一个大好机会。
真正的高手做开发时还是用swing的,像swt这种怪胎,实在不是我们应该高兴的。  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-10-27 17:00 sun_java_studio@yahoo.com.cn(电玩)

@zongxing
同意“真正的高手做开发时还是用swing的”这种说法,但是很少有桌面软件对外观要求得很严格,SWT能满足大多数客户。
SWT和Swing共存,不然Swing和谁竞争去?  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-10-29 10:26 wing5jface

个人觉得SWT与SWING绘制图形不相上下,暂时看不出SWING在绘图方面
比SWT优秀多多少,只是swing积累的更多而已

下面一个使用swt用GC绘制的桌面软件效果图
在windows2000(SUSE,红帽子,ubuntu效果相同)系统下的显示效果:
http://www.ben777.cn/blogjava/swtUIShow1.htm  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用[未登录] 2007-10-29 11:59 Robin

@wing5jface
SWT目前是不支持组件半透明的,JTable,JTree的Render效果SWT也做不到。同意“Swing是做专业外观的组件库”的说法  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-11-17 23:18 fxbird

今天试用了一下nb rc1,界面比原来要清新得多,速度也今非昔比了,估计是得益于jdk1.6的性能提升,提高非常大。几乎就和windows程序的打开速度一样快,真是可喜的进步,nb发展的步子越来越快了。是一般开发java程序的首选工具了,当然是指免费中的。

前面有个人说,swing中没有快速的文件打开器,不对吧,我记得有个jfiledialog调用的就是本地文件选择框啊。eclipse我从一开始用就没看好它,整个一个垃圾玩意,唯一的优点就是免费。都3.3了才实现代码拖拽  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-11-18 15:41 sun_java_studio@yahoo.com.cn(电玩)

@fxbird
“eclipse我从一开始用就没看好它,整个一个垃圾玩意,唯一的优点就是免费。都3.3了才实现代码拖拽”,这叫什么话,eclipse的诞生JBuilder就昨日黄花了,我当年是非常喜欢eclipse的,尽管netBeans6.0很强,但是eclipse沦落为垃圾还不至于,代码拖拽我觉得还是没有好点,不小心碰一下鼠标的话,代码可就受影响了...  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-11-19 08:43 Matthew Chen

既然提到了代码拖拽,那我也提一下代码复制和文件复制,eclipse从3.2之前就实现了这两点,而netbeans直到6才有文件复制。
代码复制就是你剪贴板中有一份完整的java源文件的文本(注意是文本,不是文件),点选一个包ctrl v,就可以自动生成基于此拷贝文件名的java源文件,文件拷贝类似,也就是说你可以从netbeans中拷一个java源文件的文本粘贴到eclipse中并生成一个独立的java源文件,却不能作相反的操作,因为netbeans还不支持,从网上拷代码下来运行的人就知道这个功能有多划算了。
代码拖拽只是小功能,就如同refactor尽管不是小功能,但让它在后台自己运行同样只是小功能一样。
上面还提到jfiledialog,那是基于awt的,和使用swt的filedialog有什么区别,jfiledialog不能设置多个filter,功能比起swt也太过有限,swing优势在于仿生,所以jfiledialog可以作为项目中的替代方案,但拙劣的很。
eclipse还有个功能是大范围organize import,最大是基于所有包的,netbeans rc1仍未实现,且refactor中的包重命名,尚不支持subpackage,速度也很慢,猜想还在完善中,所以,netbeans要走的路其实还很远,是好是坏还是拭目以待吧。  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-11-19 10:10 sun_java_studio@yahoo.com.cn(电玩)

“从netbeans中拷一个java源文件的文本粘贴到eclipse中并生成一个独立的java源文件,却不能作相反的操作”,很赞同。这个很不爽。
当初喜欢eclipse的原因是其安装完全是解压缩方式,插件安装也是拷贝文件夹这么单纯,很方便。netbeans虽然也有zip版本,但是不像eclipse有工作空间的概念,这样一台机器可以安装多个eclipse用于不同开发,而安装多个netbeans就有冲突。

我觉得netbeans最大的优势是最快支持Java新标准的IDE。netbeans6.0已经比5.5进步了许多。说咸鱼翻身不为过。  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-12-02 22:32 attend

lz 你好,我对JAVA桌面编程比较感兴趣,又不知道从何开始学起.期待您写篇学习总结,推荐一些书籍等。   回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-12-04 10:54 sun_java_studio@yahoo.com.cn(电玩)

@attend
从头来过就从Swing基础学起吧,我的建议不要已开始就学SWT,除非工作需要。入门教材市面上随便买一本介绍,第一本书不要求太厚,之所以这么说是因为国内没有一本深入讲述swing的教程,“厚”完全是罗列代码和API介绍造成的。下一步应该看看http://java.sun.com/docs/books/tutorial/ui/index.html 官方教程。
要熟悉Java2D和绘图,这是swing的看家功夫,JList、JTable、JTree、JTextPane这些高级组件越精通越好。
我觉得swing高手应该具备3种技能:自定义组件、编写L&F、自定义布局管理器。朝着这3个方向前进吧  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-12-21 12:21 莫言

Swing其实是一个强大的东西,现在的硬件配置越来越高,以前跑Java吃内存过多的问题以后是不存在了的..

  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用[未登录] 2007-12-21 13:21 mike

具有讽刺意味的是..
java真是因applet才被世人所知...
后来Java反而服务器领域大放异彩,反而Java的桌面程序被人冷落...真是风水轮流转啊,我觉得有一天Java桌面还会再大放异彩的..
我认为Swing没能火起来的原因,除了是因为不愿意下载Jre外,还有就是Swing本身是比较难学的一个东西,以前的VB,Delphi,C++Bulider的开发人员早已习惯了用拖曳的方式来画页面,界面都是保存成一个资源文件,然后UI逻辑代码与界面是分开来的,而Swing的思想则是,所有的UI控件与Frame本身就是一个普通的对象Class,连事件对象(Event)也是一个对象,这对于以前许多从VB/Delphi转过来的开发人中很不习惯,虽然JBuild也可以通过拖曳方式来画页面,但其本质只是用来生成Java代码而已,当你修改这代码后,现逆向恢复成UI设计器时经常有问题.所以最终不得迫使开发人员放弃拖曳方式设计UI,而统统采用面向代码的方式,因为许多开发人员认为这是一种退步,是落后技术的表现,从而放弃了Swing..其实这是一个非常肤浅的看法,根本没有理解技术本身的奥妙.
事实上,换个角度想一下,将UI不作为一个资源文件保存,而就作为一个对象来看待,不真是一个新的思想吗?他可以让你方便的动态的封装各种UI..在动态生成UI时比VB,Delphi方便多了,因为UI本身就是对象,天然的溶为一起!!!
好好研究一下Swing,你就会发现其奥妙无穷....
当所有人都在一窝峰搞什么Structs,spring,Habernate这些技术时,你难道没发现这些都只是后台的技术,而前台UI端的技术本质上一直停留在JavaScipt上.未来的东西往往就是现在被人忽视的东西  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-12-21 22:17 sun_java_studio@yahoo.com.cn(电玩)

@莫言
“现在的硬件配置越来越高,以前跑Java吃内存过多的问题以后是不存在了的”可别有这种想法啊~,硬件提高不能是程序任意采用耗内存方法的理由。  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-12-21 22:21 sun_java_studio@yahoo.com.cn(电玩)

mike,你说的“界面都是保存成一个资源文件”,其实我觉得很好,你这句话真是指点了我,谢谢你!  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-12-26 13:42 lishali

综上
大家共同的一个想法,我来说下吧?!
sun走的技术路线是极其诡异的,也许走偏锋就是sun公司的长处,不过可要苦了这里的一群哥们啊!
哎~~~~~~~~~~~··  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2007-12-26 13:52 sun_java_studio@yahoo.com.cn(电玩)

@lishali
“Swing的思想则是,所有的UI控件与Frame本身就是一个普通的对象Class,连事件对象(Event)也是一个对象”,没什么不好,因为这样能提供最大程度的灵活性,如果要实现“界面都是保存成一个资源文件”的话,自己写个Framework支持就可以了。简化Swing复杂度,JavaFX就是这样的思想。  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用[未登录] 2007-12-29 20:59 Shawn

JFileChooser 确实太恶心了 加了感官后启动N慢  回复  更多评论   

# re: netBeans6.0咸鱼翻身与Swing称霸桌面应用 2008-05-24 14:24 一啸长天

我还是继续我的"低级WEB开发"吧!^_^  回复  更多评论   




标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-07-07 10:15 编辑过