2014-08-28 2 views
3

Я новичок в Java, Gremlin, Nodejs, Tickerpop, Maven и практически обо всем остальном. Что делает этот код? В частности, что делает «java.import»? Является ли это классом Java? Какое это имеет отношение к Titan?Baffled всем этим узлом -> Titan stuff

var Titan = require('titan-node'); 
var gremlin = new Titan.Gremlin({ loglevel: 'OFF' }); 

var TinkerGraphFactory = gremlin.java.import('com.tinkerpop.blueprints.impls.tg.TinkerGraphFactory'); 
var graph = TinkerGraphFactory.createTinkerGraphSync(); 
var g = gremlin.wrap(graph); 

g.V('name', 'marko').next(function (err, v) { 
    v.getProperty('name', function (err, value) { 
     console.log(value); 
    }); 
}); 

Почему, когда я использую Rexster, могу ли я не видеть здесь запрашиваемую базу данных?

+0

Aha ... поэтому его класс. http://grepcode.com/file/repo1.maven.org/maven2/com.tinkerpop.blueprints/blueprints-core/2.0.0/com/tinkerpop/blueprints/impls/tg/TinkerGraphFactory.java#TinkerGraphFactory.createTinkerGraph% 28% 29 –

+0

Итак, у меня есть обертка javascript вокруг API, который использует Java. –

ответ

6

Чтобы добавить к действительному ответу @mscdex.

Это код Gremlin с кодом JavaScript в Node.js с использованием прямых привязок Java через node-java.

Gremlin - это не язык, а DSL. Это большая часть времени, написанная в Groovy (из-за ее сокращенного синтаксиса над Java), но она также существует на любых совместимых с JVM языках (например, Java, Groovy, Scala, JavaScript через носорог и теперь nashorn с Java 8, чтобы назвать немного). Полный API Groovy/Java доступен при наборе запросов/скриптов Gremlin, что делает его «полным» языком.

Рекомендую прочитать http://gremlindocs.com/ и http://sql2gremlin.com для интересных ресурсов новичка на Гремлине. http://www.tinkerpop.com/docs/3.0.0.M1/ предоставит вам подробную информацию о TinkerPop и Gremlin (примечание: ссылка будет разорваться по мере выпуска официального выпуска версии v3.0).

Из-за того, что node-java работает и предоставляет методы Java (sync/async), вам необходимо использовать обратные вызовы здесь, чтобы не блокировать цикл событий. Это проблема JavaScript и не имеет ничего общего с Гремлином.

Там несколько других клиентов, которые не связываются с JVM непосредственно, но использует HTTP для TinkerPop 2.x (https://github.com/gulthor/grex для Node.js) или WebSocket для TinkerPop 3.0+ (https://github.com/gulthor/gremlin-client, для Node.js/браузеры, которые будут стать официальным драйвером JavaScript TP3). Примечание: TinkerPop member/lib автор здесь.

1

gremlin (зависимость от titan-node) использует node-java, который является мостом между узлом и Java. node-java позволяет импортировать Java классы, экземпляры типов данных Java и т.д.

Так что вы видите, является node-java импорта определенного класса Java, потому что Gremlin является Java/JVM вещь.

+0

Отлично. Является ли код использующим Java или Groovy? Как я могу узнать, что? –

+0

И где на машине будет храниться класс Java? –

+0

Мое предположение было бы Java и что оно выглядит в переменной среды CLASSPATH в дополнение к или если вы явно не использовали ['java.classpath'] (https://github.com/joeferner/node-java#javaClasspath). – mscdex