如果你看过之前的文章,应该对 Oracle 状告 Google 侵犯专利有所了解。上次事件之后,Google 显然没有服软,接着,Oracle 指出 Google 的 Android 平台偷窃 Java 代码,将事情推向了另一个高度。今日,JCP 重要成员 Apache 基金会宣布,如果 Oracle 不给 Harmony 提供兼容性测试,将退出 JCP,并号召其它成员抵制 Java7。所有这些事件不仅是对 Google 的威胁和打击,而且直接关系到 Android 与 Java 语言的前途。
转播到腾讯微博
自由的语言,不自由的平台
Java 号称是跨平台的语言,简单的说,它是在不同平台之间搭建一个相同的软件运行环境。或说是 Java 虚拟机。虚拟机起到一个承上启下的作用,开发者不用考虑平台,只要保证自己的程序能够在虚拟机上运行,而实际的硬件操作由虚拟机联系操作系统完成。
Java 原本属于 Sun 公司。Sun 一直是一个在商业和开源之间走着平衡的公司。虽然,Sun 开发了大部分的 Java 平台代码,但任何公司的平台,如果想要运行 Java 程序,仍就必须购买 Java 虚拟机的使用权,这涉及到安全和技术支持问题。从手机平台来说,诺基亚、RIM 等公司的手机平台都支持 Java 程序,就是因为它购买了 Java 虚拟机的使用权。
Apache 基金会的 Harmony
Apache 基金会的 Harmony 计划是试图提供一个 Java 的开源实现,就是说试图使 Java 平台脱离 Sun 的控制,获得充分的自由。这就是Harmony 计划产生的原因,对此 Sun 自然不会很高兴,一是商业原因,二是可能产生的平台分裂。因此,Sun 虽然没有起诉 Apache 基金会,却一直没有给 Harmony 提供兼容测试,同时 Sun 在 Java 平台的使用上有限制,因此 Harmony 的代码是不能使用到手机上的,当然 Apache 也没有这个计划,所以事情就搁置了下来,直到 Android 的出现。
Android 之道
Android 的 Dalvik 虚拟机运行的不是 Java 程序,可以说 Dalvik 完全可以运行其它语言开发的程序,但是 Google 为了吸引 Java 程序员,允许程序员使用 Android 的SDK 将 Java 代码转换成 Dalvik 可以运行的代码。它是如何实现的呢?Google 在开发 Android 的时候,雇佣了 Sun 的一些程序员,利用 Harmony 中的开源 Java 库来实现 Java 程序的转换,避开了授权费用。这意味着开发者可以使用 Java 语言为非 Java 平台开发程序,Android 的火爆发展不能给 Sun 带来商业利益,而且可能造成平台分裂。
Java 7 的到来和 Apache 的反抗
自从 Oracle 掌权 Java 之后,JCP 便逐渐为 Oracle 所抛弃,这意味着 Oracle 要独自控制 Java 平台。做为 JCP 一员的 Apache 基金会已经无法影响 Java 的方向,它的 Java 开源实现 Harmony 也被 Oracle 拒之门外,因此,Apache 基金会的存在只是一个形式而已。
Oracle 拒绝给 Harmony 提供兼容测试,这意味着 Harmony 与 Java 平台的彻底分裂,随着 Java 7 的到来,这个问题将更加严重。这是否意味着 Java 语言升级之后,Google 不得不重新编写底层代码已适应新的 Java 语言,但是 Google 这将是一项耗时费力的艰苦工作,而自己编写的实现也许会再次遭到 Oracle 的起诉,因为 Oracle 已经推出自己的开发环境 OpenJDK,获得了 IBM 和苹果的支持。
Apache 基金会目前已经正式声明,号召其他成员抵制 Java7,如果 Oracle 不提供 Harmony的兼容性测试,将退出 JCP,这意味着 JCP 内一个最大的开源势力推出 Java,下一步便是彻底的决裂,这对 Google 会产生什么影响,仍无法预料。
法律和技术的双重困境
Android 已经成为 Google 的收入生命线,Google 自然不会让步,在最近的回击中,Google 指出,即使存在侵权(或抄袭)的可能,也应该由第三方负责,因为 Google 使用的是第三方的开源实现。法律问题先放在一边,从技术上来说,Google 也面临着困境,因为 Android 的开发者使用的是 Java 语言,如果失去官方提供的支持,将是一个严重的问题。
Java 陷阱
开源领袖Ricard Stallman 早就指出Java 是“带着镣铐的自由”(Free but shackled),警告开发者谨防 Java 陷阱。此后,Sun 开源了大部分的 Java 实现代码,因此 Java 陷阱已经可以避免,但仍然要注意使用完全自由的平台,因为并非所有的平台都是自由的。
如果 Google 收购 Sun,将 Java 收归己有,或者当初与 Sun 达成协议,也许今天情形会不同。或着当初开发 Android 的时候,Google 应该培育自己的 Go 语言,而不是急于利用现有的 Java 开发者队伍。Java 关于开放的说法只是一个假象,而如今 Java 易手,一切都改变了。
很难想象 Google 会放弃 Android 系统,问题是如何发展它。Java 将逐步脱离开源社区,沦为 Oracle 的生财之道,这是一个利益当头、注重企业而不考虑个人开发者的公司,与 Java 的纠缠不清只能带来更多的麻烦。
Android 其实是在帮助 Java
现有的智能手机平台中,Java 已经不是开发者的首选,iOS,MeeGo 都有自己的开发环境,WebOS 不需要 Java 实现,而 RIM 也在逐渐抛弃 Java,转向 Adobe AIR,这意味着 Java 在手机市场的空间在逐步缩小。讽刺的是,现在 Android 的飞速发展反而有利于 Java 语言在手持领域的地位。如果 Google 抛弃 Java,是否 Java 将只能在低端机之间苟延残喘,逐渐消亡呢?相信随着 Web 开发技术的进步,HTML/CSS/JavaScript这样的网络开发环境将成为网络应用的首选,而底层应用开发将会是 C/C++的天下。
Oracle 的做法也许只是加速 Java 在手机领域的灭亡而已,当然是在它收完最后一笔保护费之后。
分享到:
相关推荐
### 如何使用Js/Java开发HarmonyOS UI #### 创建第一个HarmonyOS应用 要创建一个HarmonyOS应用,首先需要访问官方网站(https://developer.harmonyos.com/cn/develop/deveco-studio)下载并安装DevEco Studio。安装...
HarmonyOS应用开发者基础认证考试题目及答案HarmonyOS应用开发者基础认证考试题目及答案HarmonyOS应用开发者基础认证考试题目及答案HarmonyOS应用开发者基础认证考试题目及答案HarmonyOS应用开发者基础认证考试题目...
总的来说,这个Java编写的Harmony鸿蒙电影APP项目展示了如何利用Java语言和HarmonyOS的开发环境来构建一个功能丰富的移动应用,涵盖了从数据获取、UI设计到用户交互的多个方面。这不仅需要扎实的编程技能,还需要对...
【Java基于HarmonyOS分布式小游戏之你画我猜】 在当今的移动开发领域, HarmonyOS 作为华为推出的全新操作系统,以其跨平台、分布式的特点引起了广泛关注。本项目“Java基于HarmonyOS分布式小游戏之你画我猜”充分...
该项目是一款基于Java语言的HarmonyOS分布式系统设计源码,包含216个文件,涵盖了46个类文件、30个PNG图像文件、27个XML配置文件、24个Java源代码文件、12个密钥文件、12个SXML文件、10个二进制文件、10个JSON文件、...
Harmony search algorithm using matlab
harmony-trunk开源 Java SE
HarmonyOS,华为推出的全新操作系统,旨在为物联网时代提供统一的操作平台,覆盖从手机、智能手表到智能家居等各类设备。这份“HarmonyOS从入门到大神资料下载合集(上)”是专为开发者和爱好者设计的学习资源,帮助...
1. **aapt**: Android Asset Packaging Tool,虽然HarmonyOS与Android有区别,但早期版本的HarmonyOS开发可能借鉴了部分Android工具。aapt用于处理应用的资源文件,如图片、字符串和布局。 2. **apksigner**: 签名...
华为鸿蒙HarmonyOS开发整理资料汇总,共38份。 1学前必读:HarmonyOS学习资源主题分享 2学前必读:OpenHarmony-联盟生态资料合集 3-1.HarmonyOS概述:技术特性 3-2.HarmonyOS概述:开发工具与平台 3-3.HarmonyOS...
HarmonyOS文档(鸿蒙学堂).pdf HarmonyOS文档(鸿蒙学堂)是华为官方提供的一份关于HarmonyOS开发的指南...HarmonyOS文档(鸿蒙学堂)提供了从快速开始到工程管理的详细指南,旨在帮助开发者快速上手HarmonyOS开发。
通过上述步骤,我们可以实现在HarmonyOS应用中打开相册及音频列表的功能。这不仅可以提高用户体验,还能够使应用具备更多的实用性和功能性。需要注意的是,在实际开发过程中,还需要考虑到权限管理、异常处理等问题...
HarmonyOS和android James Li 的 Multimedia笔记 Android Native Libs Java Multimedia Android FFmpeg RTMP ExoPlayer GStreamer WebRTC Classes ROM Linux Tools Pluto 杂 IOT Nuttx HarmonyOS
在 HarmonyOS 应用开发中,实现物体的放大与缩小效果是增强用户交互体验的关键技术之一。这通常涉及到图形绘制、动画处理以及视图变换等多个方面。本教程将深入探讨如何在 HarmonyOS 平台上创建这样的动态效果,帮助...
HarmonyOS Sans是一款由华为公司为HarmonyOS操作系统精心设计的字体,旨在提供统一、流畅的用户体验,提升系统界面的易读性和美观性。这款字体在设计时充分考虑了多设备、多场景的应用需求,确保在不同尺寸的屏幕和...
《Harmony印能捷出版曲线软件深度解析》 在印刷行业中,精确控制网点增大和墨水量是至关重要的,这直接影响到印刷品的质量和色彩还原度。Harmony印能捷出版曲线软件,作为一款专业的印刷调校工具,为解决这些问题...
在Android系统中,Apache Harmony是Java核心库的一部分,用于提供Java API的开源实现。在描述中提到的"rk3288-android5.1"可能是指基于Rockchip RK3288芯片的Android 5.1系统,这是一个常见的嵌入式设备平台,用于...
总之,HCIA-HarmonyOS 应用开发的学习涵盖了从基础知识到实际操作的全面内容,旨在培养能够适应 HarmonyOS 生态系统开发的专业人才。通过这套学习资料,学习者将能够熟练掌握 HarmonyOS 应用开发的关键技能,并为...