Well, yes and no.
Kindles are generally quite locked down, and even apps like KOReader and KUAL need some hacky ways to work those limitations around.
First limitation is the launch approach. Kindles used to allow some limited apps called "kindlets" (which is how e.g. KUAL installed itself, and how KOReader's homescreen launcher worked), but it was recently removed. Kindlets, while limited, were much more portable than the other option - booklets. (sidenote: AFAIK the Voyage did not get the update that removes Kindlet support, so you should be able to use that approach).
Booklets are system-installed Java applications that, aside from a JAR file containing at least one final class extending Booklet/AbstractBooklet, and register it in a system-level SQL database (basically, an "install" process). The latest KUAL releases are now in this format.
Both of these formats are primarily Java, however do note that there isn't really a UI library for these approaches, and you'll need to handle the UI yourself.
My recommendation would be that you look into the KUAL sources, as well as the two KOReader Launcher approaches:
- KUAL (maintained by NiLuJe):
https://github.com/NiLuJe/KUAL_Booklet
- KOL Booklet:
https://github.com/yparitcher/KUAL_Booklet
- KOReader Booklet:
https://github.com/koreader/kpvbooklet/
You'll also need a bunch of the framework files from your Kindle, mainly from /opt/amazon/ebook/lib and /opt/amazon/ebook/booklet. Primarily kaf.jar (which is the Kindle Application Framework).
There are some Python runtimes built for various Kindles in the Snapshots threads too, and IIRC NiLuJe maintains an fbink Python wrapper, which you can use for the UI.
Then, finally, you can do WAFs (Web Application Framework) - as Amazon moved towards a Chromium based frontend, they introduced these (much more limited) web apps, but getting third party ones into the system is quite hacky and semi-tethered.
Overall I think your best bet is trying a Java Booklet, but it all depends on what kind of app you're trying to build.