Проблемы, кроме скорости выполнения при вызове Java-кода из Jython или Scala - PullRequest
1 голос
/ 21 июня 2011

Я использую neo4j в качестве бэкенда в моем проекте.Что касается внешнего интерфейса, я не хочу делать это в Java, поскольку я чувствую себя слишком ограниченным в этом.Я рассматриваю 2 варианта: а) Используйте Jython / Django, так как я могу назвать в нем свой код Java.Так что я могу просто предоставить хороший API своего кода базы данных и вызвать его.б) Используйте Scala / Lift так же, как указано выше.

Единственный недостаток этого, о котором я могу думать сейчас, это то, что он может быть медленным при вызове одного языка из другого, и это может быть фактором масштабируемости,Я хотел бы посоветовать, какие еще могут быть проблемы, которые могут повлиять на мой проект, или одна эта медлительность может сильно повлиять?Если бы их было слишком много, мне пришлось бы перейти на Java только потому, что neo4j идеально подходит для проекта

PS. Я не склонен ни к какому языку. Готов сделать это на любом языке, и я не выбираю Java не потому, что яне нравится, но дело в том, что я не уверен в этом из-за факторов стоимости и кривой обучения. Любой совет по этому вопросу был бы крут.

Ответы [ 2 ]

4 голосов
/ 21 июня 2011

Вот декомпилированный код Java и вызывающий метод программы Scala method для класса 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, потому что он не знает из байт-кода, что он был написан на другом языке.

4 голосов
/ 21 июня 2011

Мой голос будет за Scala / Lift, так как они более естественны для друг друга. Я не слишком знаком с интеграцией Jython / Django - но Django написан на чистом Python, так что могут быть накладные расходы на взаимодействие между ними. С вашим решением Scala / Lift вы используете Scala для переднего и среднего уровня, и он компилируется в байтовый код Java, который легко вписывается в слой базы данных neo4j.

...