论坛经常会看到交流代码的帖子,然而如果要让帖子上的代码在自己的机器上运行起来,可能不是一件容易的事情,如果没有提供下载包,就得自己新建若干类,然后 复制 粘贴,但其实用到的只是一个接口,如果实现类稍微复杂点,就还可能用到了一些第三方类库,部署起来就更麻烦了。
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系统,更多范例我会稍后逐一介绍,多谢大家捧场哈。
分享到:
相关推荐
- **Controller**:创建 Controller 类,实现具体的业务逻辑和视图展示。 - **Model**:根据数据库表结构生成对应的 Model 类。 **2.5 启动项目** - **步骤**:使用 Tomcat 或者其他服务器启动项目。 - **验证**:...
**定义查询**:实体Bean可以通过定义查询方法来实现更复杂的数据检索任务。例如,在`Student`实体Bean中,可以定义一个查询方法来找出所有姓张的学生。 **建立关系**:实体Bean还可以建立与其他实体Bean的关系,...
总之,"0014_wireless_sensornetwork_wirelesspower_utility_" 的主题展示了无线传感器网络领域的一个重要方向,即通过无线电源技术提高网络的实用性,并结合iBean网络的实践,展示了如何在实际应用中实现超低功耗和...
依赖注入框架 Salesforce(Apex)依赖... IBean,AccountTypeBean和AccountTypeBean2是与控制器和visualforce页面示例关联的类。 TestAccountTypeBean和TestUpdateAccountTypeController是它们各自类的两个测试类。
此外,新兴的无线技术,如iBean无线发射机,可以在无电池的情况下利用环境能量传输数据,为远程传感器网络提供解决方案。 2. **传感子系统**:该系统包括传感器和ADC,负责数据采集。通过选用低功耗传感器和控制...
Java Ioc例子,基于反射,PS:lfioc能够自动识别set、get方法,比如set字段a时,a、A、setA三种写法在lfioc中都是允许的。以字符串方式获得Bean实例,为Bean中setA注入数据,为setB注入数据,获得IBean接口。
SSM基本的Maven依赖文件,测试可用