新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论Java, J2SE, J2ME, J2EE, 以及Eclipse, NetBeans, JBuilder等Java开发环境,还有JSP, JavaServlet, JavaBean, EJB以及struts, hibernate, spring, webwork2, Java 3D, JOGL等相关技术。
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 Java/Eclipse 』 → [转帖]Java平台是我们最好的选择吗? 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 4529 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: [转帖]Java平台是我们最好的选择吗? 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     hongjunli 帅哥哟,离线,有人找我吗?魔羯座1978-1-20
      
      
      威望:5
      头衔:为振兴论坛而努力!
      等级:研二(中了一篇WWWC Poster)(版主)
      文章:808
      积分:7964
      门派:IEEE.ORG.CN
      注册:2006/3/9

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给hongjunli发送一个短消息 把hongjunli加入好友 查看hongjunli的个人资料 搜索hongjunli在『 Java/Eclipse 』的所有贴子 引用回复这个贴子 回复这个贴子 查看hongjunli的博客楼主
    发贴心情 [转帖]Java平台是我们最好的选择吗?

    作者:IT168 董咏  
    一位长期从事嵌入式开发但是没有接触过Java的朋友提出这样的问题:“为什么选择Java平台?”事实上,他的问题包括两部分,一是Java平台和嵌入式设备开发有什么关系?二是在诸多平台中为什么要选择Java平台?因此,本文将从以下几个方面论述Java平台的优势。

    一、复杂性和人力资源限制

    运行游戏的嵌入式系统设备,一般会涉及到钱的因素。因此,设备必须在诸多环节上提供安全保证。要考虑的安全层面包括事务处理、使用冗余、容错等,相关专业知识对于安全编程的实现尤为重要。另一方面,系统必须对开发人员开放以增加更多的游戏内容。然而,能开发出安全性要求很高的应用系统的程序员资源并不丰富。这就面临一个两难境地:如何允许众多的开发人员在设备软件上工作,同时又能避免系统的安全机制被人为因素破坏?开发人员越多,系统出现bug的可能性越大。严格说来,这不能归结为游戏开发人员的能力问题。古语云:智者千虑必有一失,人无完人。最好的解决方案是,让开发人员确定系统的关键部分不会因为人为的错误而遭到破坏,这样就不必考虑编程的安全因素了。解决的途径是使用脚本语言。

    二、使用脚本语言

    确切地说是运行时解释性脚本语言。游戏的内容开发人员通过脚本语言而不是机器语言来编写游戏内容。这样作的好处是:

    1.隔离性
    脚本语言扮演着设备抽象者的角色,只提供内容开发必须的API接口,而隐藏了设备的核心代码。因此,内容开发人员不可能接触到系统的关键部分。另外脚本语言不允许操纵指针,也就避免了错误指针造成系统崩溃的潜在因素。

    2.人力资源优化
    由于免去了系统核心代码编程的培训,在内容开发方面就可投入更多人力,而这些人不必精通如何保护核心代码不受破坏。脚本语言环境简单地将核心代码隔离起来。这样就可以采用外购的方式作内容开发,或提供开发工具包(SDK),外部的开发人员需要的只是脚本语言和API接口。假如没有脚本语言的抽象层,则不可能允许外部的开发人员为设备开发内容。

    3.软件升级
    脚本语言是解释性的。可方便地通过网络或光盘介质将系统的新代码部署在设备上。这样做的好处有:
    (1)      修复bug:不必收回设备就能纠正模块中的错误,从而增加了客户满意度并且节省客户支持成本。如果客户对设备产品不满意,就意味着可能出现退货或厂家声誉下降的情况,从而直接影响厂家的销售利润。

    (2)       内容更新:可以为游戏设备开发更多的游戏内容让客户通过网络选购。从而在设备售出后可继续回收投资。

    (3)     节约资源:不使用的模块可以从内存中卸载,只有使用的内容才占用内存。这样就可在内存容量设计方面减少硬件成本。对于需要低能耗的设备,可改进设备能耗性能。由于允许以低内存的方式运行,不必加载所有的内存模块,这样就节约了能耗。
        理解了这种做法的益处后,可以创建自己的脚本语言。然而,为了提高内容的趣味性,如同所有的编程语言一样,脚本语言需提供越来越多的功能。对于脚本引擎的大量改进尝试后,就会发现这个过程相当于重新创建Java编程语言。


    三、J2SE6开始支持脚本语言

    为什么使用Java平台替代自己创建的脚本引擎?

    1. Java平台的标准化特性
    Java平台的规范可从各种途径获取,大量的书籍、在线资源、教程等介绍Java开发的相关知识。Java平台的程序员资源非常丰富。Java程序员的培训资源也很方便,不必自己制作培训资料。
    2. Java平台的成熟性
    Java平台已经有相当长的历史,在各行业存在大量的测试和部署案例。在应用开发接口和技术实现方面都比较成熟。使用Java平台的安全风险很小,不存在平台架构内在缺陷的问题。
    3.平台厂商
    除了Sun,还有其他多家Java平台提供商,可在技术和经济方面优化选择。
    4.开发工具
    不需自己编写调试器,把时间浪费在调试脚本引擎和工具上。可购买现成的工具。
    5. JIT技术
    如今,大量的Java的虚拟机使用JIT技术实现了解释代码以编译代码的速度运行。专门为了自己的产品而从头开发相同的技术是完全没有必要的。
    6. Java社区
    Java社区内,存在大量的公司和开发人员持续地改进Java平台的技术特性,使得Java平台的用户从中收益。如果自己开发脚本引擎,改进平台的工作也要自己来完成。
    7.保护代码投资
    Java平台最强大的特性是:一次编写到处运行(Write-Once-Run-Anywhere)。虽然在实际上还不完善,但是这一特性很有价值。简而言之,今天投资的应用系统还会持续在系统的后续版本中运行而不会被废弃掉。
    8.开发效率
    Java编程语言的语法相当完善。程序员可编写出逻辑严密的程序,可按需要定制出各种工具。Java平台提供了丰富的API,可为开发人员节省编写代码库的时间,而将更多精力用于产品内容的开发。Java平台提供的特性有:
    (1)       面向对象机制:Java面向对象机制最完善
    (2)        垃圾收集机制:避免了错误指针造成内存泄漏
    (3)       类动态加载:在设备环境动态加载类代码
    (4)       多线程:Java平台内置了多线程机制,可轻松实现多线程的应用
    (5)       健壮的安全架构:可部署细粒度的安全控制
    (6)       网络API:实现网络应用易如反掌

    若要实现一个成熟、可靠、具有类似特性的平台,其工作量是巨大的。

    四、其它脚本和解释性语言

    最接近上述特性的“解释性”平台技术是微软公司的.NET。微软公司明显地借鉴了Java平台的运行时解释机制,而开发了另外一套相似特性的平台,这恰好说明Java平台的威力。而.NET平台的劣势是目前只有微软公司一家厂商。还有一个成长中的.NET平台厂商是Novell,正在实施跨平台的MONO项目,但是暂时还无法预测其产品优劣。
    其他热门脚本语言技术包括JavaScript, Python, Ruby。这些技术明显的缺点是:
    (1)    不如Java平台成熟。
    (2)       缺乏社区力量的支持。
    (3)       不够强大(如没有多线程,安全架构)。
    (4)API不够丰富。
    (5)       性能欠佳:这些脚本语言技术一般使用基于文本解释的方式,而Java则使用字节码的解释方式以及JIT机制。
    (6)       开发工具(调试器)不完善,这一点是开发人员最诟病的地方。
    (7)       熟练使用这些脚本语言的开发人员资源匮乏。一些调查结果显示,Java语言是最受程序员欢迎的开发语言。另外一种最受欢迎的语言是C/C++。两者在受欢迎程度和开发人员数量方面遥遥领先于所有其它的语言。

    这些脚本语言不能包含Java平台的所有优势。当然,可以改进这些语言并最终达到Java平台的水平。对于普通的非平台开发人员来说,宁可选择更完善的平台并且把精力用在产品开发上,而不是花大力气完善现有的语言平台。
    带来利润的是产品,而不是产品使用的平台(至少在时效的意义上如此)因此,合理的做法是,把时间和精力投资在产品开发上。所以,这应该是选择Java平台的主要原因。

    五、投资保证
    投资保证指的是目前的投资不会随着时间的发展而丢失得过快。以下几个方面跟产品开发的投资成本密切相关。
           
    1.组件成本
    由于硬件价格会越来越降低,新的操作系统会被开发出来。产品的将来版本可能会运行在新的CPU和操作系统环境上。最大限度的重用产品中已有的软件组件可显著降低开发成本。
    2.硬件档次
    一个产品成功后,会开发出各种价位档次的相似产品。各种低-中-高端的产品可能运行在不同的CPU和操作系统环境上。然而,尽管硬件环境改变了,产品开发商希望大部分的软件能够运行在所有这些硬件平台上。
    3.硬件淘汰
    生产厂家可能在将来不再提供某个零部件。产品的硬件因而需要重新设计。因为硬件的设计非常昂贵,可能会考虑变更产品其它相关的部分的设计。不管硬件环境如何改变,产品开发商希望大部分的软件库仍然运行在新的硬件上。

    在嵌入式系统开发领域,上述这些方面是必须考虑的因素。在嵌入式产品开发中,成本最大的无疑是软件部分。Java平台的一次编写到处运行特性可确保产品中用Java编写的部分在各种硬件上得到重用。

    当然,重用的基础是,新的硬件设备需要部署Java平台环境。然而,部署Java环境和重写产品的全部代码(如果不是采用平台无关的语言编写)相比,其工作量的节省是巨大的。

    六、原生代码解决方案

    当然,C/C++ 和 Linux的组合同样可获取类似Java平台的大部分特性。熟悉C/C++ 和 Linux开发平台的程序员很多,开发工具丰富。然而,这种选择的缺点是:

    1.非隔离性
    存在前述的错误指针问题。由于安全和质量问题,不能让第三方开发人员介入产品的内容开发。

    2.高昂的开发成本
    当硬件更换时,至少针对新的硬件环境必须重新编译所有的代码。而且需要在新环境下重新测试代码。内容模块也必须在所有的硬件条件下一一编译并测试。这显著延长了开发周期。

    3.部署和维护成本
    若用户通过网络服务器下载补丁和软件升级,需要为每一种硬件类型提供不同的软件版本。管理和跟踪这些版本增加了软件部署维护的成本。修复bug时,要编译和测试所有的硬件,然后部署在服务器上供下载。这又增加了维护成本。

    对于Java平台的解决方案来说,也要在软件升级和补丁时进行部署和测试。但是,Java解决方案的部署,仅限于Java平台而不是全部的代码。另外,由于Java开发者社区庞大,新硬件的Java环境可能已经部署完毕(尤其是采用标准硬件的情况)。所有这些因素都会减少部署成本。

    至于测试,Java平台拥有标准化的测试套件,可以检测API签名及其行为期望区间,测试虚拟机性能。这些测试就是著名的TCK测试(Technology Compliance Kits)。除了TCK ,Sun公司还有专门的测试包用于Java虚拟机实现的压力测试。这些测试可确保兼容性、健壮性等符合预期指标。

    七、原生代码解决方案的成本

    对于采用C/C++ 在Linux环境下开发的解决方案来说,C/C++的编译器存在漏洞和差异。例如,浮点运算存在圆整问题。不同的CPU浮点运算结果有些许偏差。这些差异不经常引起重视。当采用TCK测试不同CPU的Java虚拟机实现时,会发现这个问题。如果恰好产品的某项性能参数在不同的CPU下运行而产生变化,这是才会引起注意。这意味着,必须在各种硬件环境下测试软件产品。操作系统也存在类似的问题,任何测试手段都不能保证在目前操作系统下软件在新的操作系统下正确无误地运行。而在Java平台下,由于只需要在平台的级别测试,测试成本可显著低于原生代码解决方案。

    结论

    综上所述,从技术和商业双重层面上看,把产品部署在JAVA平台上都是合理的选择。当然,武断地说JAVA平台适合于所有的嵌入式系统是不正确的。例外的情况总是有的,但一般来说,JAVA平台在嵌入式开发领域确实有很多优势之处值得重视。


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2007/5/23 15:06:00
     
     GoogleAdSense魔羯座1978-1-20
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 Java/Eclipse 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2025/1/3 0:59:48

    本主题贴数1,分页: [1]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    62.988ms