您现在的位置是:主页 > 外域关注 >Hack和DA的详细解说

Hack和DA的详细解说

  • 2020-06-07
  • 160人已阅读
Hack和DA是萦绕在每个palm新手心头的神圣字眼儿。即使不把理解了Hack和DA作为palm新手和老手的分水岭,至少,它也是你踏上茫茫palm不归路的一个重要里程碑。
关于Hack和DA,最常见也最容易理解的说法是Hack和DA是类比多工的程式--对于多工的直观理解,就像我们在windows上同时运行几个不同的程式视窗。
Palm是一个单任务的作业系统。在同一时刻,只能有一个程式能够与用户交互。这在很多时候并不方便。最常见的例子是在阅读新闻的时候,你可能需要查一下字典;或者你在试算表中输入资料的想调出计算器算一个简单的数;又或者你在输入文档的时候想知道一下时间,等等。相当一部分Hack程式和绝大部分常用的DA程式都是为了这个目的设计的--在不退出当前程式的情况下运行。
但是Hack和DA能做的还不仅如此。
本质上说Hack和DA是Palm程式的两种特殊运行方式,或者说是两种特殊类型的Palm程式。这两种程式规範都不是Palm官方支援的系统功能,他们是由第三方软体发展者提出并维护的开放标準。
DaggerWare在1996年引入了Hack程式的概念。他们把Hack程式称为Palm上的Control Panel,意思很明显,就是对系统功能的扩展。Palm系统有很多系统功能,比如查找,比如拷贝粘贴,如果你对这些内置的系统功能不满意,可以用自己的方式替换掉系统的原有功能,比如,MultiClip Hack可以支援多条记录的拷贝粘贴,而Find Hack则增强了系统原有的查找能力。这种偷樑换柱修改系统的工作方式,就像网路上的黑客侵入并接管别人的网路或者电脑一样,这就是Hack名字的由来。
为了替换或者增强原有的系统功能,你当然可以写自己的系统补丁,但是这样做需要开发者很熟悉系统底层介面,并且来自不同开发者的补丁可能会有很多冲突。
HackMaster就是为了解决这些问题而提出的。
HackMaster定义了一套开放的系统扩展规範,称为HackMaster API,它一定程度上隐藏了开发系统扩展程式的複杂性,通过这套规範可以简单的写出更加稳定的系统扩展程式。
其次,HackMaster本身也是一个管理程式,负责装载和卸载不同的hack程式,并且解决hack程式之间的冲突,比如,当两个不同的hack程式要扩展相同的系统功能时,HackMaster裁决到底哪个有效。任何Hack程式一定需要有Hack管理程式才能运行。
DaggerWare自己出品的HackMaster是Hack管理程式的鼻祖,但是它不是最好的。因为Hack规範或者说HackMaster API是开放标準,其他的一些程式开发者也开发了不错的Hack管理程式。比如来自Tealpoint的TealMaster,来自LinkeSOFT的X Master,和来自TRGPro User Group的EV Plug Base,都是不错的Hack管理程式。
HackMaster装载和卸载hack程式都是“热插拔”的,不需要重新启动系统。和Windows相比,这是HackMaster规範一个很棒的地方。
Hack程式在通过Hack管理程式装载之后,就驻留在系统记忆体中后台运行,无法象普通的应用程式一样退出,只能在Hack管理程式中卸载。这种运行方式会降低一些系统速度,而且,儘管HackMaster API定义得很仔细以避免Hack程式之间的冲突,但是Hack程式与普通应用程式冲突情况仍然时有发生,这也是导致系统不稳定的主要原因之一。
Hack程式不一定要有运行视窗。一个Hack程式可能只是简单的改变背光的状态,替换系统字体,或者改变按键的功能,甚至改变电池图示的显示。当然它也可以有自己的"弹出视窗",这个"弹出视窗"可以运行在当前程式之上,通过这种方式,我们就可以实现前面说的在不退出当前程式的前提下实现查字典,查电话号码,看时间,计算器,或者输入简单资料等功能,也就是“模拟多工”。
虽然Hack方式可以实现弹出式的视窗任务,但是用Hack来实现这个功能并不好,因为太多的程式驻留记忆体会使系统很慢而且不稳定。
针对这个问题,一个日本人YAMADA Tatsushi, Hacker Dude-san,提出了另一种方案,就是Desk Accessory,简称DA。和Hack相比,DA更像是为弹出视窗类比多工设计的。它採用类似Hack的方式接管了系统的用户应用程式外壳,以实现在不退出当前任务的情况下,执行DA程式。
DA也定义了一套DA程式规範,也需要一个DA程式管理器来启动DA程式。但是与Hack不同, DA管理程式并不去接管或者修改系统功能,所以它更像一个普通的应用程式,只是运行在一个弹出的视窗中。
DA与Hack的另一个重要不同是,Hack是驻留的,在Hack管理程式中装载的Hack程式都在系统中运行。而DA程式是在运行时装载的,运行结束后退出。这样,同时运行的DA程式只有一个,解决了DA程式之间的冲突问题。DA管理程式也紧紧是一个单纯的DA启动程式,通常称为DA Launcher。DA的运行方式有着比Hack更好的稳定性,也不大影响系统速度。
虽然DA程式是运行时装载的,但是DA管理程式必须驻留记忆体。驻留记忆体程式可以用三种方式实现,启动时自动装载的程式,控制台程式和Hack程式。基本上没有DA管理程式用第一中方式实现,因为装载和卸载往往需要重新启动系统,不如后两种方式的“热插拔”方便。
与HackMaster一样,DA方案的鼻祖Hacker Dude-san也提供了权威的DA启动程式,名字就叫做DA Launcher。它有Hack版本,也有控制台版本。除此之外,其他比较常用的DA管理程式有来自Hiroaki Imazeki的,来自Takanori Hoshi的AppDA Launche,Calc Button Hack,和Find Button Hack,来自Tealpoint的TealLaunch等等。
多数的DA管理程式都使用了Hack方式来实现。这造成了一种错觉似乎DA需要Hack才能运行,其实并非如此。DA和Hack并没有直接的依赖关係。由于Hack规範可以简单的实现扩展系统功能,驻留记忆体和"热插拔",所以多数DA管理程式採用了Hack方式,但是也可以不这幺做,使用控制台方式或者启动时装载的普通程式一样可以实现DA管理/启动功能。相反,用DA方式来实现Hack管理的程式是没有的。因为Hack管理程式需要启动时装载而且驻留记忆体,DA方式做不到。
和Hack类似,DA程式也可以没有运行视窗。比如HRCapt DA就是一个捕捉萤幕的DA程式。DA程式也可以执行一些类似Hack程式的系统底层功能,比如acFreeHeap可以清理系统的堆记忆体。
很多的时候,你从功能上来区分并没有办法分出是Hack还是DA程式。但是这并不重要,用户更关心的是程式的功能而不在乎它是用什幺方式来实现。在实现相同功能的前提下,通常应该选择DA程式,因为它有更好的相容性,稳定性以及速度。但是Hack规範提出得早,其功能也更强大,所以Hack程式资源比DA多很多了。