Introduction of JIOPi

1,364 views

Published on

Introduction of JIOPi

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,364
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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 />

×