答案 0 :(得分:1)
我们过去也有同样的困境。 我参与了设计和构建具有GWT前端和Java(Spring,Hibernate)后端的系统。我们的一些其他(相关)系统是用Python和Ruby构建的,所以专业知识就在那里,并且出现了与你一样的问题。
我们主要决定使用Java,因此我们可以在整个堆栈中使用单一语言。由于同一个人在客户端和服务器端工作,因此在从客户端代码移动到服务器代码时(例如,在调试时),使用单一语言工作减少了上下文切换的需要。事后我觉得我们被证明是正确的,这是一个很好的决定。
我们使用了RPC,正如你所提到的那样,你肯定能够简化c / s通信的实现。我不能说我喜欢它很多。 REST + JSON感觉更正确,至少可以在服务器和客户端之间创建更好的解耦。我想你必须根据你是否希望将来可能需要独立地重新实现客户端或服务器来做出决定。如果这不太可能,我会使用KISS原则,因此使用RPC可以在这种特定情况下保持简单。
关于你提到的Java的缺点,我倾向于同意原则(我更喜欢RoR),但不是细节。多层和配置架构并不是真正的问题IMO - Spring和Hibernate现在已经足够简单了。 IMO在这个项目中跨客户端和服务器使用Java的优势胜过使用python的相对容易性,而且你将在界面中引入复杂性(即通过REST与本机RPC相比)。
我无法评论Numpy / Scipy和任何Java替代方案。我没有经验。