Jonathan Swartz, an executive at Sun Microsystems, argues quite correctly that having access to source code does not really help most customers. He redefines the word “open” as software that makes it easy to move off of. If it locks you in, it's not “open” - even if you have the source code.
(Of course, he has a good reason to say that - Sun does not provide the Java source code, even though it's under pressure from companies like IBM to do so.)
I agree with Jonathan. Linux is not open.
By the same definition, Java is not open. Jonathan mentions that if you develop a .NET application, if you wanted to move it to another platform you would have to rewrite it. (I guess he hasn't heard of Mono.) What's the difference between .NET and Java in that regard? Nothing. If you want to move off Java, you would have to rewrite your application.
Disclaimer The opinions expressed herein are my own personal opinions and do not represent my employer's view in any way.