设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 开源资讯 查看内容

热点:Android和Java之间不得不说的事

2010-9-1 09:31| 发布者: joejoe0332| 查看: 6330| 评论: 0|原作者: 外刊IT评论|来自: 外刊IT评论

摘要:   最近整个Java阵营都陷于一场讨论Oracle和Google之间关于Android平台的专利诉讼官司的混战中。来自“外刊IT评论”的最新翻译文章向您解释最近 Oracle 想要告 Google 的 Android 系统的原因。该文章解释 Android ...

  VM相当

  这Dalvik 和 JVM 的相当也是很容易看清楚的。并不只是源代码或字节码格式上的问题:它们的runtime对等物上也一样。一但一个”Android class”被加载到Dalvik VM里,它就会像Java class一样运行,像Java class一样工作。 如果你懂得Java编程(深入到高级的,底层的细节),你也就懂得Android编程。你只需要学一些新的API和框架概念。他们是对等的系统。

  是否记得微软的.NET? 当.NET刚出世时,Java阵营迅速的反击指责.NET是对Java的剽窃。我也是其中的一份子,但今天我看问题更清楚了。是的,它过去是个严重的剽窃产品;C# 1.0 就是一个… 区分一种语言和另一种语言最简单的方法就是看它们的惯用风格 —— 例如toString() 相对于 ToString()。 但在最重要的VM规范里,微软做了很大的功课。它的CLR,CLI,和核心框架,都非常的不同于Java,所以我们不能说JVM = CLR这个等式。你不可能使用一个简单的文件格式转换工具把你编译好的Java class转换成能在.NET runtime上运行的代码。

  要证据吗?你只需看一看IKVM就知道了。这是一个非常有趣的项目,它能够使Java和.NET跨平台兼容,于是,你的Java代码可以在不做修改的情况下在CLR(或者是等效的.NET runtime,比如Mono)上运行… 但IKVM并不是一个简单的、类dx的 文件格式转换器。对Java class的转化、对Java核心API的适配,都是十分的复杂,即使对一个简单的HelloWorld程序也是这样。各个平台的内部机制,如反射,安 全,并行,异常处理,字节码验证,I/O,以及其它核心API,特征上大致相同,但是在细节上完全不同,一些死胡同的情况会迫使IKVM不得不钻越一个又 一个的火圈来让Java代码运行到了.NET VM上。它需要依赖于一个巨大的额外的runtime层,来适配从OpenJDK源代码里来的完整JavaSE API。我大致的关注IKVM的开发已经有数年了 —— 我阅读这精彩的IKVM 博客 – 所以我完全清楚他们为了让Java程序和JavaSE应用适配到.NET上所做的巨大的努力。(这项工作仍然没有完工;而且很多部分都需要以丧失某些性能为代价。)

  (老的Visual J++ Visual J# 也不是一个简单的 Java-to-.NET 转换器。我不想讨论它,但我们完全可以说Visual J# 对Java的兼容并不比最早期的IKVM强多少。)

  我把P = NP引进来了讨论;有些人把图灵等效(Turing-equivalence)理论引进来,说任何图灵完备的平台/语言/VM都是相互等价的。这也没错, 但与本论题无关。图灵模型这种方式太泛化了;使用这种表面价值来考量会把更个软件专利系统摧毁(尽管这不是个坏事!)。我们需要在地上为JVM等效画条 线,一条更接近实用需求而远离图灵等效的线。按我的观点,这微不足道的二进制格式转换,穷尽的高层源代码和runtime的兼容,使Android明显的 处于Java等效的这条线内。


酷毙

雷人

鲜花

鸡蛋

漂亮

相关阅读

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部