我知道编辑这个网站吗?
核心 SciJava 软件库本页介绍与 核心 SciJava 软件库 相关的内容。点击徽标查看详情。

哲学

SciJava项目是根据某些偏见开发的,我们在此进行描述。这一理念在很长的发展历史中不断演变,反映了几十年来吸取的许多经验教训。

开源

SciJava生态系统坚定地致力于open source软件开发。但该软件不是open source软件产品——它遵循open source开发流程open source软件项目

这些项目由纳税人的资金资助,因此该项目寻求透明度。有公共source code repositories,公共communication渠道,公共project management资源,当然还有这个community editable website。如所见,您喜欢§§4§§§!

自主学习

告诉我,我就忘记了。教我,我就记住了。让我参与,我就会学习。—standing on the shoulders of giants

这些项目不仅旨在培养科学的独立思考,而且同样是independent learning。我们不仅要teach people how to fish,还要“教他们如何学习”。

因此,对public channels问题的回答通常是“你尝试过什么?”。或者“你能做一个最小的、完整的、可验证的例子吗?”——详情请参阅Bug reporting best practices。对于提问者来说,一个好的经验法则是“在你的问题上投入关心多的精力,就像你希望在回答中投入的精力一样”同样”——对于回答者来说,要真诚地鼓励提问者的这种行为。响应可能会为图像分析问题提供详细的宏或脚本解决方案,但它们通常还包括“如何生成此类解决方案”的详细信息,以及“如何针对其他类似场景或定制它们”的详细信息。

我们一直在寻找更多方法来改进软件,以实现鼓励自主学习的目标。写信给Image.sc Forum表达你的想法!

可扩展性

ExtensibilityImageJ的最大力量。ImageJ2不仅仅是一个软件应用程序——它是一个可扩展的平台,用于开发visualizationsegmentationregistration和分析示例过程。

艾萨克·牛顿将他的成功XunziSciJava component collection建立的plugin§软件流程和open source软件本身隐喻编入软件本身。不仅有许多不同类型的插件,而且还可以使用您自己的新类型插件来扩展系统。有关详细信息,请参阅第Extensibility页面。

互操作性

SciJava component collection的核心目标是在新的方向上扩展Java的“一次编写,随处运行”的口号:ImageJ Ops用于图像处理算法,SCIFIO用于科学图像I/O。

ImageJ2命令不仅适用于用户界面,还适用于SciJava ecosystem中的许多other applications,包括CellProfilerOMEROKNIMEAlida

##兼容性

格式兼容是 ImageJ2 最重要的目标。新版本的 ImageJ 必须仍然可以使用现有的 pluginsmacros。有关详细信息,请参阅Compatibility页面。

提前发布,定期发布

ImageJ遵循软件工程界经常引用的convention over configuration(RERO)原则。特别是——特别是因为有一个小型核心开发团队——该项目是由Boyd’s Law of Iteration驱动的:迭代速度项目胜过迭代质量。这并不是说我们不追求品质——我们确实追求品质。但我们通过经验发现,与较慢的发布周期相比,更多的发布以及指导用户反馈可以更有效地推动前进。

为了确保快速发布,每个 SciJava 组件都是独立发布和版本控制的,使用 reproducible builds 和“发布就绪”main分支。这使得各个 SciJava 组件可以在“五分钟的时间”内与 push of a button 一起发布。这将迅速将错误修复传递到用户手中。

约定配置

随着§§1§§§的增加,复杂性也随之增加。这个问题的一个关键方法是提供合理的默认值(例如,big green Xerox button)作为处理复杂软件程序的一种方式。我们近年来致力于解决许多大型软件项目所采用的release early, release often理念。因此,SciJava 使用Maven构建工具来构建project management

##为什么选择Java?

虽然Java总是比C++慢,但现在情况已不再如此。There have beena few benchmarks比较Java与C++的性能,this one可能是所有的祖父。

其中,需要注意的是,将 Java 与 C++ 进行比较时,性能实际上并没有棘手的差异。

Java 程序可以在 Windows、macOS 和 Linux 等主要平台上无问题地运行,并且无需重新编译。在一个平台上编译的插件也可以在所有其他平台上执行,而无需重新编译。使用 Java 进行分析和调试比使用 C++ 更容易。所有程序/插件兼作库。

所以我们使用 Java 的真正原因可能是:它使 ImageJ 易于访问。 另请参见第LOCI’s Why Java page