What is the best way to connect islands together in Minecraft?

The simplest approach is to build a bridge.

You'll need to build up far enough (at least 3 blocks above water level) to ensure that you have clearance for your boat before building across.

You don't have to build mid stream supports as everything but gravel and sand are self supporting, but it might make building easier as you can build from both sides rather than having to creep to the end and add new blocks that way.

See this question on cantilevers for tricks and tips on this aspect.

If you don't want neutral mobs spawning on the bridge avoid dirt (unless it's completely disconnected from any existing grass). Cobblestone might be the best bet as you always have a surplus.

Make sure the bridge is well lit so hostile mobs don't spawn on it.

You could set up doors at either end to keep mobs off it too.


Underwater

Ok, so I recently outlined how to make sign-roofs underwater, they can also be used to create nice long tunnels underwater. Ladders can be used as well, but you wouldn't want to walk next to them as you'll constantly be tugged up into the water. Of the two options, ladders require less wood:

~~~~~    ~ - water
⌧⌧⌧⌧⌧    ⌧ - sign/ladder
         # - block
#####

The nifty thing about underwater tunnels is that you only need one bock of water above them to be able to boat across them, and they wont obstruct your view of the sky/surrounding area, and use renewable resources.

Overwater

Build a bridge. You're going to want to have your bridge at least 3 blocks above the water so that you don't hit your head if you exit the boat while underneath it:

#####   # - block
        ~ - water
  o
 \_/
~~~~~

if you're making a bridge above water, you're probably going to want it to be attractive and well lit. I'd suggest choosing to make it out of a single material such as cobblestone or wooden planks, as they're readily available. The width of the bridge might be important to you, a wider bridge can look very elegant, especially if you use step pieces for the center and normal blocks for the edges: XxxxX. You can secure your road by enclosing the stairs/ladder up to it.

Also, an above-ground road can easily be expanded to be wider to include a railway next to the path.


I'm not sure on the "best" way, since that's a fairly ambiguous term... but I can think of three different methods:

1) Build a bridge: this could either be a really simply bridge, basically just a straight line - nothing fancy; or you could make a more complex bridge.

2) Another method, and in my opinion, the most awesome method: Build an underwater (or underground) tunnel going to each Island..or connecting each Island. not only is this just downright awesome, but it wouldn't block boats, take up 'premium' space, or just mess up the appearance you want (that is, if you'd rather not have a bridge, and just water for people to see)

3) Nether Portals.. I've done this before to link a flying Island with my ground base. You'll need to read up more on how Nether Portals to make sure you get this working correctly.

The basic idea is that a portal created in the "real" world will have a corresponding portal created in the nether with the following coordinate translation from the real world to the nether:

{X, Y, Z} → {floor(X) ÷ 8, Y, floor(Z) ÷ 8}