InfoQ

InfoQ

新闻

我的书签

登录注册 以永久保存书签。

该内容已经被标记书签!

标记书签错误,请重试!

iPhone迎来Squeak Smalltalk和Seaside

作者 Werner Schuster 译者 李明(nasi) 发布于 2009年6月16日

领域
语言 & 开发
主题
运行时 ,
架构 ,
Ruby ,
动态语言
标签
SmallTalk ,
iPhone ,
Seaside ,
虚拟机

一直以来,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

译者 李明(nasi) 毕业于东北大学,曾供职于百度网页搜索部,从事分布式网络爬虫及其国际化的研发工作。

abc 发表人 Zhang Jacky 发表于
Re: abc 发表人 Li Ming 发表于
Re: abc 发表人 黎 波 发表于
  1. 返回顶部

    abc

    发表人 Zhang Jacky

    这里的"映像"是框架的意思吧?好生硬哦

  2. 返回顶部

    Re: abc

    发表人 Li Ming

    这里的"映像"是框架的意思吧?好生硬哦


    这个 image 的翻译参考了中文Squeak项目的文档 ,如果有不对的地方,还望赐教

  3. 返回顶部

    Re: abc

    发表人 黎 波

    Smalltalk映像(.image文件)应该相当于工程文件

深度内容

大规模视频网站的计费与流量管理

本次分享将会就大规模视频网站的计费与流量管理这个话题,从操作层面细细进行讲解和分析,为系统工程师们揭示平日里我们没有关心的另一些内容。同时也希望本次分享能揭示行业中的一些“潜规则”,让互联网行业的流量与带宽管理更为开放与简洁。
本次演讲视频录制于QCon杭州2011

专访Jeffrey Richter:Windows 8是微软的重中之重

Jeffrey Richter以其多本Windows核心技术的经典著作而闻名,同时,他深入掌握微软的.NET等一系列核心技术,2012年1月,Jeffrey Richter在北京接受了InfoQ中文站的专访,谈到Windows 8和WinRT编程,并就异步编程、Windows编程中的可扩展性、性能和安全性方面给出自己的建议。

应用云平台的可用性——从新浪SAE看云平台设计

云计算平台的可用性,相比传统互联网服务而言,更加复杂和困难,也更具有挑战性。本文借助新浪SAE云平台为读者讲述了云平台可用性的定义、如何打造高可用的平台,以及对云计算的用户提出了建议。

JVM定制改进 @ 淘宝

淘宝高度重视Java平台的健康发展,组建了一个团队专注于Java平台的底层部分的性能、功能与稳定性改进;工作主要基于OpenJDK中的HotSpot VM开展,其中一些通用的功能随后也会逐渐反馈给OpenJDK社区。希望能与使用Java平台开发应用的大家交流经验。
本次演讲视频录制于QCon杭州2011

"伤得起"的云计算应用——对云端应用之架构的思考

2011年4月21日至22日是值得云计算从业者纪念的日子。Amazon的IaaS服务出现故障,导致许多商业网站的服务中断,影响非常严重。作为云计算用户,我们需要思考的是,如何保证即便在云服务不可用的情况,我们的应用架构仍然能够屹立不倒?本文正是站在云计算用户的角度试图探讨这一问题。

让交付的速度跟上思考的速度

12人的技术团队,4组刀片服务器,每月20亿的访问量,每日1次准时部署,99.9%的可用性。这可能吗?当然。想知道如何做的吗?百姓网将与您分享他们在DevOps实践过程中的经验和技巧。
本次演讲视频录制于QCon杭州2011

架构之路——穿行在产品和业务之间

篱笆作为一家起源于社区的电子商务公司,反映到技术层面就是同时要面对产品和业务,以及经营战略的变化调整。如何在产品和业务的夹缝之间完成技术架构的抽象与平衡,寻找更有效的价值定位,这当中有些经验教训和个人感悟愿与众人分享。
本次演讲视频录制于QCon杭州2011

特性注入:成功三部曲

本文将对特性注入以及相关方法做一个扫盲性的介绍。我们会解释这个框架的关键要素,并附上实例来证实它们。为了让文章保持相对较短,我们不会深入到某个工具或方法中,而是会给出一些参考资料,以便大家做进一步的研究。