本周参加了Oracle的Java Card论坛。这是我第几次参加已经记不清了,只是感觉酒店一如既往的高档,但人似乎越来越少,午餐却越来越差。

几年前刚接触Java Card的时候,觉得这玩意实在太酷了!在此之前,COS的技术含量主要体现在行业知识,而在软件技术本身上实在没有多少深度。Java Card的诞生,使得COS真正成为一个运算环境。这是质的飞跃,就好比软件工程专业和计算机科学专业的差异。

平台一统江山,应用百花齐放!多么美好的愿景啊!

几年过去,现实却和理想依然距离遥远。有杀手应用上市么?似乎只有实验应用吧。

为什么没有应用?本文暂且不谈。因为我认为即使真到了应用百花齐放的那一天,Java Card这个平台也会把现实击碎。

Java Card在技术上确实是好东西,但必须认清它是一个平台,而非一个应用。作为平台,它遭遇了我认为最头痛的问题——版本分裂。

版本分裂有两种,显式分裂和隐式分裂。

广义的linux(指OS,而非kernel)就分裂成很多发行版。应用软件会声明自己在哪些平台下调试过,并对份额较高的发行版提前打包成相应格式。

Android自诞生之日,就被各厂商修改定制。且不提传统的手机制造商,就连互联网巨头们也纷纷加入战团。小米、百度、盛大、360、点心……

只要是版本分裂,就会给应用开发带来痛苦。Google会提供Google的API,HTC会提供HTC的API,要充分发挥手机的软硬件特性,就得区别对待、特殊处理。TempleRun适配了707款Android手机,仍然被用户抱怨无法运行,参见【1】。

但显式分裂相比隐式分裂还算不错了,至少大家都知道是这么回事,用户一定程度上也能理解。就好像没有人会下载rpm包往自己的Ubuntu上装。也不会有人对小米手机无法正常运行微信的新闻感到震惊。

隐式分裂就不同了,不同的版本会给人一种看上去完全兼容的幻觉。也许运行一个Hello World也确实没有什么不同,但对于那些商用级别的软件,情况却不像想像的那样。

PyPy号称满足Python的规范,和CPython完全兼容,但快一个数量级。但Python教父Guido Van Rossum表示其无法取代CPython,他在Pycon2012上让在生产环境中使用PyPy的人举手,现场基本无人响应,参见【2】。

再来看Java本身的案例。java sdk有那么几种,参见【3】。如果仔细看看,会发现虽然都是些诸如IBM、Redhat之类的大拿公司在做,但真正大家用的就是Sun开发的官方sdk。为什么?因为不兼容嘛。难道大家不想做得兼容么?我看最大的原因还是基于软件平台的复杂性,要做兼容太难了。一个特别有意思的例子是OpenJDK,它和Sun的JDK,90%的代码都是一样的,OpenJDK也通过了Sun的TCK测试,按说兼容性应该很好了。但Hadoop就明确表示和SunJDK工作正常,和OpenJDK不行,参见【4】。

写了几个例子,我们再回过头来看Java Card。几乎每家卡商都有自己的Java Card OS,再加上一些专做Java Card的小公司,中国市场上应该已经有超过10个Java Card平台了吧。每次客户要试用一个Applet,各家都需要进行平台级调试,才能使之正常运行。或者同样一个应用,每家都在自己的卡上进行开发自己的版本。这对第三方应用开发来说,几乎是寸步难行。大家都过了TCK的,不应该这样不是?呵呵,我想没有什么测试技术能保证把一个软件平台所有的方面都测到吧。更何况TCK还不测UICC之类的电信API。

我曾经听另外一个公司的人很自豪地给我说,一般来说,在别家Java Card上能跑的Applet,在我们的Java Card上no problem;在我们的Java Card上能跑的Applet,在别家的Java Card上却不能正常运行。

这的确是值得他们自豪的事情,但这也值得客户忧虑,值得行业不安。

我们有办法克服Java Card版本分裂带来的弊端么?前面说的那些世界上声名显赫的公司都不做不到,难道我们的从业人员能力比他们强么?

目前,在中国使用Java Card最广的应该就是中国联通了吧。他们同时采购多家卡商的Java Card,而且不断地升级规范,版本分裂自然不能避免。不同于多数客户,中国联通对于各卡商不能完全兼容的问题,已有察觉。去年,中国联通开过一次质量会议,提出了一个很前卫的方案,简单来说,所有卡商把自己的测试脚本提供给联通,每一家卡商都必须通过所有卡商的测试脚本。站在甲方的角度,这么想确实无可厚非,测试上形成一个并集,以大幅度地降低兼容性风险。只是一来我怀疑这么做的实际效果是否能有本质的提升,二来我认为没有一家卡商能投入如此大的研发精力来做这件事情,同时放弃自己的知识产权而使得自己的产品和竞争对手进一步同质化这样的事情似乎也难以用理性来解释。

综上,Java Card作为一个平台,在应用尚未发展起来的时候,其自身就已经版本分裂了,而不再能达到降低应用开发成本的目的。也许某个客户只采购一家卡商的Java Card能够避免版本分裂,但真正的大客户,谁会这么做呢?

也许Java Card还能在擂台上坚持一段时间,但作为一个平台,也许它已经被技术性击倒。

【1】 Android分裂严重 游戏支持707款设备仍遭抱怨
【2】感受开源运动的魅力,《程序员》杂志2012.04
【3】http://en.wikipedia.org/wiki/JDK
【4】http://wiki.apache.org/hadoop/HadoopJavaVersions

Java Card——看上去很美相关推荐

  1. 一枝看上去很美的花——书评《Java与模式》

    一枝看上去很美的花 --书评<Java与模式> 撰文/剃刀 (本文首发于<程序员>杂志2003年第1期) 躺在我面前的,是阎宏博士编著.电子工业出版社出版的厚达1024页的&l ...

  2. db4o, 看上去很美

    由于厌烦了手写Sql,在几个小项目中尝试着使用了Db4O.DAL层写起来是爽了,但是,还是有很多其它东西会绊你的脚. 没有主键的概念(因为对象的内存地址,或者引用就能标志一个对象了).因而外界想指向一 ...

  3. 看起来很美 VS. 是你来检阅我的忧伤了吗?

    看来了wayfarer "设计,看上去很美!"--算是我的随想<?xml:namespace prefix = o ns = "urn:schemas-micros ...

  4. 你的IT运维管理,是否只是“看起来很美”?

    原文[请点击] 又有个故事,说是有两只老虎,有一天路过一片肥美的草地,其中一只看见这里环境优美,便被深深吸引,留恋不已 .另一只老虎劝说道:"这里景色虽说不错,但看不见一只牛羊,根本不适合我 ...

  5. 设计,看上去很美 wayfarer

    设计,看上去很美 设计没有标准,模式充满变化,我们对设计与模式的探讨,就是希望能从没有标准的设计中体验设计的乐趣,从充满变化的模式中寻求问题的解决之道.     我这里所谓"设计没有标准&q ...

  6. 转龚文祥的一篇文章:对看起来很美的网站要保持审慎的乐观

    做网站的人很喜欢参考竞争对手的网站,也总是觉得别人网站模式.设计及新产品做的好,其实客观的心态是对于人家网站的好的东西要借鉴,但不能盲从,尤其对于暂时成功的网站要以在一定背景.大形势下成功的眼光去看, ...

  7. 显示器3d测试软件,3D显示器专题测试看上去很美.pdf

    3D显示器专题测试看上去很美.pdf 3D 显 示 器 专 题 测 试 当 无 拖 影 . L E D 背 光 和 广 色 域 等 技 术 E 经 不 再 新 鲜 . 液 晶 显 示 器 再 次 遇 ...

  8. SAP HR技术系列之一:e-HR,不只是看起来很美

    转载:http://qyzx.jxufe.edu.cn/ehr/EHRzixun/2013-05-26/58.html 伴随劳动法规的逐步完善以及金融危机影响的持续深入,大力控制人工成本成为很多企业的 ...

  9. 转: 看上去很美——国内CDN现状与美国对比

    来自:http://blog.csdn.net/fayu0903/archive/2009/03/25/4022979.aspx 天国王朝(Kingdom of Heaven) 作者:阀域 CDN的理 ...

最新文章

  1. MySQL数据库实用教程考核_《MySQL数据库实用教程》郑明秋,蒙连超,赵海侠【pdf】...
  2. 逆矩阵 与行列式的关系
  3. 哈希表(HASHTABLE)
  4. 如何解决Contacts中的多音字排序错误问题
  5. Flash与数学:球体曲面 (2)
  6. 科学人格和科学能力的培养
  7. 安卓logcat工具apk_backdoorapk 安卓APK后门捆绑脚本
  8. wxpython textctrl_wxPython控件学习之TextCtrl(一)单行文本框
  9. 16进制颜色与UIColor互转
  10. 九江职业技术学院工业机器人_黑龙江农业工程职业学院学子喜获工业机器人大赛一等奖...
  11. django session过期设置
  12. 全国计算机等级考试wps视频,全国计算机等级考试一级WPS-Office
  13. html渐变做一个彩虹,ps渐变工具:制作七色彩虹特效
  14. js切换图片会闪动_解决js控制元素背景图片切换时的闪屏问题
  15. 计算机设备显示感叹号,设备管理器有感叹号和问号未知设备的解决方法
  16. 《C程序员:从校园到职场》出版预告(3):从“阳春白雪”到“下里巴人”
  17. php面试兴趣爱好,简历中的兴趣爱好该怎么写?
  18. 云平台-多租户技术设计
  19. 把之前写的一个小东西代码分享出来
  20. c打包html,cmake使用教程(十一)-使用cpack打包源码并编写自动化脚本上传到仓库...

热门文章

  1. 环境变量 env 设置 c语言 头文件,CentOS 设置环境变量
  2. 买前生产力,买后爱奇艺?【ipad】
  3. mysql 1129 错误Host is blocked because of many connection errors; unblock with 'mysqladmin flush-host
  4. rust有准星_Rust能力养成系列之(2):功能抽象
  5. 会议平板同质化,行业领航者MAXHUB如何打破僵局?
  6. VRay官方2019建筑表现集锦:世界顶级工作室作品展
  7. 昆仑分布式数据库技术特点
  8. 面试-就业-择业你需要做的工作准备
  9. 蓝牙耳机已连接电脑仍外放
  10. 整数转罗马数字(详解+图解)