写点什么

使用 F#开发 iOS 和 Android 原生应用

  • 2014-08-20
  • 本文字数:1289 字

    阅读完需:约 4 分钟

Xamarin 4.8 开始,F#已经可以通过使用 Xamarin 支持 iOS 和 Android 原生编程了,并且可以有效地在两个平台上创建原生应用。让我们看看一些经验报告。

Rachel Reese Firefly Logic 的高级软件工程师,最近在 Nashville .NET 用户小组会上做了一个演讲,展示了如何完全用 F#语言写出绝对原生并且跨平台的移动应用程序。Rachel 还将 F#和 Apple 的新 Swift 语言做了有趣的特性对比。在 Rachel 看来,很多 F#语言的特性,像识别联合、模式匹配、自定义运算符、可选择类型、REPL,这些在 Swift 中都可以找到,从语言层面讲 Apple 为 iOS 和 OS X 开发的新语言还是缺少了一些重要的在 F#语言上拥有的特性,如类型提供者、类型推断、同步和异步支持等等。她评论到:

随着每个新 Xamarin Studio 版本的发布,其手机相关模块在程序编程方面会做的越来越好。

Faisal Waris 是 iOS 和 Android 咨询顾问,最近总结了他使用 F#语言为 Android 开发的一个复杂 app 的经验。Faisal 的 app 有 6000 多行代码,还有一个包含自定义控件的复杂 UI,另外还有复杂的后台处理。他说:

Xamarin 对 F#语言的支持现在非常好,我很乐意推荐它用来开发产品。当我开始使用的 Xamarin 的时候,它对 F#语言的支持还处于测试阶段,我也遇到了很多问题。可是,Xamarin 团队的响应非常积极,并且很快就能将插件开发到稳定、好用的地步……要代替这 6K 行代码,等效的 Java 代码将在 50K LOC 范围并且会相当复杂。我认为 F#语言是移动计算机处理技术中一种极好的语言。

Faisal 同时也是 VL 的作者,VL 是 F#语言中一种 DSL 工具,它允许在 iOS 控件的布局上指定自动布局约束。Faisal 说,由于VL 自动布局约束使用强类型方式指定,所以它允许在早期捕获一些布局问题。VL 使用了 F#的 Algebraic 数据类型、匹配模式和操作符重载,同时也提供了一个展示 F#灵活性和表现力的很好的例子。

软件工程师 Neil Danson 在最近的一次 F#unctional 伦敦聚会上做了一个很好的关于用 F#语言开发 iOS app 的介绍。Neil 说,F#快速,因为它编译成原生代码,同时 F#也具有完整性,提供所有可用的 API。不过它没有 Objective-C 速度快并且 F# app 要更慢的启动时间,Neil 补充道。Neil 还提到,F#特别适合移动应用开发,是因为它的异步行为允许方便的利用非阻塞 I/O 和多核 CPU,以及它的跨平台的可移植性。在他的 BitBucket 账号上,可以下载他为 iOS 和 Android 平台完整实现的两个游戏应用 Pacman Pissed off owls .

F#是一种使用类型推断以及支持命令式和面向对象范式的强类型函数语言。F#由包括 Microsoft 和开放贡献者在内的 F#软件基金会开发。F#软件基金会也提供了开源、跨平台的 F#编译器。

为 iOS 和 Android 平台开发 F# app,可以使用 Windows 平台的 Visual F#工具,或者 Mac 平台 F#工具,或者 Xamarin Studio

查看英文原文: http://www.infoq.com/news/2014/07/fsharp-native-moible-development


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2014-08-20 04:102830

评论

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

详解SSH 框架中对象调用流程

华为云开发者联盟

spring hibernate struts SSH 框架

技术扫盲:关于低代码编程的可持续性交付设计和分析

小傅哥

Java 小傅哥 服务端 低代码开发 可持续交付

我身边的高T,问了Java面试者这样的问题......

京东科技开发者

MySQL 数据库

测试InfoQ 平台发布文章

木子的昼夜

基于证券云服务的总体架构设计应该怎么做?

Jason Tien

我与技术面试那些事儿

我是哪吒

CSS html 大前端 28天写作 2月春节不断更

诊所数字化:诊所开展私域运营的优劣势

boshi

医疗 私域运营 七日更 28天写作

Kafka.04 - Kafka 部署

insight

kafka 2月春节不断更

私有云、公共云、混合云安全性的优点和缺点

云计算

先收藏!关于Java类、接口、枚举的知识点大汇总

华为云开发者联盟

Java 接口 枚举

架构师不至于“架构”-《架构师应该知道的37件事》阅读笔记

Harris

读书笔记 架构 架构师

2021最新百度/平安/蚂蚁金服/腾讯/拼多多面经总结(附答案解析)

比伯

Java 编程 架构 面试 计算机

工作日志2-20

技术骨干

【LeetCode】托普利茨矩阵Java题解

Albert

算法 LeetCode 28天写作 2月春节不断更

Flink SQL 性能优化:multiple input 详解

Apache Flink

flink

为什么不推荐使用汉字作为密码?

不脱发的程序猿

程序人生 密码学 28天写作 二月春节不断更

日记 2021年2月22日(周一)

Changing Lin

2月春节不断更

一文带你熟悉Pytorch->Caffe->om模型转换流程

华为云开发者联盟

网络 模型 PyTorch caffe 算子边界

Apache Flink 在快手的过去、现在和未来

Apache Flink

flink

容器 & 服务:一个Java应用的Docker构建实战

程序员架构进阶

Docker 容器 七日更 28天写作 2月春节不断更

JVM又曾放过谁,垃圾终将被回收!

Simon郎

Java 大数据 架构 后端 JVM

用Stylish精简极客时间专栏页面

Tao

CSS

MySQL查看及杀掉链接方法大全

Simon

MySQL

技术解析 | Doris SQL 原理解析

百度开发者中心

百度 Doris SQL优化

超强前端面试真题+资源推荐

爱学习

面试 大前端 面经

WinDbg 分析高内存占用问题

dotnet windbg

还愁追不到女神吗?一键生成舔狗日记,一秒速成舔狗之王

不脱发的程序猿

程序人生 28天写作 二月春节不断更 舔狗文化

浅谈nodejs进程和线程

梁龙先森

大前端 nodejs 2月春节不断更

配合Github Actions 做一个自动推送的 Rss 订阅机器人

Leetao

Python RSS Github Action

话题讨论 | 你在互联网大厂是个啥级别?

架构精进之路

话题讨论 28天写作 话题王者

Dapr 知多少 | 分布式应用运行时

架构 云原生 k8s dapr

使用F#开发iOS和Android原生应用_后端_Sergio De Simone_InfoQ精选文章