Wednesday, May 15, 2013

New Incubator Project: Neo4j Mobile for Android v0.1!


During this busy week of Android hacking at Google I/O, we are pleased to announce an amazing new Community project, for all of those who have been yearning to run Neo4j on mobile: Neo4j Mobile for Android v0.1! This project is available today on GitHub: for hacking, experimenting, evolution, and use. As the 0.1 version number indicates, this is an incubation project. This means that it’s fully functional, but early days, and hence experimental, and as-yet unsupported. We’ll leave this in your capable hands to play with, extend, and comment upon. 

For those of you who are in San Francisco, we'll be holding a launch event tomorrow at #GoogleIO on Wednesday May 15.


A few facts to get you started:

  • First and foremost: credit where credit is due! You can thank Noser Engineering AG for this amazing bit of work. Noser has deep expertise in mobile and embedded devices, leading to this port, which was originally done for a client of theirs.
  • How does it work? Neo4j Mobile for Android runs as a service, and is accessed via Android Inter-Process Communication using an AIDL (Android Interface Definition Language) connector. This makes it possible for multiple apps on an Android device to access the same database service. The picture below summarizes an example application  architecture, taken from the original project, showing Neo4j Mobile for Android interacting with other solution elements:


  • What version of Neo4j is the Android port based on? The Android version is based on an older milestone version: 1.5 M05, which has been modified to run on Android. The primary thing to be aware of is that this version doesn’t support Cypher. (It also doesn’t include a number of Server components, that simply aren’t necessary or relevant on Android.) Upgrading to a more recent version of Neo4j that does have better support for Cypher is clearly something that will need to get done.
  • Building the Project. The project builds on Ant. Eventually this could be changed to use Maven. As Ant is pretty common and well-accepted in the Android world, we decided not to change the build system.
  • Licensing. Like our Community edition, the license is GPL. If you want to redistribute Neo4j with your app, but aren’t planning on making your app open source, come talk to us, and we’ll work with you to make that happen. This is an incubator project, so we’re not expecting you’ll go live with this tomorrow.
  • Where do I go for questions? This is a community-supported project. Post your questions on the Neo4j Google Group. If you need consulting assistance or have a specific project in mind, you can contact Noser (the authors of this port). For questions about commercial licensing, please contact Neo Technology.
  • Is there a test app that I can use? Yes. There’s a (very) rudimentary test app that is included in the project. (See the screenshot to the right.) We’re working on a webcast and some more detailed instructions, and will get those posted when we can.

  • Can I replicate this database? There are no replication services built in, but you can certainly do this at the application layer. Noser has done this and will cover it in their upcoming webinar.
  • How can I learn more? We’re planning a webinar with Urs Boehm, who is Noser’s lead engineer on the Android port. We’ll post webinar details online, and will send invites to the general Neo4j mailing list once it’s been scheduled. You can sign up to the Neo mailing list here.


Enjoy!

Philip Rathle
Senior Director of Products

4 comments:

Anonymous said...

wrong link for Noser Engineering AG - should be noser.com, or?

Peter Neubauer said...

Thanks for pointing that out, corrected!

Sergey Golub said...

If one database per device, how is it going to be distributed? It must be published to "play" as library project I guess(by whom?). App which uses it, must ask user to install neo4j lib. And every db version must be there also with different package name. Am I right? There comes different issues when different apps use different db versions :) Is it to heavy when compiled ?

Matt Whetton said...

I'm also interested in the question asked by Sergey Golub.