仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 653|回复: 10
打印 上一主题 下一主题

[学习教程] JAVA网页编程之OSGi中的服务模子与扩大者模子仓酷云

[复制链接]
因胸联盟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:22:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
C#是不行的,比如说美国的航天飞船里就有java开发的程序以上是我的愚见,其实不管那种语言,你学好了,都能找到好的工作,在OSGi中,完成bundle间交互和扩大性有两种罕见的体例,也就是服务模子(servicemodel)和扩大者模子(extendermodel)。
服务模子较为简单了解,在这个模子中包括了服务的供应者、利用者和注册中央。服务接口组成了供应者和利用者之间的左券,供应者将但愿他人挪用的服务公布到注册中央,利用者到注册中央查找切合需求的服务。在传统的服务模子中,都是经由过程查找的体例利用服务,可是跟着DeclarativeService和Blueprint的盛行,服务能够在运转时注进,简化了开辟职员的编码历程。

<br>
:OSGi中的服务模子(图片来历于《OSGi实战》)
扩大者形式更加天真和笼统,它是与OSGi的性命周期相干联的。在《OSGi实战》一书中是如许形貌扩大者形式的:扩大者形式面前的次要头脑是,在其他bundle的性命周期事务(安装、剖析、启动、中断等)上构建静态扩大性。一般,使用中的某个bundle饰演扩大者的脚色:它卖力监听bundle的启动、中断。当一个bundle启动时,扩大者会对其举行检测并判别它是不是是一个扩大bundle。扩大者反省bundle的清单文件(利用bundle.getHeaders())或bundle的内容(利用bundle.getEntry()),以此来寻觅它可以辨认的特定元数据。假如这个bundle的确包括一个扩大,那末该扩大会经由过程元数据来形貌。扩大者读取元数据并实行需要的义务,这有助于将扩大bundle集成到使用中。假如扩大bundle被中断,扩大者一样会监听到,此时扩大者会将相干的扩大从使用中移除。(《OSGi实战》一书由国民邮电出书社翻译出书,对应的笔墨来历于第89页)。在Eclipse插件开辟中最经常使用的扩大点模子就是一种典范的扩大者形式,不外这是Equinox的特有完成,并非OSGi标准的一部分。

<br>
:《OSGi实战》一书中图形样例所对应的扩大者形式
克日,针对这两种模子的好坏和利用场景,有人浏览在完ApacheFelix样例文档后发生了疑问,并在Stackoverflow举行了征询。OSGi范畴中的资深专家、Bndtools作者NeilBartlett对此举行了仔细的复兴,而OSGi同盟手艺总监PeterKriens更是专门撰写博文来注释这一成绩。
NeilBartlett以为服务更加经常使用,应当作为第一选择,除非有明白的来由才要计划新的扩大者。扩大者形式更加天真和笼统,可是了解和利用起来会加倍庞大。他以在OSGi使用中完成匡助体系作为例子,其他的bundle只需在商定的目次下包括一个HTML文档,中心的匡助体系bundle会扫描这些bundle以查找HTML文档并将其增加到主页的匡助索引中。这个特征假如利用服务来完成的话就会对照烦琐:假定遵守“白板(whiteboard)”形式,你必要界说一个带有getHelpDocuments()办法的HelpProvider接口,任何想供应匡助内容的bundle都必要完成这个接口并将其注册为服务。而假如接纳扩大者形式的话会加倍烦琐,由于可以跟踪到bundle的到来和消散。在实际天下中,扩大者模子用到了以下的中央:


  • DeclarativeServices是一个扩大者,它会查找其他bundle中的Service-Component声明,而且会实行初始化组件、注进服务等操纵。
  • Blueprint也是一个扩大者,所做的事变很相似,它会查找Bundle-Blueprint声明或商定路径下的XML文件。
  • OSGi企业级标准所界说的JPA扩大者会查找Meta-Persistence头信息中所声明的persistence.xml。假如找到的话,将会为该bundle创立耐久化单位。
  • Eclipse也包括了扩大者(所起的名字有点使人感应利诱,叫做ExtensionRegistry)。Eclipse利用它来创立视图、透视图和菜单等,它们经由过程位于bundle根目次中的plugin.xml文件举行声明。
总而言之,服务用来基于左券注册和查找对象,而扩大者用来扩大bundle的功效,一般会基于某品种型的资本声明或头信息,而不是可实行的代码。
ChristianSchneider是Talend的开源软件开辟职员,次要事情内容包含ApacheCamel、ApacheKaraf和ApacheCXF,针对这个成绩,他的意见是扩大者次要用于框架当中,它必要懂得bundle的外部完成,因而倒霉于松耦合,可是其上风在于可以界说全新的笼统功效,如Blueprint、DeclarativeServices和CDI,这些框架都是利用扩大者模子将bundle依照必定的标准拆卸在一同的。而服务关于使用自己来讲是准确的选择,它可以埋没完成的细节,同时可以制止服务的利用者实例化类,因而有益于完成松耦合。在实践中,我们常常会组合利用它们,如可使用CDI注解来拆卸服务,在外部CDI会利用扩大者模子,而关于使用自己来讲则利用服务来将bundle拆卸在一同。
在PeterKriens的博文中,他将bundle、服务和扩大者类比为一样平常的社会交换。在社会交换场景中,我们会饰演分歧的脚色,如贸易买卖中的发卖方和购置方。在OSGi中,
沙发
发表于 2015-1-20 22:08:17 来自手机 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
爱飞 该用户已被删除
板凳
发表于 2015-1-27 09:46:28 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
再见西城 该用户已被删除
地板
发表于 2015-1-30 21:39:50 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
不帅 该用户已被删除
5#
发表于 2015-1-31 15:33:39 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
乐观 该用户已被删除
6#
发表于 2015-2-2 22:08:57 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
灵魂腐蚀 该用户已被删除
7#
发表于 2015-2-8 11:03:22 | 只看该作者
有时间再研究一下MVC结构(把Model-View-Control分离开的设计思想)
深爱那片海 该用户已被删除
8#
发表于 2015-2-23 02:55:49 | 只看该作者
你一定会高兴地说,哈哈,原来成为Java高手就这么简单啊!记得Tomjava也曾碰到过一个项目经理,号称Java很简单,只要三个月就可以学会。
莫相离 该用户已被删除
9#
发表于 2015-3-7 05:29:52 | 只看该作者
Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台
愤怒的大鸟 该用户已被删除
10#
发表于 2015-3-14 10:50:50 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
再现理想 该用户已被删除
11#
发表于 2015-3-21 03:02:42 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-11-14 22:11

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表