Xamarin发布XobotOS源码,C# 实现的Android系统 - 操作系统 - ITeye资讯

Android的核心代码由数百万行Java代码构成,而XobotOS项目还需要和Android的新版本保持同步(事实上,XobotOS的工作从Android 2.x已经开始),工作量之巨大,只能通过机器自动转换来实现。



该团队利用了一个自动转换Java到C#的工具——Sharpen,并进行了许多改进,使该工具更加成熟,目前Sharpen的源码已随XobotOS发布。



性能对比



运行于Mono上的Android,与Dalvik相比,性能究竟如何?Xamarin团队称:




引用 一直以来,微软不断改进C#,使其代码优化更加容易。通过引入值类型,使得小型对象耗能更低。另外,虚拟方法现在是选择性加入,使得虚拟机性能优化更加容易。



在泛型实现上,Java和C#分道扬镳,Java采用了完全向后兼容,而C#在运行时上提供了支持,C#的做法更简单易用、高效和完善。



再则,Java和C#在语法和执行环境上都在不断改进,增加了大量的新特性,如动态编程、异步支持、迭代器、函数式编程组件、并行化等,而其中大量的特性来自于Don Syme(微软F#项目负责人)的研究。


另外,在过去10年时间中,Mono作为一个虚拟机已经逐渐成熟,现在已经是第8代产品了。







以上这些都是影响性能的因素。下图通过一个简单的二叉树实现,来对比Java/Dalvik和C#/Mono在结构体和泛型影响下的性能差别。







未来计划



Xamarin称,公司的目标是提供最好的移动应用开发平台,因此XobotOS不会是工作重心,不过这是一项非常有趣的实验,其中一些技术也可以用于未来的产品中。这些技术包括:



  • 直接访问Skia图形库:目前Mono for Android通过Java访问底层图形库,通过XobotOS中的代码,可以使用Mono的P/Invoke直接访问Skia的原生渲染代码。
  • Java/C#转换工具:新版Sharpen已经作为XobotOS的一部分发布。
  • 使用C#代码替换Java代码:对于一些性能瓶颈的地方,可以使用C#来代替Java。

源代码



Xamarin团队已经将XobotOS的源代码发布在Github上。



XobotOS中各组件的源码基于这些组件上游供应商规定的许可协议,C#版本的Android基于Apache 2许可协议。XobotOS中还包含了Java/C#转换工具Sharpen的源代码,基于GPL许可协议。

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. android6.0M系统在代码中实现请求以及检查权限。
  3. Android(安卓)HttpClient && HttpPost简单使用
  4. 《Android(安卓)开发工具 Android(安卓)Studio》巧用 Live Templ
  5. Android之AIDL使用binder进程间通信原理
  6. Android(安卓)Studio错误Error:(23, 17) Failed to resolve: jun
  7. Android(安卓)Activity之间相互调用与传递参数的原理与用法分析
  8. 玩转pandaboard之linaro对于Android的编译上的一些优化
  9. Android(安卓)GpioService从app到驱动

随机推荐

  1. 干货必读丨Android APK反编译
  2. 详谈 Android 高大上的图片加载框架 Glid
  3. Android系统架构特点及优劣分析
  4. Android(安卓)adb命令
  5. 3-14 servlet 传出对象给 Android
  6. android点击事件,第一次无效,第二次才响应
  7. Android消息机制Looper与VSync的传播
  8. 10个经典的Android开源应用项目
  9. Chronometer android计时器组件Chronomet
  10. android studio 通过wifi连接手机调试