写点什么

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

评论

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

Meme币取代VC代币 让比特币越来越好

区块链软件开发推广运营

dapp开发 区块链开发 NFT开发 公链开发 代币开发

北方民族大学40周年校庆学术活动-第四届自动化控制、算法与智能仿生学术会议(ACAIB 2024)

搞科研的小刘

计算机 #人工智能 学术会议 学术论文 EI

函数计算助力领健信息为“看牙”注入 AI 活力

阿里巴巴云原生

阿里云 云原生 函数计算

云时代下的呼叫中心:SD-WAN的推动作用

Ogcloud

SD-WAN SD-WAN组网 SD-WAN服务商 异地组网 SDWAN

inBuilder低代码平台新特性推荐-第十九期

inBuilder低代码平台

开源 低代码

一文读懂3D实时云渲染!原理、优势、行业应用详解

点量实时云渲染

渲染 实时渲染 实时云渲染 3ds Max云渲染 3D实时云渲染

深入理解PHP反射API的工作原理

技术冰糖葫芦

API Explorer API 接口 API 文档 pinduoduo API

SD-WAN技术怎样提升网络可靠性?

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

低代码与数据分析可视化:构建数字化未来的双引擎

不在线第一只蜗牛

数据挖掘 数据分析 低代码

【中国算力大会分会】2024算法、高性能计算与人工智能国际学术会议(AHPCAI 2024)

搞科研的小刘

人工智能 算法 学术会议 学术论文 EI

信创数据库有哪些?哪家好?堡垒机支持吗?

行云管家

数据库 信创 堡垒机 国产化

CyberScheduler架构引擎

数新网络官方账号

前端开发拥抱Vue3,优势何在?

珲少

ITBOOK 多得

Apache Doris 2.0.10 版本正式发布

SelectDB

数据库 大数据 数据仓库 数据分析 Doris

任务管理用什么工具?这款一站式软件助力敏捷团队精益化!

彭宏豪95

项目管理 职场 任务管理 在线白板 任务管理软件

Kubernetes 事件日志采集与分析最佳实践

观测云

k8s

客户案例 I 中国头部智能电动车企利用流程智能平台健全和完善IPD体系

望繁信科技

数据挖掘 流程挖掘 汽车行业 流程智能 数字北极星

充分发挥财务敏捷性,扩大集成式财务规划的价值

智达方通

企业管理 财务转型

腾讯云与钢研新材达成战略合作,加速金属材料产业链企业数字化升级

极客天地

一文搞懂RESTful开发

不在线第一只蜗牛

RESTful Rest

探索智慧服务新高度,2024 OPPO服务生态开发者沙龙在京举行

科技热闻

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