1

我在我的项目中使用 neo4j 作为后端。对于前端,我不想用 java 做,因为我觉得它太受限制了。我正在考虑 2 个选项,它们是 a) 使用 Jython/Django,因为我可以在其中调用我的 java 代码。这样我就可以简单地为我的数据库代码提供一个好的 API 并调用它。b) 像上面提到的那样使用 Scala/Lift。

我现在能想到的唯一缺点是从另一种语言调用一种语言可能会很慢,这可能是可扩展性的一个因素。我想就可能影响我的项目的其他问题提出建议,或者仅此缓慢会影响很多?如果太多,那么我将不得不迁移到 java,因为 neo4j 非常适合该项目

PS我不倾向于任何语言。准备好用任何语言做,我不选择Java不是因为我不喜欢,但问题是由于成本因素和学习曲线我不确定它。任何建议都会冷静点。

4

2 回答 2

4

我会投票支持 Scala/Lift,因为它们更适合彼此。我对 Jython/Django 集成不太熟悉 - 但 Django 是用纯 Python 编写的,因此两者之间的接口可能会有开销。在您的 Scala/Lift 解决方案中,您将 Scala 用于前端和中间层,它可以编译成 Java 字节码,与 Neo4j 数据库层无缝匹配。

于 2011-06-21T13:33:19.753 回答
4

method这是 Java 和 Scala 程序在 class 上调用方法的反编译代码X,刚刚实例化:

public void callX();
  Code:
   0:   new #2; //class X
   3:   dup
   4:   invokespecial   #3; //Method X."<init>":()V
   7:   astore_1
   8:   aload_1
   9:   invokevirtual   #4; //Method X.method:()V
   12:  return

}

public void callX();
  Code:
   0:   new #7; //class X
   3:   dup
   4:   invokespecial   #11; //Method X."<init>":()V
   7:   astore_1
   8:   aload_1
   9:   invokevirtual   #14; //Method X.method:()V
   12:  return

我什至懒得说哪个是哪个,因为正如您所见,Scala 和 Java 调用 Java 代码的方式完全没有区别。事实上,Java 也可以调用 Scala 代码,因为它只是从字节码中不知道它是用另一种语言编写的。

于 2011-06-21T15:48:11.297 回答