值此Java十年之际,很多网站和社区都对Java开发人员及相关爱好者进行了调查与访问,下面列出十大热点问题调查结果。人们发现,开发者对于Java存在着各种各样的看法。下面列出有代表性的网友观点。
1.你是如何开始用Java编程的?
● 我在Java一出现的时候就开始使用它进行编程。我为它的'一次编写,到处运行'的理念以及Applet感到激动。
● 我在Java出1.0版本之前就开始学习它,因为我期望它能作为微软产品(我对VB和Visual C++太失望了)和Pascal的替代品。
● 我曾经把Java手册作为休假时的阅读材料,结果被它所吸引,转而使用Java而放弃C++,并且永不回头。
● 我所在的大学一直都在教C++课程,但我却用了很多时间自学Java,因为想用它找一份更好的工作。
2.Java曾经承诺"一次编写/到处运行(WORA-Write Once, Run Anywhere)",你认为它兑现这个承诺了吗?时至今日,你认为"一次编写/到处运行"的重要性发生改变了吗?
● 应用程序服务器和J2EE应用程序能够在不同的平台之间很好地进行迁移。我对WORA(Write Once, Run Anywhere)在客户端的效果表示怀疑,并且我觉得这些其实是不可能真正地达到的。
● 它让我完全不用考虑使用哪种平台。
● Java的早期成功应该归功于WORA。它为系统集成商、独立软件商、软件设计师带来不同的根本性的经济利益,这点胜于其他语言。
● WORA每时每刻都在对我发生作用。我经常在Windows中完成我的Java开发工作,但是却经常在Solaris或者Linux环境上进行不止一个的版本部署。
● 你能将字节码转换为MSIL,并且也可以用J#编写Java程序。这给我们的产品为Java和.Net保留了一个代码基础。
● 我经常在Windows、Linux 和Sun Solaris平台上做开发、测试和部署Java代码的工作,在跨越平台的时候只用对XML的配置文件做很少的更改。但是WORA的重要性在面向服务和架构方面有所削减。
● 一些人声称由于常用操作系统的数量的递减,WORA的重要性也会随之减弱。事实上即便只有两个目标平台,WORA也是非常重要的。
3.在你现在编写的生产代码中,有多大比例是用Java编写的?你认为在可预见的将来,这个比重是会增加、减少还是保持不变?
几乎所有的被调查者都声称Java是他们进行编码的主要工具,回答为主要工具者超过了70%的比例。在对第二个问题的回答中,这个比例没有降低的迹象。
● 去年我们对800个基于Java技术的产品通过了认证,我们几乎所有的中间件产品都是基于Java运行时的。
● 我们仍然看到客户对C和C++的任务认证的应用程序仍然存在大量的需求。我们希望经常能够使用Java,但是Java的VM技术到了应该发展成为能够在这些不同的系统上运行的时候了。
4.在你开发的Java应用中,桌面应用和服务器端应用的比重分别是多少?假如你编写桌面应用,你会选择SWT还是Swing(或者其他GUI框架)?理由是什么?
大部分回答为:"Java存在于服务器端的任何地方。"
● Swing太过于复杂,太不可预知,并且太难学习。SWT要稍微好一些,但通常来说,Java在用户界面方面实在不受欢迎。
● 我认为SWT的方法非常好,它出于速度和一致性考虑而链接到本地的类库,但是,我不喜欢API,它暴露了太多底层的东西。Swing有良好的API,但是它上面存在着太多的bug,较差的性能和糟糕的布局。
● 我非常喜欢SWT。它比Swing更加自然,而Swing被描述为粗略近似于自然。
● 我编写Swing的应用程序,并且使用Java Web Start进行部署。我还不太相信SWT的价值,因为它的跨平台支持有限并且缺乏可靠的MVC设计。
5.在开发Java程序时,你首选的平台、框架、IDE分别是什么?
在这个问题中,由于Windows和Linux这两个占有统治地位的操作平台,使得Eclipse Framework和IDE普及程度很高,这一点表现得非凡明显。有网友认为:
● 我选择的操作系统是WinXP Pro。在安装了Cygwin和几个其它的设备后,系统能够对硬件提供很好的支持。
● 我喜欢J2SE 5。IDE方面,我喜欢JBuilder,IDEA是第二选择。IDEA有更加灵巧的特性,但是我所需要的功能,老的JBuilder都有。
● 我过去使用emacs来进行开发,调试程序使用println。而现在,我使用NetBeans,并且非常惊奇,它居然能提供如此强大方便的帮助
● 在紧要关头,我用vi进行开发。
6.在Java的整个发展过程中,你认为JCP和开源社区谁起到的推动作用更大?
开源派:
● 目前来说是开源。JCP在积累实际经验前总是相信标准。EJB,日志,持久性这些都是在JCP中让人感到不满足的地方。JCP正在放弃Java的基础。一些困难的问题正在很轻易的被解决,但是相反,一些很简单的问题却变得日益复杂起来。
● 开源的实现正在引导着开发的过程,而JCP只是在定义标准。
● 假如是说绝对意义上的改革,我只能说是开源。开源的实现对于需要进行修复的漏洞响应很快。而JCP的进步和工业前进的步伐相比,显然要慢很多。
● 很多创新都是通过JCP模型而来的。然而,在过去的20年里,我们看到开源模型正在日益增长。
● 我已经发现了开源的主动性,尤其是Apache让我感慨颇深--它是最具创新性和最有用处的。
JCP派:
● JCP对于Java发展的贡献是功不可没的。它为整个Java生态系统提供了一个"物质核心"。很多不符合JCP标准的开源项目展现了各种不同的想法--它们有的很糟,有的则很出色。它们是提供改革动力的引擎。
7.你认为Sun应该将Java开放源码吗?
肯定派:
● 应该。而Sun不同意这样做的唯一原因是它认为Java是归Sun所有的,并希望Java可以带动Sun的发展。
● 一方面,开源的思想是很具吸引力的,因为这会使得更多的bug在更短的时间内被解决。另一方面,这也会为Java带来一些分歧和互不兼容的虚拟机。
● 我们需要一个开源Java的主要原因是保证平台的活力。假如Sun应该做什么的话,显然让Java开源是这个计划的保证。
● 我想Sun应该。"开源"Java并不需要Sun做任何工作。它主要需要其他人来做一些工作。拥有一个开源的Java是一个必然。我建议Sun能够熟悉到这个必然并抓住这个机会。
否定派:
● 不。假如是开源的话,我们会看到各种样式的Java。这最终会带来问题,就像我们现在面对各种应用服务器所碰到的问题一样。
● 不。我不相信一群普通的人的想法可以替代那些关注基本思想的完整性的科学的观点--这些通常是常人不需要关注的东西。
中间派:
● 这个问题无关紧要。Java已经可以按照自己的方式来发展。
8.假如你有权改变Java中的一样东西,你希望改变什么?
● 在底层,Java需要一个更加灵活的键入模型和一整套令编程更加轻易的特点。我们不能将所有的事情都依靠类库。
● Introspection,一个用来检测JavaBean属性的类--这个类太难用太笨拙了。
● 许可证。
● 为开发者提供内存治理的工具。
● 增加对运算符重载的支持。
● Jar版本是Java急需的东西。我已经记不清多少次我的XML解释器和日志库发生冲突了。
● Class Object。10年来一直没有变过,应该加入很多东西了。
● Java平台现在变得太复杂了。我们相信Java社区需要在明确部门分类这方面做一些更好的工作,进而使Java能够继续成长、兴盛和成功。
● Java绝对需要一个更为健壮的模型系统。现在,我们拥有的全部就是.jar文件;结果是造成了.jar文件"地狱"。现在,描述一个互连的模块系统太困难了。
● 一个对象在被加载以及Java运行时类型之间的关系是我们仍将面对的错误。你不能在编译期决定你的程序是否是类型安全的。另外,假如你合理地做一些动态的事情,你经常不得不去为一个给定的类猜一个正确的类加载器。
● Java需要做的其它事情:运算符重载,预编译指令,把声明和实现分离(头文件和源代码文件),唯一的、非原生的机器定义符(出于许可证的问题)。
● Code-behind pages!!!Asp.Net和code-behind提供了巨大的复用性和灵活性。我希望看到jsp 3.0朝着这个方向努力。
● 我更喜欢利用Java对象访问操作系统而不是使用JNI。大部分的Win 32/Linux API可以被封装道Java的类中。
9.你认为Java对整个软件社群最大的一个贡献是什么?
● 我们收到的最多的回复是平台无关、Java平台、Java语言本身和由此而创建的社区。
● 有两件事:一个是它把带有垃圾回收机制的语言推向了广大使用者,另一件是围绕着这种语言建立的智能IDE。
● Java的确带来了很大的变化,包括它迫使Microsoft重新设计新的产品,例如对Visual Studio的改进以及.NET。利用javascript实现的浏览器对Java来说成了NetScape的替代品。服务器端的编程前进了一大步,并可以实现上百万站点的互连。
● 有很多学