阅读更多

15顶
1踩

非技术

今年Sun的JavaOne重点强调了JavaFX,这篇文章采访了访问Sun高级工程师 Amy Fowler,对于Swing, RIA and JavaFX给予了一些有意思的回答。

Amy Fowler picture


1。首先请介绍一下你自己。

我是Amy Fowler,我95年加入了Sun Java team,做了一年痛苦的AWT hacking之后,我开始做Swing,我差不多在Swing方面做了将近11年。

2。你现在的职位?以及你现在在
Java client group(Java客户端部门)中的职责?

我是Java client group中的高级工程师,虽然我有几年没有接触Swing代码,但是我依然觉得我是一个toolkit工程师。我最近发布了一个新的demo,可以看一下SwingSet3SwingSet3是一个开源项目,展示了Java 6 Update 10的最新功能。

3。JavaFX貌似将成为Client Java(Java客户端)的新方向。你对中间件公司和大型商业软件有什么建议吗?他们是否要转移到JavaFX上来?

在我和企业应用开发者合作的过程中,我感觉企业应用是一个比较传统的领域,对于迁移到新技术的应用有很大的抵触。所以,一开始谨慎一些是没有错的。但是使用新技术也是一种很大的乐趣,很多商业软件开发者经常以下基本问题头疼,比如管理大量数据的显示层,表单验证,实现动画图像节点等,这些能用JavaFX script简单实现,并且兼容整个Java平台,所有逻辑和结构无需任何改变。事实上,改变的只有GUI(用户界面),将大量业务逻辑隐藏在java系统内部,专注于GUI开发,能够提供更好的视觉组件。

4。JavaFX的目标用户是哪些?你能比较一下Swing开发者,RIA技术群(包括Flex/AIR/Silerlight),以及整个web社区吗?

这其实是两个问题,我们的目标用户分为普遍意义上的JavaFX用户 和 JavaFX Script语言用户。对于普遍意义上的JavaFX用户,我们的目标是专注在满足各个特殊团体的需求,对于RIA技术群来说,他们的抵制最少,因为如果JavaFX能够提供快速开发的能力,并且能很好的兼容java,在他们中普及应该相对容易。

从长期来讲,未来会有多少软件不是富客户端互联网应用呢?图像处理硬件方面发展迅速,能够提供能加丰富美丽的界面。Ben Galbraith在JavaOne演讲中就强调了现在用户体验已经上升到一个至关重要的高度。

但是你如何开发出丰富美丽的应用呢?我们相信JavaFX script能够良好的链接现存的设计工具(Photoshop, Illustrator等),让美工和开发者在一起完美配合,开发出优美的用户界面。

 

现在说说我们对于JavaFX Script语言用户。JavaFX Script语言和Java完全不一样,但是它的确非常棒。

对于定义视觉用户界面方面,它比java有以下优势:


I.declarative syntax语法定义,比XML简单清晰。

II.first-class functions for callbacks一级函数调用,不用再写匿名内部类anonymous inner classes

III.expression-based binding基于解释绑定,一旦使用,要手工查找是非常麻烦的

 

我必须承认,第一眼,我并不喜欢JavaFX,但是使用的越多,我越喜欢它。


5。有很多特性直接进入了JavaFX语言,比如binding绑定, animations动画, effects特效和retained painting保留绘画。而Swing的代码是非常容易debug调试的,然而要debug JavaFX代码需要IDE的支持,比如Eclipse, IDEA 和NetBeans等,对不对?

当然,IDE的支持非常重要,尤其JavaFX是一个全新的语法语言,包括一些特殊属性如binding绑定需要IDE的特殊debug支持。新的SDK将包括一个NetBeans插件,我相信IDEA和Eclipse也会在未来增加JavaFX插件支持。另外,我强烈推荐今年在JavaOne上发现的SwingExplorer ,能够可视化调试Swing。


6。我们没有看到很多成熟和专业的第三方Swing组件,尤其和Delphi,.NET甚至Flex相比,你觉得这是什么原因呢?

是的,和其他框架比,我们是没有很多第三方组件,但是我们依然有一些优秀的组件:JIDE (David Qiao) , JGoodies (Karsten Lentzsch)等。还有 SwingLabs,这是一个优秀的扩展组件包。

Swing主要由于是在90年底末期发布的,那个时候JSP和web应用已经成为主流,开发者意识到单一应用并不是跑在每个页面或者浏览器上。

7。近期,许多JVM语言(比如Groovy, JRuby, Scala and Jython)都使用Swing作为“UI视觉引擎”,和动态语言一起使用,开发用户界面,这是不是就是Swing的未来?

由于这次JavaOne强势推出JavaFX,很多人担心Swing会不会被放弃,未来所有的客户端效果都会用JavaFX来完成?答案是否定的。我们意识到,一个工具只能解决一个方面的问题,而且我们每一步的发展都是基于以前的成果。SceneGraph让我们集成了2D和3D,美丽和动画,成为一个稳定成熟的GUI工具包。

8。你认为Swing的缺点是什么?JavaFX是如何弥补这些缺点的呢?

有两个重要的Swing弱点被JavaFX解决:

I.如果你用Swing写代码,你有点象水管工人。Swing比较复杂,来解决所有UI方面的结构问题。但是,JavaFX script属性(declarative syntax, binding, functions),能够流线组装GUI界面。

II.Swing组件并没有存在2D座标系统中,要作出完美的动画需要很高的技巧,而在JavaFX中新的SceneGraph API能够很轻松提供炫酷的动画GUIs。

9。你还有其他的关于Swing的内容要告诉我们吗?

JavaOne是努力展示最新最sexy的技术,但是对于我来说,我更关心Java 6 update 10的更新。比如:

* Java Kernel
* Next Generation Java Plugin
* Deployment Toolkit
* Nimbus Look and Feel
* Java Quick Starter
* More graphics acceleration for Java2D
* Shaped and translucent toplevel windows

详细可以看看:Java6 Update10 Overview

 

15
1
评论 共 5 条 请登录后发表评论
5 楼 aishame 2008-06-06 14:15
引用
Amy Fowler居然是个女的!了不起!

呵呵,     
4 楼 番茄有益 2008-05-28 14:19
鼎鼎大名的Amy--          
3 楼 mkclawhammer 2008-05-28 12:58
Amy Fowler居然是个女的!了不起!
2 楼 Eastsun 2008-05-27 17:23
虽然不太看好JavaFX,不过还是蛮希望JavaFX能够流行起来
1 楼 QQbyte 2008-05-27 14:50
感觉RIA取代简单文本HTML至少还需要2-5年,为什么呢?互联网主要是传递信息的,对于界面的要求并不会那么高,华丽的界面也许对于游戏有优势。

至于JavaFX要流行也许需要更多时间。

发表评论

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

相关推荐

  • sun java ide_新手下载安装Java IDE - Eclipse

    Eclipse是著名的开源集成开发环境(IDE),主要用于Java应用开发。官网下载Eclipse其实有挺多坑的,打开下载页 http://www.eclipse.org/downloads/ 可以看到当前最新发布版是Eclipse Oxygen,注意不要直接点醒目的下载按钮(那个是在线安装器),要点灰灰的Download Pacakgeseclipse01.png接下来要选择Eclipse ID...

  • DSP程序 调试总结

    原文地址:调试总结">DSP程序 调试总结作者:fanaishen1.warning: entry point symbol _c_int00 undefined 使用C写DSP时,在rts.lib库中定义了入口地址:_c_int00 而使用汇编语言编程,就不用包括rts.lib库,所以入口地址及其标号可以由人工指定。而使用C时,就不同了,必须从rts.lib定义的这个入口_c_int00入口,是

  • 申请的Sun的开发工具大全DVD今天到手了

    总算等到到家。DVD制作风格很不错,一个html页面做导航,蛮实用的,又给我的硬盘节约了一点地方。今天把另外一台台式机上的很多东西整理到DVD上了,现在有了几十G空间,装了GSX,可以爽爽了,计划内的任务是Small Business Server2003,另外就是2000server,还有2003server+exchange2003+office2003+projectserver 2003+...

  • 正则表达式-匹配横杠-本身

    import java.util.regex.Pattern; public class RegexUtil { public static void main(String[] args) { ... match(1, "匹配数字1", regex, "1"); match(2, "匹配-字符本身", regex, "-"); re

  • 正则表达式匹配数字、字母和下划线

    正则表达式匹配数字、字母和下划线。

  • 【python】模式匹配与正则表达式

    大家好,我是胡亥大魔王。今天介绍python中的模式匹配与正则表达式

  • python正则表达式匹配专利号

    正则表达式 re = [A-Z]{2}\d{5,13}\-[A-Z](\d){0,1} 表达式分析: [A-Z] 表示一个区间,匹配所有大写字母,[a-z] 表示所有小写字母。 {2}表示2位字母 \d 表示匹配一个数字字符,等价于0–9 {5,13}表示 数

  • 正则表达式匹配数字或者短横杠至多三次,数字可以不填写,学习正则表达式

    在实际的生产环境中,往往可能会有这种需求,现在进行验证,往往要在前台和后台均做验证, 那么前台的验证框架最经典也是最有效的,则为正则表达式 学习正则表达式可能刚开始看没有任何的感觉,或

  • Sun公司Forte for Java IDE获奖

    google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//<script type="text/java

  • 基于Eclipse的TI集成开发环境IDE-CCSv5使用教程

    TI嵌入式处理器的集成开发环境(IDE)包括调试器,编译器,编辑器,DSP/BIOS操作系统等等,现在最新的CCSv5 IDE基于Eclipse开源软件框架(v4+)并融合了TI设备的支持与功能,适用于windows和linux环境下开发,CCSv5是基于原版的 Eclipse,并且TI将直接向开源社区提交改进,用户可以随意的将各种其他厂商的Eclipse插件或TI的工具拖放到现有的Eclip...

  • 为什么java世界没有真正的快速开发平台

         为什么java世界没有像微软的visual studio那样的快速开发平台,其中一个原因固然是因为微软封装了很多东西,提供了强大的集成工具并且要求你按照微软的设计思路来设计系统,但是 java世界具备visual studio中的任何一种组件,所缺少的只是没有人或者厂商将他们集成起来,而之所以没有人去做,一个很大的原因恐怕是java里面每种组件我们都有太多的选择,web框架有struts

  • 正则表达式规则

    用来操作字符串,按照一定的滚则去匹配字符串 正则表达式存在的作用就是为了规范用户输入的账号密码手机号等一些数据 在前端中,我们正则表达式的对象是new RegExp() 方式一: var 对象名 = new RegExp(参数一,参数...

  • 正则表达式

    正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。1. 使用RegExp构造函数 2. 使用...

  • python 之模式匹配与正则表达式

    文章目录不用正则表达式来查找文本模式用正则表达式查找文本模式用正则表达式匹配更多模式利用括号分组用管道匹配多个分组用问号实现可选匹配用星号匹配零次或多次用加号匹配一次或多次用花括号匹配特定次数贪心和非...

  • python正则表达式匹配多字符(一)

    {}表示限定的位数,可与单字符组合使用 {4}表示限定4位 {1,3}表示1到3位 \d{1,2}表示可以匹配1-2位数字 \d{1,5}表示可以匹配1-5位数字 \d{11}表示可以匹配11位数字 import re result = re.match(r"\d{1,2}","15...

  • php 正则匹配数字范围,正则表达式匹配数字范围

    正则表达式匹配数字范围,匹配单个数字的方式很简单,[0-9]是[0123456789]的简写形式,可以用来匹配任何一个数字。如果要匹配 0 到 255 中的所有数字,该怎么办呢?表达式[0-255]并不能达到目的。下表所示为数字元...

  • Python入坑进阶第一步:模式匹配和正则表达式

    1、使用正则表达式匹配文本模式 str ='2022-06-01是儿童节' 此时需要获取日期2022-06-01,该如何获取呢?答案:正则表达式! &gt;&gt;&gt; str ='2022-06-01是儿童节' &gt;&gt;&gt; #导入正则表达式函数所在的模块:...

Global site tag (gtag.js) - Google Analytics