Java在国内的路要走宽,必须要发展Swing

国内Java开发的路不知从哪年开始,几乎被锁定到Web开发上。这是导致Java之路越走越窄的重要原因。
大家学Java不知有没有这种体会:学SDK时非常畅快,学Swing和applet时充满乐趣,可是一到了JSP、Struts、Spring,一个比一个烦人。这说明相对于PHP、ASP.NET和现在捧上天的RoR,Java的Web编程实在是不好学的。

最几天无事到www.open-open.com转悠,这才发现n多Java开发的桌面程序(多数是Swing,少部分swt),其实性能很好,不比C#差。更有不少游戏,相当不错。这下颠覆了笔者过去对Java“慢”的成见。
再到http://www.google.com/trends上一搜,结果相当吓人。Swing竟然与VB、Delphi这些老牌桌面统治者不相上下,而国内火起来的winform,可怜得几乎没份。

其实程序开发的多样性和乐趣尽在桌面系统。大家过去不知用VB、Delphi做出多少各种充满趣味、有实用价值的程序。现在到了Java,被锁定到Web之后,折腾来斗争去还是干不过PHP,实在让人心寒。这不许多人干脆扔掉Java,把RoR捧上了天。这真是冤杀Java了。
Swing技术模型上的优秀其实已经过多年实践了,现在用NetBeans开发起来,再加上众多优秀的开源类库(比如SwingLabs),开发效率相当高。而JavaBeans先天优越的封装性,可以保证我们的业务模型和业务逻辑既可以简单地放在本机,也可以放到服务器端以满足高容量的扩展和重用。
自从倒EJB运行以来,很多人见了Sun就摇头。像原先J2EE中RMI+Swing这种经典的C/S,被搞成了Spring+WebService+winform,性能又低,开发也难,本人实在觉得不妥。国内这种跟风式的软件环境,真是什么蠢事都搞得出来。

现在很多人成天炒什么Ajax、Flex,甚至MS宣传中的WPF,总说Swing和Applet这不行那不行。其实Swing和Applet比那些东西差多少,只怕是更成熟、更稳定。大家好不容易熟悉了Java,而这些RIA的问题Java一开始就着手解决了,犯得着非要扔了重学其它语言吗?像SAP这样的ERP巨头,人家的客户端也用的Applet。是不是说他们太傻太落后呢?

诸位,当纯Web快走到头的时候,继续热爱Java的同道们,是应该发展一下国内的Swing了。
[该贴被lgx522于2007年05月18日 18:05修改过]

Sun正在进行着这种开发,并将于2008年的上半年完成. 大多数人都忙着猜测JavaFX的意义(或者是无意义)却忽视了正真的公告声明. JavaFX的存在是紧密的联系着消费型JRE的. Ethan说:
Java 6中的消费型JRE的目的是为了给终端用户更好的用户体验,这讲意味着更小量的下载,更快的安装,更好的图形效果,更流畅的安装,更快的启动,更好的可用性,已经一大批其他的更好的改善.
这种消费型的JRE能够允许通过下载一个3至4MB的JVM安装文件来运行典型的Swing应用程序,其他额外的类库和JVM必要文件会按需要,在适当的情况,时间安装,这样就不会在终端用户的硬盘上产生大批的JRE版本.

这种Consumer JRE是个好注意吗? 面对 Adobe's Flash or Microsoft's .NET,你认为Consumer JRE有成功的机会吗? ? 这种工作平台如何跟那些已经被认可了的,ISV们喜欢用来开发的便携桌面程序的可移植技术,例如QT争高下呢?

See "Rumor: Java 6 update 2 will be 2-4MB?"(quoted as below) for more on this.

在一个由一群精英参加JavaOne大会的宴会上,传出了一个关于Java6 JRE update 2的未被证实的消息. 传言是说update 2版的JRE将会是个减肥版,体积会减至2至4MB. 细节没人知道,但是如果这是真的,这将是人们期待已久的Java在浏览器端的反击.

我们试图在JavaOne大会周五的会议里找出点线索,但周五.....也许是Sun的人不愿意对此谈论过多. 传言说这是个"流传在Sun内部"的更新,所以可能是非官方的--也许更本不存在.

这是个好注意,如果是真的,--它将会的驱散人们对JavaFX的疑虑.


http://weblogs.java.net/blog/enicholas/archive/2007/05/announcing_the.html

写这篇帖子,主要是想唤起国内开发界对Swing的重视。
笔者曾经接触过不少非Java程序员,他们的共识如下:1、Java是做B/S的;2、Java太复杂。
这说明国内Java从J2SE的一切皆有可能,钻到J2EE狭窄的B/S出不来。

对于公众用户安装JRE是个问题,所以大家在等JavaFX和update2。但如果是企业用户,装JRE或者.NET framework根本不是个问题。.NET开发商在企业界大量使用WinForm,由此而赢得了很多重视用户体验的客户。想不出Java开发商为什么非要死抱Web。

 我感觉Swing还是过于复杂,为什么不推荐Eclipse的SWT呢?我觉得SWT挺不错,小巧精悍,而Swing和AWT都太过于笨重!

lgx522 的话很有道理,桌面应用是应该有更多的空间!

我以前经历一个100多人开发的大型项目,是基于java桌面技术编写的,而且这个系统运行在世界各地,性能非常好! 对于目前非常流行的Web开发方式,换一换桌面开发方式,也许是件好事,希望久违的C/S开发方式重新回到我们开发员的视野.

用Swing就要解决客户端和服务器端的远程通讯问题,B/S结构就不需要,都部署在服务器端,各层自由调用。
这个是Swing应用的主要阻碍。

to onlyxu:
这个问题其实正是J2EE及Spring的强项,J2EE有经典的RMI和EJB;而Spring可以通过在服务层用各种方式(其中还是RMI效率最高)简单地导出服务,以供客户端(甚至包括Applet)调用。
所以用Swing解决高要求客户端问题,是“Java in One”方案的理想选择,唯一不爽的是客户端机器要求高一点,老掉牙的机器有点难跑,不过采用什么winform、Flex这类技术要求也很高。这种方案最大的优点就是充分利用Java解决服务器端“强”和“稳”的特点,并利用EJB或Spring架构上组件化的长远优势。

说实在的,Windows平台下,最理想的是客户端是采用VB、PB、Delphi这类老经典,来调用J2EE的服务层,可惜这类经典技术都跟风去追随.NET了,搞得不伦不类。短平快的优势没了,组件化程度不够高,只能落得个邯郸学步的下场。

to keyof:
swt其实比swing复杂多了,而且不够成熟。唯一的好处是在windows平台下比Swing快。
前一年大家吹了一阵eclipse RCP,其实还是难做;大家有兴趣看一看netbeans platform,个人感觉比eclipse RCP清晰好用,结合netbeans高效的IDE,比较好做。

sub没有死抱web,是国人死抱了web~~~~~~~~~~~~~~~~~~~~~

想问大家一个问题,swing可以调用EJB吗~~~~~~~~