Jakarta is Indonesia's busiest international arrival point and has numerous international connections on national and low cost airlines to destinations throughout Asia and beyond. International flights to regional Javanese airports have increased greatly in recent years, offering usefull alternative routes that allow you to bypass Jakarta completely. Surabaya has a few international flights, as do Solo, Bandung, Yogyakarta and Semarang.
Domestic flights have dropped in price in recent years and are now a very convenient way to get around Indonesia. Book early durring holiday season. You can get to anywhere in Indonesia from Jakarta, and all the main regional airports are offering an expanding network of connections through the archipelago.
Sea.
Jakarta is the main hub for Pelni passenger ship that run all over Indonesia, but no international exist. It's possible (but slow going) to get to/from Singapore by using ferries that run between Bintan island in Riau archipelago (off the Sumatra coast) and Singapore. From Bintan island there are Pelni boats to/from Jakarta
Bali
Ferries run round the clock between Banyuwangi/Ketapang harbour in East Java and Gilimanuk in Bali. From Ketapang, numerous buses and train travel to the rest of Java. An easier alternative is to take a through - bus from Denpasar to any major city in Java - these buses include the ferry journey.
Sumatra
Ferries shuttle between the Javanese port of Merak and Bakauheni in southern Sumatra, 24 jours a day. From both ports, regular buses head for the main centres of their respective islands. Long distance buses run from Jakarta to all the main cities in Sumatra. Work on a new bridge across Sunda strait linking Sumatra and Java is scheduled to begin in 2012 ( and finish by 2025)
The long bus journeys in Sumatra can take their toll and as most points of interest are in North Sumatra, most travellers prefer to fly there.