写点什么

面向 Android 上 Dalvik 运行时的 C# 编译器 dot42 简介

  • 2013-03-03
  • 本文字数:757 字

    阅读完需:约 2 分钟

Mono for Android 最大的缺点是需要在 Mono 上面构建,这与 Android 预期的运行时完全不同。尽管能够直接访问完整的 CLR 的确有些优势,但是它与 Android 的 Dalvik 运行时之间的封送调用(marshalling call)可能非常昂贵。那为什么不跳过 IL 代码直接生成 Dex 代码呢?

事实上这有点夸张。 dot42 编译器实际上并没有跳过 IL。恰恰相反,它读取 IL 代码并将其转换为一种叫做 RL 或 Register Language 的新语言。IL 和 RL 主要的差异在于 IL 是基于栈的 (有点像 Java 的字节码),而 RL 基于寄存器。在转换为 RL 后,会执行一系列的优化,而且最终产品会被重新编译。最后的编译为我们生成 Android 上 Dalvik 运行时的 dex 代码。

.Net 原始调试信息在该过程的每个步骤中都会维护,当然它必须从 Windows/.NET PDB 格式转换为 dex 的调试信息格式。dot42 使用 Android 调试桥接器来连接 Visual Studio 调试工具。

Android 库可以通过直接引用 JAR 文件来访问。“编译后,调用会被重定向为对原始 Android 库的调用。”类型间的某些映射是必须的,但这主要由编译器解决。例如,java.lang.Boolean 被映射为 C#的 Nullable。

因为 dot42 生成的是 dex 代码,所以有些 C#特性无法使用。其中最值得注意的是用户定义值类型,也就是 struct,因为 Dalvik 中并不存在,所以根本没法映射。

在使用 dot42 时,往往需要决定选择常见数据结构的 C#版本还是 Android 版本。例如,应该使用.Net 的 List 还是 Java 的 ArrayList?据 Ewout Prangsma 介绍,如果关注内存和下载大小,开发者应该首选 Java 版本。即使他们的 List 实现基本上是对 ArrayList 的很薄的包装,有些额外的代码仍然需要打包并传到手机上去。

dot42 是商业产品,正常批量许可是每开发者 499 欧元起。

查看英文原文: Introducing dot42, a C# Compiler for Android’s Dalvik Runtime

2013-03-03 00:512615

评论

发布
暂无评论
发现更多内容

发掘 Chrome 的实用命令:提升你的浏览器使用体验

霍格沃兹测试开发学社

融合商品计划与供应链管理:打造高效协同供应链生态

第七在线

云游戏怎么发行?云游戏发行商推荐

Ogcloud

云游戏 云游戏发行 云游戏平台 游戏云化

企业如何实现异地组网?SDWAN组网搭建教程分享

Ogcloud

SD-WAN 企业组网 SD-WAN组网 异地组网 SDWAN

快速入门 TinyVue 组件库一键换肤!get“多主题适配”技能

OpenTiny社区

开源 前端开发 web开发 OpenTiny TinyVue

线上观看人次2万+!「飞天技术沙龙-CentOS 迁移替换专场」北京站圆满结束

OpenAnolis小助手

操作系统 龙蜥社区 CentOS迁移 Alibaba Cloud Linux Anolis OS

相聚杭州,53 位代表参会!龙蜥社区两大委员会圆满结束

OpenAnolis小助手

操作系统 龙蜥社区

MES生产车间物料如何管理才能降本增效?

万界星空科技

生产管理系统 mes 万界星空科技 物料管理 生产物料

10分钟搞定分布式应用缓存

俞凡

架构

好用的在线白板网站有哪些?这5款白板软件值得推荐!

彭宏豪95

职场 在线白板 办公软件 在线协作 效率软件

2024 年 5 月公链研报:监管调整与市场新动向

Footprint Analytics

低代码开发:企业数字化部门的数字化转型之路

不在线第一只蜗牛

低代码 数字化

系统运维联盟 5 月会议召开,围绕“进展、规划与合作”展开讨论

OpenAnolis小助手

操作系统 龙蜥社区系统运维联盟

Python 中寻找列表最大值位置的方法

霍格沃兹测试开发学社

为什么要做数字化转型?数字化转型对企业的意义?

优秀

数字化转型 企业数字化转型 数字化业务转型

探索 Go slog 标准库:设计与应用

俞凡

golang

社区新标准发布!龙蜥社区标准化 SIG MeetUp 圆满结束

OpenAnolis小助手

标准化 龙蜥meetup 龙蜥社区标准化SIG

首家!腾讯云ES通过中国信通院检索增强生成(RAG)技术要求专项测试

腾讯云大数据

ES

观测云告警集成 PagerDuty 最佳实践

观测云

告警

哈银消费金融端午节金融知识普及,守护消费者权益,助力智慧消费!

极客天地

【三体学者】著名的黑暗森林理论是什么含义?

AppBuilder

面向Android上Dalvik运行时的C# 编译器dot42简介_C#_Jonathan Allen_InfoQ精选文章