我知道编辑这个网站吗?
核心 SciJava 软件库本页介绍 核心 SciJava 软件库。

科学Java

SciJava 是一个为科学提供软件的项目合作项目 计算——在可行的情况下合作和重用代码的努力。

它也是基础软件库的集合,在此基础上 ImageJ2Fiji已建成。

SciJava 组件集合

以下组件层是 SciJava component collection 的一部分:

  • SciJava - 不特定于图像处理的基础层,包括具有强大插件框架和应用程序容器的SciJava Common共享库,以及基于其构建的插件。
  • ImgLib2 - N 维图像处理的核心库。
  • SCIFIO - N 维图像 I/O 的核心库。
  • ImageJ2 - N 维图像处理的核心库和应用程序。
  • Fiji - ImageJ 和 ImageJ2 的“包含电池”分布,捆绑了许多有助于科学图像分析的插件。
  • BigDataViewer - 重新切片浏览器和 Fiji 插件,用于 TB 大小的多视图图像序列
  • TrakEM2 - 斐济插件套件,用于形态数据挖掘、三维建模和图像拼接、注册、编辑和注释。
  • Bio-Formats - 用于生命科学图像格式 I/O 的库和 ImageJ 插件。

该集合中的所有组件均由 SciJava 的 Bill of Materials 管理,以便下游组件更轻松地使用它们,而不会出现版本冲突。

SciJava 承诺

以下项目是 SciJava 承诺的一部分,旨在尽可能地共同努力、重用代码和协同作用:

ImageJ2

CellProfiler

KNIME

OMERO

scenery

Fiji

Icy

Micro-Manager

VCell

Bio-Formats

Alida

MiToBo

有关更多详细信息,请参阅ArchitectureGovernance页面以及SciJava website

SciJava 常见

SciJava Common 是SciJava软件的通用库。它提供了一个插件框架,具有用于服务发现的可扩展机制,由其自己的注释处理器支持,以便可以动态加载插件。 ImageJ2SCIFIO 都使用它。

插件框架

首先,SciJava Common 是一个插件框架——开发高度模块化和可扩展的 Java 应用程序的基础。

插件发现

Java 类路径上的所有可用插件都会自动发现并可用。这是通过扫描文件路径META-INF/json/org.scijava.plugin.Plugin的类路径资源来完成的。此类文件由 Java 注释处理器在编译时生成,该处理器根据 Java 类上的 @Plugin 注释编写这些文件,这一想法受到 SezPoz 项目的启发。

应用程序容器

所有程序状态(例如可用插件)都可以从称为“应用程序上下文”的根对象访问。

服务

ImageJsingleton,使用静态方法来访问其大部分功能,而ImageJ2 将其程序状态封装在应用程序上下文中,允许同一 JVM 中同时存在多个此类上下文。

ImageJ2 将其各个部分封装为单独的“服务”,提供相关的状态功能并跟踪相关的程序状态。 net.imagej.ImageJ类的实例只不过是这些服务的集合;该实例称为“应用程序网关”。服务被定义为接口,具体实现为插件。此设计在正确的位置提供了seams,以便可以自定义和覆盖每个级别的行为。

SciJava 服务

以下是 SciJava Common 的一些主要核心服务:

  • AppService - 跟踪上下文中存在的软件应用程序(SCIFIO、ImageJ2 等)。
  • DisplayService - 跟踪可用显示以及活动显示,并提供创建新显示以可视化数据的方法。
  • EventService - 将事件发布到event bus,并允许感兴趣的各方订阅它们。该服务提供了代码库各个部分之间通信的中心方式。
  • IOService - 用于在上下文中打开和保存数据的通用工具。
  • MenuService - 构建应用程序菜单结构。
  • ModuleService - 跟踪可用模块,并提供执行它们的基础设施。
  • ObjectService - 跟踪各种类型的可用对象,包括DatasetDisplay
  • OptionsService - 用于管理程序设置的工具。
  • PlatformService - 提供用于根据部署平台(操作系统、Java 版本等)扩展应用程序行为的挂钩。
  • PluginService - 跟踪可用插件,并提供执行它们的基础设施(使用ModuleService)。
  • ScriptService - 提供用于运行脚本和宏的实用程序。
  • StatusService - 发布正在进行的操作的状态更新。
  • ThreadService - 管理多线程。
  • ToolService - 跟踪可用工具(将用户输入与行为绑定的逻辑)以及活动工具(在工具栏上选择)。
  • UIService - 发现并启动用于与 ImageJ 交互的用户界面。

ImageJ2 服务

ImageJ2 添加的一些服务:

SCIFIO 服务

SCIFIO 提供多项附加服务,特别是:

菜单系统

SciJava 菜单系统分为多个层,以便更轻松地覆盖其行为或自定义其在用户界面中的外观。

模块

系统已知的每个模块(通过ModuleService)可以有一个menuPath,说明它应该位于菜单中的位置(默认情况下)。它还有一个menuRoot,说明它应该位于which菜单中,默认为APPLICATION_MENU_ROOT,指示主应用程序菜单结构。

菜单服务

MenuService负责使用menuPathmenuRoot值为系统中所有可用模块构建ShadowMenu树结构。这些树结构与 UI 无关。每menuRoot有一个ShadowMenu,可向MenuService随意请求。

用户界面

然后,UIService 负责根据可用的ShadowMenu 构建实际的特定于 UI 的菜单栏(或它想要的任何 UI 组件和/或小部件)。 MenuCreator 接口下有一个类型层次结构,旨在用于此目的;例如,SwingJMenuBarCreator 实现 MenuCreator 来创建和维护反映特定 ShadowMenu 状态的 Swing JMenuBar

变更如何传播

当添加、删除或更改模块时(通过 ModulesAddedEventModulesRemovedEventModulesUpdatedEvent),MenuService 会监听并相应更新相关的 ShadowMenu。它通过触发相应事件来通知相关方已这样做:MenusAddedEventMenusRemovedEventMenusUpdatedEvent

API 版本历史

API 更改历史记录可在以下位置找到:https://abi-laboratory.pro/java/tracker/timeline/scijava-common/

进一步阅读