为Java应用提供的Python网络服务?
请原谅我,如果这个问题很傻。我对构建网络服务和完整的网络应用程序完全是个新手。
我想为一个基于Java的网络应用开发一个特定的功能。不过,这个功能用Python开发起来更简单。那么,我能否用Python开发这个网络服务,然后在基于Java的网络应用中使用它呢?
4 个回答
在使用框架进行开发时,通常用框架自带的语言来开发会比用其他语言简单得多。
Servlet 是网页服务器的一部分(也叫做 Servlet 容器)。这个 Servlet 容器和所需的 Servlet API 全部都是用 Java 写的。虽然你可以尝试把一些 Python 代码拼凑进来,但这样做的整合工作很可能会让原本的“简单”变得复杂得多,超出你的预期。
如果你想开发一个 Python 的网页应用,就用 Python 的网页框架。如果你想开发一个 Java 的网页应用,就用 Java 的框架。不要试图让这两者互相兼容,因为整合的地方(以及提供的便利功能)在“另一边”可能根本就不存在。
这要看你具体指的是什么。如果你是想把这个服务当作应用里的一个库来用,那你可以看看Jython,把它做成一个插件。
不过,如果你想把这个服务当作一个独立的应用来运行,然后通过网页接口从Java调用它,那就没问题。理论上,使用网页服务的最终用户(在这个例子里,就是你的应用)根本不需要关心这个服务是用什么语言写的;只要遵循一些标准(比如JSON、XML等),大多数编程语言都能互相配合工作。
我觉得这是可能的。假设你的网络服务方法返回的是一个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字符串。