Java的内伤 (转)[@more@]

作者: Z.NET CHINA
Monday, April 1 2002 12:02 PM

Java吸引了越来越多的商业机构和软件开发商,但在赢得最终胜利之前Java还需要克服一些主要障碍。

最近的研究表明 微软 公司开发的编程技术仍然是软件开发商采用的最重要语言。但Java正在逐步地拉近同微软编程语言的距离。根据2000年度IDC研究报告,当时有300万人在使用C 和C++ 作为自己的主要编程语言,Visual Basic开发人员有230万,Java开发人员则只有120万。市场研究公司Evans Data则报告说,使用Java的人越来越多,而 C和C++开发人员的数量则在显著减少。

这一趋势在学术界也得到了反映。在麻省理工学院,计算机科学系早在1997年就用Java 取代了微软的C++作为学生必须掌握的主要软件语言。今年春季,加州大学伯克利分校就开设了25门Java课程,而针对微软编程语言的课程只有7门。麻省理工学院的副教授Daniel Jackson说:“照我看,Java将很快取代其他所有的编程语言,尤其是C++。”这位学者提醒注意,大学生甚至在上Java课程之前就在逐渐地自学Java了。在2年的时间里,学院将把针对高中生开设的大学级学分课程的高级测验由C++转到Java。

但是,甚至在面临如此令人鼓舞的迹象同时,分析家和软件公司官员仍然认为若干因素会阻碍Java的成长。第一个可想而知,这就是同微软公司之间展开的、不可避免的竞争,微软已经发布了称为C#的编程语言,C#非常类似Java,而且它还推出了一个部分模拟Java的Internet软件策略。

第2个障碍来自Java阵营的内部,很多软件公司所发布的产品并不遵守业内达成的一致标准。尽管大大小小的软件不兼容最后都会得到一定的处理,但是,Java的支持者们害怕这种不受约束的软件开发可能会引发混乱和潜在的冲突,结果令这项技术的开发者们无所适从。

最后,Java自身的复杂性也一直是一个问题。分析家说,为了突破掌握高级开发技能的程序员的狭窄范围而令主流开发者接受Java,软件制造商不得不在易用编程工具领域被微软牵着鼻子走:允许程序员只需要点按鼠标之类的操作即可开发Java程序。特别地,他们对称为企业Enterprise Java Bean标准大加批评,该标准实际上是通过重用小部分软件来节约开发时间。更容易使用的Java工具将有助于增加使用这一语言的软件开发者数量,从而产生越来越大而且越来越健康的Java市场。 Giga信息集团的分析员Mike Gilpin声称:“要博得开发者和独立软件供应商的青睐就必须考虑以上的问题。”

自从Sun Microsystems公司在7年前发明Java技术至今,软件开发程序员普遍接受了Java,首先是应用于网站建设,其后又进入了企业因特网和电子商务领域。今天,Java又在诸如蜂窝电话、在线游戏、股票信息等、餐馆定位乃至实时信息处理等新兴市场中大展身手。

尽管Java最初目标是取代PC上占霸主地位的windows,而且这一目标完全失败了,但是,拥趸Java的阵营已经能让Java技术得到尽可能地普及。Java今天的成功部分地归于开发者和客户,其实,他们仅仅希望世界上除了微软还应该有其他选择,微软巴不得从手持设备到企业服务器,在任何设备上都最好运行着Windows。

作为反对Windows霸权阵营的一员,Sun发誓要让Java运行在任何设备上,而且所有的程序都不必重写,这就是赫赫有名的“只写一次,处处可行”原则,显然该原则同微软坚持世界上只有它的操作系统这一战略是完全对立的。Java很快就赢得了其他微软之敌的支持,比如IBM、ORACLE和BEA Systems等。

然而,这种编程语言实际上并没在完全实现多重设备上运行同一代码的承诺。结果,商业机构这才觉察到,相比它们在选择Java时所做的估计,现在花得的时间和金钱比预想的多得多。

Meta集团分析员Zachmann评价说:“‘只写一次,处处可行’这条原则在服务器端压根就没有起过作用。”

许多人认为这个问题源自Java标准的通过被拖延得太久,这个标准花了12到18个月的时间才完成。软件开发商又面临着争取新客户的竞争压力所以无法等待那么长的时间。因此它们只能定期地改进和发布基于非标准技术的Java软件。

大多数的Java软件开发商把它们的尖端技术提交给Java Community Process,这是一个由Sun和其它Java公司参与发起的组织,负责研究和制定未来的Java技术标准。如果提交的技术得到了标准认可,其他的软件开发商就可以采用这一技术了。但是当新标准真被制定出来的时候,Java公司却又发明出了虽然不是标准但却给它们带来竞争力的新技术。

为了在有利可图的电子商务软件市场获取有利地位,BEA、IBM和其它Java软件开发商都摆弄出了如此之多的非标准技术并应用在们的应用服务器和其他产品之中,使之运行更快而且更可靠。这样一来,客户不得不关心兼容性的问题,能在某Java开发商的应用服务器上运行的软件却不能100%在其他开发商的产品上运行。

Iona公司产品主任Simon Pepper认为:“我们不得不关注这一不兼容事实,我相信,正是这一原因使Java陷入分裂状态而且令Java开发者感到无所适从,所谓的‘编写一次,处处可行’的目标并没有实现。结果令Java在兼容性能上的良好形象大大受损。同时却为微软打开了攻城夺地的方便之门。如果技术是分裂的,而且开发商也是分裂的,这肯定会令开发者怀疑Java是否真是一种优秀的技术。”

摘自:http://www.zdnet.com.cn

整理

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10748419/viewspace-958584/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/10748419/viewspace-958584/

Java的内伤 (转)相关推荐

  1. java文字版格斗游戏。

    javabean类: package Test; import java.util.Random; class Role {     private String name;//创建角色属性      ...

  2. Java学习-----文字版格斗游戏

    规则:格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定任务的时候(new对象的时候),这些信息就应该被确定下来 我将它稍微修改了一下,改为可以键盘输入角色的名字和性别(血量的没写固定100,当然也 ...

  3. Java书写文字格斗游戏

    Java学习 - 书写文字格斗游戏 效果截图: package com.itheima.test2;public class GameTest {public static void main(Str ...

  4. Java面向对象综合训练综合练习

    练习一:文字版格斗游戏 需求: ​ 格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定人物的时候(new对象的时候),这些信息就应该被确定下来. 举例: ​ 程序运行之后结果为: ​ 姓名为:乔峰 ...

  5. JAVA练习题17:文字版格斗游戏

    文字版格斗游戏 1. 规则:格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定任务的时候(new对象的时候),这些信息就应该被确定下来 2. 举例: 姓名为:乔峰 姓名为:鸠摩智 血量为:100 血 ...

  6. 第九课 Java基础篇——面向对象(综合案例)

    1.文字版格斗游戏 格斗游戏,每个游戏角色的姓名,血量,都不相同,在选定人物的时候(〈new对象的时候),这些信息就应该被确定下来. Role.Java package cn.nwafu;import ...

  7. 学java的第九天,面向对象 23.2.15

    文字格斗小游戏 主程序 public class WordGameTest { public static void main(String[] args) { //1.创建对象角色1和角色2 Wor ...

  8. JAVA基础 —— 面向对象

    目录 一.面向对象介绍 二. 类与对象 1. 类的定义 2. 类的补充注意事项 2.1 对象的成员变量默认值规则 三. 封装 1. Private关键字 2. this关键字 四.构造方法 1. 构造 ...

  9. Java 文字版打斗游戏

    文章目录 一.题目描述 二.界面展示 1.第一次运行结果 英雄信息显示 攻击过程显示 2.第二次运行结果 英雄信息显示 攻击过程显示 三.功能实现 1.英雄类字段定义 2.长相描述定义 3.攻击方式和 ...

最新文章

  1. mysql查询更新时的锁表机制分析
  2. java list负载_java集合的扩容和负载因子的总结
  3. maven打包pom.xml备忘
  4. python实现截图范围框跟随_教你用Python实现截图和文字识别,就是这么简单
  5. 转:IOS开发之----Xcode非ARC项目中设置部分文件ARC支持
  6. 杨中科.NET5视频教程更新了:DI、配置系统、Logging、EF Core等
  7. python数据库框架_目前最受欢迎的12个Python开源框架
  8. 性能测试 获取 服务器间响应时间,性能测试指标分析TPS、响应时间、并发量等...
  9. Android版添加phonegap---为APP添加CNZZ统计插件教程
  10. Adsutil.vbs 在脚本攻击中的妙用
  11. Mybatis非mapper代理配置
  12. app闪退后重启_安卓APP崩溃(crash)后重新启动,捕获全局异常重启APP
  13. iOS开发 利用Reachability判断网络环境
  14. 带网口插卡4G DTU是什么?RS485/RS232转以太网串口服务器软件怎么实现?
  15. 科普类毕业论文文献包含哪些?
  16. Web前端(15)_input表单
  17. Centos7开地狱已满服之插件安装
  18. 【AD】Altium Designer 新建一个项目
  19. ubuntu从零到一跑通ORB_SLAM2及其ORBSLAM2_with_pointcloud稠密建图
  20. 汉明码(海明码、hamming code)通俗易懂的解释!!!!

热门文章

  1. 洛谷 P5886 Hello, 2020!
  2. Android dump使用
  3. 如何使用和传播自由软件?
  4. 老卫带你学---图形推理
  5. python sort函数返回值_如何使用python sort函数?
  6. synopsys EDA自学指南
  7. 计算机数据分析专业高中小三门,高中必读:2017高考小三门竞争数据分析
  8. CSDN如何进行转载
  9. “华为大法”对车企是“加持”还是“拖累”?
  10. 电脑卫生知多少 清洁图文教程