Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introduction of JIOPi

Introduction of JIOPi

  • Login to see the comments

  • Be the first to like this

Introduction of JIOPi

  1. 1. 构建工业模型的Java模块系统<br />JIOPi项目介绍<br />
  2. 2. 章节<br />起因<br />目标<br />建模<br />装配<br />模块化系统<br />框架特点<br />Hello World <br />无API侵入风格<br />级联式资源库<br />容器整合<br />类加载模型<br />总结<br />
  3. 3. 起因<br />Jar包升级繁琐<br />lib目录Jar管理混乱<br />Jar依赖冲突<br />局部实现更换几乎不可能<br />分布部署时的边界较难重新规划<br />
  4. 4. 目标<br />Jar包自动兼容性升级<br />lib下仅放置被直接使用的Jar<br />忽略实现类细节<br />配置式模块更换<br />弱化分布部署的边界<br />
  5. 5. 建模<br />工业产品模块系统模型<br />模块标准化<br />图纸设计<br />模块高度可复用性<br />自由选择实现模块适应需求变化<br />
  6. 6. 装配<br />Star Trek Voyager Holodeck装配模型<br />自动默认装配<br />Computer ... di~ ... Give me a Benz SLS<br />配置式装配<br />Computer ... di~ ... Benz SLS with Engine V9<br />级联式装配和级联式装配文件<br />自动双向连接与可选插口连接<br />
  7. 7. 模块化系统<br />Classpath:编译时和运行时保持一致性<br />模块隔离:独立ClassLoader<br />接口导出:API与IMPL 独立打Jar包模式<br />依赖管理:API部署与配置文件<br />可选依赖:可选插口连接模型<br />POJO兼容:一致的部署方式和调用方式<br />
  8. 8. 框架特点<br />轻量级模块化框架<br />部署于Classpath下的Jar小于50k<br />自动升级<br />随时修复Bug与提升性能<br />非侵入式<br />JIOPi模块无需修改即可用于其它Java系统<br />高兼容性<br />兼容所有Java(J2SE J2EE)系统,以及WEB容器无缝整合<br />无API侵入风格<br />对模块的访问无需添加框架API<br />
  9. 9. HelloWorld<br />所见即所得模式代码<br />ModuleConsole car = CentralConsole.accessModuleConsole("voyager.benz.car_sls_amg", "0.1.0.0");<br />ControlPanelbenzSlsAmg = car.accessControlPanel("voyager.car", ControlPanel.class);<br />System.out.println(benzSlsAmg.operate("getStatus", String.class));<br />API部署模式代码<br />ModuleConsole car = CentralConsole.accessModuleConsole("voyager.benz.car_sls_amg", "0.1.0.0");<br />Car benzSlsAmg = car.accessControlPanel(Car.class.getName(), Car.class);<br />System.out.println(benzSlsAmg.getStatus());<br />
  10. 10. 无API侵入风格<br />POJO代码<br />public class MyMailSender implements MailSender{}<br />public class MyMail implements Mail{}<br />MyMailSender.sendMyMail("姓名<to@yourmail.com>", "hello", "content test");<br />Mail myMail = new MyMail();<br />myMail.addTo("to@yourname.com","姓名");<br />myMail.setSubject("测试邮件");<br />myMail.setTextMsg("测试内容");<br />MailAttachment attachment = new MailAttachment(new URL());<br />myMail.attach(attachment);<br />myMail.send();<br />配置文件<br /><module name="jiopi.module.mailsender" version="0.1"><br /><controlpanel name="jiopi.MailSender" id="mymail"><br /><properties>… </properties><br /></controlpanel><br /><controlpanel name="jiopi.Mail" id="mymail"><br /><inner-accessory id="mailSender" module="this" configuration="mymail"/><br /></controlpanel><br /></module><br /><redefine class="org.jiopi.ibean.show.mailsender.MyMailSender" module="jiopi.module.mailsender" version="0.1" controlpanel="jiopi.MailSender" configuration="mymail"/><br /><redefine class="org.jiopi.ibean.show.mailsender.MyMail" module="jiopi.module.mailsender" version="0.1" controlpanel="jiopi.Mail" configuration="mymail"/><br />
  11. 11. 级联式资源库<br />标准网络资源库<br />标准配置文件模式<br />可使用多种网络协议部署<br />支持分离式部署<br />简化集群环境中的类库管理<br />jiopi.resourcepool.local.path= http://.....<br />jiopi.resourcepool.local.pri=2<br />本地开发资源库<br />与开发环境一致<br />无需配置文件<br />jiopi.resourcepool.local.path= file:/.....<br />jiopi.resourcepool.local.pri=2<br />
  12. 12. 容器整合<br />WEB容器整合<br />将配置好的jiopi.properties文件放入JIOPi-iBean.jar中<br />将JIOPi-iBean放入WEB容器的扩展lib目录,如tomcat-home/lib中<br />在WEB应用的classpath中添加一个修改了ibean.work.dir配置的jiopi.properties文件<br />在WEB应用启动时调用FrameworkInitializer.initialize();框架初始化函数<br />当前WEB容器便成为一个支持JIOPi模块化编程风格的WEB容器<br />IoC容器整合<br />代理模式<br /><bean id="jiopi" singleton="false" class="org.jiopi.framework.CentralConsole" factory-method="accessControlPanel"/><br />appContext.getBean("jiopi","jiopi.ibean.helloworld.i",null,"org.jiopi.ibean.example.module.helloworld.HelloWorldImpl", HelloWorld.class,new Object[]{});<br />直接定义模式<br /><bean id="helloworld" singleton="false"<br /> class="org.jiopi.framework.CentralConsole" factory-method="accessControlPanel"><br /> <constructor-arg type="java.lang.String"><value>jiopi.ibean.helloworld.i</value></constructor-arg><br /> <constructor-arg type="java.lang.String"><null/></constructor-arg><br /> <constructor-arg type="java.lang.String"><value>org.jiopi.ibean.example.module.helloworld.HelloWorldImpl</value></constructor-arg><br /> <constructor-arg type="java.lang.Class"><value>org.jiopi.ibean.example.blueprint.helloworld.HelloWorld</value></constructor-arg><br /> <constructor-arg type="java.lang.Object[]"><list></list></constructor-arg><br /> </bean><br />appContext.getBean("helloworld",HelloWorld.class);<br />
  13. 13. 类加载模型<br />Blueprint<br />Common Lib<br />Resource Pool <br />Module<br />Execution Environment<br />
  14. 14. 总结<br />IOP编程和模块编程提议<br />无API侵入的透明轻量级实现<br />忽略实现类细节和避免Jar依赖冲突<br />友好的POJO风格开发和部署模式<br />无运行时负担和运行时风险<br />易于团队协作<br />
  15. 15. 谢谢观看<br />2010年6月<br />

×