Read the reference guide, check source code of the navigation portlet... There is everything you need
Yes, I can confirm what Thomas said.
In portal 2.4 we started that way by creating a portlet providing different views of the navigation tree (primary and secondary navigation, different types of overviews and a sitemap).
In portal 2.6 we switched to a custom pageCustomizer to get/enhance (with custom data like a description for an entry) and render the navigation information.
Generalizing that topic has lead us to the ability of dynamically inserting navigation entries from external application (xml schema based) into a predefined entry point within the navigation.
That means, the current api is flexible enough to fit your needs and, if not, you can extend it in your own application