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

More Related Content

Viewers also liked

Viewers also liked (13)

La săniuş
La săniuşLa săniuş
La săniuş
 
Kirola
KirolaKirola
Kirola
 
HMMWV recovery safety brief
HMMWV recovery safety briefHMMWV recovery safety brief
HMMWV recovery safety brief
 
Meu slide
Meu slideMeu slide
Meu slide
 
BB 11 Hopefuls...
BB 11 Hopefuls...BB 11 Hopefuls...
BB 11 Hopefuls...
 
Pemilihan Duta wisata indonesia 2010
Pemilihan Duta wisata indonesia 2010Pemilihan Duta wisata indonesia 2010
Pemilihan Duta wisata indonesia 2010
 
Introduction of JIOPi
Introduction of JIOPiIntroduction of JIOPi
Introduction of JIOPi
 
Creating Creative Superteams
Creating Creative SuperteamsCreating Creative Superteams
Creating Creative Superteams
 
You’ve Only Got Two Eyeballs: Designing Products for the Responsive Web
You’ve Only Got Two Eyeballs: Designing Products for the Responsive WebYou’ve Only Got Two Eyeballs: Designing Products for the Responsive Web
You’ve Only Got Two Eyeballs: Designing Products for the Responsive Web
 
RCPA
RCPARCPA
RCPA
 
Otc
OtcOtc
Otc
 
Job of Medical representative
Job of Medical representativeJob of Medical representative
Job of Medical representative
 
130605 webinale-nuisol
130605 webinale-nuisol130605 webinale-nuisol
130605 webinale-nuisol
 

Similar to Introduction of JIOPi

MobileWebAppFramework_V5_design
MobileWebAppFramework_V5_designMobileWebAppFramework_V5_design
MobileWebAppFramework_V5_designJackson Tian
 
广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化taobao.com
 
Kissy design
Kissy designKissy design
Kissy designyiming he
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)FLASH开发者交流会
 
电子书项目总结 前端
电子书项目总结 前端电子书项目总结 前端
电子书项目总结 前端jay li
 
000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲ArBing Xie
 
使用 laravel 的前與後
使用 laravel 的前與後使用 laravel 的前與後
使用 laravel 的前與後Shengyou Fan
 
D2-ETao-show
D2-ETao-showD2-ETao-show
D2-ETao-showleneli
 
谈谈模块化
谈谈模块化谈谈模块化
谈谈模块化衡锋 阳
 
你的 JS 該減肥了!5個提升網頁載入速度的技巧 - Modern Web 2020
你的 JS 該減肥了!5個提升網頁載入速度的技巧 - Modern Web 2020你的 JS 該減肥了!5個提升網頁載入速度的技巧 - Modern Web 2020
你的 JS 該減肥了!5個提升網頁載入速度的技巧 - Modern Web 2020Shubo Chao
 
[Baidu web frontend_conference_2010]_[sina_blog_architecture]
[Baidu web frontend_conference_2010]_[sina_blog_architecture][Baidu web frontend_conference_2010]_[sina_blog_architecture]
[Baidu web frontend_conference_2010]_[sina_blog_architecture]思念 青青
 
百度前端技术交流会-新浪博客前端架构分享
 百度前端技术交流会-新浪博客前端架构分享 百度前端技术交流会-新浪博客前端架构分享
百度前端技术交流会-新浪博客前端架构分享tiantianli
 
杨皓 新浪博客前端架构分享
杨皓 新浪博客前端架构分享杨皓 新浪博客前端架构分享
杨皓 新浪博客前端架构分享isnull
 
基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发mysqlops
 
百度分布式数据库 刘斌 Sacc2010
百度分布式数据库 刘斌 Sacc2010百度分布式数据库 刘斌 Sacc2010
百度分布式数据库 刘斌 Sacc2010Chuanying Du
 
百度分布式数据库平台
百度分布式数据库平台百度分布式数据库平台
百度分布式数据库平台Wyatt Fang
 
Javascript primer plus
Javascript primer plusJavascript primer plus
Javascript primer plusDongxu Yao
 
开源应用日志收集系统
开源应用日志收集系统开源应用日志收集系统
开源应用日志收集系统klandor
 
前端基础知识回顾
前端基础知识回顾前端基础知识回顾
前端基础知识回顾Wu tianhao
 
常用Js框架比较
常用Js框架比较常用Js框架比较
常用Js框架比较Adam Lu
 

Similar to Introduction of JIOPi (20)

MobileWebAppFramework_V5_design
MobileWebAppFramework_V5_designMobileWebAppFramework_V5_design
MobileWebAppFramework_V5_design
 
广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化
 
Kissy design
Kissy designKissy design
Kissy design
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
 
电子书项目总结 前端
电子书项目总结 前端电子书项目总结 前端
电子书项目总结 前端
 
000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲000 北京圣思园教育科技有限公司第一期面授培训大纲
000 北京圣思园教育科技有限公司第一期面授培训大纲
 
使用 laravel 的前與後
使用 laravel 的前與後使用 laravel 的前與後
使用 laravel 的前與後
 
D2-ETao-show
D2-ETao-showD2-ETao-show
D2-ETao-show
 
谈谈模块化
谈谈模块化谈谈模块化
谈谈模块化
 
你的 JS 該減肥了!5個提升網頁載入速度的技巧 - Modern Web 2020
你的 JS 該減肥了!5個提升網頁載入速度的技巧 - Modern Web 2020你的 JS 該減肥了!5個提升網頁載入速度的技巧 - Modern Web 2020
你的 JS 該減肥了!5個提升網頁載入速度的技巧 - Modern Web 2020
 
[Baidu web frontend_conference_2010]_[sina_blog_architecture]
[Baidu web frontend_conference_2010]_[sina_blog_architecture][Baidu web frontend_conference_2010]_[sina_blog_architecture]
[Baidu web frontend_conference_2010]_[sina_blog_architecture]
 
百度前端技术交流会-新浪博客前端架构分享
 百度前端技术交流会-新浪博客前端架构分享 百度前端技术交流会-新浪博客前端架构分享
百度前端技术交流会-新浪博客前端架构分享
 
杨皓 新浪博客前端架构分享
杨皓 新浪博客前端架构分享杨皓 新浪博客前端架构分享
杨皓 新浪博客前端架构分享
 
基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发基于Symfony框架下的快速企业级应用开发
基于Symfony框架下的快速企业级应用开发
 
百度分布式数据库 刘斌 Sacc2010
百度分布式数据库 刘斌 Sacc2010百度分布式数据库 刘斌 Sacc2010
百度分布式数据库 刘斌 Sacc2010
 
百度分布式数据库平台
百度分布式数据库平台百度分布式数据库平台
百度分布式数据库平台
 
Javascript primer plus
Javascript primer plusJavascript primer plus
Javascript primer plus
 
开源应用日志收集系统
开源应用日志收集系统开源应用日志收集系统
开源应用日志收集系统
 
前端基础知识回顾
前端基础知识回顾前端基础知识回顾
前端基础知识回顾
 
常用Js框架比较
常用Js框架比较常用Js框架比较
常用Js框架比较
 

Introduction of JIOPi

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