`
YiSingQ
  • 浏览: 88386 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java的辉煌 还能延续多久?

    博客分类:
  • IT
阅读更多
Oracle对Sun的收购引发了人们对Java未来的一丝担心,Oracle能否继续保持Java的开放性,面对Ruby、Python或PHP等一批轻量型语言的崛起,Java能否继续保持其在开发领域的领导地位?


14年前,Sun公司的一位营销天才把一门试验性的跨平台语言由象征踏实的Oak(橡树),改名为香气四溢的Java(咖啡)时,可能他没有想到这门语言能有后来的辉煌。事实上,如果现在Sun想为这门语言改名,以准确体现其在计算机行业的地位,似乎Oak更形象。今天,虽然Java语言并非真正意义上的遍地开花,但它已经出现在众多场合和设备中,而且它享有运行稳定、设计精良的美名; Java代码也许无法主导所有计算机或所有平台,但它离成为通用语言已近在咫尺。


Java之父詹姆斯戈斯林(James Gosling)在Oracle主办的OpenWorld大会上登台发言时阐述了这一点。他调出JavaFX幻灯片,上面是一连串统计数字:超过8.5亿个具有Java功能的桌面机和大约100亿个具有Java功能的设备。实际上,Java虚拟机在电子设备中司空见惯:电子书阅读器Kindle、蓝光磁盘播放机和智能电话(包括不太智能的手机)等。iPhone(手机上网)应用程序可以在成千上万部iPhone上运行,但Java嵌入在26亿部手机上,从不太智能、20美元就能买到的手机,到最新一代的黑莓和Android手机无一不包。


请戈斯林到OpenWorld大会上演讲,只是Oracle掌门人拉里埃利森(Larry Ellison)希望向工程师们一再保证这门语言前途光明的手段之一。Oracle想要并购Sun,但它仍得等待欧洲监管部门批准这一决策。美国政府已开了绿灯,但欧洲政府官员由于担心MySQL的发展还没有同意这一起交易。戈斯林和Sun董事长麦克尼利(McNealy)都表示,一旦并购工作完成,Java会从Oracle得到比以往更多的关注和资源。


从近期来看,埃利森传达的信号也许不是很重要,因为如今Java已成气候,要改变发展方向也并不容易。当然,也有一些人认为,Oracle的商业模式太不一样了,所以它必然会对Java生态系统的每个部分进行重大变化。总体来说,每拿出一个Java可能变化的理由,就有同样充足的理由表明 Oracle可能还是希望保持现状。


企业级应用是主战场


Java最先在服务器端找到了自己的位置,未来这个领域仍是有望看到Java虚拟机的主要地方。对Oracle的所有产品来说,大型服务器也是主要的安身之处,所以出现这对组合自在情理当中。虽然PHP编程员青睐MySQL,但对数据密集型的企业应用来说,许多最要紧的项目还是使用基于Oracle 的架构封装而成的Java,这种情况应该不会很快发生变化。


Sun称,GlassFish应用服务器每个月的下载量超过100万人次,Tomcat等比较旧的平台仍然很常见。由于Java这项技术备受推崇、运行速度快、真正跨平台,大型企业(如银行和保险公司)对Java开发人员求之若渴。


不过,Java不再被认为是最新最酷的语法。一些编程员对静态类型语言的结构满腹牢骚,纷纷改用更新颖或更简单的语言,比如Ruby、Python 或PHP。现在许多较简单的Web应用程序就是用这些语言开发而成的,因为它们编写的代码容易修改,能快速建立原型。然而,这些使用便捷的新语言常常离不开Java: Ruby开发人员常常使用JRuby(基于Java实现的Ruby语言),因为Java虚拟机能够更出色地处理繁重任务、释放多个线程。Jython(基于Java实现的Python语言)也相似。


Java现在正在加入一些最新的编程技术,以此遏制这些新语言大举入侵。Grails明显模仿了Ruby on Rails的许多简单的说明性模式;Grails这种框架利用名为Hibernate的数据库中间件,把Groovy等脚本插件结合起来。Groovy本身添加了众多的动态选项便于代码解释,同时可以直接链接至Java应用编程接口(API)的任何部分。甚至不需要考虑Python或Ruby,因为 Groovy凭借一种精巧、现代的语法,让Java编程员可以使用似乎变化无穷的庞大库和底层稳若磐石的虚拟机。


走上移动之路


Java手机的数量(估计约26亿部)委实惊人,因为市面上许多最简单的手机里面都运行Java平台微型版(Java ME)。这让Wattpad.com等公司得以构建在整个第三世界都能顺畅运行的文档阅读平台。


不过,运行Java的智能电话数量相对少一点。iPhone的巨大成功激励许多人重新学习Objective C,这门语言让编程员对于内存使用等一些系统问题提高了控制能力。Java为编程员隐藏了大部分底层问题,这是个优点,但前提是不需要管理内存等资源,因为要是垃圾收集出现一个小失误,有些游戏就运行不了。可遗憾的是,因为电池续航时间是极其重要的一个因素,智能电话需要比几乎其他任何平台更严格的资源管理。


不过,Java编程员仍然很吃香,因为黑莓手机在其新平台上继续采用Java ME:它为手机的情景模式(profile)添加了支持触摸屏和方向感应器的功能。而Android存在不可预知的因素。由于谷歌开放了Android的使用,许多手机厂商搭上Android这辆彩车。


谷歌的Android建立在开源Apache Harmony及其类上,而不是建立在Sun开发的Java开发工具包(JDK)和Java ME上。对使用Eclipse编写代码的人来说,它们看上去几乎一模一样。在其他许多情况下也无关紧要,因为Android开发使用了很多XML表单,但如果这两套开发框架离对方渐行渐远,这种分裂可能会变成大问题。


收复桌面阵地


大多数人仍然认为Java在桌面端从来没有取得成功,这是过去。如今,Java正在缓慢而稳步地渗入到现代操作系统的各个角落。虽然用Swing编写的标准应用程序因试图定位在每个平台的最基本部分而继续遭殃,但是有了像JavaFX和Web Start这些比较新的开发平台和框架,就有可能通过Web有效地部署软件。本地平台可处理Java归档(JAR)的所有缓存工作。只要点击链接,有时偶尔随后点击几下授予权限的对话框,软件就可以安装及更新,还可以随时运行。


JavaFX仍然是一个名副其实的未知因素。图形功能现在可与Adobe的Flash相竞争;计算引擎可支持大部分的Java API,但这门语言是一门奇怪的混合语言,融合了正宗Java、JavaScript及其他的一些标记语言。其代码比正规的Java简单,所以Java编程员又要学习新的东西。不过,对极具互动性的桌面工具而言,新的动画类也许值得花时间学习。Web Start正在继续慢慢改进通过浏览器直接把软件部署到桌面的功能。


抢占嵌入式领域


Java还在人们最预料不到的地方茁壮成长。虽然C编程人员可能从来不会承认Java虚拟机巧妙处理存储区、快速运行的功能,但Java在非智能手机、机顶盒、嵌入式芯片、Kindle及其他低功耗设备取得的成功表明:Java虚拟机完全有能力在嵌入式应用方面一展身手。Java的普及性还帮助编程人员从大平台迁移到小平台。虽然为大型机开发企业级应用软件改成开发小型嵌入式代码并不简单,但Java标准大大简化了这种转变,这让其他许多工具自叹弗如。


Java程序包也在变得越来越小巧。戈斯林用尘埃来形容一台硬币大小、能够识别Java的计算机。JavaCard是面向这类小型程序包的一种虚拟机和API,它即将迎来3.0版,这个里程碑式版本将增添网络连接功能。尽管这些小不点还没有小得足以放入到人的眼睛中,但直接与互联网通话的功能却让它们显得极具诱惑力。


合作伙伴会分道扬镳?


所有开发人员的最大担心是:要是Oracle收购Sun的交易尘埃落定,会出现什么样的利益冲突变化?Oracle是靠收取大笔的软件许可费成长壮大,其软件可运行在客户想要购买的任何硬件上。而另一方面,Sun通常是免费赠送软件,然后通过销售服务器赚到一些钱。这些经销策略也许不会立即发生变化,因为惯性实在太太了,但谁也不知道将来Oracle会做出怎样的决策。


一些人认为,Oracle过去在收取大笔许可费方面屡试不爽,只会鼓励埃利森对Sun采取类似的手法。也许Oracle的销售团队眼下就在垂涎这个机会:针对Java以前免费的地方开始逐步提高许可费。为了避免重新编写Java平台企业版(Java EE)应用软件,许多企业很可能宁可支付每个CPU 100美元、200美元甚至100万美元的费用。


批评人士指出,Oracle很容易开发出新版Java虚拟机,针对不同的市场推出不同的性能级别。桌面虚拟机可能保持免费,Oracle甚至可能会掏钱请电脑厂商来推销Java和JavaFX,而处理极限多线程方面的性能改进可能会收取非常高的费用。从用户身上捞钱有好多法子,许可费相比之下往往便宜得多:要是让拒不服从的编程员先学习一门新语言,然后重新编写代码库,那成本高多了。


但也有人认为,Oracle也许不会采用这一招。一名接近Sleepycat(这家开源数据库公司在2006年被Oracle收购)的消息人士表示,Oracle已把技术队伍的规模扩大了约一倍,而所有双许可模式原封不动。软件仍然采用开源或商业许可证这两种形式。如果Oracle像 Sleepycat那样对待Java,社区许可及其他方案仍然会跟以前一样免费、随处可得,同时有更多的工程师来改进代码。


与其他各大Java合作伙伴的长期关系方面仍存在更深层的问题。谷歌继续支持Apache Harmony,这个代码超过125万行的项目似乎一心要破坏Sun作为世界中心的地位。IBM输掉了争夺Sun的竞标战,现在发现竞争对手Oracle 的实力更强劲了。IBM设计了Eclipse开发工具,可能也会开始把Java平台带往另一个方向。


其他合作伙伴的态度比较激烈。SAP公司首席技术官Vishal Sikka一再要求Sun发布Java社区进程(JCP),着重提到了Oracle在2007年提出的方案:将控制权交由一家开放、独立、与厂商中立的标准组织,标准组织的所有成员在机会均等的前提下参与。虽然Oracle对相关细节基本保持缄默,但可以认为,这家公司会因为从Sun承袭过来的一些观点而重新赢得尊重。


但是,尽管其他合作伙伴可能会参与恫吓的举动,但他们可能会考虑度的问题,因为大家其实是相互牵制的,任何过激的行为都极可能会被阻止,因为大家都认识到一次编写、到处运行理念具有的优势。如果为Android手机编写的代码无法很容易地迁移至索尼蓝光播放机或Glassfish服务器,另一门语言就有机会应运而生。实际上已经有多家公司在编写工具包,让用户可以在iPhone上轻松运行Ruby on Rails或Python软件。


另外,许多这些比较新的语言可能会成为不可小觑的竞争对手,而暗斗过多只会帮助它们攻城掠地。现在有几十种非常好、知名度小一点的开源程序包,只要忠实的爱好者稍加转换,通常就能把它们移植到每个平台上。比如,Python已经是一些科学领域的主要语言,谷歌选择Python、而不是Java作为其应用引擎(App Engine)支持的第一种语言。虽然IBM、Oracle和谷歌在争夺主导权的竞争中可能会相互排挤,但它们必须认识到:所有人都受益于标准化,而不是垄断。要是谁敢过于排挤别人、企图一手控制Java,其他厂商可能会奔向其竞争对手。


Java也开应用程序商店?


Java代码库仍相当有凝聚力、相对标准化,这个事实惹得众人猜测:Sun(如果合并案完成,还有Oracle)到底会怎样利用Java的普及性来大发其财,又不提高许可费、挤压每个人?如果有人开发出一种面向整个Java生态系统的应用程序商店(App Store),从而像销售面向iPhone的应用程序那样销售用Java编写的小组件(widget)它们可以在桌面、手机、蓝光播放机或可以使用 Java的其他任何平台上运行,将会怎么样?


最近已经有了面向Android手机的一批数量可观的应用程序,Sun也在谋划一家Java商店,好让人们只需把应用程序拖到桌面上,或者只要再编一点代码,就可以把各应用程序结合起来,从而让它们可以在Java世界的几乎每个角落里运行。不过,处理截然不同的屏幕和用户界面还是个挑战。


设想一下这种场景有多吸引人:开发人员编写的某个应用程序在Android手机上运行着,他在办公桌面上处理任务,回到家后在客厅的蓝光播放机上顺畅运行。


把Java应用程序带到坐沙发的人面前甚至有点出人意料,因为Java这门语言在被叫做Oak的早期阶段,本意就是运行在机顶盒上。这种远景将依赖于Java平台的最大优点:普及性和跨平台的稳定性,也许这些优点会帮助Java给其发明者带来滚滚收入。

转载自:中文JAVA技术网
分享到:
评论

相关推荐

    100家大公司java笔试题汇总

    以下是Java笔试题汇总,涵盖了Java的多个方面,包括Java基础、Java面向对象编程、Java多线程、Java网络编程、Java数据库编程等。 Java基础 1. Java的基本数据类型有哪些? 答:byte、short、int、long、float、...

    JAVA_API1.6文档(中文)

    java.lang.management 提供管理接口,用于监视和管理 Java 虚拟机以及 Java 虚拟机在其上运行的操作系统。 java.lang.ref 提供了引用对象类,支持在某种程度上与垃圾回收器之间的交互。 java.lang.reflect 提供类...

    java源码包---java 源码 大量 实例

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    Java 面经手册·小傅哥.pdf

    这是一本以面试题为入口讲解 Java 核心内容的技术书籍,书中内容极力的向你证实代码是对数学逻辑的具体实现。当你仔细阅读书籍时,会发现Java中有大量的数学知识,包括:扰动函数、负载因子、拉链寻址、开放寻址、...

    Java2Pas Java代码转pas代码

    Java2Pas是一个实用工具,主要用于将Java编程语言编写的源代码转换为Pascal语言的等效代码。这个工具对于那些需要在两种语言之间迁移代码或者理解不同编程语言语法的开发者来说非常有价值。Java和Pascal虽然都是面向...

    基于Java的RTSP服务源码

    Java RTSP服务源码解析与应用 在信息技术领域,实时传输协议(Real-Time Transport Protocol,RTSP)是...通过对源码的分析和调试,不仅可以增强对实时流媒体技术的理解,还能为开发自己的多媒体服务打下坚实的基础。

    java转js工具

    Java到JavaScript转换工具有助于开发者将已有的Java代码库移植到JavaScript环境中,这在Web开发中尤其有用,因为JavaScript是浏览器端的主要脚本语言。这样的工具能够帮助开发者利用Java的强大功能来构建前端应用,...

    Java 中文入门学习手册合集[chm版]

    第一章 Java语言的产生及其特点 第二章 Java程序开发与运行环境 第三章 Java程序设计基础 第四章 Java应用程序的基本框架 第五章 Java的类 第六章 Java图形用户接口 第七章 多线程 第八章 Java的"异常" 第九...

    Java OCR 图像智能字符识别技术,可识别中文

    Java OCR(Optical Character Recognition,光学字符识别)技术是一种计算机视觉领域的应用,它能将图像中的文字转换成可编辑的文本格式。这项技术在各种场景下都有广泛应用,比如文档扫描、车牌识别、发票处理等。...

    JAVA实习报告 java

    \n\n总结来说,Java实习不仅让实习生掌握了实际编程技能,还让他们理解了软件开发的整体流程和团队协作的重要性。这样的经历对于毕业生而言,无疑是一笔宝贵的财富,有助于他们在未来的职场生涯中快速适应并取得成功...

    java集成webkit浏览器

    Java集成WebKit浏览器是一种技术实践,它允许Java应用程序利用WebKit渲染引擎来展示网页内容。WebKit是一个开源的Web浏览器引擎,被广泛应用于Safari、Chrome等知名浏览器。在Java中集成WebKit,开发者可以创建具有...

    java源码包3

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java...

    Java API文档 中文网页版

    Java API文档是Java开发者的重要参考资料,它包含了Java开发工具包(JDK)中的所有类、接口、方法和常量的详细说明。这份中文网页版的Java API文档为中国的开发者提供了便利,无需通过英文版本来学习和查找API信息,...

    Java Runtime Environment JRE 1.4.2

    同时,它还支持Java Plug-in技术,使得Java应用程序可以在Web浏览器中运行,推动了Java Applet的广泛应用。 在性能方面,JRE 1.4.2引入了Just-In-Time (JIT) 编译器的优化,能够将频繁执行的热点代码转换为本地机器...

    MD5和RSA加密算法Java完成实现

    MD5和RSA是两种在计算机安全领域广泛应用的加密算法,它们在Java中有着广泛的实现。MD5(Message-Digest Algorithm 5)是一种广泛使用的哈希函数,它将任意长度的数据转化为固定长度的摘要,通常为128位,通常表示为...

    java外文文献

    Java语言还引入了继承和多态的概念,继承使得子类可以继承父类的属性和方法,而多态使得对象可以根据不同的场景采取不同的行为。 Java语言的主要特性包括: * 面向对象编程 * 平台独立 * 简单易学 * 高度可扩展 * ...

    JAVA API官方文档 中文版

    Java API(应用程序接口)是Java编程语言的核心组成部分,它提供了大量的类库,使得开发者能够构建出功能丰富的应用程序。这份“JAVA API官方文档 中文版”是对于Java开发者的宝贵资源,帮助他们理解和使用Java平台...

    java源码包2

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java...

    kerberos的java实现

    Java语言实现的Kerberos允许开发者在Java应用中集成这种强大的安全机制。 **Java与Kerberos的结合** Java中的Kerberos支持主要体现在Java的`javax.security.auth.kerberos`包中,提供了与Kerberos协议交互的一系列...

Global site tag (gtag.js) - Google Analytics