使用JNI的Java应用程序

时间:2011-02-14 11:42:28

标签: java java-native-interface

我是java的新手,想开发一个像服务器一样连续运行的java应用程序。

在Java中是否可以开发一个可以连续工作的UI应用程序?此应用程序还应该具有JNI支持,因此应该从C ++应用程序调用使用JNI导出的函数。

有人可以告诉我开始的指示吗?

感谢帮助,谢谢。

Vishal N

5 个答案:

答案 0 :(得分:1)

是的,你可以用Java开发少用户界面的应用程序。

我希望应用服务器能够处理多个请求,事务,安全性,生命周期,持久性等。

如果答案是,那么我将选择Java EE路线来实现您的要求。我将使用EJB3.0实现我的业务模型,并部署在其中一个应用程序服务器中,即Glassfish,JBoss等,它将支持上述所有功能,而无需重新发明轮子。
注意:该解决方案还可以灵活地使用WebService,CORBA或JMS公开远程方法。
如果答案是,那么我可能会创建自己的独立服务器类型应用程序,它将侦听某些端口并通过一些定制协议进行通信。

为了支持JNI - 我希望你必须编写一个普通的JavaBean包装器或代理。然后,JNI将使用此代理。

答案 1 :(得分:1)

当然可以在没有UI的情况下运行。根据它的声音,您希望将Java APP创建为控制台应用程序,然后将其作为Windows服务/ Linux守护程序运行(您没有提到操作系统)。有一些java服务包装器可以让你将java代码作为服务运行(例如this one),或者你可以编写自己的代码。

我建议this book学习JNI。虽然它听起来像你需要它不是真正的JNI,而是通过TCP暴露的界面或类似的东西,另一个C ++应用程序可以用来与你的应用程序交谈。 JNI不允许其他进程与您的应用程序进行通信,它可以扩展您的Java代码,其功能无法在Java本身中实现,例如:调用一些Windows API函数。

修改

顺便说一句,像这样的普通Java Hello World应用程序是一个控制台应用程序:

public class HelloWorld { 
   public static void main(String[] args) { 
      System.out.println("Hello, World");
   }
}

答案 2 :(得分:0)

是。

  

在Java中是否可以开发一个可以连续工作的UI应用程序?

创建一个将运行的线程或代码主线程。

  

此应用程序也应该具有JNI支持,因此应该从C ++应用程序调用使用JNI导出的函数。

是的,看看here

答案 3 :(得分:0)

您当然可以在没有用户界面的情况下开发Java应用程序;我想大多数人都同意这比使用用户界面开发一个更容易。

关于JNI,如果我理解了这个问题,你就会倒退;以C ++为例,JNI允许您从Java调用C ++代码,而不是从C ++调用Java代码。

答案 4 :(得分:0)

是的,您可以将Java作为服务(守护程序)运行。你可以简单地运行你的代码" daemonize"它。这样,它将与终端会话分离,并将在后台运行。

看看这里:

https://github.com/mkowsiak/jnicookbook/tree/master/recipeNo022

了解如何在C中运行服务。

在这里,了解如何在Java中运行服务部分:

https://github.com/mkowsiak/jnicookbook/tree/master/recipeNo029

与JNI玩得开心!