La verdad no conozco ningún API que haga esto. Sin embargo lo puedes hacer a mano, y no creo que necesites programarlo en otro lenguaje. Te lo pongo de esta manera: Java es multiplataforma... ¿necesitas que tu programa funcione para cualquier SO? Si es así, tienes que tener en cuenta que en cada sistema operativo esa información se obtiene de distinta manera. No puedes aplicar el mismo método para Windows, OpenSolaris, o incluso entre diferentes versiones de Linux es distinto.
Mi consejo: enfócate en los SO que te interesa. De mi experiencia con Windows, se que los programas instalados de la manera tradicional quedan en el registro del sistema... así que, para Windows, bastaría con que leyeras las claves del registro indicado y de esa manera sabrás que aplicaciones tiene instaladas el equipo. Aquí hay algunas ideas para manejar el registro:
http://foro.elhacker.net/java/java_y_el_regedit-t247399.0.htmlEn otros sistemas operativos bastaría con ejecutar comandos del sistema para obtener esa información... en OpenSolaris usando pkg_*, en Debian y derivados (Ubuntu, por ejemplo) usando aptitude, en Gentoo usando eix, en Arch/Linux usando Pacman, en FreeBSD usando pkg_db, en Fedora/openSuse/etc. usando yum... y así me podría quedar toda la tarde
En fin, espero que entiendas la idea.
Un saludo!