阅读更多

26顶
2踩

编程语言

原创新闻 你看好Java桌面吗?

2008-07-22 09:11 by 见习编辑 Eastsun 评论(48) 有18800人浏览
  提到Desktop Java,不得不说这是Java开发之痛。从一开始引入JAVA平台的AWT(Abstract Windowing Toolkit)“一次编译,到处调试”给人留下了很糟糕的印象;在Java1.2加入的Swing后,虽然解决了AWT中的很多问题,但似乎也没让人对其产生多少好感,而且普遍认为Swing的速度慢,开发效率低下。
  不过最近几年SUN又开始大力支持Desktop Java的发展,从Java6中加入诸多Desktop Java新特性,以及对Swing性能有了很大的提高;并且特别针对Desktop Java创造了一个新的语言JavaFX……
  这一切,是否能改变Desktop Java的命运呢?
  最近,《Thinging in Java》的作者 Bruce Eckel 在其博客上发表了一篇题为:Does Anyone Really Care About Desktop Java? 文章。他认为,Desktop Java从设计之初到现在一直走在错误的路线上:
引用
  The history of Java UI is littered with disastrous decisions, starting with the AWT (Abstract Windowing Toolkit), which was created at the last second, because (no surprise) the language designers hadn't considered UI as an important paradigm for Java. Rumor has it that AWT was one month from conception to completion, which certainly fits. The results of AWT -- buggy and equally mediocre on all platforms -- destroyed everyone's faith in Java UI, for so long that Swing, which has been baking for years and years, is only just getting back some of the lost mojo. Users, who have a long memory of first impressions, still equate Java with crappy user interfaces, so to them the steaming coffee cup looks like something else that steams.

  此文发出后,在论坛上引起强烈的反响。支持者不少,强烈反对的也很多。你是否认同他的观点呢?
来自: http://www.artima.com
26
2
评论 共 48 条 请登录后发表评论
8 楼 Nighthaven 2008-07-22 14:31
你确定你是选了swt?而不是eclipse rcp?如果是那样的话netbeans rcp也不错的。
7 楼 wantdrink 2008-07-22 13:57
实际项目中掂量掂量,还是更多的选择了swt——在java的大前提下。
swing很强大,熟练了也不复杂,但是总觉得swt更方便。
6 楼 Eastsun 2008-07-22 11:48
也有人认为Bruce Eckel是个投机主义者。
我觉得Bruce Eckel对Java GUI的批判也有失偏颇,Java GUI虽然存在些问题,但也没有他说得那么不堪。

个人对Swing还是很有感情的,虽然使用起来有点麻烦,学习成本过高;但从设计上来说我觉得Swing那一套还是很不错的:Swing的灵活性足够好,只要你水平够,什么样的效果都是可以弄出来的。
而且JavaFX出来后很大程度上简化了Java GUI 的开发,如果Java对多媒体支持好一点,启动速度快一些,就很OK了。
5 楼 lxjde 2008-07-22 11:34
相当的看好
4 楼 xiaoxizhen 2008-07-22 10:59
这篇文章只能说明Bruce Eckel对java GUI很无知
3 楼 www_hero 2008-07-22 10:50
Bruce Eckel又怎么样,他对GUI并不一定了解。至今如果你想实现一个跨平台桌面客户端,用Java没跑,如果说Flex AIR,那么Flash player能做到的事相比Java来说太有限了,除了UI显示它是强项
2 楼 xpf7622 2008-07-22 10:34
不管怎样,坐观其变吧,Ruby不是很早就有了,这两年才因Rails火了起来. JavaUI也许在Sun的努力下,会好起来的.
1 楼 newold 2008-07-22 10:32
其实java桌面在国外很多,以前用c++下的motif等unix桌面程序现在都基本改成java的了.我在欧洲机场看到的很多系统都是java写的

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Visual Basic 语言功能

    下列主题介绍并讨论面向对象的编程语言 Visual Basic 的基本组件。 使用窗体和控件为您的应用程序创建用户界面后,还需要编写定义应用程序行为的代码。 与任何现代编程语言一样,Visual Basic 支持许多通用编程构造和语言元素。 若已经使用过其他语言编程,那么您可能熟悉本节中包含的很多资料。 尽管多数构造与其他语言中的构造类似,但 Visual Basic 的事件驱动特性还是引入了一些细微的差别。 如果您是编程新手,本节中的资料可作为编写代码的基本构造块的入门介绍。 理解了基础知识以后,您就

  • Visual Basic学习笔记##对口升学##可用,持续更新~~

    工具栏属性窗口。

  • C++基础教程面向对象(学习笔记(94))

    std :: string和std :: wstring 标准库包含许多有用的类,但最有用的可能是std :: string。std :: string(和std :: wstring)是一个字符串类,它提供许多操作来分配,比较和修改字符串。在本章中,我们将深入研究这些字符串类。 注意:C风格的字符串将被称为“C风格的字符串”,而std :: strings(和std :: wstring)将简称...

  • JavaBasic 类的封装

    为了数据操作的”安全“性 数据的格式 使用范围 规范性。一个对象在调用自己类中的属性时 可以使用this指针。2: 在类中创建一个唯一的对象 关键字:static。若书写了一个含参的构造函数,则空构造函数无法使用。修饰属性 变量时 在内存中只会创建一次且一个。限制代码可以被使用调用的“范围”private:只能在本类中使用。格式:get属性名/set属性名。格式:以调用名为函数名的初始函数。每个类自带一个隐式的空构造函数。3: 在类之外可使用类名调用。”范围“:项目的结构目录。指代调用这部分代码的对象。

  • 【转】VB6.0中用户类和数据源类的设计和使用技术

    本文转自:http://www.pcworld.com.cn/99/script/9907/072601b.asp 摘要:用户自定义类(Class)是Visual Basic 6.0中实现软件重用的最基本方法,也是设计和使用Active X EXE/DLL部件的技术基础。在VB6.0中除了可定义一般功能的类外,还可以定义从外部源获取数据的数据源类(包括ODBC 源、ADO,或者任何 OLE...

  • Visual Basic的类对于面向对象的支持

    VB最为人垢病的是它的面向对象特性。实际上VB是一种基于对象的开发工具。在VB中 建立的类是支持继承的。下面是范例: 首先建立一个新工程,然后添加一个新的类模块(Class Module),类名称设定为BaseClass。 然后在BaseClass中加入以下代码: Public Sub BaseSub() 虚拟特性,BaseSub在子类中实现 End Sub 然后添加两个类模块,类名称分别设定为

  • Class 语句 (Visual Basic)

    VB.net教程https://www.xin3721.com/eschool/vbnetxin3721/ 声明类的名称,并引入构成该类的变量、属性、事件和过程的定义。 复制 [<attributelist>] [accessmodifier] [Shadows] [MustInherit|NotInheritable] [Partial] _ Classname [(Oftypelist)] [Inherits classname] ...

  • 关于Visual Basic 6.0类开发(下)

     在Visual Basic 6.0类的技术与应用(上)(以下简称上文)中,我们讨论了类的理论、类的创建和类的方法的编程实践,实际上,类之所以能够在软件工程中广泛应用,最主要的一点是它可以非常方便的封装许多编程需要的属性,这不仅使程序员在一定程度上克服控件(ocx)和链接库(dll)设计和调试中的复杂性,而且能够提高程序代码的简洁和高效性??本文将讨论完整的类的编程,包括方法、属性和基本事件。

  • Visual Basic 集合类

    “集合”是一种将一组相关项组合在一起的方法。 存在许多不同类型的集合。 出于多种目的,Visual Basic 应用程序中使用了预定义集合,例如Form上的Control.ControlCollection,它由窗体的Controls属性返回。 也可以创建自己的集合以组织和操作对象。 对于应用程序可能需要动态创建和销毁的对象,使用集合进行跟踪是一个不错的方法。 下面的代码片段演示如何使用 Visual BasicCollection对象的Add方法保持用户所创建的 widget 对象的列...

  • visual basic(2) 类和对象

    VB中,每个按钮控件都代表一个类,将这些控件添加到窗体上是就创建了一个对象。由同一个类创建的对象具有类定义的公共属性、方法和事件 一、对象的属性 1、属性设置 (1)可以在单击对象后,右侧弹窗中设置对应选项 (2)也可以在程序运行中更改对象的属性,属于动态修改 [对象名.] 属性名 = 属性值 如:command1.Caption="确定" ‘设置命令按钮的标题 Text1.Text="VB程序设计” 2,对象的通用属性 (1)Name属性:对象的名称。在建立对象时,系统会为该对象...

  • vb中的类与对象

    vb的对象与类。vb,一个不是完全面向对象的编程语言,相对于其它高级编程语言来说,在它上面,基于对象的编程应用更为泛。对于对象,只不过是类的实例化罢了,而类,是众多对象的抽象的一个庞大集合。类实例化对象,对象抽象成类

  • [Basic]面向对象之信息隐藏(一)

    开博之语 开技术博客,始源于与本科毕设老师的一次交谈。在那次交谈中,老师针对毕设期间对我的了解,给我提出了几点建议。针对我如今的技术实践能力强于文档写作这一环节,老师提出的建议就是写技术博客。于是在本科毕设结束后,我采纳了老师的建议,最终开设了这个技术博客。开设这个技术博客,一则对自己的写作有所提高,而更大的意义则在于能与更多的人进行交流,交流可以促进你我的共同进步,不是吗?所以我乐于、渴望于倾

  • 类和面向对象

    面向对象 面向对象(Object Oriented, OO)的程序设计的思路和人们日 常生活中处理问题的思路是相似的。在自然世界和社会生活 中,一个复杂的事物总是由许多部分组成的。 面向对象的程序设计的基本思路:使用现实世界的概念抽象地思考问题从而自然地解决问题。 类和对象的定义 ·对象: 对象是人们要进行研究的任何事物,是现实世界中的一个实体。 任何对象都拥有一组数据和操作。 对象所拥有的数据...

  • Ubuntu 安装与使用 Visual Studio Code

    1.Visual Studio Code简介 1.1.什么是Visual Studio Code? Visual Studio Code是微软推出的一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器。 1.2.主要功能 集成了所有一款现代编辑器所应该具备的特性,包括语法高亮(syntax high lighting),可定制的热...

  • Visual Basic语言的面向对象编程

    面向对象编程是一种编程范式,它基于“对象”的概念。对象是数据和功能的组合,能够模拟现实世界中的事务。类(Class):类是对象的蓝图或模板,定义了对象的属性和行为。对象(Object):对象是类的实例,通过类创建,拥有类的属性和方法。封装(Encapsulation):封装是将数据和方法组合在一起,并隐藏不必要的细节,提供对外接口。继承(Inheritance):继承允许新类基于现有类创建,从而实现代码的重用。多态(Polymorphism):多态是允许不同类的对象以相同的方式响应同一消息或调用。

  • Visual Basic6.0零基础教学(2)—vb中类的介绍和基本控件的属性

    大家好,昨天我们学习了vb的简单介绍和和布局,今天我们来详细学习一下,vb中类的概念和我们昨天提到过的属性栏,每一个基本控件的属性.今天我们学习了VB中的类与对象的概念,还有基本控件中属性栏中属性的学习,相信通过编写一个小案例我们会更好的理解属性栏的使用!讲的不好,多多见谅,我们下次再见!更多优质文章点这里。

  • Visual Basic .NET 已不再支持的 Visual Basic 6.0 功能

    google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//<script type="text/javascript"

Global site tag (gtag.js) - Google Analytics