gateway abstraction layer for java