14. Difference Between C++ & Java C++ JAVA Compatible with C source code, except for a few corner cases. No backward compatibility with any previous language. The syntax is however strongly influenced by C/C++. Write once compile anywhere (WOCA) Write once run anywhere / everywhere (WORA / WORE) Allows procedural programming, object-oriented programming, and generic programming. Strongly encourages an object oriented programming paradigm.
15. C++ JAVA Allows direct calls to native system libraries. Call through the Java Native Interface and recently Java Native Access. Exposes low-level system facilities. Runs in a protected virtual machine Only provides object types and type names. Is reflective, allowing metaprogramming and dynamic code generation at runtime. Has multiple binary compatibility standards (commonly Microsoft and Itanium/GNU) Has a binary compatibility standard, allowing runtime check of correctness of libraries.
16. C++ JAVA Optional automated bounds checking. (e.g. the at() method invector and string containers) Normally performs bounds checking. HotSpotcan remove bounds checking. Standardized minimum limits for all numerical types, but the actual sizes are implementation-defined. Standardized limits and sizes of all primitive types on all platforms Pointers, References, and pass by value are supported Primitive and reference data types always passed by value
17. C++ JAVA Supports class, struck, and union and can allocate them on heap or stack Supports only class and allocates them on the heap. Allows explicitly ove rriding types. Rigid type safety except for widening conversions. Autoboxing/Unboxing added in Java. Operator overloading for most operators The meaning of operators is generally immutable, however the + and += operators have been overloaded for Strings.
18. C++ JAVA Full multiple inheritance, including virtual inheritance. Single inheritance only from classes, multiple from interfaces Compile time Templates Generics are used to achieve an analogous effect to C++ templates, however they do not translate from source code to byte code due to the use of Type Erasure by the compiler. Function pointers, function objects, lambdas (in C++0x) and interfaces No function pointer mechanism. Instead idioms such as Interfaces, Adapters and Listeners are extensively used. No standard inline documentation mechanism. 3rd party software (e.g. Doxygen) exists. Javadoc standard documentation
19. C++ JAVA const keyword for defining immutable variables and member functions that do not change the object. final provides a limited version of const, equivalent to type*const pointers for objects and plain const of primitive types only. No const member functions, nor any equivalent to const type* pointers. Supports the goto statement. Supports labels with loops and statement blocks.