Some discussion in the comments on Romain’s weblog regarding Java applications that install private VMs. People seem to be either arguing for or against including a VM, but there is obviously a better way. What the installer should really do is check for a suitable JVM and if it can’t find one, offer to download it.
Of course the application launcher would also need to perform the same check in case it gets removed at a later date. One (commercial) solution which seems to do this is Install4J although I can’t verify how successful the approach is as I haven’t used it personally.
Update: There is a new version of Install4J out now and the entry level price point is into 4 figures, so I won’t be using it any time soon.