我想制作一个能够根据用户输入命令操作桌面的程序(最好是通过语音,但是......宝贝步骤)。与Windows语音识别或Cortana类似。
我想尽可能简单地使用和设置等。出于这个原因,我计划用Java编写它,以便它是跨平台的,并且对用户来说尽可能简单。
在进一步研究如何进行此操作之后,我在这里看到(Manipulating windows from other applications in Java)我应该使用JNI。
我现在想知道(如最高评论中所述)如果我转换到C ++会更容易,因为使用JNI可能会否定Java的跨平台功能优势吗?
或者,如果可能,是否可以让程序根据操作系统自动选择适当的JNI类?
简而言之:JNI是否否定了Java跨平台兼容性的好处?
很抱歉,如果这篇文章有点令人困惑。我有很多问题,所以这看起来有点像。
答案 0 :(得分:0)
许多操作系统特定任务无法独立于平台完成。但是Java已经做了很多事情而JNI允许你做的是你可以为不同的平台提供不同的本地二进制文件 - 可能还有一个Java API可以使用所有这些独立于平台的版本。
Going C ++的缺点是你需要有多个可执行文件。使用Java,你可以只加载1个不同的本机代码。
虽然如果你需要很多不同的本机代码来实现你的想法,也许更容易直接用一种绑定到所有必需的本机API的语言在1个平台上实现它。就像Windows的C#和其他平台的其他东西一样?