我知道编辑这个网站吗?

常见问题解答

此页面列出了最常见问题的答案。

#方便

如何操作或宏评估多个图像?

请参阅第Batch Processing页。

ImageJ 可以打开的图像的最大尺寸是多少?

使用原始§§1§§§用户界面的默认图像查看器打开并显示平面图像时 2 GB 像素限制。然而,ImageJ2这个项目的一个主要目标是打破限制。ImageJ2 使用ImgLib2库作为其数据模型,该库对像素存在数量有更大的限制(理论上:每个维度 ~\(2^{63}\),最多 ~ \(2^{31}\) 四种,总共 ~\(2^{63^{31}}\)像素)。因此,您可以使用ImageJ legacy layer更大打开的图像。但您仍无法在用户界面中显示它们。

另外,SCIFIO库(ImageJ2用于数据I/O的库)支持打开图像之类的“单元图像”,然后在迭代图像时从图像磁盘读取块。这相似但(比)ImageJ的虚拟堆栈功能更强大。这样,您就可以编写代码来处理这些大数据而不用显示它们。

Fiji 项目还包括 BigDataViewer (BDV) 插件,该插件目前替代替代查看器,用于显示 ImgLib2 支持的任何大图像。未来我们将 BDV 限制驱动的 UI 技术更完整地集成到 ImageJ2 核心中。但目前希望存在一些:

  1. BDV最初是针对大型SPIM数据而设计的;当前打开大型图像文件通常需要一些编码。但我们想改变这一点。
  2. 许多 ImageJ 插件在 ImageJ 1.x 数据结构中假设数据存储,但不是 BDV 使用的结构。所以“mixing and matching” ImageJ and ImageJ2 functionality这里很棘手。但随着时间的推移,我们正在努力取消这些限制。

macOS

请参阅第MacOS页。

#跑步

如何使用不同版本的Java启动ImageJ?

###绑Java

ImageJ 将在特定于平台和结构的目录中的 java 子目录中找到“大量”Java。例如,如果您downloaded“Windows 64位”斐济,将会在Fiji.app\java\win64目录中附带Java安装。可能的platform + architecture目录是:

  • win64
  • win32
  • linux-amd64
  • linux
  • macosx

如果您替换了适合您平台中的Java目录(或者创建指示的子目录结构,如果您下载了“无JRE”斐济),则ImageJ将首先尝试使用该“捆”Java启动。

###系统Java

如果没有找到大量 Java,ImageJ 将回到您的“Java 系统”,这由 JAVA_HOME 环境指标指示。通常是在安装 Java 时设置的,但其他请参见Java environment variable setup

命令行选项

最后,ImageJ 支持 java-home 命令行您的标志,允许其使用特定的 Java 版本仅用于该运行。要使用此标志,您在需要选择的 CLI 中运行特定于平台+架构的启动器(也称为“二进制”或“可执行文件”),命令如下: /path/to/ImageJ/launcher –java-home ‘/path/to/java’ ImageJ启动器路径将是以下之一:

  • 斐济.app/ImageJ-win64.exe
  • 斐济.app/ImageJ-win32.exe
  • Fiji.app/Contents/MacOS/ImageJ-macosx
  • Fiji.app/ImageJ-linux32
  • Fiji.app/ImageJ-linux64

在 macOS 上

Old versions of Mac OS X shipped with Apple’s fork of OpenJDK 6, which included some Mac-specific features. But Apple Java is long discontinued now. If you wish to install your own OpenJDK(s) on modern versions of macOS, it is recommended to use Homebrew, or simply download and unpack the OpenJDK distribution(s) of your choice into a Java folder inside your user folder.

有关转换为 Dock 图标的说明,请参阅下文的“如何设置启动器应用程序”。

在 Linux 上

这样的一个缺点是ImageJ将在一个单独的进程中启动,这会产生一些不可想象的后果。例如,在这种情况下,Ubuntu的Unity用户界面将不允许您“固定到启动器”。

如何设置适用于 macOS 的启动器应用程序使用不同的 JVM 版本运行?

启动Automator并选择创建应用程序。双击Library/Utilities文件夹中的Run Shell Script放置文本内容 - cat - 替换为以下内容: open -a “Fiji.app” –args –java-home \
/Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home/ 保存在您喜欢的任何地方。

要替换此应用程序的图标,请在您的真实斐济应用程序上获取信息,单击左上角的图标,然后按⌘ Command + V,在您的斐济自动化应用程序上获取信息,单击该图标,然后按⌘ Command + C

然后,您将在扩展坞中看到两个图标,一个是启动器应用程序,另一个是斐济运行时的图标。

(基于this指南)

##这个无头模式是什么?我需要它做什么?

术语“无头”是指在没有图形桌面的情况下运行 ImageJ,例如在一个集群上。请参阅Headless页面了解更多信息。

安装/更新

我如何验证我的 ImageJ 是否确实是 100% 最新的?

只要 ImageJ 中安装的所有文件与远程更新站点的最新版本匹配,ImageJ 就会将自身报告为“最新”。然而,在某些情况下,您的 ImageJ 可能会报告自己为“最新”,但仍然缺少关键文件,或者版本不匹配(例如,可怕的 NoSuchMethodError)。

获得确定,请运行HelpUpdate,然后单击“高级模式”按钮。然后验证以下查看选项:

  • 仅查看已卸载的文件:显示可从远程 ImageJ 更新站点获取但安装在 ImageJ 中的文件。将这些项目的“状态/操作”更改为“/downloads”,特别是任何 §§0§§§文件标记为“未安装”状态。
  • 仅查看本地的文件:已显示修改本地编辑的文件(即,与远程更新站点的任何版本都不匹配)。考虑将这些项目的“状态/操作”更改为“更新”,尤其是您无意修改的任何.jar文件。
  • 查看仅限本地的文件:显示远程更新站点根本不知道的文件。这些文件可能是手动添加的(例如,如果您手动安装了其他插件;请参阅下面的“您如何安装其他插件”)。如果不需要这些文件,请考虑删除它们,尤其是任何来源不同或文件名冲突的§§2§§§文件。

如果您标记要进行任何更改,请按“应用更改”来更新您的 ImageJ。重新启动 ImageJ 后,您可能需要再次运行 PluginsInstall Plugin… 以确保一切外观都符合您的预期!

如何安装额外的插件?

如果插件发布在ImageJ update site上,您可以运行HelpUpdate…,单击Help来启用它。这不仅会自动为您安装插件,而且您只要有更新发布时都会收到通知。

否则,您可以将.jar文件拖放到ImageJ窗口上,或将HelpUpdate…与.jar、.class和.java文件一起使用,或将插件复制到ImageJ.app/plugins/并重新启动ImageJ。参见walk-through with screenshots

如何降级ImageJ?

通常不会建议降级作为长期解决方案,但可以方便地避免出现新的错误。

如果您需要降级分组严重错误,请report that bug给开发人员,以便在未来版本中修复!

最后,如果您尚未升级,并且具有当前工作配置,则可以在升级之前制作 ImageJ 文件夹的备份副本。然后,如果升级产生不良后果,请切换回旧版本。

我的插件在Script Editor中运行良好,但当我安装它时它没有显示在菜单中。怎么了?

要作为插件使用,.jar的文件名必须包含下划线,并且它需要包含适当的plugins.config文件或类名也需要包含下划线。

保证这些规定的最安全的方法是使用HelpUpdate ImageJ…菜单项。

我尝试通过 FileNewScript 更新 ImageJ,但它却抛出异常?

请从 here 下载新副本。

我通过Language更新了ImageJ,现在它不再启动了!

请参见故障排除页面上的If ImageJ does not start up

更新程序总是说连接被拒绝。也许它没有使用代理?

事实上,早期版本的更新程序不使用您的系统范围的网络代理设置。您可以download a new ImageJ来接收修复。或者您可以像这样手动更新更新程序:

  • 使用HelpUpdate开放Script Editor
  • 在编辑器的HelpUpdate菜单中将语言设置为BeanShell
  • 您粘贴以下代码(并根据设置调整它): import ij.IJ;

    System.setProperty(“java.net.useSystemProxies”, “true”); IJ.run(“Update…”);

  • 通过PluginsUtilitiesFind Jar For Class菜单运行脚本

# 兼容性

ImageJ 和 ImageJ2 有什么区别?

ImageJ是一个用于科学图像分析的可扩展平台。ImageJ2从头开始重新设计,满足相同的需求,但具有面向未来的灵活性,以适应研究人员不断增长的需求(新数据类型、更高维度、图像巨大等……)。

ImageJ 宏、插件和脚本在 ImageJ2 中仍然有效吗?

我们致力于原始 ImageJ 100% 兼容。ImageJ2“在幕后”完全包含最新版本的 ImageJ,因此现有的宏、插件和脚本仍将像以前一样运行。

ImageJ2用户界面只是插件;ImageJ2默认使用ImageJ UI运行。但我们还创建了一个新的ImageJ2用户界面,在严格修改了原始ImageJ,并要求使用所有相同的快捷键和行为。无论哪种方式,ImageJ2的外观和感觉都与原始ImageJ设施相同,但具有强大的新基础,从而能够更快、更轻松地处理更广泛的图像数据。

ImageJ2 支持 ImageJ 宏吗?它已被废弃使用语言吗?

继承ImageJ2 APIImageJ macros将在ImageJ2中固定地​​运行,同时还利用ImageJ2的新参数化scripting范式——这在以前的宏语言中是不可能实现的。

ImageJ 宏语言对许多用户来说非常有用。但是,它有很大的限制:它的功能与 Java 和其他脚本语言提供的功能是分开的。

在 ImageJ2 中,目标提供了一组统一的函数,可以从 Java 和所有脚本语言完全访问该函数。因此,ImageJ2 插件和脚本比 ImageJ pluginsmacros 更加灵活。它们可以在服务器上运行headless,并且可以通过各种应用程序进行访问,例如CellProfiler、KNIME、OMERO 以及从命令行进行无头访问。我们鼓励使用 ImageJ2 API 新开发的脚本和插件,因为它提供了这些优势,但 ImageJ API 也将保持可访问性。

我可以从 ImageJ2 命令调用 ImageJ API 吗?

是的,虽然不建议这样做。如果您在命令中嵌入对 ImageJ 的调用,您将失去 ImageJ2 的大部分优点。原始 ImageJ 与 AWT 紧密耦合,因此在无头的有关情况下不能很好地工作。详细信息,请参阅Headless页面。

我可以从 ImageJ 插件调用 ImageJ2 API 吗?

是的,请参阅call-modern-from-legacy教程示例。

如何找到 ImageJ 和 ImageJ2 API 之间的回复命令?

ImageJ1-ImageJ2 cheat sheet可用。

Fiji

Fiji 和 ImageJ 有什么区别?

Fiji 是 ImageJ + ImageJ2 的发布版本:将核心应用程序与精选的预安装插件捆绑在一起。

如何安装斐济?

相关说明,请参阅here

如何将斐济插件安装到普通的 ImageJ 中?

不这样做:

  • 斐济插件作者在斐济测试他们的插件,而不是简单的ImageJ
  • 越来越多的插件使用ImageJ2的功能,这些功能在原始ImageJ中不可用。
  • 如果您以这种方式安装多个具有复杂依赖链的插件,则可能会出现依赖链的冲突。为了使事情正常进行,您需要确保所有库版本都兼容的。 Fiji maintainers已经为Fiji发行版解决了这个问题。

因此,使用斐济可以为您省去很多痛苦。

也就是说,您可以在普通的 ImageJ 安装中安装 Fiji 插件,只需复制它的所有依赖项即可。您可以按以下方式执行此操作: git clone git://github.com/fiji/Stitching cd Stitching mvn dependency:copy-dependencies 然后将target/dependency/*.jar复制到您的ImageJ安装中。

您需要安装GitMaven才能正常工作。

互操作性

如何从 MATLAB 调用 ImageJ,反之亦然?

使用 ImageJ-MATLAB update site。有关详细信息,请参阅MATLAB页面。

# 发展

##为什么我在运行重建的插件时会得到 NoSuchMethodErrorNoSuchClassDefFoundError

这很可能是由版本偏差引起的,即安装了不兼容版本的构建依赖项时。示例:如果您针对 mpicbg-1.0.0.jar 进行构建并在仅安装了mpicbg-0.6.1.jar的斐济运行该插件,那么可能会丢失一些方法或类,甚至包含不兼容的类定义。

要进行调查,您可以在命令行上使用mvn dependency:copy-dependencies(将所有构建依赖项复制到target/dependency/中),然后使用您最常用的 Zip 工具查找异常中提到的类名。在 Eclipse 中,可以简单地使用L来查看打开相应的类;如果使用足够新的 Eclipse,并且默认设置没有被篡改,这将开始下载并附加到相关依赖项的源代码。

一旦您知道哪个依赖项应该包含该类/方法,请比较 ImageJ.app/plugins/ImageJ.app/jars/ 中文件的版本号。

有时,类包含在多个.jar文件中。问题的常见来源,例如当一些开发人员试图提供帮助将依赖项包含到他们的插件.jar文件中时。问题,因为当依赖项作为正确的、单独的§§ §3§§§文件安装并更新时,这些文件类别自然不会更新。要此类问题,请在斐调查济中使用Run命令,这是一个哪个.jar命令,哪个.jar文件适用于您要查找的类别。

什么是 Maven,为什么选择它?

Maven 是一个从源代码构建.jar文件并管理依赖关系的系统(即很容易指定源代码需要哪个最小版本,例如 ImageJ)。

我们选择它是因为我们需要一种标准的方式来与其他项目以及各地之间进行交互和协作。对于初学者来说,允许开发人员继续使用他们最喜欢的开发环境(Eclipse、Netbeans、IntelliJ 等)。

详情请参阅我们的Maven页面。

什么是 MiniMaven?为什么创建它?

请参阅 MiniMavenSupported Compilers 页面了解说明。

如何使用 Maven 创建新的 ImageJ 插件?

请参阅我们的 Maven 页面。

如何上传新版本的 ImageJ 插件?

请参阅Uploading plugins教程。

如何上传新版本的核心ImageJ库(如ImgLib)?

与制作插件的方式相同。但它会上传到 ImageJ 更新站点(不过,您一次只能上传到一个更新站点,另请参阅this ticket)。

在ImageJ中推荐的开发方式是什么?

多年来,我们形成了以下的开发风格:

  • 创建主题分支
  • 饮食多地进行测试以适应饮食
  • 合并
  • 处理任何后果

开发风格已被ImageJ2 team采用这种,并添加了两个内容(使失败步骤变得更小):

  • 测试将添加为自动回归测试(每当启动新更改时由continuous integration运行)。
  • 合并通常使用 --no-ff 完成,因此即使是快进分支(即基于 master 的基础)也将获得合并提交,其中对分支进行了更广泛的描述。

另请参阅coding style

第3方库中的类加载问题(例如JPPF)

尝试使用当前线程的类加载器而不是 IJ 的类加载器加载资源或类的库可能会失败。解决方法是首先将当前线程的类加载器设置为 IJ-classloader。这必须从 同一个线程完成,稍后将调用有问题的代码: Thread.currentThread().setContextClassLoader(IJ.getClassLoader());

如何查看命令的来源代码?

ImageJ 是开源的;因此,为了开源和可重复性,可以检查任何命令的源代码。

以下是几种方法:

  1. 使用search.imagej.net
    • Go to http://search.imagej.net/
    • Type in your search
    • Click the GitHub button!
  2. 使用搜索栏:
    • Press ⌃ Ctrl / ⌘ ⌃ Ctrl 在电脑上 ⌘ 命令 在苹果机上  + ⇧ Shift + T to focus the search bar.
    • Type the name of the command.
    • Press T to select it.
    • Click the Source button.
    • This will open the source in a browser window.
  3. 使用GitHub:
    • Using the search bar, locate your command, taking note of the Class column’s value.
      • E.g., if we type “make binary” we see that the class is ij.plugin.Thresholder.
    • Open the relevant project in GitHub:
      • E.g., for “ij.” classes, go to: https://github.com/imagej/ImageJ
    • Press the ↓ Down key, and type the name of the file you are looking for.
      • In the example above, this is Thresholder.java.
    • You should end up with a hit like: https://github.com/imagej/ImageJ/blob/-/ij/plugin/Thresholder.java.
    • This method requires that you know in which repository the code lives. However, you can combine it with search.imagej.net method above to figure out which repository, then load the code on GitHub, if desired.
  4. 使用“菜单项”开源软件:
    • Run ProcessBinaryMake Binary.
      • Unfortunately, you must select this from the menu, not using the search bar.
    • Run the command whose source you want to see.
      • E.g., PluginsScriptingOpen Source for Menu Item.
      • Again, select it from the menu directly, not using the search bar.
    • This will open the source in your web browser. 将来,我们计划通过一个简单的命令来查看源代码,从而使这一过程变得更容易。

什么是“外部”插件?

对于用户而言,外部斐济插件与内部斐济插件完全相同。对于开发人员来说,“external plugin” 只是意味着插件的源代码维护在其自己的源代码存储库中。例如,自斐济成立以来,TrakEM2一直是斐济的外部插件。

我应该把插件的 jar 放在哪里?

如果您开发 Fiji 插件,结果将是一个或多个 jar 的形式,其中包含您的插件以及您可能依赖的第三方库。要部署插件,请将 jar 放在 plugins/ 或 jars/ Fiji 子目录中。一般的想法是,只有直接包含插件类的 jar 才会进入plugins/。辅助和第三方 jar 放入 jars/ 中。 (有关更多背景信息,请参阅this mail。)

如何从我的软件中调用 ImageJ?

如果您的软件是用 Java 编写的,我们建议使用 Maven 来构建您的项目。然后,您可以将依赖项添加到您感兴趣的 ImageJ 部分。有关示例,请参阅master branch of the source repository

如果您的软件是用其他语言(例如 C 或 Python)编写的,则有 many ways to integrate Java functionality。您必须选择最适合您的特定要求的一种。

为了方便某些用例,我们提供了一个脚本,用于在单个 uber-JAR 库中生成所有 ImageJ 相关 JAR 的组合包。要使用,请查看 ImageJ source code 并执行:

mvn -Pdeps package

为方便起见,我们从最新的 DEVELOPMENT、不稳定版本的 ImageJ 中提供了此组合 JAR 文件(后缀为 -all)的构建版本。此版本包括 ImageJ tutorials 的最新更改。它尚未经过彻底测试,可能包含新的错误。

在某些情况下,使用此 JAR 文件是合适且方便的;例如,CellProfiler使用它与ImageJ集成。但是,您应该仔细考虑什么最适合您的项目;请参阅Uber-JAR页面了解更多信息。

ImageJ 可以在 Android 等移动设备上运行吗?

尚未作为最终用户应用程序。但由于 Android 是一个基于 Java 的平台,所以还是有希望的。 ImageJ2项目的中心设计目标之一是更好的Java AWT,它可以使Android版本的ImageJ成为可能。特别是,core components of ImageJ2 激进地避免使用 Android 版本的 Java(基于 Java ME)中不存在的某些 Java SE 包,例如separation of concerns

也就是说,ImageJ2 甚至还没有使用 Android SDK 进行编译测试,因此肯定还有很多问题需要解决。未来,ImageJ开发团队希望围绕Android建立一些持续集成。如果您有兴趣帮助推动这项工作,请参阅android tag on the Image.sc Forum!

未来的另一种可能性是 ImageJ 的客户端/服务器版本,它使用 HTML5 和 JavaScript 在 Web 浏览器中运行,其中可能包括对移动设备(Android、iPhone、平板电脑等)的跨平台支持。同样,为了使ImageJ2核心设计与此类应用程序兼容,已经做了很多基础工作,但还没有人编写服务器端或客户端。如果您真的有兴趣帮助实现这样的应用程序,您可能还想查看 OMERO 项目,它是一个客户端/服务器应用程序,具有一些integration with ImageJ

# 社区

既然已经有了 ImageJ,为什么还要有斐济?这个 ImageJ2 是关于什么的?

ImageJFijiImageJ2项目密切相关。有关差异的详细说明,请参阅ImageJ Flavors

参见:

简而言之:我们都协作,但重点略有不同,因此项目和名称也不同。

我们如何确保 ImageJ、ImageJ2 和 Fiji 不会随着时间的推移而出现分歧或分叉?

我们正在努力创建一个架构,使程序能够协同工作并保持兼容性。 Fiji 只是包含电池的 ImageJ,而 ImageJ2 按原样包含 ImageJ 以实现最大兼容性。斐济现在使用 ImageJ2 作为其核心。最重要的是,所有参与的开发人员都致力于避免分歧——我们正在密切合作,以确保 ImageJ2 代表 ImageJ 和 Fiji 的延续,而不是项目的分叉。

合并 ImageJ2 和 Fiji 项目有意义吗?

FijiImageJ2本质上是相同的软件,使用相同的launcher。所以从开发力度的角度来看,ImageJ2和Fiji项目确实已经合并了。 ImageJ2 是核心软件,最初为斐济开发的多个基础设施现已迁移到 ImageJ2(例如,UpdaterLauncherScript Editor 组件)。从本质上讲,Fiji 只是生命科学插件的一个大集合(尽管“Fijabcolsp”没有完全相同的含义)。换句话说,Fiji 只是一个 ImageJ 更新站点(“Fijaius”),因此,您可以通过下载 ImageJ2、运行更新程序并启用 Fiji 更新站点来获得可用的 Fiji 安装。

综上所述,我们不想摆脱这两个不同的项目名称,因为人们对这两个名称都很熟悉。但我们会在可行的情况下整合资源:例如,ImageJ wiki 提供所有 ImageJ 内容,包括斐济特定内容(标有斐济徽标)。但我们希望确保 ImageJ 不是一个特定于生命科学的项目,而 Fiji 是。从历史上看,由于斐济以生命科学为重点,因此尽管斐济在很多方面使用户的生活变得更轻松,但仍有一些用户拒绝从原来的ImageJ切换到斐济。通过 ImageJ2,我们希望避免此类误解。

仍然需要付出更多努力来澄清网络资源,以简洁明了地解释人们在不同情况下应该去哪里。我们还计划让整个项目的错误报告变得更简单、更容易。

这是一个 Wiki,但我无法编辑它!为什么?

要进行更改,您需要a GitHub account。然后您可以单击任意页面右上角的“编辑此页面”链接。

Wiki 缺乏有关 X、Y 和 Z 的文档

请随时增强 Wiki!我们感谢所有的贡献!

如何找到有关 Command X 的更多信息?

尝试在ImageJ’s search bar中搜索命令,然后单击Manage update sites按钮。或者,检查此 wiki:您可以使用上面的搜索栏,或访问 list of extensions 页面,其中包含指向 ImageJ 各种扩展的许多文档页面的链接。

如果您感兴趣的命令缺少文档,您可以随时直接查看源代码:

  1. 跳转至search bar(快捷方式:T
  2. 过滤到您感兴趣的命令。
  3. `File` 列将告诉您插件包含所需命令的位置。
  4. 然后,您可以使用此信息在 GitHub 上查找核心 ImageJFiji 插件的源代码。
  5. 从GitHub上相应的项目中,您可以找到所需插件对应的存储库。
  6. 最后,您可以搜索感兴趣的命令的实际文件(快捷方式:L)。

作为一个完整的示例,如果您对 2D Histogram 命令感兴趣:

我有一个本页未涵盖的问题!

如果您遇到此处未提及的问题,您可能需要ask on one of the mailing lists, or via IRCenter a bug report

如何报告问题?

请参阅Report a Bug’%}。虽然私人邮件有时看起来更可取,但它几乎总是不如我们在 ImageJ 中建立的开放流程。首先,错误报告者可能不知道谁是解决该问题的最佳人选。

我报告了一个问题,但解决不了!为什么不呢?

ImageJ及其variantsopen source社区项目。contributors的名单很大,但许多参与其中的人都没有参与。我们非常重视社区的贡献和帮助。 正式工作包括响应和解决错误报告的专业开发人员并不多。这些开发人员并*为了修复错误而获得报酬,相反他们正在努力解决科学问题并提高软件的功能。他们的注意力等分散在项目中:ImageJFijiSCIFIOSciJavaLOCIOMEImgLib2OpenSPIM

全体组织总共拥有 300 个多个源代码存储库,其中许多在其问题跟踪器中都有存储未解决的问题。 old ImageJ2 issue tracker中还有数百个张票证从未迁移到 GitHub 的问题,以及一百多个open issues archived in the Fiji Bugzilla

因此,请理解正常,因为我们没有回复错误报告,并不代表我们对修复它不感兴趣。只是我们很忙,能得到的帮助都用得上!

如果您想增加问题获得解决的机会,您可以:

有关详细信息,请参阅第 bug reporting best practices 文章。

我如何贡献错误修复或补丁,或提出更改想法?

请参见第Contributing页!

# 各种各样的

你为什么用 Java 编程? C++ 不是快离婚吗?

请参见第Philosophy页!

Oracle收购Sun、Apple弃用Java,Java还有未来吗?

Java 是most popular programming languages之一,并且仍然是性能、跨平台应用程序。Oracle 不太可能尝试“杀死”Java,但即使他们尝试了,也可能做不到——OpenJDK 是开源的,并且其背后有一个庞大的 Java 开发者社区。现在Apple is partnering with Oracle and the OpenJDK community,我们很可能会看到 macOS 上的 Java变得更好,更糟糕。Java流行的程度最终会分开,但不是任何公司现在采取的行动。因为,与任何编程语言一样,新技术将在过程中出现和传播。

##为什么ImageJ仍然针对Java 6?

2014 年 6 月,大约 19% 的 macOS 系统持续运行 10.6 Snow Leopard 完全早版本§§0§§§。(2013 年 12 月,这个比例为 25%。)不幸的是,Apple 和 OpenJDK 开发者社区将 Java 7 和 8 的目标定为 OS X 10.7 Lion 及版本。目前,为了避免无法放弃 Snow Leopard 升级的旧机器,ImageJ 继续将目标定为 Java 6。

另外,将所需版本更新为较新版本的 Java 需要对 ImageJ §§0§§§进行改进,以便它也可以重新更新现有的 Java 版本,这将是一项艰巨的任务。否则,大部分现有的 ImageJ 安装工作将停止,而这些用户将需要从头开始下载 ImageJ。

详细信息请参见this mailing list thread

您如何解决随着程度的提高而导致复杂性增加这一事实?

请参见第Philosophy页!

针对网络浏览器、移动设备等的ImageJ版本怎么样?

虽然出于多种原因纯 Web 版本的 ImageJ,但当前技术需要一些重大挑战。特别是,基于 Javascript 的 ImageJ 很难保持与现有插件、宏和脚本的兼容性。目前,我们的目标是继续改进 ImageJ 的 Java 版本,同时保持存在对 Web 应用程序领域发展的了解,以减少未来某些 Web 版本的相关性。

我们在开发ImageJ时非常重视,避免无端依赖——尤其是AWT,它在大多数移动设备上不可用。我们希望这种方法将来能够更轻松地将ImageJ移植到其他平台。

短期实用的解决方案是使用 ImageJ Web 客户端连接到以无头模式运行 ImageJ 的远程服务器,这样就可以完成繁重的工作。另请参阅OMERO project。 ##为什么开放软件对科学至关重要?

请参见第Open Source页!

Java 仍然免费吗?我听说 Oracle 现在对 Java 收费了!

Java 仍然是免费且的。向 Oracle 开源支付 Java 许可证费用的唯一原因是在 2019 年 1 月之后继续获得 Oracle Oracle 版本的 Java 8 的商业支持。如果使用 OpenJDK,那就没问题。如果您使用旧版本的 Oracle Java 8 则(例如当前随 Fiji 提供的版本),没有问题。详情请参阅this article