慕哥9229398
一种语言有很多实现。你说的是sun公司的java,其他公司也有java的版本,比如ibm,还有gnu的Java。 语言本身是一种标准,没有开源不开源的说法,除非大家有种默认的说法。例如如果没有特指其他的java,java自然直sun公司的java。开源指的是语言的实现是开源的。比如c,有turbo c,源代码不公开的,就不是开源的。但是linux下默认的gcc是更符合c/c++标准的一种实现,同时也是开源的。而微软的各种c/C++实现(visualc++)就不是开源的。如果某种语言所有的实现都不是开源的,那它就不是开源的。例如C#过去可以认为它不是开源的,因为仅有的实现visual c#不开源。但c#是一种国际标准,如果有能力谁都可以做出自己的实现,像现在有了Mono project,它是一个开源的c#实现,甚至可以在linux下用。强调的是,不是说只要公开就是开源,实际上还有其他版权的一些条款,你必须符合某种开源的版权。还有不是说开源的你就可以随便用了,有很多开源产品都有类似“强盗”的条款:粗略地说,只要你用了它的代码,你的代码也必须开源,否则就侵权了。如果做商用,必须仔细看你用的每一个开源库的版权声明,看是否要求你也开源。