最近,我决定用Java和Python编写程序,但是我不知道该怎么做...是否有任何方法可以使类在项目中相互通信,例如Java可以调用Python方法?有没有可以让我处理这个问题的框架?我还想知道经验丰富的程序员如何用多种语言编写项目。
我的想法是使用JavaFX编写我的程序的Gui,因为它的外观很棒,并且使用google库在Python中实现了语音识别。
有第三方库可用于此目的,但如果您也愿意包含第三种语言,也可以建立该桥梁。由于您的问题的标题,答案的这一部分提供了更通用的“不同语言”答案。
Java JNI(Java本机接口)允许您在Java和本机代码之间建立桥梁。从技术上讲,该本机代码可以适用于编译为本机代码或以某种方式支持本机的任何语言,但实际上,JNI通常用于使Java与C或C ++一起使用。
Java / C和Java / C ++有很多示例。Python还支持与本机代码一起工作。请参阅从Python调用C / C ++?因此,您可以做的是使用C ++作为Java和Python之间的中间人。您将需要学习使用Python /本机桥,学习使用Java /本机桥,然后将两者结合在一起以使用Python /本机/ Java。
这有利弊。缺点:您现在不得不引入第三种语言并支持更大的复杂性。优点:如果您愿意同时使用多种语言,那么自然会为同时使用多种不同的语言打开大门,因为许多语言都支持调用本机代码。
另外一个选项
另一种方法是让每种不同的语言在单独的进程中运行,并让不同的进程通过某种类型的进程间通信来回传递数据。一些常用的方法是通过套接字(用于网络通信的相同方法),磁盘上的文件以及共享内存。
尽管套接字可能是最著名的网络通信方法(例如:“ http互联网通信通常会在端口80上打开服务器的套接字”),但它也通常也用于本地进程间通信。您将以相同的方式打开套接字,但是通常是使用主机名“ localhost”,通常是IP地址127.0.0.1
。
这增加了跟踪进程之间的消息并进行实际处理的复杂性。根据您的环境和需求,此复杂性可能比在1个进程中运行多种语言要复杂一些。如果以后需要扩展应用程序,将其分为多个进程可能会更容易在使用套接字或文件的情况下在多台计算机之间分配负载。
您提到您想要Java作为GUI。无论如何,Java GUI都是在其自己的单独线程上处理的,因此您应该能够从Python调用Java中的GUI初始化函数来设置和显示GUI。只要注意并发问题(即多线程问题)。
另外,我也忘记了Jython。感谢@Jeremy指出这一点。我从未亲自使用过它,但是它是“ Java平台的Python”。您可以调查一下它是否满足您的需求。
另外,根据@that其他人的评论:
Google Cloud Speech API具有Java API,就如同具有Python API。只需使用它即可为自己省去很多麻烦。
因此,您甚至根本不需要进行任何桥接。但是,如果您决定仍然要支持多语言支持以及将来的用户使用,我将按照您的要求回答我的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句