`
javawebsoa
  • 浏览: 425544 次
社区版块
存档分类
最新评论

Android 移植到C#

 
阅读更多


感谢linux人的投递
甲骨文和谷歌正就谷歌在Android中使用Java一案展开一场10亿美元的大较量。但是Java并非在Android中建立本地应用的唯一方法。事实上,它甚至不是最好的文法:Xamarin 开发组已经将C#提供给Android开发者作为一个高性能、低功耗的Java的替代语言。Xamarin 的平台,Mono,是.Net框架的一个开源的实现。它使得开发者用C#写成的程序,能运行在带有Java的操作系统上,然后与iOS和Windows Phone共享同一代码。


不同于Sun对Java的做法,微软向ECMA(欧洲电脑制造商协会)提交了C#和.NET VM标准化申请,并一路保证这些标准完全符合ISO牢固专利承诺。.NET框架同样也为微软受法律约束的社区承诺所覆盖。


去年七月,Xamarin 开发组在波士顿小聚,讨论Mono在iOS和Android中的成长。查尔斯河一天的荡舟过后的晚宴席间,开发组将注意力转向了如何提升Android上应用的性能并降低能耗,使他们的Mono更加适合于Android。


Xamarin 开发组(当时还只是家小公司)

努力的结果是,今天,他们已经将Android大多数布局和控件完全移入了C#。下图是运行在一个Linux 工作站的XobotOS 的截图,不涉及一点Java:





到达这一个节点,需要将Android Java源码的主要部分翻译成C#。因此你可以想见上图代表的里程多么有意义。那他们是如何做到的呢?


基于Sharpen的Java翻译




Android的代码库包含一百万多行Java代码,而且他们知道必须得与Android的新发行操持同步——事实上,2011年的时候他们是从 Android 2.x 的源码起步的;随后当谷歌在今年早期开放Ice Cream Sandwich 源码的时候,他们已经将XobotOS 升级到了Android 4.0。因此对于他们,唯一可行的选择是,做一个Java到C#的机器翻译,在这一过程中构建并维护任何必要的工具。




开发组所使用的作为起点的工具是Sharpen。Sharpen因帮助Frank Krueger在两个月内将Java小程序移植到一个赢奖了的iPad应用而著名了起来。




开发组对Sharpen做了改进,使之成为了一个高度改进的通用的Java2C#翻译工具。他们将在发布XobotOS源码的同时发布这一新版本的Sharpen,希望更多的人能够从中受益,并参与贡献。

性能


一旦你让Android在Mono上运行,首先想到的一个问题一定是——Mono的性能同Dalvik相比如何?




当C#出来的时候,微软以一些意义重大的方式修改了该语言,使之更加易于优化。值类型的引入,使小的对象占用更低的负载,并使虚函数opt-in而非opt-out,十分适合更加简单的VM。之后,Java和C#在泛型的实现上出现的分歧。Java走了完全向后兼容的道路,而C#则将这一支持放到了运行时中。C#的做法形成了一个易用、易于理解的泛型机制,并且更加高效与完整。




自那时开始,两大语言以及各自的运行环境都有了持续的发展与改进。C#从一个略微优秀的Java,长成了一个比Java多走了一光年远的语言。拥抱动态编 程,带来异步机制,引入迭代器,功能性编程构建,拥抱并行并实现了一个伟大的泛型。许多这些特性都来自于Don Syme 的调查和他的持续给该语言注入新思想的F#开发组。




而且,Mono作为一个虚拟机,已经在过去的十年里充分地成长;如今,马上要考虑其第八版的发布工作了。




所有这些加起来,你可以从开发组运行的一个简单的二叉树实现的基准测试(如下图)中,看到Java和C#在结构体和泛型性能上巨大的差别。


下一步怎么走




目前,开发组已经在Github上发布了XobotOS。你可以亲手试试。




作为一家公司,Xamarin 的目标是提供建立移动应用最佳的平台,因此XobotOS 将不是他们今后工作的重心。但是使用它也是一个不错的体验。并且正如结果所显示的,部分技术已经在它的帮助之下浮出水面,它们或将进入我们将来的产品中:




直通Skia的图形访问:当前用于Android的Mono仍是通过Java访问底层图形库;使用Xamarin 建立XobotOS的代码,开发组将可以跳过中间件,使用Mono的P/Invoke直接连接到Sika中的本地渲染代码。




Java2C#工具:开发组新版本的Sharpen 已经作为其XobotOS发行的一部分发布。




用C#代码取代Java代码:开发组已经有了用C#代码替换某些性能关键且C#能提供更优解决方案的的Java代码块所必要的工具。他们的计划是从这一调查项目中取材,将它们集成到自己的产品当中。




一个因为认为它好玩而启动的项目,最终竟为公司的产品提供了一些意义重大的益处。创业很有必要集中精力办实事,但偶尔你应该尝试某些疯狂的想法,以取得进步。或许谷歌某天会感谢Xamarin,这也说不定。




Xamarin 的很多职位正在招人,有志者可与他们将携手,引领移动开发的先潮!

http://www.cnbeta.com/articles/185461.htm


分享到:
评论

相关推荐

    java安卓项目源码-XobotOS:XobotOS-Android移植到C#

    【XobotOS】是一个基于Android系统的开源项目,其主要目标是将Android的Java代码移植到C#语言,为开发者提供了一种使用.NET框架构建Android应用的可能性。这个项目不仅展现了Java和C#之间的语言互操作性,还展示了...

    C#开发Android应用实战-使用Mono for Android和.NET C#(PDF中文扫描版下载,吾乐吧软件站分享)

    这个框架的核心是.NET Micro Framework和Mono运行时,它将.NET Framework的关键部分移植到了Android平台,使得开发者可以充分利用.NET的强大功能,同时享受到跨平台开发的便利。 本书的核心内容可能包括以下几个...

    C#开发Android应用实战——使用Mono for Android和.NETC#.rar

    Mono运行时被移植到Android平台,使得.NET代码能够在Android设备上运行。开发者需要掌握如何配置Mono for Android开发环境,创建项目,以及使用Visual Studio或Monodevelop IDE进行编码。 4. **Android SDK和API**...

    unity平台上用c#编写的android小游戏

    在这个“unity平台上用c#编写的android小游戏”项目中,我们可以深入探讨Unity与C#在Android游戏开发中的应用。 首先,Unity引擎为开发者提供了强大的图形渲染能力,支持各种复杂的物理模拟,以及丰富的动画系统。...

    C#开发Android应用程序的方法和流程

    通常情况下,Android应用主要使用Java或Kotlin进行开发,但通过特定的技术,如Mono for Android,C#程序员也能参与到Android应用的开发中。 描述中提到的疑问——"C#能开发RFID-android吗?"、"C#开发android程序的...

    C#开发Android 贪吃蛇游戏客户端完整源码(使用Mono技术基于vs2010开发)

    在本项目中,我们探讨的是使用C#语言和Mono技术在...总的来说,这个项目展示了如何使用C#和Mono技术将一个经典的贪吃蛇游戏移植到Android平台,对于希望学习跨平台移动开发的C#开发者来说,这是一个有价值的实践案例。

    C#.NET可移植的数据访问

    C#.NET可移植的数据访问技术允许开发者在不同的平台和数据库系统间无缝地迁移和操作数据,提高了代码的重用性和灵活性。这篇文档将深入探讨这个主题,揭示C#.NET在数据访问方面的优势以及如何实现可移植性。 首先,...

    Zxing二维码扫描成功移植到AS项目

    本文将深入探讨如何将Zxing二维码扫描库成功移植到Android Studio (AS) 项目中,以及如何构建一个可直接运行的DEMO。 首先,我们需要了解Zxing的基本功能。Zxing支持多种类型的条码和二维码扫描,如QR码、Code 128...

    XamarinAndroidMediaCodecSurfaceToSurface:Xamarin Android MediaCodec Surface To Surface 视频解码和编码 - CTS 移植到 Xamarin Android C#

    Xamarin Android MediaCodec Surface To Surface 视频解码和编码 - CTS 移植到 Xamarin Android C# 这是 Android 上 MediaCodec 的 CTS 测试的一个端口: 原始测试使用生成的视频。 我还添加了从文件到文件的转换...

    C#开发Andorid应用-使用mono 技术【中英文版】

    同时,也会探讨如何将现有的.NET库移植到Android平台,以便利用丰富的.NET生态系统。 总的来说,这个压缩包提供的资源对于那些希望利用C#和.NET知识进入Android开发领域的程序员来说是宝贵的。通过系统的学习和实践...

    【移动应用开发】C#使用Xamarin开发可移植移动应用的Demo,包含一些基本的小应用技巧

    【移动应用开发】说明:C#使用Xamarin开发可移植移动应用的Demo,包含一些基本的小应用技巧 (C# uses Xamarin to develop portable Demo for mobile applications, including some basic small application skills.)...

    C#个人记账系统源码.zip

    Xamarin是Microsoft开发的一个跨平台移动开发框架,它允许使用C#和.NET框架来开发原生的iOS、Android和Windows应用。借助Xamarin,开发者可以利用一套共享的C#代码库,实现多平台的同步更新,同时保持与原生平台的...

    各种平台socket连接示例源码,android,ios,dephi,c++,c#,vb

    在本文中,我们将深入探讨标题和描述中提到的Android、iOS、Delphi、C++、C#和VB这六种平台下的Socket连接示例源码。 1. **Android Socket**: Android平台上的Socket编程主要依赖于Java的Socket类和ServerSocket...

    c#_ide_mobile v12.0 C# PPC手机编程软件

    C# IDE Mobile v12.0正是基于这样的需求,将C#的开发环境搬到了PPC设备上,使得开发者可以在更小的屏幕上实现代码编写、编译和调试。 IDE(集成开发环境)是程序员的重要工具,它集成了代码编辑器、调试器、版本...

    Mono For Android 贪吃蛇游戏源码

    本项目是一个将 C# 编写的贪吃蛇游戏移植到 Android 平台的例子。通过 Java 语言重写原本的 C# 代码,开发者可以更深入地理解两种编程语言在移动应用开发中的差异,并掌握如何在 Android 环境下实现游戏逻辑。 ...

    查看Android USB设备信息

    9. **第三方库**:为了简化USB操作,开发者可以利用第三方库,如`libusb`的Android移植版或`UsbSerial`库,它们提供了更高级别的接口,方便与各种串行设备通信。 通过以上步骤,开发者可以全面了解连接到Android...

    C# 最新应用程序最新最新

    标题“C# 最新应用程序最新最新”可能指的是使用了C#的最新特性或技术构建的应用程序,这可能涉及到以下几个关键知识点: 1. C# 版本更新:C#语言一直在不断演进,例如C# 9.0引入了多项新特性,如模式匹配增强、可...

Global site tag (gtag.js) - Google Analytics