copyright intellectual-property patents open-source-software
Why do you have to accept a licencing agreenment before installing Java but not C++?
<p>There is a <a href="http://www.oracle.com/technetwork/java/javase/terms/license/index.html" rel="nofollow noreferrer">license to use Java</a> which you must accept before installing. Why isn't there one for C or C++? If there is, where can it be found? I'm guessing it has to do with how Oracle owns Java, but in a sense can't you say whoever makes the C++ owns it?</p>

<p>The reason for this is simple: You can’t install C or C++. C or C++ is just a programming language and C/C++ code compiles to machine code. Machine code can directly be executed by the processor (CPU) in your computer. </p>

<p>Java, however, is normally compiled to byte-code only a Java Virtual Machine can execute. And this Java virtual machine is what you get from Oracle and Oracle wants you to accept a license agreement.</p>

<p>You likely also have accepted some kind of license agreement when you began using or bought your computer. That’s the same you did for the Java Virtual Machine, but this time for your whole computer, which includes the processor that is responsible for executing the machine code. </p>

<p>Java in this context also refers to the Java libraries that ship alongside the JVM. While C or C++ also have standard libraries they are part of your operating system and you have agreed to a license covering them when you installed your operating system (or began using it).</p>

<h2>The Java Licensing Agreement</h2>

<p>The <a href="http://www.oracle.com/technetwork/java/javase/terms/license/index.html" rel="nofollow noreferrer">Binary Code Licensing Agreement for Java SE</a> relates to your right to reproduce internally without modification their Java Virtual Machine (the thing that will run your compiled Java code). Among other things, it prohibits from making derivative works that "modify, or change the behavior of classes, interfaces, or subpackages that are in any way identified as 'java', 'javax', 'sun', 'oracle'". It also generally prohibits redistribution of the source code for the Java API.</p>

<h2>C++ has similar protections</h2>

<p>Analogous protections <em>do</em> exist relating to C++.</p>

<h3>The runtime machine is protected</h3>

<p>The design of your computer's processor is protected by patent and copyright (by Intel, or AMD, etc.), and you don't have permission to copy it. The reason you don't need an explicit license like you do for the Java Virtual Machine is because it is a physical thing that you legally possess, and no reproduction rights are implicated when you use it. Also, it would make no sense to call this part of C++ because it is used by every program that runs on your computer. But, it is protected, like the Java Virtual Machine is protected.</p>

<h3>The compiler and standard libraries are licensed for your use</h3>

<p>C++ requires a compiler to turn the code you write into an executable format. It also includes library code that implements a bunch of standard functionality that is available to the programs that you write. This compiler and library code are protected by copyright, and only available to you because of a license.</p>

<p>For example, a very popular implementation of C++ is <a href="https://gcc.gnu.org/" rel="nofollow noreferrer">GNU C++</a>. Its C++ compiler (g++) and standard library implementation (libstd++) are distributed under the <a href="https://gcc.gnu.org/onlinedocs/libstdc++/manual/appendix_gpl.html" rel="nofollow noreferrer">GNU Public License</a> with a <a href="https://gcc.gnu.org/onlinedocs/libstdc++/manual/license.html" rel="nofollow noreferrer">section 7 exception</a> that allows "[proprietary] programs to use [...] the
header files and runtime libraries...". Another C++ implementation, Clang/LLVM, is licensed under the <a href="http://llvm.org/docs/DeveloperPolicy.html#license" rel="nofollow noreferrer">BSD License</a>. There are also <a href="https://en.wikipedia.org/wiki/List_of_compilers#C.2B.2B_compilers" rel="nofollow noreferrer">many proprietary C++ implementations</a>.</p>
