jacklondon的专栏

jacklondon的专栏

jacklondon
jacklondon的公告
不要在论坛中要我 email
我是开源项目 VelocityWeb 的发起人,请访问:http://velocityweb.sourceforge.net 页面访问数:
最近评论
smartcarnew:异常处理确实是一个需要深思的问题,不过在C++中重要的是要明确的规范和处理,异常对于错误处理情况已经有了很多好处,而对于例子中说的资源泄漏情况已经有了成熟的程序设计方式来处理,比如用类或一些智能指针来管理。
friendShingle:说句公道话,我感觉这个分析比较客观,至少人家以数据说话。 不过楼主没有分析 compiler 在 1.5 突然增加的原因,我估计是因为加入了范型编程。从03年到现在我从事了多年的Swing开发,感觉Swing的Bug很多,特别是 1.4 有时我都很恼火,不过基于不影响使用,而且在Windows下Bug很少,在其它平台中Bug多一些。在03年以前我做过三年的Delpi/VC等的开发,我感觉Sw……
killme2008:无话可说,比较汗
killme2008:无话可说,比较汗
jacklondon:to gtlang78,
你说的也有道理。我正在写另外一篇文章,分析 JDK 各个部分的 bug rate(不知道中文应该怎么翻译,实际意思是每千行纯代码中包含的 bug 数量)。这样比较就更有意义了。
我个人的看法,JDK 的 GUI 代码质量不可能会很好。整个 JDK 中,Sun 与别人合作开发的好像只有 Swing。在 Swing 之前,Sun 独立开发的 AWT……
文章分类
收藏
    相册
    文章图片
    软件技术大全
    codeproject
    sourceforge
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 JDK 代码质量分析收藏

    新一篇: VelocityWeb 1.0 发布了 | 旧一篇: Sun JDK bug 分析

    我们继续上一次的 JDK bug 分析。 (http://blog.csdn.net/jacklondon)

    分析代码质量的一个重要指标是 bug rate。意思是每千行纯代码中,包含的 bug 平均数量。

    下面是 JDK 两个版本的 bug rate:

    package jdk1.4.2 bug count jdk5.0 bug count jdk1.4.2 code line count jdk5.0 code line count jdk1.4.2 bug/(k lines) jdk5.0 bug/(k lines)
    java.awt, awt+2D+drag&drop 37 48 55908 57902 1.36 2.04
    javax.swing, com.sun.java.swing 34 142 191836 187084 0.18 0.76
    java.net 17 14 8892 9590 1.91 1.46
    javax.sound 11 21 3011 3433 3.65 6.12
    java.util 10 16 24148 40109 0.41 0.40
    java.nio 9 13 11139 11300 0.81 1.15
    java.lang 6 29 11955 16778 0.50 1.73
    java.io 2 11 10088 10728 0.20 1.03
    java.beans 1 13 6489 7024 0.15 1.85
    java.math 1 2 2859 3950 0.35 0.51
    java.security,javax.security 1 3 12480 14804 0.08 0.20
    java.text 1 3 11830 9254 0.08 0.32
    javax.imageio 1 6 7912 8271 0.13 0.73
    javax.xml 1 7 1326 3692 0.75 1.90


    我们可以看出,总体来说,JDK 5.0 的 bug rate 统计数据比 JDK 1.4.2 难看。 可能是改动太大的缘故。
     
    总体来说,JDK 里面的代码质量比较优秀。一般国内的项目,bug rate 在 10 以下已经是很好的了。这里谈的 bug rate 是指排出 PM 捣浆糊把小 bug 说成不是 bug 的因素,因为在那种情况下,谈什么 bug rate 没有意义。

    国内缺乏足够的权威数据,来比较 bug rate。我们拿国外的数据吧。(http://en.lupaworld.com/index.php?option=com_content&task=view&id=194&Itemid=35)

    Linux 内核的 bug rate 是 0.17 个 bug 每千行。对应的数据,普通商业应用的 bug 则在 20 个 bug 每千行。

    从代码行上看,JDK 中几个大的 package 是 AWT, Swing, net, util, io, nio, lang, text. 在这几个大 package 中,AWT , lang, beans 比较高。

    AWT bug 多是一个历史性问题,来源于其设计不够好。 Swing 如果完全抛开 AWT,则值得大家放心去用。目前的 Swing 组建基本上都是建立在 AWT 之上,比如作为 Swing 基础的 JComponent 就是继承自 AWT 的 Container 类。我们期待 Sun 在未来某个版本的 JDK 中将 Swing 与 AWT 彻底分开。

    总体来说,如果用 Java 写客户端 GUI 程序,则选择 Swing 代替选择 AWT 成了必然。

    lang 包涉及到比较底层的东西了。好在很多东西一般人也不大会去用,有点 bug 没有太大影响。lang 包主要涉及直接调用操作系统 API 的一些函数、Java 语法最基本的一些类信息、反射机制。这一块代码写起来确实有难度。bug 多一点也可以理解。

    beans 包涉及到 Java bean。 以前用过 JBuilder 的时候,它可以帮助生成 Java 类和其对应的 BeanInfo。 其他 IDE 对这些支持的并不多。 Java bean 主要用于 IDE 在图形界面下设置属性,自动生成一些代码。Java 本身的语法中,缺乏对“属性”的支持,这也是众多 C# fans 津津乐道的。

    根据我的经验,beans 包实用价值不大。以前见过很多 Java 程序员写一些 PropertyEditor , 现在少了,也是一阵风。

    io 包和 nio 包都很不错。

    综合来看,我觉得 JDK 代码质量还是很不错的。一般来说,我们采用开源的现成代码或者组件的时候,如果其代码质量达到或者超过我们自己的代码质量,则我们可以放心采用。我觉得大多数 JDK 类库都可以放心地使用。大家不用担心。

    发表于 @ 2007年01月30日 17:28:00|评论(loading...)|编辑

    新一篇: VelocityWeb 1.0 发布了 | 旧一篇: Sun JDK bug 分析

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © jacklondon