`
jiopi
  • 浏览: 32301 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

使用JIOPi-iBean实现代码所见即所得-交流代码更方便

阅读更多

论坛经常会看到交流代码的帖子,然而如果要让帖子上的代码在自己的机器上运行起来,可能不是一件容易的事情,如果没有提供下载包,就得自己新建若干类,然后 复制 粘贴,但其实用到的只是一个接口,如果实现类稍微复杂点,就还可能用到了一些第三方类库,部署起来就更麻烦了。

 

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系统,更多范例我会稍后逐一介绍,多谢大家捧场哈。

分享到:
评论
2 楼 bugu1986 2011-02-22  
支持下,过几天会详细了解的
1 楼 hell_liul 2010-06-04  
学习一下!

相关推荐

    JFinal 最新2.2版本的开发手册

    - **Controller**:创建 Controller 类,实现具体的业务逻辑和视图展示。 - **Model**:根据数据库表结构生成对应的 Model 类。 **2.5 启动项目** - **步骤**:使用 Tomcat 或者其他服务器启动项目。 - **验证**:...

    Bean开发实例之三实体Bean开发实例

    **定义查询**:实体Bean可以通过定义查询方法来实现更复杂的数据检索任务。例如,在`Student`实体Bean中,可以定义一个查询方法来找出所有姓张的学生。 **建立关系**:实体Bean还可以建立与其他实体Bean的关系,...

    0014_wireless_sensornetwork_wirelesspower_utility_

    总之,"0014_wireless_sensornetwork_wirelesspower_utility_" 的主题展示了无线传感器网络领域的一个重要方向,即通过无线电源技术提高网络的实用性,并结合iBean网络的实践,展示了如何在实际应用中实现超低功耗和...

    Dependency-Injection-Framework:Salesforce(Apex)依赖注入框架

    依赖注入框架 Salesforce(Apex)依赖... IBean,AccountTypeBean和AccountTypeBean2是与控制器和visualforce页面示例关联的类。 TestAccountTypeBean和TestUpdateAccountTypeController是它们各自类的两个测试类。

    通信与网络中的一种基于传感器网络中的能量消耗问题研究

    此外,新兴的无线技术,如iBean无线发射机,可以在无电池的情况下利用环境能量传输数据,为远程传感器网络提供解决方案。 2. **传感子系统**:该系统包括传感器和ADC,负责数据采集。通过选用低功耗传感器和控制...

    Java Ioc例子,基于反射.rar

    Java Ioc例子,基于反射,PS:lfioc能够自动识别set、get方法,比如set字段a时,a、A、setA三种写法在lfioc中都是允许的。以字符串方式获得Bean实例,为Bean中setA注入数据,为setB注入数据,获得IBean接口。

    SSM常用Maven依赖

    SSM基本的Maven依赖文件,测试可用

Global site tag (gtag.js) - Google Analytics