1

プロジェクトのバックエンドとしてneo4jを使用しています。フロントエンドについては、制限が多すぎると感じているので、Javaでやりたくありません。私は2つのオプションを検討しています。a)Javaコードを呼び出すことができるので、Jython/Djangoを使用します。これにより、データベースコードの優れたAPIを提供して、それを呼び出すことができます。b)上記と同じようにScala/Liftを使用します。

私が今考えることができるこれの唯一の欠点は、ある言語を別の言語から呼び出すのに時間がかかる可能性があり、これがスケーラビリティの要因になる可能性があることです。私のプロジェクトに影響を与える可能性のある他の問題や、この遅さだけで大きな影響を与える可能性がある他の問題についてアドバイスしたいのですが?多すぎる場合は、neo4jがプロジェクトに完全に適合するため、Javaに移行する必要があります。

PS私はどの言語にも傾倒していません。どの言語でもそれを行う準備ができており、Javaを選択していません。それは、私が好きではないからではありませんが、コスト要因と学習曲線のために、Javaについてはよくわかりません。かっこいい。

4

2 に答える 2

4

私の投票はScala/Liftになります。なぜなら、それらはお互いにより自然にフィットするからです。私はJython/Djangoの統合にあまり精通していませんが、Djangoは純粋なPythonで記述されているため、2つの間のインターフェースにオーバーヘッドが生じる可能性があります。Scala / Liftソリューションでは、フロントティアとミドルティアにScalaを使用し、neo4jデータベースレイヤーにシームレスに適合するJavaバイトコードにコンパイルします。

于 2011-06-21T13:33:19.753 に答える
4

これは、Javaの逆コンパイルされたコードと、インスタンス化されたばかりmethodのクラスのメソッドを呼び出すScalaプログラムです。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 に答える