zoukankan      html  css  js  c++  java
  • OSGI起程一——确定目标

    年初领导接到项目,要求写一个Java桌面程序,要求只有一个:可动态添加及移除模块。

    对java使用一直处于鸡肋状态,环境不精通,但在java环境中使用公司的java组件产品游刃有余。接到任务后,开始搜索相关资料。网上搜到的相关资料,模块化的java程序,基本都指向了osgi,自己就开始看osgi方面的资料。

    现在想想自己的求索之路还是比较艰辛的,主要是自己心里有底触情绪,后来总结了,做事不要有底触情绪,因为不管你有没有,事情终归是要做的。

    对行业来说,会涉及业务的方方面面,每一方面都可被认为是一个独立的功能模块。一个行业的多个项目中,会有相同功能模块的交集。在这种情况下,如果有资源能够积累,想像一下,将各个功能做成一个个单独的东东,哪个项目要用就直接拿去,这样,除了界面以外,功能性的东西都是现成的,项目这样做起来是不是便捷了很多呢,抑或是界面库,是否也可以通过参数变幻界面的风格。所有的努力,都为了让我们的功能模块更能够被广泛使用,而不是为一个项目所服务。

    参考了其他程序后,对java桌面有了初步的规划,模块情况如下(先解释下,osgi中每个独立的模块即为bundle):

    1.相关jar包模块(ISmUtilJarService),即通用的jar包转换为一个功能bundle,供所有的功能模块使用(后续会提到为何要将公用jar做成一个公共bundle); 

    2.工具模块(ISmUtilService),该模块主要存放一些通用的函数,如String相关或其它,均放在此处进行处理,供所有功能模块使用;

    3.数据模块(ISmWorkspaceService),该模块主要存放数据处理相关操作等,此处将数据单独放在一个Bundle中,主要是因为要考虑到工作空间(SuperMap存放数据的容器——Workspace,存放数据的变量)需要在整个环境中仅有一个实例,即不能被创建多次,且其它的功能模块都要从工作空间中取数据,基于此方面考虑,就创建了一个数据处理的模块;

    4.界面模块(ISmUIService),这个界面主要负责界面展现,及其它模块对界面元素的获取、界面元素状态的判断等;

    以上四个为必须模块,因为基于以上模块,我们可以看到界面,也可以基于界面进行一些数据处理,但仅仅有如上四个模块完全不够。因为我们是一个java桌面,这个桌面应用程序的主体是地图,不管是二维的还是三维的,所以我们就有了其它可添加可移除的模块;

    5.地图模块(ISmMapService),这个模块主要负责地图的相关处理,如地图上选中对象后弹出右键菜单、地图漫游等;

    6.三维场景模块(ISmSceneService),这个模块主要负责三维场景的相关处理; 

  • 相关阅读:
    mac os apache 配置方法详细介绍
    反向代理-- WEB服务的加速器[转]
    Nginx 配置基于域名的虚拟
    centos yum 安装 mongodb 以及php扩展
    优秀 Java 程序员写代码的风格,不再留坑给别人
    优秀 Java 程序员写代码的风格
    Java 必看的 Spring 知识汇总!有比这更全的算我输!
    Java Web技术经验总结
    在Java中字符串是通过引用传递的?
    15个顶级Java多线程面试题及答案
  • 原文地址:https://www.cnblogs.com/emily_fly/p/2162831.html
Copyright © 2011-2022 走看看