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

摘要:
Xamarin发布了XobotOS的源代码。由C#实现的Android系统操作系统-ITeye Information Android的核心代码由数百万行Java代码组成。XobotOS项目仍然需要与新版本的Android同步。工作量巨大,只能通过自动机器转换来实现。源代码Xamarin团队已经在Github上发布了XobotOS的源代码。XobotOS中每个组件的源代码基于这些组件的上游供应商规定的许可协议,而Android的C#版本基于Apache 2许可协议。

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代产品了。

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

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

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

未来计划
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许可协议。

免责声明:文章转载自《Xamarin发布XobotOS源码,C# 实现的Android系统 操作系统 ITeye资讯》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇log.io日志实时显示Soul 学习笔记插件流程初步分析(十二)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

tomcat-8.0.42源码布署

亲自实践,如果有哪一个环节描述不清楚,望告知,会改进。 一、下载tomcat8.0源码 (本文使用jdk1.8) 下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.0.42/src/apache-tomcat-8.0.42-src.zip ps:如果以上地址发生改变导至下载...

修改加粗cmd和powershell命令行的中文字体

powershell 传教士 原创文章 2016-06-20 允许转载,但必须保留名字和出处,否则追究法律责任 ---【前言】---1 环境: win10 10586 powershell 5.0 测试通过 win7 sp1 powershell 2.0 测试通过 23#显示器,分辨率1920 x 1080 2 下文所述更改只限于【自己建立的快捷方式】,系...

netcore3.0 IHost 源码解析(一)

Nuget包:以Microsoft.Extensins.Hosting开头的Nuget包 Github地址:https://github.com/dotnet/extensions/tree/master/src/Hosting 先看下几个重要的接口  IHostBuilder的实现类HostBuilder /// <summary>...

浅谈C#托管程序中的资源释放问题

终于开始动手写这篇文章了,有个网友催了我好几次,而我要么因为手头有事,要么就是被其他思路给叉开,以至这篇文章拖了好久还没开始写,今天终于可以静下心来完成它。   用了.net工具来写程序的人,不难发现它有个好处,就是使用的内存不用释放,尤其在使用C#或者VB.Net来写程序,因为程序所占用的内存都是受系统托管的,因此内存的释放不需要程序员去操心。   很多...

若依管理系统源码分析-分页的实现以及post请求时的分页

场景 官方示例分页实现 前端调用实现 //一般在查询参数中定义分页变量 queryParams: { pageNum: 1, pageSize: 10}, //页面添加分页组件,传入分页变量 <pagination v-show="total>0":total="total":page.sync="queryParams.page...

C#环境搭建,以及C#编译器的使用

搭建nuget包管理器 HomePage windows环境下,可以下载安装包:Download 使用最新版本的C#编译器 C# 5.0之后,微软将csc开源并独立运行,其项目命名为——roslyn Get the C# compiler before v5.0 C# 5.0 之前的版本,编译器csc集成在 .Net Framework 中,一般在以下目录...