为Java应用提供的Python网络服务?

0 投票
4 回答
3287 浏览
提问于 2025-04-16 14:53

请原谅我,如果这个问题很傻。我对构建网络服务和完整的网络应用程序完全是个新手。
我想为一个基于Java的网络应用开发一个特定的功能。不过,这个功能用Python开发起来更简单。那么,我能否用Python开发这个网络服务,然后在基于Java的网络应用中使用它呢?

4 个回答

0

在使用框架进行开发时,通常用框架自带的语言来开发会比用其他语言简单得多。

Servlet 是网页服务器的一部分(也叫做 Servlet 容器)。这个 Servlet 容器和所需的 Servlet API 全部都是用 Java 写的。虽然你可以尝试把一些 Python 代码拼凑进来,但这样做的整合工作很可能会让原本的“简单”变得复杂得多,超出你的预期。

如果你想开发一个 Python 的网页应用,就用 Python 的网页框架。如果你想开发一个 Java 的网页应用,就用 Java 的框架。不要试图让这两者互相兼容,因为整合的地方(以及提供的便利功能)在“另一边”可能根本就不存在。

1

这要看你具体指的是什么。如果你是想把这个服务当作应用里的一个库来用,那你可以看看Jython,把它做成一个插件。

不过,如果你想把这个服务当作一个独立的应用来运行,然后通过网页接口从Java调用它,那就没问题。理论上,使用网页服务的最终用户(在这个例子里,就是你的应用)根本不需要关心这个服务是用什么语言写的;只要遵循一些标准(比如JSON、XML等),大多数编程语言都能互相配合工作。

1

我觉得这是可能的。假设你的网络服务方法返回的是一个json字符串。你可以使用这个字符串,把它转换成Java中的HashMap,然后就可以对数据进行操作了。

我个人比较喜欢cherrypy,因为它让创建网络服务变得很简单。它还自带一个服务器。

你可以使用FlexJSON来把json字符串转换成HashMap。这里的deserialize方法可以帮助你完成这个转换。这就是我怎么做的。

public Map<String, Object> JsonToMap(String data) {
        Map<String, Object> dataMap;
        dataMap = new JSONDeserializer<Map>().deserialize(data);
        return dataMap;
    }

在这里,String data就是你Python网络服务方法应该返回的json字符串。

撰写回答