`
yipsilon
  • 浏览: 244734 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

OSGi + XML = XML应用程序?

阅读更多

最近将N久以前的项目整理了一下,发现我很早之前搁置的项目,现在已经是时机重新启动了,它就是 XMLX 项目。

 

XMLX项目建立之初本想使用Java的一些模块特性,来动态把XML解析成应用程序,例如图形界面等。但是当时由于没有成熟的模块机制,所涉及出来的功能模块开发时非常繁琐,直接导致入门门槛很高(主要是因为是自己设计的API,文档没有及时跟上),于是乎,就被搁置了。

 

如今,OSGi技术已经成熟了,使用OSGi作为XMLX的模块平台,可以说是极爽的一件事情。

 

对于我的想法,可以从下面的代码中展示出来:

<?xml version="1.0" encoding="utf-8"?>
<!-- com.cmspad.xmla.swt 为支持SWT核心部件标记的Bundle -->
<!-- com.cmspad.xmla.swt.layout 为支持SWT布局部件标记的Bundle -->
<!-- com.cmspad.osgi 为系统核心功能标记,提供各种有用的功能 -->
<Shell xmlns="com.cmspad.xmla.swt:(1.0.0,2.0.0]" xmlns:t="com.cmspad.osgi" xmlns:l="com.cmspad.xmla.swt.layout:1.0.0"
  t:id="hello" 
  text="Hello World" 
  style="DIALOG_TRIM,MAX,MIN" 
  size="300,200"
  l:layout="grid"
  l:numColumns="3"
  defaultButton="aButton">
<button text="Button 1"/>
<button text="Button 2"/>
<button t:id="aButton" text="Button 3" l:horizontalAlignment="FILL" l:grabExcessHorizontalSpace="yes"/>
<button text="Button 4"/>
<button>Button 5</button>
<button text="Button 6" l:horizontalAlignment="FILL" l:grabExcessHorizontalSpace="yes"/>
</Shell>

 以上的代码,用过SWT的同学应该不难理解。XML与OSGi结合之处,就是通过XML的命名空间,来区分不同Bundles的功能。 看看效果图吧:

 

这样,我们只要在开发相应的Bundles,就可以实现各种应用,当然,在这过程中还需要有一个API规范来指导开发。

 

这只是一个想法,距离完整实现还有一段时间,大家可以发表一下自己的想法和建议~~

  • 大小: 5.5 KB
分享到:
评论
9 楼 yipsilon 2009-09-22  
鱼言风语 写道
你这个项目不就是用来做UI的吗?现在都提倡UI与逻辑分离,你要把这2者榜定在一起?

逻辑是什么呢?就是控制事件和事务处理?这些都可以在插件中做以达到UI与逻辑分离呀,而XML作为UI部分仅仅是调用插件的功能和进行一些简单互动而已,不是么?

关于嵌入代码问题,曾经的 XMLX 前身 SWT-XUI 就支持JavaScript、BeanShell、Groovy等嵌入式脚本,这个实现起来是没有问题。

至于调试问题,我觉得应该跟网页调试差不多了,加入使用javascript做脚本引擎,一旦脚本有问题了,rhino也会抛出各种错误。当然,如果这项目实现出来了,也会把错误定位这块儿给尽力做出来的。
8 楼 鱼言风语 2009-09-22  
yipsilon 写道
鱼言风语 写道
有这个必要吗?
微软的xaml,mozira的xul都提出多少年了


我对XAML和XUL没有太深入的了解,但据我所知,XAML主要是用于界面的设计上,而XUL它只能在浏览器沙箱里工作。两者好像扩展起来都非常复杂。

我的想法就是在OSGi平台下,可以快速开发出标记插件来实现对XML应用程序的支持。而对于OSGi的开发,目前有强大的Eclipse在支持,可所谓踩在巨人的脚背上....

如果把这个项目做成只要鼠标一点击特定后缀名的XML文件,就可以直接运行,就像执行一个可执行程序一样。这样的话,假设说我们开发出来了HTML的扩展插件,那么会HTML的人,就可以写程序了,不是么?



你这个项目不就是用来做UI的吗?现在都提倡UI与逻辑分离,你要把这2者榜定在一起?
7 楼 linliangyi2007 2009-09-22  
想法很不错

不过程序很难写,准确说很难调试,想想把,Java编译器,跟踪器全被你废了武功了,呵呵,楼主够狠的。
6 楼 紧急下潜 2009-09-22  
yipsilon 写道
鱼言风语 写道
有这个必要吗?
微软的xaml,mozira的xul都提出多少年了


我对XAML和XUL没有太深入的了解,但据我所知,XAML主要是用于界面的设计上,而XUL它只能在浏览器沙箱里工作。两者好像扩展起来都非常复杂。

我的想法就是在OSGi平台下,可以快速开发出标记插件来实现对XML应用程序的支持。而对于OSGi的开发,目前有强大的Eclipse在支持,可所谓踩在巨人的脚背上....

如果把这个项目做成只要鼠标一点击特定后缀名的XML文件,就可以直接运行,就像执行一个可执行程序一样。这样的话,假设说我们开发出来了HTML的扩展插件,那么会HTML的人,就可以写程序了,不是么?

据我所知,XAML里面可以内嵌代码
5 楼 WIN 2009-09-22  
可怕的家伙
4 楼 yipsilon 2009-09-22  
鱼言风语 写道
有这个必要吗?
微软的xaml,mozira的xul都提出多少年了


我对XAML和XUL没有太深入的了解,但据我所知,XAML主要是用于界面的设计上,而XUL它只能在浏览器沙箱里工作。两者好像扩展起来都非常复杂。

我的想法就是在OSGi平台下,可以快速开发出标记插件来实现对XML应用程序的支持。而对于OSGi的开发,目前有强大的Eclipse在支持,可所谓踩在巨人的脚背上....

如果把这个项目做成只要鼠标一点击特定后缀名的XML文件,就可以直接运行,就像执行一个可执行程序一样。这样的话,假设说我们开发出来了HTML的扩展插件,那么会HTML的人,就可以写程序了,不是么?
3 楼 鱼言风语 2009-09-22  
xuyao 写道
鱼言风语 写道
有这个必要吗?
微软的xaml,mozira的xul都提出多少年了

楼上的看的懂人话吗?人家就是个想法,和TMD微软xaml有个鸟关系?我认为这个就是很不错的想法。最鄙视你这样人,不奉献自己的思想还在旁边风言风语。话说回来,这个和xml应用确实关系不大,只是用osgi来区分buddle?模块化?



说话跟文革红卫兵一样,lz自己都说了“大家可以发表一下自己的想法和建议”,难道容不得别人一点点的质疑吗?

“如无必要,勿增实体”,重复做别人做的事情,如果不能做的更好,有意思吗?
无非是浪费自己和别人的时间精力
时间精力可以做别的更多的事情,软件还很多领域可以去做
2 楼 xuyao 2009-09-22  
鱼言风语 写道
有这个必要吗?
微软的xaml,mozira的xul都提出多少年了

楼上的看的懂人话吗?人家就是个想法,和TMD微软xaml有个鸟关系?我认为这个就是很不错的想法。最鄙视你这样人,不奉献自己的思想还在旁边风言风语。话说回来,这个和xml应用确实关系不大,只是用osgi来区分buddle?模块化?
1 楼 鱼言风语 2009-09-22  
有这个必要吗?
微软的xaml,mozira的xul都提出多少年了

相关推荐

    OSGi+SpringMVC+Spring+Hibernate企业应用框架

    辛苦研究了一个多月,终于搭建成了一个可用于实际应用开发的OSGI-WEB框架,采用OSGi+SpringMVC+Spring+Hibernate+Virgo技术,鉴于此类技术架构甚少,特提供出来供大家参考。 使用步骤: 一、下载STS搭建Osgi开发...

    OSGI + Webservice 例子

    OSGI(Open Services Gateway Initiative)是一种开放标准,用于创建模块化和可扩展的Java应用程序。它提供了一种灵活的框架,允许开发人员将应用程序分解为独立的模块,这些模块称为服务。OSGI的核心是它的模块系统...

    OSGi 入门+进阶+实战

    OSGi(Open Services Gateway Initiative)是一种开放标准,用于创建模块化和可管理的Java应用程序。它的核心特性是基于服务的架构,允许动态发现、安装、卸载和升级软件组件,从而提高了灵活性和可维护性。OSGi技术...

    基于OSGi和Spring开发Web应用.doc

    9. Web 应用 bundle:Web 应用 bundle 是一个基于 OSGi 和 Spring 的 Web 应用程序,能够提供更加强大的灵活性和可靠性。 本文通过一个简单实例,介绍了如何利用 Spring-DM 开发基于 OSGi 和 Spring 架构的 Web ...

    【BluePrint】使用 Blueprint Container 规范构建 OSGi 应用程序

    在IT行业中,OSGi(Open Services Gateway Initiative)是一种模块化软件开发框架,它允许开发者将应用程序分解为独立的、可重用的组件,称为服务。这些组件可以动态地安装、卸载和升级,无需重启应用服务器。...

    基于OSGi和Spring开发Web应用教程

    在基于OSGi和Spring开发Web应用中,OSGi(Open Services Gateway Initiative)是一个开放标准,用于创建模块化Java应用程序。它允许开发者将应用程序分解为独立的模块,称为bundle,每个bundle都包含自己的类路径、...

    OSGI实战+进阶

    OSGI的核心概念是服务和模块化,它的出现解决了Java应用程序的复杂性问题,使得组件之间的依赖关系更加清晰,同时也支持动态部署和更新。 在"OSGI实战"中,你将学习到如何使用OSGI来开发模块化的Java应用。实战部分...

    OSGI应用程序

    OSGI(Open Services Gateway Initiative)应用程序是一种遵循OSGi规范构建的模块化软件系统。它允许开发者将应用程序拆分成独立的、可热插拔的模块,称为服务或bundle。Eclipse Equinox是OSGI联盟规范的一个实现,...

    osgi 插件开发

    3. **编写模块化代码**:使用OSGi API开发模块化的应用程序,并利用容器提供的服务进行交互。 4. **测试与部署**:在容器中部署和测试应用程序,确保所有模块能够正确工作。 #### 结语 随着技术的不断进步和发展,...

    OSGI应用中整合Spring、Mybatis、Spring MVC案例

    Spring MVC是Spring框架的一部分,用于构建Web应用程序。在OSGI环境中集成Spring MVC,我们需要处理Servlet的生命周期和路由问题。通常,我们需要一个OSGI兼容的Servlet容器,如Pax Web,来托管Spring MVC的应用。...

    osgi学习笔记(一)

    本文将深入探讨OSGi的基本概念、架构以及如何使用它来构建可扩展和灵活的Java应用程序。 首先,我们需要了解OSGi的核心概念——模块化。在OSGi中,每个Java应用程序被划分为独立的模块,称为“bundle”。这些bundle...

    spring osgi 入门

    Spring Dynamic Modules (Spring DM) 是Spring Framework的一个扩展项目,它使得Spring可以在OSGi环境中运行,进而为开发者提供了模块化的应用程序开发能力。通过将Spring与OSGi相结合,开发者能够享受到以下优势: ...

    基于osgi整合ssm框架注解开发

    SSM(Spring、SpringMVC、MyBatis)框架是Java Web开发中常见的技术栈,而OSGi(Open Service Gateway Initiative)则是一种模块化系统,主要用于解决Java应用程序的动态性、可扩展性和版本管理问题。将SSM框架与...

    MQTT测试工具-paho+for+eclipse

    在"MQTT测试工具-paho+for+eclipse"这个场景中,Paho被用作一个客户端工具,集成在Eclipse环境中,便于开发者测试和调试MQTT应用程序。 首先,`paho.exe`是Eclipse Paho MQTT C/C++客户端的可执行文件,它可以独立...

    osgi-tutorial.zip

    与Spring框架的XML配置类似,Blueprint使得我们在OSGi环境中能够以声明式方式管理我们的应用程序组件。 接下来,我们将Spring框架与OSGi结合。Spring框架以其强大的依赖注入(DI)和面向切面编程(AOP)能力著称,...

    开发一个简单的 OSGi Web 应用实例

    **背景:** OSGi (Open Service Gateway Initiative) 是一种模块化容器,它允许Java应用程序以模块化的形式组织起来,每个模块被称为一个“bundle”。OSGi不仅支持模块化编程,还支持热部署和动态配置等功能,非常...

    osgi 在web容器中部署

    OSGi(Open Services Gateway Initiative)是一种Java模块化系统,它允许开发人员将应用程序分解为一组可独立更新和管理的小型服务。在Web容器中部署OSGi应用,特别是像Tomcat这样的流行Servlet容器,可以提高应用的...

Global site tag (gtag.js) - Google Analytics