写点什么

面向 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:512551

评论

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

2025全球人形机器人领域深度报告:人形机器人、具身智能技术、商业化壁垒、产业链公司及投资分析

机器人头条

科技 大模型 人形机器人 具身智能

高性能且低成本的 Goroutine 池库-Ants

天翼云开发者社区

开发 Ants

Flink在B站的大规模云原生实践

Apache Flink

大数据 flink 云原生 实时计算

禅道5月更新速览 | 新增交付物配置功能,支持建立跨执行任务依赖关系,研发效能平台上线

禅道项目管理

项目管理 甘特图 #研发效能 研发效能度量 研发效能管理

新闻速递|Altair 与佐治亚理工学院签署合作备忘录,携手推动航空航天领域创新

Altair RapidMiner

人工智能 AI 数字孪生 CAE 航空航天

前沿论文分享 | 京东零售技术团队5篇论文入选WWW 2025

京东零售技术

议程一览 | KubeCon China 2025 华为云精彩前瞻

华为云原生团队

云计算 容器 云原生

小鹏,用AI“赌”明天

趣解商业

华为 汽车 小鹏汽车

2025北京智源大会开幕|智源发布“悟界”系列大模型,解码物理世界交互新范式

智源研究院

人工智能 AI 科技

总决赛定档!“天翼云息壤杯”高校AI大赛巅峰之战即将打响!

天翼云开发者社区

人工智能 AI大赛 天翼云

内网穿透/DDNS软件怎么选?贝锐花生壳各方面表现最优秀!

科技热闻

签约快讯|天润融通签约台铃电动车

天润融通

重磅!支持鸿蒙!腾讯视频ovCompose跨平台框架发布

最新动态

基于华为开发者空间,体验鲲鹏DevKit之Python字符串拼接系统性能分析

华为云开发者联盟

Python 鲲鹏 DevKit 开发者空间

【华为云MySQL技术专栏】MySQL8.0 InnoDB ReadView的原理及性能优化

华为云开发者联盟

,华为云

CST软件HVDC 高压陶瓷套管

思茂信息

cst CST软件 CST Studio Suite

天润融通AI训练师助力企业重构核心竞争力

天润融通

谷歌云代理商 | 游戏行业专属方案:谷歌云实时多人游戏服务器架构

Cloud Ace 云一

产品动态速递|Aloudata CAN 指标定义能力与查询加速能力再次增强、用户体验进一步升级

Aloudata

数据分析 指标平台 指标开发 ChatBI 智能问数

基于YOLOv8的火灾识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!

申公豹

yolov8

Amazon Bedrock 助力 SolveX.AI 构建智能解题 Agent,打造头部教育科技应用

亚马逊云科技 (Amazon Web Services)

成功案例丨基于OptiStruct的三轮车车架结构刚强度仿真计算与优化

Altair RapidMiner

仿真 CAE Hypermesh OptiStruct 结构优化

MES系统如何解决电机制造业自动化生产管理?

万界星空科技

mes 万界星空科技mes 制造业工厂 电机行业 电机MES

Apache Doris + MCP:Agent 时代的实时数据分析底座

SelectDB

人工智能 大数据 实时数仓 apache doris MCP

从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践

镜舟科技

数据处理 金融 greenplum 湖仓一体 镜舟数据库

记一次悲观锁重试到达上限报错分析

TiDB 社区干货传送门

6.x 实践 OLTP 场景实践

存储与野生动物保护:Solidigm为创新保育工作保驾护航

科技热闻

大数据-06-Hadoop集群 历史服务器配置 超详细 执行任务记录 JobHistoryServer MapReduce执行记录 日志聚合结果可视化查看

武子康

大数据 hadoop mapreduce hive

西南站丨AI驱动仿真未来,2025 Altair区域技术交流会报名开启!

Altair RapidMiner

AI 数字孪生 仿真 CAE 航空航天

SQL Server 2022新功能:将数据库备份到S3兼容的对象存储

电子尖叫食人鱼

数据库 sql

这款AI自动生成播客工具,必须收藏!

Immerse

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