Wednesday, December 13, 2017

Remote Services between Python and Java

ECF's implementation of OSGi Remote Services allows multiple distribution providers, which are responsible for the actual rpc communication required by remote services.   Here is a list of ECF distribution providers we've created.

Using Py4j and Google Protocol Buffers, we've recently enhanced an ECF distribution provider that allows the use of remote services (and Remote Service Admin) between OSGi and Python.   Service impls can be in either Java or Python, and consumers can be either Java or Python.     Protocol Buffers can be used to efficiently serialize arguments and return values.

The only dependencies are on OSGi, Py4j, and Google Protocol buffers, so this distribution provider can be used in Eclipse or other OSGi environments like Karaf.

Get the most recent release, with examples and source code at this github repository.


3 comments:

ark santa hat said...

So just for those Mac users who are completing this tutorial using a Mac with a raspberry pi - you will need to download the remote desktop app from the Mac store, it is called Microsoft Remote Desktop 8.0. Once you have it, create a new connection with the IP address of the raspberry pi and enter the username as "pi" and the password as "raspberry". You will then see the raspberry pi screen on your mac.
Read more



war of the chosen console commands said...

OSGI: make everything more complex while you will can do same thing just
with not using a component without a interface :D just hilarious what
can people do when they dont know what to do with complexity. Some sectors have rituals which involves with rabbit feet and some sectors creates useless softwares instead of setting some rules

Scott Lewis said...

I think your comments about OSGi expose a deep misunderstanding of how complex system development occurs/can occur. I would be interested in your examples of software as complex as...say...Websphere...that have been created by simply 'setting some rules' or 'not using a component without a interface' (aka using components with interfaces)