A first (alpha) version of the "type-safe" BWAPI framework for Java is available at
"type-safe" refers to the fact that all units are modeled as different types and each type can only execute legal actions.
So "unit.gather(unit)" becomes "Worker.gather(MineralPatch)". A CommandCenter cannot attack, but CommandCenter.train(Worker) is available, etc.
The idea is to 1) make life easier and code clearer for the developer and 2) automatically reduce the possible action space and filter out many illegal combinations.
Currently, only Terran bots are supported. However, opponents can be any race.