Bali est l'île la plus "facile" : beaucoup de touristes donc beaucoup d'agences, de possibilités de transport, de gens parlant anglais etc. Pour le calme, la tranquilité, il vaut mieux éviter le sud de l'île où se concentrent les hotels de loisirs et les embouteillages. le centre de l'île est par contre très sympa : paysages de rizières et volcan, temples, cérémonies religieuses.
En 3 semaines vous pouvez combiner
Bali et
Java (Le classique
Yogyakarta,
Bromo et
Kawa Ijen 
) mais il faudra prendre l'avion de
Bali à
Jakarta au retour en gardant 1 nuit de marge sur
Jakarta et aller directement à
Yogyakarta en arrivant (attention les parcours sont très longs : 40km/h en moyenne...).
Java est bien moins fréquentée que
Bali (pas de forfait balnéaire vendu depuis l'Europe ou l'
Australie) mais est, pour moi, plus intéressante.
Sinon, il faut oublier complètement
Bali et
Java et consacrer les trois semaines soit à
Sumatra soit à Sulawesi (Avion aller/retour). Je ne connais pas encore ces îles, (Je pars dans 3 jours

) mais elles semblent à l'écart des masses touristiques et tournées vers la découverte de coutumes et civilisations (+ plage).
Bon choix et bon séjour !