什么是Smalltalk“图像”?这类似于序列化Smalltalk运行时吗?
发布于 2010-08-25 05:28:26
大多数流行的编程系统将程序代码(以类定义、函数或过程的形式)与程序状态(例如对象或其他形式的应用程序数据)分开。它们在应用程序启动时加载程序代码,并且必须从配置文件或其他数据源显式地重新创建以前的任何应用程序状态。应用程序程序员没有显式保存的任何设置,无论何时重新启动,您都必须设置备份。
然而,许多Smalltalk系统并不区分应用程序数据(对象)和代码(类)。事实上,类本身就是对象。因此,大多数Smalltalk系统将整个应用程序状态(包括Class和non-Class对象)存储在一个图像文件中。然后,Smalltalk虚拟机可以加载该映像,以将类似Smalltalk的系统恢复到以前的状态。
http://en.wikipedia.org/wiki/Smalltalk#Image-based_persistence
发布于 2010-09-01 19:03:44
Smalltalk图像是一个非常有趣的野兽。把它看作是一种永生。许多当前的Smalltalk系统,其中包括Pharo,Squeak,VisualWorks,共享一个共同的祖先,即来自Xerox PARC的Smalltalk图像。然而,这个共同的祖先并不是什么遥远的东西,而是实际上仍然活在这些现代系统中。现代的变体是通过向图像中的对象发送消息而产生的。其中一些消息实际上改变了当前的对象。类是成熟的对象,创建新类是通过向类对象发送消息来完成的。Smalltalk图像中的一些对象可能可以追溯到1972年,当时第一个Smalltalk图像启动!Smalltalk图像永远不会消亡,它们只是逐渐淡出一些潜在的根本不同的东西。您应该将构建应用程序与创建新的Smalltalk版本并无本质区别。
发布于 2010-08-25 19:31:16
当smalltalk VM启动时,它将对象的保存状态(是:包括打开的文件流、窗口、线程等)从“镜像”加载到它的内存中,并在保存镜像时从它离开的地方恢复执行。在工作过程中的任何时候,您都可以将图像(也称为:当前整体状态的快照)保存到图像文件中。您可以在磁盘上保留多个图像。如果您处理不同的项目,则非常有用。图像通常(但不是在所有的smalltalk系统中)可以跨体系结构移植;例如,可以将squeak图像加载到bot a windows和mac (甚至android) squeak VM中。图像不能跨方言移植,有时也不能跨方言中的版本移植。
图像通常包含所有内容-甚至调试器、编译器、编辑器、浏览器等。然而,对于部署,有时从图像中“剥离”(即删除不用的东西)是有用的-要么隐藏秘密(;-),要么使其更小(对于嵌入式或移动设备)。大多数Smalltalk都离不开图像,除了Smalltalk/X和(我认为) S#-Smalltalk (但我在这里如履薄冰……)
对于保存和传输源代码,图像没有什么用处-使用标准格式的文件输出,或者使用xml或任何其他传输格式(有很多)。图像对于编组/解组也没有用处;使用xml、二进制存储、数据库、glorb或任何其他序列化方法。
https://stackoverflow.com/questions/3561145
复制相似问题