Content deleted Content added
Line 399:
** Java uses a package system that dictates the file name and path for all program definitions. Its compiler imports the executable [[class (file format)|class files]].
** Prior to C++20, C++ used a [[header file]] [[source code]] inclusion system to share declarations between source files. Since C++20, however, modules were introduced offering similar functionality to Java packages, however C++ modules do not have the same hierarchical structure of Java packages and do not have the same granularity, allowing for importing individual functions or classes - rather, all symbols marked <code>export</code> are accessible after importing a module.
** Since C++23, the C++ standard library can now be imported as a module, but must be imported in its entirety rather than importing specific packages of the library like in Java, with <code>import std;</code>, or optionally if requiring the C standard library in the global scope, with <code>import std.compat;</code>. This may change in the future, with proposals to separate the standard library into more modules such as <code>std.fundamental</code>, <code>std.math</code>, and <code>std.io</code>.<ref name="P0581R1">C++ Standards Committee. (2018). ''P0581R1 - Modules for C++''. Retrieved from [https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0581r1.pdf https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0581r1.pdf]</ref><ref name="P2412R0">C++ Standards Committee. (2021). ''P2412R0 - Further refinements to the C++ Modules Design''. Retrieved from [https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2412r0.pdf https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2021/p2412r0.pdf]</ref>
* Compiled Java code files are generally smaller than code files in C++ as [[Java bytecode]] is usually more compact than native [[machine code]] and Java programs are never statically linked.
* C++ compiling features an added textual [[preprocessor|preprocessing]] phase, while Java does not. Thus some users add a preprocessing phase to their build process for better support of conditional compiling.
|