--- Quote Start ---
direct instantiation is awesome
--- Quote End ---
Its good for quick-and-dirty checks of code, but it introduces a compilation-order dependence which can be annoying.
If the compiler sees
u1: entity work.mycomponent ...
before it has actually compiled mycomponent into work, then it will choke.
If however you have a component declaration either in the file where you use the component, or in a package that the code references, then the compiler will only look for mycomponent after it has processed all the VHDL files.
So, its 'awesome', but not perfect :)
Cheers,
Dave