Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

2016: The Year in Neo4j Drivers for Java, Python, .NET ,and More

DZone's Guide to

2016: The Year in Neo4j Drivers for Java, Python, .NET ,and More

With the release of Neo4j 3.0 last year came Bolt, Neo4j's own Cypher-based binary protocol. Since then, numerous drivers for several languages have been developed.

Free Resource

Whether you work in SQL Server Management Studio or Visual Studio, Redgate tools integrate with your existing infrastructure, enabling you to align DevOps for your applications with DevOps for your SQL Server databases. Discover true Database DevOps, brought to you in partnership with Redgate.

Spring Is in the Air

2016 was the year when, in April, with the availability of Neo4j 3.0, we also introduced our own binary protocol named Bolt. We also provided the first set of officially supported drivers for Bolt, including Java, .NET, JavaScript, and Python 

that were developed in-house and documented in the 

Neo4j developer manual.

Image title

Since the first days of Neo4j we’ve been supported by our active community of contributors who did a great job of providing drivers for our HTTP and REST endpoints for more than 20 popular programming languages.

Thank you all so much for this impressive work!

With Neo4j 3.0 and the Bolt binary protocol, we saw this amazing work continue. Originally we were a bit concerned because of the higher effort required to develop a Neo4j driver for a custom binary protocol but our contributors surprised us here.

Even during the development of Neo4j 3.0 the first three drivers: Nigel’s py2neo (Python), neo4j-php-client (PHP) by Chris Willemsen from our partner GraphAware (UK) and libneo4j-client (C) by Chris Leishman had their first releases.

To make it easier for contributors to develop Neo4j drivers using Bolt, Nigel started the 

boltkit project: a detailed, executable documentation (in Python) that details how to structure and implement a driver for the Bolt protocol and the Packstream serialization. This also includes some tools for driver authors and is used in-house here at Neo Technology.

Image title

Summertime and the Livin’ Is Easy

In the Go community, several people actively worked on Neo4j drivers using Bolt. John Nadratowski developed the golang-neo4j-bolt-driver 

of which a more idiomatic fork was made and maintained by Eric Lagergren from SermoDigital to a more idiomatic variant

. And Hugo Bost wrote neoql

a variant that was (similar to cq) based on the widely used database/SQL API for Go.

Florin Patrascu enjoyed working in Elixir and couldn’t live without a current Neo4j driver. So he provided neo4j-sips, a Bolt driver for Elixir.

Forever Autumn

In October at GraphConnect San Francisco, the third beta of Neo4j 3.1 was launched, with some notable improvements in the official Neo4j drivers, especially in concurrent operations and session reuse.

The bigger changes were in the new APIs to support Causal Clustering in Neo4j 3.1. Smart client routing (bolt+routing://host:port) that uses information on cluster topology together with demarcation of read and write sessions alleviates the need for a load balancer. And the ability to use a transaction-state token (bookmark) allows for causal consistency to read your own writes even on an eventually consistent cluster underneath. These features were first to launch with the 1.1 version of the Java driver.

Pavel Yakovlev found time besides his job as the research director of a biotech company to develop a Bolt Neo4j driver for Haskell named hasbolt

.

Hazy Shade of Winter

The neo4j.rb 

(Ruby) team (Brian Underwood, Chris Grigg, et al) worked over the year – besides other improvements – on implementing the Bolt protocol in neo4j-core gem 

so that it is supported both on the low-level APIs as well as in the ActiveRecord module of neo4j.rb, both of which were released at the end of the year.

These core Neo4j drivers were not the only libraries developed in 2016, we also saw them being used by other projects. The Java Neo4j driver was used for the neo4j-spark-connector and for the Neo4j-JDBC driver by the team of our partner Larus BA in Italy. The JavaScript driver powers the Neo4j Browser and the Tableau 10 (WDC2) Neo4j connector, maintained by our partner Ralf Becher from TIQ in Germany.

The PHP driver is used in the Drupal module 

developed by Pronovix and also in the brand-new

neo4j-symfonyNeomodel 3, the Django-friendly OGM by Robin Edwards uses py2neo under the hood.

The Jan 19th release of the new official 1.1 driver series for .NET, JavaScript, and Python adds smart routing and bookmarking capabilities to work seamlessly with causal clusters.

You can find all these mentioned drivers on our language guide pages for developers 

and for many of them also an implementation of our example movie application 

in our github.com/neo4j-examples 

repositories.

Image title


As with any open source project, feedback from users is crucial to our success, so if you use any of the abovementioned Neo4j drivers make sure to raise issues if you encounter problems or have ideas and/or suggestions for improvements.

We’re sure any driver author would appreciate a “thank you” for their efforts as well. And if you are using the Neo4j drivers in a commercial project, perhaps you can find an opportunity to either contribute back code that you’ve developed or consider contacting the author or the author’s company to help improve the driver for real-world usage.

Are there languages missing that you would like to see supported by the Neo4j community or officially by Neo4j? Please let us know! Drop us an email to

.

It’s easier than you think to extend DevOps practices to SQL Server with Redgate tools. Discover how to introduce true Database DevOps, brought to you in partnership with Redgate

Topics:
protocol ,neo4j ,driver ,database

Published at DZone with permission of Nigel Small, DZone MVB. See the original article here.

Opinions expressed by DZone contributors are their own.

THE DZONE NEWSLETTER

Dev Resources & Solutions Straight to Your Inbox

Thanks for subscribing!

Awesome! Check your inbox to verify your email so you can start receiving the latest in tech news and resources.

X

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}