精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2010-06-03
论坛经常会看到交流代码的帖子,然而如果要让帖子上的代码在自己的机器上运行起来,可能不是一件容易的事情,如果没有提供下载包,就得自己新建若干类,然后 复制 粘贴,但其实用到的只是一个接口,如果实现类稍微复杂点,就还可能用到了一些第三方类库,部署起来就更麻烦了。
JIOPi提供了 所见即所得 的Java代码风格,即如果代码发布方将其代码编译成Jar包后放在一台服务器上,并配置成JIOPi标准模块库,即可发布 所见即所得 的Java代码,也就是可以直接复制论坛帖子上的 若干行测试代码 到一个测试类中,直接执行即可,而不用关心任何相关程序的下载、部署的问题,让代码交流更方便。
我这里就借用 Agrael 前些时候贴出来的一个 ReferenceMap 的实现来说明如何使用JIOPi-iBean来发布 所见即所得的测试代码,原文地址:http://www.iteye.com/topic/671298 源码还是挺多的,不过测试代码其实很短,下面回顾一下: public static void main(String[] args) throws Exception { ReferenceMap<Object, Object> referenceMap = new ReferenceMap<Object, Object>(ReferenceKeyType.WEAK, ReferenceValueType.WEAK); Object key = new Object(); Object value = new Object(); referenceMap.put(key, value); System.out.println(referenceMap.isEmpty()); // 返回 false // 由于是弱引用,所以将 key 或者 value 其中某一个 设置为 null 都可触发清除 key = null; // 将 key 消除强引用 //value = null; // 或者注释上面一行将该行取消注释,将 value 消除强引用 System.gc(); TimeUnit.SECONDS.sleep(5); System.out.println(referenceMap.isEmpty()); // 返回true,证明已经被清除,这期间不需要像WeakHashMap一样操作后才清除,并且保证并发安全 } 虽然 作者提供了 源码下载包,不过由于部分不是很关键的类的依赖,源码不能通过编译,于是我又改了源码,才运行了上述测试程序,前后花了差不多十分钟
如果用JIOPi模块库来发布,任何一个人运行这段代码估计要不到1分钟,要做的事情就是将下面的代码复制到一个测试类中,然后点IDE上的运行按钮:
import java.util.Map; import java.util.concurrent.TimeUnit; import org.jiopi.framework.CentralConsole; import org.jiopi.framework.FrameworkInitializer; public class ReferenceMapTest { public static void main(String[] args) throws Exception { FrameworkInitializer.initialize(); //Map<Object,Object> referenceMap = CentralConsole.accessControlPanel("agrael.collection.referencemap", null, Map.class.getName(), null); Map<Object,Object> referenceMap = CentralConsole.accessControlPanel("http://www.jiopi.org/ibean/resourcepools/modules/agrael.collection.referencemap/agrael.collection.referencemap.xml", null, Map.class.getName(), null); Object key = new Object(); Object value = new Object(); referenceMap.put(key, value); System.out.println(referenceMap.isEmpty()); key = null; System.gc(); TimeUnit.SECONDS.sleep(5); System.out.println(referenceMap.isEmpty()); } } 其实跟上面那段代码没有太大的不同,只是忽略了实现类的细节,取而代之的是 一个 模块的 URL地址,因为ReferenceMap 是Map的实现类,所以直接用Map类进行调用使用 注释掉的那行代码使用了模块名而非URL,是因为有配置文件进行了模块库的配置
当然,如果你现在将这段代码复制到你的Eclipse里面,还是不能执行的,因为你要安装iBean,安装iBean也很简单,只要将附件压缩包中的 iBeanWithJIOPi-0.3.0.0.jar放在lib下,jiopi.properties 放在classpath下即可,当然这是一劳永逸的事情,不用每次都安装
当然,不要认为一个几十k的jar能实现这些功能,这只是一个网络安装引导包,真正的程序是会在第一次运行时从网络下载,更多详细配置说明请下载发布程序:http://code.google.com/p/ibean/downloads/list
JIOPi 所见即所得 代码支持就介绍到这里,JIOPi目前已经可以很好的支持开发本地模块化Java系统,更多范例我会稍后逐一介绍,多谢大家捧场哈。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-02-22
支持下,过几天会详细了解的
|
|
返回顶楼 | |
浏览 2714 次