WEB开发网
开发学院WEB开发Jsp Java能够成为完美的技术平台吗? 阅读

Java能够成为完美的技术平台吗?

 2008-01-05 10:00:48 来源:WEB开发网   
核心提示:前言象许多在不断发展的平台/语言一样,java让很多程序员又爱又恨,当然,Java能够成为完美的技术平台吗?,当然这不包括那些狂热的Java爱好者,对于他们来说Java比.Net,LAMP或任何其他语言或平台都要好,但是,我承认Java平台是有缺陷的,这必须指出,我们还是不得不面对复杂的Swing,庞大的EJB规范等对

  前言
  象许多在不断发展的平台/语言一样,java让很多程序员又爱又恨。当然,当然这不包括那些狂热的Java爱好者,对于他们来说Java比.Net,LAMP或任何其他语言或平台都要好,但是,我们还是不得不面对复杂的Swing,庞大的EJB规范等对硬件的额外要求以及J2ME的变化多端的实现方式等等等等。抛开以上这些Java的弱点,我们可以说Java是一个完美的技术平台,那么Java到底有没有成为一个完美的技术平台的潜力呢?这篇文章将从两个方面讨论这一主题,开始,我会具体的告诉你什么是完美的技术平台以及为什么Java平台能够成为完美的技术平台。之后我会偏重于具体的解决方案,如何通过设计的优化避免Java平台的弱点。
  
  基础
  首先,你为什么会关心Java是否是一个完美的沉下平台?它现在不是也很好吗?不,不是的。我相信在文章结束的时候,我将向你展示一些列Java中可修正的缺点。解决这些缺点会加快Java平台的发展,提高整个开发平台的性能,简而言之,它将使Java不管在工业还是商业领域都成为一个实际上的技术标准---成为程序员的一个超级语言。什么才是完美的技术平台?在我作进一步说明之前,我应该先定义一下我认为的完美的技术标准是什么。简单的讲,我认为完美的技术平台应该是这样一个软件系统,它可以让新手或高级开发人员都能使用,能够编写简单的程序也可以编写高级的应用,它应该能够运行在所有的硬件平台或操作系统平台上,并且应该是本地化的操作或接近本地化的操作。
  
  定义这篇文章讨论的范围
  类似这篇文章的主题,事先定义一个范围是很重要的。首先,我们不讨论任何非Java的技术平台。你也许会认为这有些太狭隘了。我不这么想,这篇文章是要单独的讨论Java平台的各个方面,并不是要和其他的语言平台进行比较。我的爱好在于那些为了完善Java平台提出的具有建设性意义的观点。假如可能,我希望其他技术平台的支持者能够发表类似的文章提出他们认为最完美的技术平台。另外,我在这里还假设Java语言已经是各种技术平台中最佳程序语言。并且我也不会讨论最新的Java2平台J2SE1.5,尽管在J2SE1.5中我可以感觉到其中的一些变化比如标有” keeping up with the Joneses”的是把矛头指向了C#语言。一个语言的稳定与否至少需要将近8年的不断验证才能证实它的最初设计是否是健壮的。参数化集合的实用行在JDK1.5中是显而易见的,其中的一些新特性比如autoboxing, enumerations和 static imports引起了开发人员的广泛关注。
  
  Java继续了来自C和C++的健壮行,它一开始就被设计为一个面向对象的语言,我认为这是一个成为核心语言和优秀平台的要害所在。当然这并不算什么先进的思想因为从最早的Eiffel到Smalltalk都是面向对象的语言,那么Java和他们之间有什么根本的不同吗?Java和那些比如功能性编程语言象LISP、Haskell或象SQL这样的可以通过语义来执行的语言又有什么不同吗?因为我们学习这些语言只需要一本手册就可以了,但别兴奋的太早,假如一个市场上主要的厂商比如SUN,HP或微软想要把这些语言中的一种拿出来,并围绕它开发他们的下一代技术平台,你会发现这个语言的不会再进一步更新;我喜欢把Java作为一个平台来看待;实际上Java作为一种语言来说在Java平台中只是较少的一部分。也因此我会在下面介绍作为一个完美的技术平台的重要特征。
  
  什么才是完美的平台
  比较起来,对于这个主题来说可以讲的很具体也可以讲的很简短概括,我选择了后者。对此有爱好的读者可能会注重到有关这个主题的具体讨论很多词汇后面都会有一个”ility”作为结尾,也明白它是ility矩阵(matrix)。在我看来作为一个完美的技术平台应该具备这些条件:便于开发,而且提供多路访问(详见下面的讨论)
  
  稳定性,这体现它应该便于客户平台的部署;还应该是本地化模式的部署操作。
  必须具备可靠的性能和可测试性。
  基于开放的标准。
  
  Java符合这些标准吗?
  到现在我已经定义了一系列符合完美技术平台的标准和特征,让我们看看Java的成长过程是否符合上述的特征。
  
  我不得不痛苦的承认,开发Java程序并不轻易。相对简单的项目还好,但假如项目不断增长以至于变得越来越复杂就会不断出现越来越多的问题。比如J2EE应用就是这样。因此在项目的开发中我程序员需要花更多的时间来跟踪底层的问题,比如类引导(classloading)问题而不是解决实际的业务逻辑问题;还有令很多程序院头疼的EJB(查看我过去的文章To EJB, Or Not To EJB?)通常情况下他们都是在清除一系列的警告信息,EJB也许想把负责的问题简单花,但是它并没有更贴近于现实中的持久化问题或业务逻辑的解决方案,这还与Java开发工具的不足有关,坦率的说,微软的Visual Studio在这方面比Java作的要好,Java需要学习。
  
  我曾经提出过一个多层次访问的想法,它答应开发人员或者用户可以工作在Java中的不同层次。比如核心开发人员可能使用emacs/vi的方式来以命令行调试器的方式开发和部署以Java为基础的系统,而业务分析师或最终用户应该能通过使用WYSIWYG这样的工具来访问和修改这个系统。 Java在这两方面的开发并不是很轻易。当然applet和JavaWeb Start技术在这方面提供了一定的帮助,当这两种技术也有自己的不足---运行他们必须在客户端安装配置JRE。 Java平台是想当稳定的,我已经不记得上一次应为Java本身的bug而给我带来麻烦是什么时候了。所以假如要作一个企业级应用的话我宁愿选择J2EE而不是.Net。 Java在服务器端的应用是足够稳定和健壮的。Swing客户端的应用表现也不错但在执行速度方面比起本地的应用要差一些。由于对资源限制的原因比如移动电话(或智能终端),在这里使用Java而不是用本地化的开发工具从实用性角度来说就显得有些奢侈了。附加额外的MIDP比起直接调用本地的应用造成了运行时的性能损失。
  
  很明显,Java有来自业界的主要软件厂商的广泛支持(除了微软)。比如IBM,HP,Oracle已经把他们自己的技术整合到了Java平台上,这对关心Java的人来说是个好消息。还有更多的组织和团体化大量的精力不断的晚上Java,他们希望看到Java在移动设备,PC,服务器等各个领域不断的成长、进步。
  
  优点
  Java的优势在哪里?
  平台支持:J2SDK已经可以运行在任何的操作系统和硬件平台上,从金融机构到娱乐设施,从科学研究到家用电脑都可以使用Java。 Java语言规范和Java运行时规范的明确区分答应研究人员可以通过运行一个编译器来产生程序语言的映射,而不必非要使用Java来编译二进制码――也就是说它可以运行在任何的虚拟机(VM)上。这一点在我后面要提到的Java战略的改变非常重要。 Java是当今企业级计算和应用中相当成熟和稳定的平台。微软仍然在不断的改进他们的.Net,而且可能最后会象Java一样好或者比Java好要好(但这只局限在Windows平台上),但现在还作不到;另外,还有另一个竞争激烈的领域,那就是移动设备。尽管在前面我们提到过Java在节省设备资源方面相对较差,但是不可否认在这个领域它也占据着领导地位。 Java在学术界也获得了强有力的支持。假如你在大学学习你会发现Java已经成为多数科学研究和计算使用的首选语言。在大学中有越来越多的人在使用Java语言,越来越多的尖端学术研究完全使用Java语言;各个行业的公司都有很多的Java程序员在开发他们的项目。
  
  缺点
  现在我们来看看Java的缺点:
  一个开发组织创建新的框架和组件库几乎总是在存在优点的同时也存在着不足。一个优秀的组件技术总是在不同的开发人员和组织间相互竞争和促进中成长起来的。但是在这一过程中,却使得用户(这里特指开发人员)非常困惑。尽管Sun一直在忙于应付,但是就到底是使用JDO还是EJB更好一直存在着争论。的确,我们必须确定把哪一个继续发展下去。现在我们能作的就是把这一个想法简单的提交到JCP组织。比如,假如你是一个J2EE设计师,你能100%确定当前哪一种才是完美的解决方案吗?我不能,但我的观点是“注重实际的方案就是完美的方案”。
  现在有一种观点认为Java过于复杂。有谁能完全了解Java从服务器到PDA各个方面的所有知识吗?作为一个博大精深的语言,Java在人们生活的不同领域都无处不在,这不可避免的带来了它的复杂性,但同时这也更值得开发人员在其平台上使用Java来开发不同的应用。Sun的一句明言就是“嘿,我们已经给了你一个非常棒的核心技术。现在你可以用它来创建任何开发工具或健壮的产品”。其中非常活跃的Jini/Javaspaces就是一个例子。Sun自己把这一技术作为一个学术研究的工具,它几乎没有什么技术缺陷。实际上,基于JavaSpaces的编程模型也许是最简单最强大的技术之一。
  Windows 家族集成了很多繁琐的分布式客户端平台。除非与Java捆绑否则Windows技术永远无法避免这些缺点。当然,随着.Net的崛起,Java 在客户端编程(thick-client)方面将失去了很多优势。
  我不认为Sun为Java投入了足够的财力。这给Java带来了潜在的隐患,那么为什么Sun应该继续对Java平台投资呢?我更乐意看到Sun通过大量的财力扮演一个“善意的独裁者”,它将通过与象BEA,IBM,HP等这样的公司而不是和开发人员或最终用户一起合作来指导Java的未来。我担心来自Sun对Java的动摇。Sun公司的健壮稳定的发展预示着Java的不断完善;假如Sun出了问题那么Java的发展和完善也将受到影响。下面的图示显示了影响Java技术平台的几个方面。
  图1显示了高层的理想化的Java技术平台。其中,由Sun及其合作伙伴控制的技术显示为橙色,其他不属于Sun的为绿色。
  
 Java能够成为完美的技术平台吗?

  Java有哪些缺点
  无疑,我承认Java平台是有缺陷的,这必须指出。下面几节将具体讲述这些问题和战略及战术上的建议。

Tags:Java 能够 成为

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接