API para desenhar em BufferedImages

Preciso criar uma aplicação que tenha a funcionalidade de tratamento de imagens. Para alterar contraste, converter para escala de cinza e inumeros outros filtros baixei uma api do site www.jhlabs.com. Agora preciso desenhar circulos, setas, retangulos, ovais e texto em um BufferedImage. Alguem conhece alguma API que facilite meu trabalho? Sei que posso fazer isso com Graphics2d do Java, mas será que não existe algo pronto melhor, mais produtivo e com mais funções ?