×

Loading...

奇文共欣赏,疑义相与析  java , zt

本文发表在 rolia.net 枫下论坛原文:http://java.sun.com/features/2002/03/gosling.html

2002年3月28号
JDC上有个投票,叫“向James Gosling提问”。下面是James Gosling就其中的部分问题的解答:

JDC:如果可以重新开始,你会令JAVA的一切的都成为对象吗?
James Gosling:不。事实上我更倾向于相反的方向。也就是说,让那些类更接近原始类型,那样的话,它们就可以被优化而变得更加高效,或者,以某种方式自动归类(autoboxing???很想翻成自动拳击:-),那么在对象转换时就可以自动分类排序了。

JDC:JAVA语言在所发布的每个版本里都加进了一些新功能,总的来说是好的,但整个包变得相当大,你们是否考虑过去掉一些东西?
James Gosling:JAVA语言本身事实上并没有加非常多的新功能,它本身是非常稳定的,只加了很少的功能。其实大家想说的是每个J2SE版本的API的差异。这个问题,从某种意义上来说的,是不可能回答的。假如说你把一些东西从J2SE平台里去掉,那又将如何呢?悲剧之一是我们得面对想当多的使用我们平台的客户。那么,对于任何一个人,任何一个开发者,J2SE平台将变的不再重要(这两句真难翻!亏他是怎么说出来的!)。但是对于每个开发者,他们对平台所关心的程度不尽相同。我们总是避免把所有的东西都加进去。事实上,如果我把一些我从来不用的API提出来——说实话,我从来没用过JDBC API,从来没写过一行JDBC数据库连接的代码。所以,从我个人来说,完全可以把JDBC API从J2SE平台里删掉了,而且这一点都不会影响我以前写过的代码。但这样做会使其他大部分人感到很沮丧。

JDC:你如何看待未来五年内的JAVA技术?
James Gosling:我认为最有意思的趋势是,JAVA技术会马上深入地运用到网络上所有有趣的地方。企业已经建立起了非常优秀的基础架构,但即将来临的是人们会将JAVA运用在各种嵌入式系统上,JAVA会使象蜂窝电话,汽车,实时系统等变得越来越有趣,人们可以使用端到端(end-to-end,Java One上很常见呀)的方式来创建系统。

JDC:关于实时系统:某个开发者正在搭建一个船舶仿真装置,一个船舶运动仿真器,它应该模拟一艘轮船的航线并几乎实时地将图象反馈给用户,他需要使用实时规范的参考实现吗?
James Gosling:我的回答是不。如果你仅仅是仿真,那么这并不是实时规范所描述的内容。实时规范是在做一件事情时预先达到准确地定时,那么,这个问题最困难的部分并不在于仿真(相对于实时,它并不是真的)一艘轮船的航线。况且,小伙子,我所看到的每艘轮船都会走得相当慢!
JAVA平台的实时规范只有在定时机制相当准确时才显得重要,因为在某种情况下,你可能对一毫秒的延迟都无法容忍。对于人们使用JAVA做的大多数事情来说,仅仅是在常规的JVM上写些常规的符合JAVA技术的代码,很少接触到实时系统。在一秒内,一般是十分之一或百分之一秒内,你都会得到正确的结果。垃圾收集可能比较麻烦,但在新的Hot Spot的虚拟机上这都不会成为问题。

JDC:我希望看到一些加强开发效率的工具,象UML建模工具向导可以帮助我们生成代码。那我们可以看到更强大的工具吗?
James Gosling:从某种意义上说这正是NetBeans软件项目开始时的目标。NetBeans最有趣的地方就是它有一个类似于UML建模工具的代码产生向导来适应相同的平台。人们已经利用它作了相当多的东西并且非常成功。

JDC:你认为对于学生来说,在计算机行业里他们应该学习的最重要的领域是什么?不仅仅是JAVA技术,包括所有的其他学科?
James Gosling:当然,你可以在各种书上学到许多不同的东西,一般来说都属于软件工程。象一些模式书就非常好(refactoring books这是什么书?)。我个人认为最重要的是理解算法和算法分析,它会令你对许多事物的行为具有洞察力。(好象许多大侠都是这么教导偶们的)

JDC:为什么java.lang.Throwable不是个interface?从它的命名类型上看它应该是。可以用try{}catch块来捕获许多类型——比如interface和class——而不仅仅是class,这会让JAVA语言更灵活(这哥哥说出来的是坨什么呀?)。
James Gosling:Throwable和其他的一些东西没成为interface是出于我们的决策,或者是出于我的决策。我想把抛出来的异常都关联一种状态,但你却不能在interface里做这件事情,只能是classe。这些状态基本上是标准的,有消息,快照(snapshot)等。而且,如果你让Throwable成为interface,那么把其他任何先前的对象都变成Throwable就是个很大的诱惑。从字面上来说,抛出一个一般的对象是很差劲的想法,而你真正想要扔出去的是那些捕捉到的异常本身,这不是一般的数据结构。

JDC:是不是有可能把JAVA的字节码规范提交到一个象ECMA(欧洲计算机制造商协会,金山糍粑)或CIL(Common Intermediate Language,通用中介语言?)标准组织?
James Gosling:是,我们确实曾尝试那么做,把他提交给ECMA,但他们反驳并转到了另外一件有趣的事情上。事实上,自从那次反驳后,ECMA做了一个内部研究,而且出版了报告,的确是非常有趣的读物。更多精彩文章及讨论,请光临枫下论坛 rolia.net
Sign in and Reply Report

Replies, comments and Discussions:

  • 工作学习 / IT杂谈 / 奇文共欣赏,疑义相与析  java , zt
    本文发表在 rolia.net 枫下论坛原文:http://java.sun.com/features/2002/03/gosling.html

    2002年3月28号
    JDC上有个投票,叫“向James Gosling提问”。下面是James Gosling就其中的部分问题的解答:

    JDC:如果可以重新开始,你会令JAVA的一切的都成为对象吗?
    James Gosling:不。事实上我更倾向于相反的方向。也就是说,让那些类更接近原始类型,那样的话,它们就可以被优化而变得更加高效,或者,以某种方式自动归类(autoboxing???很想翻成自动拳击:-),那么在对象转换时就可以自动分类排序了。

    JDC:JAVA语言在所发布的每个版本里都加进了一些新功能,总的来说是好的,但整个包变得相当大,你们是否考虑过去掉一些东西?
    James Gosling:JAVA语言本身事实上并没有加非常多的新功能,它本身是非常稳定的,只加了很少的功能。其实大家想说的是每个J2SE版本的API的差异。这个问题,从某种意义上来说的,是不可能回答的。假如说你把一些东西从J2SE平台里去掉,那又将如何呢?悲剧之一是我们得面对想当多的使用我们平台的客户。那么,对于任何一个人,任何一个开发者,J2SE平台将变的不再重要(这两句真难翻!亏他是怎么说出来的!)。但是对于每个开发者,他们对平台所关心的程度不尽相同。我们总是避免把所有的东西都加进去。事实上,如果我把一些我从来不用的API提出来——说实话,我从来没用过JDBC API,从来没写过一行JDBC数据库连接的代码。所以,从我个人来说,完全可以把JDBC API从J2SE平台里删掉了,而且这一点都不会影响我以前写过的代码。但这样做会使其他大部分人感到很沮丧。

    JDC:你如何看待未来五年内的JAVA技术?
    James Gosling:我认为最有意思的趋势是,JAVA技术会马上深入地运用到网络上所有有趣的地方。企业已经建立起了非常优秀的基础架构,但即将来临的是人们会将JAVA运用在各种嵌入式系统上,JAVA会使象蜂窝电话,汽车,实时系统等变得越来越有趣,人们可以使用端到端(end-to-end,Java One上很常见呀)的方式来创建系统。

    JDC:关于实时系统:某个开发者正在搭建一个船舶仿真装置,一个船舶运动仿真器,它应该模拟一艘轮船的航线并几乎实时地将图象反馈给用户,他需要使用实时规范的参考实现吗?
    James Gosling:我的回答是不。如果你仅仅是仿真,那么这并不是实时规范所描述的内容。实时规范是在做一件事情时预先达到准确地定时,那么,这个问题最困难的部分并不在于仿真(相对于实时,它并不是真的)一艘轮船的航线。况且,小伙子,我所看到的每艘轮船都会走得相当慢!
    JAVA平台的实时规范只有在定时机制相当准确时才显得重要,因为在某种情况下,你可能对一毫秒的延迟都无法容忍。对于人们使用JAVA做的大多数事情来说,仅仅是在常规的JVM上写些常规的符合JAVA技术的代码,很少接触到实时系统。在一秒内,一般是十分之一或百分之一秒内,你都会得到正确的结果。垃圾收集可能比较麻烦,但在新的Hot Spot的虚拟机上这都不会成为问题。

    JDC:我希望看到一些加强开发效率的工具,象UML建模工具向导可以帮助我们生成代码。那我们可以看到更强大的工具吗?
    James Gosling:从某种意义上说这正是NetBeans软件项目开始时的目标。NetBeans最有趣的地方就是它有一个类似于UML建模工具的代码产生向导来适应相同的平台。人们已经利用它作了相当多的东西并且非常成功。

    JDC:你认为对于学生来说,在计算机行业里他们应该学习的最重要的领域是什么?不仅仅是JAVA技术,包括所有的其他学科?
    James Gosling:当然,你可以在各种书上学到许多不同的东西,一般来说都属于软件工程。象一些模式书就非常好(refactoring books这是什么书?)。我个人认为最重要的是理解算法和算法分析,它会令你对许多事物的行为具有洞察力。(好象许多大侠都是这么教导偶们的)

    JDC:为什么java.lang.Throwable不是个interface?从它的命名类型上看它应该是。可以用try{}catch块来捕获许多类型——比如interface和class——而不仅仅是class,这会让JAVA语言更灵活(这哥哥说出来的是坨什么呀?)。
    James Gosling:Throwable和其他的一些东西没成为interface是出于我们的决策,或者是出于我的决策。我想把抛出来的异常都关联一种状态,但你却不能在interface里做这件事情,只能是classe。这些状态基本上是标准的,有消息,快照(snapshot)等。而且,如果你让Throwable成为interface,那么把其他任何先前的对象都变成Throwable就是个很大的诱惑。从字面上来说,抛出一个一般的对象是很差劲的想法,而你真正想要扔出去的是那些捕捉到的异常本身,这不是一般的数据结构。

    JDC:是不是有可能把JAVA的字节码规范提交到一个象ECMA(欧洲计算机制造商协会,金山糍粑)或CIL(Common Intermediate Language,通用中介语言?)标准组织?
    James Gosling:是,我们确实曾尝试那么做,把他提交给ECMA,但他们反驳并转到了另外一件有趣的事情上。事实上,自从那次反驳后,ECMA做了一个内部研究,而且出版了报告,的确是非常有趣的读物。更多精彩文章及讨论,请光临枫下论坛 rolia.net
    • real-time programming? Of course Java is not there yet.