I am considering using BACnet protocols to implement a gateway-like interface to some controllers, but haven't done so yet.
There is a Java API for BACnet that is being readied by (I think) a Canadian group. I don't have the URL handy, but it hadn't been released as of a few weeks ago.