Bali has 5 bodies of water surrounding it. These are the Lombok Strait to the east, the Badung Strait to the SE, the Bali Sea to the north, the Indian Ocean to the SW and the Bali Strait to the west. Just 3km across the Bali Strait is also only 60 meters deep (compare that to the 1,300 meter deep Lombok Strait) and currents can be difficult.
Traditional prahu (wooden boats with outriggers) would sail from Java all the way around to Perancak on the SW coast near Negara, then up the Ijo Gading river to Negara. The first regular ferry service between Bali and Java was set up in the 1930’s.
Bali and Java were once joined, up until the end of the last Ice Age, went sea levels increased. Bali and Java occupy part of a tectonic plate called the Sunda shelf, so Gilimanuk and Java were once joined.
The Balinese legend of how Bali and Java came to be separated is far more interesting. Originally people say, Bali and Java were connected. Javanese holy men would visit the sacred mountain, Gunung Agung in East Bali. A fellow named Sidi Mantra was a high caste Javanese who has problems with his son. He spoke to the dragon of Gunung Agung, Naga Besukih and told him his son Manik Angkeran, could not stop gambling. The dragon agreed to pay off Manik’s gambling debts, so after shaking its tail, gemstones began to fall from its skin, for Sidi Mantra to collect. Unfortunately Sidi Mantra had to come back time and time again as his son would not stop gambling. Manik finally visited the dragon himself, but instead of being satisfied with a few gems, sliced off the dragon’s tail. Manik was instantly turned to ashes by the angry dragon.
Sidi Mantra pleaded with the dragon to restore his son and agreed to fix the dragon’s tail in the process. All worked out well, but the father’s final act was to draw a line in the ground with his magic staff, instantly creating a dividing line between he and his son which filled with water, hence the Bali Strait.