What are your off-line requirements? If you don't need to read files from the local filesystem, flash and silverlight run fine inside a local html file. Flash has a simple local storage mecanism through the SharedObject
class. I don't know if silverlight has something similar.
Adobe AIR is only needed if you need certain system permissions like setting file associations, full IO, system tray / dock integration etc.
There are a few phones that run flashlite, which is pretty much identical to actionscript 2.0. So porting actionscript applications is somewhat easier. However, flashlite still relies on the SharedObject
class for persistent storage.
Mac and iphone/ipod touch use the safari browser, so you can use the html <canvas>
element + javascript + html5 offline storage today. This is also supported on firefox as well, which is available for windows, mac and linux. See some games built with this technology here: http://www.sarkscape.com/games
Java has been around for quite a while now. It even supports OpenGL through the JOGL library. I don't know about specific libraries for games.
The only truly widespread programming language for mobile devices is j2me, however, is not so straightforward to port desktop java apps to j2me.
JavaFX is still in its infancy and there are a lot of improvements to be made, its not worth the try just yet.