如何在一个项目中使用不同的语言

2024-04-18 09:23:07 发布

您现在位置:Python中文网/ 问答频道 /正文

最近我决定用Java和Python写一个程序,但我不知道怎么做。。。有没有什么方法可以让类在项目中一起通信,例如Java可以调用Python方法?有没有什么框架可以让我来处理这个问题? 我还想知道有经验的程序员是如何用多种语言编写项目的。你知道吗

我的想法是用JavaFX编写我的程序的Gui,因为它的外观很棒,而且使用google库在Python中进行语音识别。你知道吗


Tags: 项目方法程序框架googlegui语音经验
1条回答
网友
1楼 · 发布于 2024-04-18 09:23:07

有第三方库可以用于此,但如果您也愿意包含第三方语言,也可以不使用此桥。由于问题的标题,这部分答案提供了更通用的“不同语言”答案。你知道吗

javajni(Java Native Interface)允许您在Java和本机代码之间架起桥梁。从技术上讲,本机代码可以是任何编译为本地代码的语言,或者以某种方式支持它,但实际上JNI经常用于使java与C++或C++一起工作。你知道吗

/java和java/C++的例子很多。Python还支持与本机代码一起工作。参见Calling C/C++ from Python?,所以您可以做的是使用C++作为java和Python之间的中间人。您需要学习使用Python/native桥,并学习使用Java/native桥,然后将这两种桥结合起来,使用Python/native/Java。你知道吗

这有利弊。缺点:你现在被迫引入第三种语言,并支持更大的复杂性。赞成:如果你愿意同时使用多种语言,这自然会为同时使用多种不同的语言打开大门,因为许多语言都支持调用本机代码。你知道吗

另一种选择

另一种方法是让每种不同的语言在一个单独的进程中运行,并让不同的进程通过某种类型的进程间通信来回传递数据。一些常用的方法是通过sockets(与网络通信使用的方法相同)、磁盘上的文件和shared memory。你知道吗

虽然套接字最为人所知的可能是网络通信(即:“http internet通信通常会在端口80上向服务器打开一个套接字”),但它也通常用于本地进程间通信。你可以用同样的方法打开一个套接字,但它通常是主机名“localhost”,通常是IP地址127.0.0.1。你知道吗

这增加了跟踪进程之间的消息并实际处理它们的复杂性。根据您的环境和需要,这种复杂性可能比在一个进程中运行多种语言要复杂或复杂。如果以后需要扩展应用程序,将其分离为多个进程可能会更容易在套接字或文件的情况下在多台计算机之间分配负载。你知道吗


针对你的具体情况

您提到您需要Java作为GUI。javagui是在它自己的独立线程上处理的,因此您应该能够从Python调用Java中的GUI初始化函数来设置和显示GUI。只需注意并发性问题(即多线程问题)。你知道吗

而且,我忘了Jython。感谢@Jeremy指出这一点。我从未亲自使用过它,但它是“用于Java平台的Python”,您可以查看它是否提供了所需的功能。你知道吗

另外,根据@that other guy的评论:

The Google Cloud Speech API has a Java API just like it has a Python API. Just use that and save yourself a ton of trouble.

所以一开始你甚至不需要做任何桥接。但是,如果您决定无论如何都要支持多语言支持,并为将来的用户提供支持,我会在您提出问题时留下我的答案。你知道吗

相关问题 更多 >