《开源框架那点事儿24》:开着跑车换轮胎
开着跑车换轮胎,这种情形您能想象吗?
近期,一段拍摄于沙特阿拉伯的视频就记录了这种超牛特技。
地址给大家分享一下:http://www.douban.com/group/topic/52087839。从短片中能够看到,这辆汽车在沙漠中前进。一名男性就站在车门外,在几个大转弯之后。汽车成功地側翻了约45度,仅靠2个轮子贴在地上行驶着。
画面显示五个戴着头巾的男子探身从一辆正在行驶的银色跑车里爬出来,司机像F1赛车手那样让车子側立起来,仅靠车身一側的两个车轮行驶,他们则非常麻利地更换了悬空的还有一側两个车轮。
五名男子接下来的表现让人大跌眼镜——完毕换轮胎特技表演后,他们并不急于回到车内。而是一脸兴奋的击掌和挥手庆祝,过路司机目瞪口呆地看完表演后纷纷加速超了过去。
据了解,这样的汽车绝技表演在阿拉伯十分流行,运用两轮贴地面行驶的超高难度技巧,考验着驾驶者与乘客间的绝佳默契。在Java框架使用中。你能体验这样的默契感吗?
带着思考,我们自然要联想到Java应用中比較常见的热部署。热部署是在不重新启动Java虚拟机的前提下,能自己主动侦測到class文件的变化,更新执行时class 的行为。
Java类是通过Java虚拟机载入的,某个类的class文件在被classloader载入后。会生成相应的Class对象。之后就能够创建该类的实例。大多数基于Java的应用server。包含EJBserver和Servlet容器,都支持热部署。类装入器不能又一次装入一个已经装入的类,但仅仅要使用一个新的类装入器实例,就能够将类再次装入一个正在执行的应用程序。
Tiny框架就是这样一部超牛的赛车,它支持在不停止应用的情况下,添加或删除业务单元。
Tiny构建者觉得,一个完整的框架可能须要有许很多多个部分组成,可是对于实际应用的用户来说,它可能仅仅须要当中的一部分功能。构架一定要有这样的能力。能够由使用者进行点菜式,使用。避免仅仅要用一点点功能。就要引入许很多多的内容。
TinyVFS把对各种各样的的文件系统的訪问封装成统一的应用程序接口,这大大的简化了应用程序本身代码的复杂度。通过业务单元管理器。能够在不停止其他业务单元的情况下,添加新的业务单元。或把已经安装的业务单元停止或下卸载。
这里所谓的业务单元,就是用来实现某种业务功能的完整集合,它包括了相关的Java Class文件、配置文件、媒体文件、界面展现文件(甚至支持把Jsp文件也放在Jar包中)等。
利用业务单元,程序猿能够进行软件开发、測试、公布,大慷慨便了业务的设计与公布。并且。业务单元之间也能够有依赖关系。假设某业务单元依赖的业务单元不存在或被停止时。则此业务单元也会被停止。
开着车换轮胎,使用Tiny来应用,这样的灵活性还体如今多个地方。
(1)Tiny流程的运行位置十分灵活,能够从流程的随意节点開始运行,流程可重入的特性能够实现页面流、工作流等功能。
(2)Tiny模板引擎是一个基于Java技术构建的模板引擎,它具有体量小、性能高和扩展易的特点。
适合于全部通过文本模板生成文本类型内容的场景,如:XML、源文件、HTML等等。能够说,它的出现就是为了替换Velocity模板引擎而来,因此在指令集上在尽量与Velocity接近的同一时候,又扩展了一些Velocity不能非常好解决这个问题的指令与功能,在表达多方面则尽量与java保持一致,所以非常的易学易用。
(3)无论对象是否是在Spring等容器中托管,都能够使用缓冲逻辑,实现了缓冲逻辑无容器要求。
在UI引擎的组件包中,每一个UI组件都是一个Jarproject,使得UI组件的集成由框架自己主动进行,而不必程序猿进行干预。
UI组件自发现功能,避免了大量配置工作。
(4)支持BigPipe模式。
利用Webserver和浏览器之间的并行运行能力。BigPipe首先把网页分解成多个可调用的Pagelet。多个Pagelet并行的在server端生成、网络传输、浏览器展现,从而大大提升展现效率与效果。
(5)在稳定性方面。Tiny框架是立足于在须要稳定、安全要求很高的应用环境中使用的,因此其稳定性就是框架构建者首要思考目标,核心部分仅仅使用经过充验证及广泛应用的第三方包。
总之,在这样的灵活性基础上。Tiny正在形成一个成熟的开源生态圈。包括了Tiny框架、Tiny开源组件、Tiny商业组件、Tiny技术支持、Tiny咨询、Tiny培训等。具有较强市场竞争力和可持续发展的体系。展现了一种新的软件产业发展模式。