Please forgive me if I am asking a foolish question or something that I should have known earlier as a java developer.
As far as I understand, the source code for J2SE, J2EE, J2ME API is not yet open. Is it? Or part of one these 3 APIs are open source? I understand that we can decompile he jar files and find out the source code. But is there any valid way to get the source code of those? Does Sun provide it or will provide it in future java versions?
"Open source" doesn't just mean that the source code is available; it implies a license that allows you to modify and share the code (you know that, right? You respect the licenses of the software you work with, yes?)
The Java source code for virtually all of Sun's Java APIs is easily available; the J2SE API sources come with the JDK download. Installing them on Windows is an option in the installer, which you may have missed. Look in your JAVA_HOME directory for "src.zip".
The C/assembler source for Sun's JVMs, as well as some other Java goodies, are all available under a fairly liberal licensing policy. You have to agree to a license, but then you can download the source. But you're not allowed to distribute modified copies.
The soul is dyed the color of its thoughts. Think only on those things that are in line with your principles and can bear the light of day. The content of your character is your choice. Day by day, what you do is who you become. Your integrity is your destiny - it is the light that guides your way. - Heraclitus