Announcing a new ROS 2 compatible Java library - jros2

This seems to be a common misconception about ros2-java and ROS 2 in general, if the only thing you need is to be able to communicate with existing ROS 2 systems, the only things you need are a C++11/14-compatible compiler and the rcl, rmw and code generator packages.

Some time ago I ported rcljava to Android, running ROS 2 natively on Android and it only required the packages I’ve mentioned.

The problem with developing a client library without relying on the existing rcl/rmw architecture is that if in the future you may want to change your transport layer (e.g. zenoh), you’d have to implement an API that can work with both DDS and zenoh, and by then you’ll have just reimplemented rcl and rmw. And of course, like @peci1 says, possible incompatible behaviors or bugs. In ROS 1, rospy and roscpp in some cases behaved differenlty, and that’s because they had completely different codebases and they shared nothing at all, that’s why we came up with rcl/rmw for ROS 2 to unify behaviors between all the client libraries.

4 Likes