【问题标题】:how to use java based project in firebreath plugin framework如何在 firebreath 插件框架中使用基于 java 的项目
【发布时间】:2014-01-21 06:51:48
【问题描述】:

我正在尝试使用 NPAPI 和 firebreath 框架开发 HTML5 插件。需要使用的代码是用java编写的,但我需要将其转换为C++。我知道的唯一方法是通过 JNI,我需要将每个 .java 文件转换为 .cpp 文件。但是,我的项目中有 200 多个文件。有没有更好的方法来实现这一目标?

【问题讨论】:

    标签: java c++ plugins firebreath


    【解决方案1】:

    任何“简单”的方式都更像是一个 c++ 问题,而不是插件或 firebreath 问题。我的猜测是,如果您主要在 java 中需要它,那么将它制作成一个小程序而不是一个插件会好得多。据我所知,没有任何事情可以让您轻松地直接使用 FireBreath 或 NPAPI 做您想做的事情。

    【讨论】:

    • 感谢@taxilian 的回复。我的主要任务是创建一个跨浏览器插件,我一直在提供 JAVA 项目的参考。我正在使用 firebreath 创建要在其中使用一些 Java API 的插件。所以,我想知道我的 firebreath 代码(主要是 C++)是否可以以任何方式使用 Java API。我认为可能的方法是将Java项目转换为C++(使用JCC??)或通过任何其他方式引用Java项目。
    • 我相信我刚刚回答了这个问题。重申一下,我不知道,没有。​​
    • 我有类似的需求,当然我也考虑过使用 Java Applet 插件的选项,但我有很多问题。一半的时间它无法加载使小程序区域永久空白,其他时间它加载并崩溃,还有其他时间它冻结并消耗 100% 的 CPU。我从 IcedTea:s 页面下载了源代码,它有很多代码,所以我能识别的唯一问题是导致维护问题的代码膨胀。解决方案是将代码从 npapi 迁移到 firebreath,但我怀疑编写薄绑定层会更快。
    【解决方案2】:

    JNI 不会将 Java 转换为 C++,它是一种从 Java 代码调用本机代码(例如 C 或 C++)的技术。它似乎与您的问题无关:您(手动或自动)将所有 Java 转换为 C++(然后您可以从 Firebreath 调用),或者您将代码保留在 Java 中并运行一个小程序(没有 C/C++涉及的代码。) 如果@taxilian 建议的小程序不是一个好的选择,为什么不把你的 Java 项目变成一个应用程序,让你的 Firebreath 插件启动它并与之通信呢?您的插件甚至可以下载并安装 Java 应用程序,例如在临时文件夹中。一个限制:Java 代码不能直接访问内部浏览器 API,Firebreath 插件必须代表 Java 应用程序进行任何此类调用。这一切的难易程度主要取决于网页和 Java 代码之间所需通信的复杂性和带宽。

    【讨论】: