在GWT中调用Native(C ++)代码

时间:2010-06-28 15:21:40

标签: gwt

我正在GWT中开发一个应用程序,它需要在Directshow中调用本机C ++代码来进行一些多媒体处理。我猜我不能使用JNI,因为GWT将代码转换为javascript。我确实看过类似的帖子论坛(以及关于JSNI的GWT网站)但是找不到一个专门讨论从GWT调用C ++代码的例子(它主要是关于从Javascript调用Java代码)。任何人都可以对此有所了解或指导我阅读教程吗? / p>

2 个答案:

答案 0 :(得分:4)

这段代码应该在哪里运行?当然不是在客户端。 Client-side native code远未被大规模采用。

GWT可以与JSNI连接,以便在GWT Java代码中编写本机JS代码,或者与Java后端接口,同时框架处理RPC。即使没有GWT,您也无法在浏览器中运行本机代码(至少在不久的将来)。

底线 - 如果您无法在客户端使用普通的Javascript Javascript进行操作,则无法在GWT中执行此操作。

可以做的是在后端使用这个本机代码,并通过Java后端类中的经典JNI调用它(如果它是它的一部分,它会有什么区别一个GWT项目与否?),但听起来并非如此。

答案 1 :(得分:1)

首先,明确区分Client(浏览器中运行的HTML / Javascript)和服务器组件(java服务servlet)。

如果我理解您的问题陈述,您需要UI来收集转码器的参数,并且转码器需要在Windows机器上运行。

您可以查找任何简单的GWT应用程序,以了解如何在任何容器(暂时可能是jetty)中提供GWT应用程序,并处理基本的HTML表单输入。获得服务器上的所有参数后,您需要弄清楚如何将从浏览器(您的GWT应用程序)发布的这些参数从服务servlet(在Web服务器中运行)委派给DirectShow应用程序。这一点是一个java应用程序与本机进程问题进行对话。

您可以使用各种方法将参数传递给本机directshow应用程序。最简单的解决方案是使用exec方法以内联方式传递命令参数来启动应用程序。否则,您可以通过TCP套接字与正在运行的本机应用程序通信,或使用JNI集成本机应用程序。这一切都取决于您的建筑设计,您希望采用哪种方法。