2021腾讯数字生态大会直播预约通道开启!技术内容大爆发,开发者必看! 了解详情
写点什么

iPhone 迎来 Squeak Smalltalk 和 Seaside

2009 年 6 月 16 日

一直以来,iPhone 平台上活跃的语言就只有 Javascript 和 Objective-C。不过最近开始有其他语言加入这一队伍。利用 Mono 的预编译,.net 的应用程序也可以编译通过并在 iPhone 上运行了。四月 RhoMobile 发布了 Rhodes ,Rhodes 支持构建包括 iPhone 及其他系统上的 smartphone 应用。

我们对John M McIntosh进行了采访,就如何在 iPhone 上运行 Squeak,以及使用什么样的编程模型进行了探讨。

InfoQ: 据说您现在正在使用 Squeak 实现一个基于 HTML/Javascript 的 GUI,可以跑在 iPhone 的浏览器控件上,是这样的吗?

实际上要复杂得多,绝不仅仅是使用 Webview。例如,WikiServer 的 Wiki 入口需要展示一个多行文本框,然后是标准键盘和键盘控件条,用于输入特殊字符以及取消或确定指令。虽然 Wiki 信息是通过 Webview 方式来展现的,我们却需要通过 UIKit 来管理四种不同的屏幕。由于不得不使用定制的 Objective-C 类来做这件事以及编译 VM,所以你可以选择一部分工作使用 Smalltalk 来做,而另一部分交给 Objective-C。技术上来说,你可以用 Smalltalk 做任何工作,但实际上会存在性能问题,所以没有什么实质上的收益。 由于 UI 在 iPhone 的唯一性,所以需要将可视层与领域模型剥离开来,这也是基本的 MVC 逻辑。事实上,WikiServer 最初是一个自带控制屏的蹩脚应用,有人就质疑:难道我们就不能直接在设备上编辑内容么?不过,后来我们也没有采用构建通用 UI 层启用平台特定实现的方法,因为那样的工作量要大得多。这里我要提一下 http://news.squeak.org/2009/01/08/squeak-goes-to-mars,Esteban Lorenzano 已经实现了一个 Cocoa UI 框架,旨在 iPhone 应用。此外我也注意到其他诸如 Cincom 的 Visualworks 这样的 Smalltalk 系统,它使用的是原生窗口部件,不过启用这个系统还是很费劲的,现在我们还不想做此努力。

InfoQ: 你用什么来实现 web 应用?Seaside 吗?

Seaside 用于提供网页,然后是 UIWebView,这是一种用 Mobile Safari 渲染网页的 UIView。理论上讲,任何大小适中的 seaside 应用都可以跑在 iPhone 上。

InfoQ: 你能在 iPhone 上使用 Squeak 映像么?在其他系统上是否能够修改并且保存呢?比如说,桌面系统上也可以么?

有了 isqueak.org 上提供的基本软件,iphone 开发者就可以选择自己想要的映像来构建一个 squeak。更新一下映像,就可以引入 multi-touch 逻辑以及 Objectiv-C 的接口。通过触摸与 Squeak 桌面的交互,你也可以选择保存映像。 我们的 Swirl 应用 http://www.mobilewikiserver.com/Swirl.html 就展示了 Squeak 桌面,其中触摸功能禁用了。我们使用 UIKit 的 Alert 对话框来获取信息。

我们的 Fration 应用 http://www.mobilewikiserver.com/Fraction.html 很像 WikiServer,它包括两个 UIKit 屏幕,通过触摸交互将计算请求发送给计算引擎,这个计算引擎是不知道 UI 存在的,它只是接受击键并更新文本串。

InfoQ: 目前的应用大小大概是 16/7MB,有可能进一步优化大小么?

SqueakDocs 和 ST80Docs 比这个数大多了,因为他们是压缩过的,而且包括四月份左右发布的基于 Web 的 Squeak 和 Pharo 开发映像的源代码。一旦安装到 iPhone 上他们就需要 54MB 的闪存空间。这个数字和 RAM 的大小不是一回事:大约 10MB 的 RAM 用来装载 VM 和 Mobile Safari(如果没有 safari 会少几 MB),然后是映像,所以他们一共需要大概 35MB 的随机内存。 WikiServer 所需的随机内存要小得多,14MB,不过这可是精心调优后的结果。

InfoQ: Pharo 和 Squeak 版本的差异是什么?

Squeak 版本是基于 Web 开发的开发者映像,通过 squeak.org 就可以获取。我们从 WikiServer 中补充了一些功能进来,包括支持 web view,状态以及信息屏等。除了我们提供的补充和少量的一些加快启动速度的小改动之外,和你下载下来的映像没有什么差异了。Pharo 版本是 Pharo 团队的产品,他们想让这个映像更商业化,而不是为了提供开发学习,所以很多 Morphic 和 eToys 都已经裁剪掉了。而且他们有更加活跃的更新流以及积极主动的方法去及时修正 bug。

InfoQ: 是否有可能通过精简映像元素来减小映像大小?还是这已经是精简后的版本了?

我会在 http://www.esug.org/Conferences/2009/Current+List+of+Talks/Smalltalk+on+iPhone 中详细探讨这个问题。 基本的 Pharo 映像大约是 22MB,我们删除了其中 12MB 的代码,这样 WikiServer 所用到的差不多是 10.5MB。Swirl 不包括 Seaside,大约是 6MB。这还有进一步降低的可能,我们会利用 Craig Latta 在小型映像上所做的工作 http://netjam.org/projects/spoon/,我们也利用 iPhone 上的虚存管理器,做到只有当网页确实被请求执行时才交换到 RAM。对于 WikiServer 而言,差不多 4M 的映像数据在应用执行是完全不需要的。

Apple AppStore 上已经有基于 Squeak 的商用应用提供,包括 WikiServer (注:ITunes 链接,另外还有一个 Mobile Wiki Server 站点)、 SqueakDocs using Squeak (注:ITunes 链接)以及 SqueakDoc using Pharo (注:ITunes 链接)等。

查看英文原文: Squeak Smalltalk and Seaside come to the iPhone

2009 年 6 月 16 日 13:101636
用户头像

发布了 80 篇内容, 共 16.4 次阅读, 收获喜欢 4 次。

关注

评论

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

HMS的三年一诺,开放出璀璨星河

脑极体

架构实战营模块6课后作业 拆分电商系统为微服务

apple

weblogic 报 java.lang.OutOfMemoryError:PermGen space

看山

EffectiveJava 10 月日更

面试官:如何回答消息队列的丢失、重复与积压问题

云流

Java 程序员 架构 面试

nil,看这篇就够了

Rayjun

Go nil

Vue进阶(幺肆捌):Vuex 辅助函数详解

No Silver Bullet

Vue 10 月日更 辅助函数

架构训练营第一模块作业

九头蛇

「架构实战营」

前端应用部署k8s的平滑发布问题

小江

k8s 前端 发布流程

硝烟弥漫的安全战场,只等一位超级英雄登场

脑极体

025云原生之Prometheus介绍

穿过生命散发芬芳

云原生 10月日更

聊一聊利用Dijkstra求有向图的最短路径

Regan Yue

算法 10月日更 10 月日更

linux防止文件和目录被意外删除或修改

入门小站

Linux

架构实战训练营|课后作业|模块 6

Frode

「架构实战营」

k8s replicaset controller分析(2)-核心处理逻辑分析

良凯尔

Kubernetes 源码分析 Kubernetes源码 #Kubernetes#

k8s replicaset controller分析(3)-expectations机制分析

良凯尔

Kubernetes 源码分析 Kubernetes源码 #Kubernetes#

普通本科毕业一年,刷完这1000道JAVA面试题,成功逆袭上岸

马小乎

Java 编程 程序员 面试 大厂面试

dddd

askuy

先占个位置,明天更新!

IT蜗壳-Tango

Generic Type Variance in Dart

Think

flutter dart 泛型

设计原则学习笔记

风翱

设计原则 10 月日更

HarmonyOS 3.0.0开发者预览版全新发布

科技汇

LogUtil日志工具类的封装

Changing Lin

10 月日更

官方线索|编程技术宇宙——1024挑战活动

Regan Yue

1024我在现场

从华为推出仓颉编程语言引发的对编程语言的思考

轻口味

编程语言 10月日更

管理者如何授权

石云升

职场经验 10月日更

Lombok与Guava

风翱

lombok 10 月日更

Go 中如何使用 Interfaces

baiyutang

golang 10月日更

在线文本去重统计工具

入门小站

工具

带你认识世界上第一个以商业为中心的元宇宙 Highstreet

devpoint

区块链 元宇宙 10 月日更

Prometheus 内置函数(二)

耳东@Erdong

Prometheus PromQL 10 月日更

架构实战营 - 模块六作业

Alex.Wu

英特尔On技术创新峰会

英特尔On技术创新峰会

iPhone迎来Squeak Smalltalk和Seaside-InfoQ