Java的内伤

原创 2003年07月07日 08:27:00

作者: ZDNET 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

整理

Glide的使用大法与内伤治疗方案

导入Glide库 dependencies { compile 'com.github.bumptech.glide:glide:3.5.2' compile 'com.androi...
  • qq_36837426
  • qq_36837426
  • 2017年05月17日 13:59
  • 71

Glide的使用大法与内伤治疗方案

Glide库的使用方法和技巧以及Glide常见问题的解决方法
  • forevercbb
  • forevercbb
  • 2016年03月14日 17:40
  • 3299

@ 符号 在java中是什么语法 代表什么

java中@是什么     J2SE 提供的最后一个批注是 @SuppressWarnings。该批注的作用是给编译器一条指令,告诉它对被批注的代码元素内部的某些警告保持静默。     一点背景:...
  • skyboy11yk
  • skyboy11yk
  • 2013年10月12日 16:49
  • 38708

关于java中<T>问题

关于java中问题 Jdk5.0新特性Generic Types (泛型) 原文 来源: 中国IT实验室 作者: 未知 责编: 宝良 1. 介绍 2.定义简单Java泛型 其实Java...
  • zhengqiqiqinqin
  • zhengqiqiqinqin
  • 2013年05月31日 19:22
  • 35811

Java中布尔类型操作&=,|=与^=的使用

今天在对同事的代码进行code review的时候,见到一个比较好玩的写法。“flag &= false;”,乍一看,还感觉他写错了,但是程序可以正常运行,赶紧去百度,看一下这个写法到底是怎么一回事,...
  • ziwen00
  • ziwen00
  • 2014年10月31日 16:35
  • 17983

java中==与equel的区别

值类型是存储在内存中的堆栈(以后简称栈),而引用类型的变量在栈中仅仅是存储引用类型变量的地址,而其本身则存储在堆中。     ==操作比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
  • hellokatewj
  • hellokatewj
  • 2014年03月26日 17:43
  • 2824

java this 3种常见用法 详解

this 关键字 1.区分成员变量和局部变量 2.代表当前对象 3.构造器之间调用
  • u012176204
  • u012176204
  • 2017年01月17日 09:41
  • 3070

【数据结构】之二叉树的java实现

二叉树的定义: 二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树的形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。...
  • wuwenxiang91322
  • wuwenxiang91322
  • 2013年10月02日 09:28
  • 80291

Java可以做什么及可以给我们带来什么?

一般来说,Java是一个功能强大的软件平台。一套完整的Java平台将会给你带来如下特性: 开发工具箱:...
  • stewen_001
  • stewen_001
  • 2014年03月12日 16:06
  • 2896

Java 进度条控件的使用

利用JProcessBar类可以实现一个进度条,它本身不过是一个矩形控件,通过填充它的部分或全部来指示一个任务的执行情况,可以放置到一个新的线程中运行。 示例如下:...
  • kehyuanyu
  • kehyuanyu
  • 2014年05月19日 17:44
  • 8677
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java的内伤
举报原因:
原因补充:

(最多只允许输入30个字)