Comparison of Java and C++
ಜಾವಾ ಮತ್ತು ಸಿ + + ಎರಡು ಪ್ರಮುಖ ವಸ್ತು-ಆಧಾರಿತ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಾಗಿವೆ. ಅನೇಕ ಭಾಷಾ ಜನಪ್ರಿಯತೆಯ ಮಾಪನಗಳ ಪ್ರಕಾರ, ಈ ಎರಡು ಭಾಷೆಗಳು 21ನೇ ಶತಮಾನದ ಬಹುಪಾಲು ಆಬ್ಜೆಕ್ಟ್-ಓರಿಯೆಂಟೆಡ್ ಮತ್ತು ಉನ್ನತ-ಕಾರ್ಯಕ್ಷಮತೆಯ ಸಾಫ್ಟ್ವೇರ್ ಅಭಿವೃದ್ಧಿಯಲ್ಲಿ ಪ್ರಾಬಲ್ಯವನ್ನು ಹೊಂದಿವೆ ಮತ್ತು ಅನೇಕವೇಳೆ ನೇರವಾಗಿ ಹೋಲಿಸಲ್ಪಡುತ್ತವೆ ಮತ್ತು ವ್ಯತಿರಿಕ್ತವಾಗಿವೆ. ಜಾವಾದ ವಾಕ್ಯರಚನೆಯು ಸಿ/ಸಿ + + ಅನ್ನು ಆಧರಿಸಿತ್ತು. ವಿನ್ಯಾಸದ ಗುರಿಗಳು ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಗಳಾದ ಸಿ + + ಮತ್ತು ಜಾವಾಗಳ ನಡುವಿನ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಅವುಗಳ ಪರಂಪರೆಯಿಂದ ಗುರುತಿಸಬಹುದು, ಏಕೆಂದರೆ ಅವು ವಿಭಿನ್ನ ವಿನ್ಯಾಸದ ಗುರಿಗಳನ್ನು ಹೊಂದಿವೆ. ಸಿ + + ಅನ್ನು ಸಿಸ್ಟಮ್ಸ್ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ (ಅಂದರೆ. ಮೂಲಸೌಕರ್ಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್), ಕಾರ್ಯವಿಧಾನದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ ಸಿ ಅನ್ನು ವಿಸ್ತರಿಸುತ್ತದೆ, ಇದನ್ನು ಸಮರ್ಥವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಸಿ ಗೆ, ಸಿ + + ಆಬ್ಜೆಕ್ಟ್-ಓರಿಯೆಂಟೆಡ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್, ಎಕ್ಸೆಪ್ಶನ್ ಹ್ಯಾಂಡ್ಲಿಂಗ್, ಲೈಫ್ ಟೈಮ್-ಬೇಸ್ಡ್ ರಿಸೋರ್ಸ್ ಮ್ಯಾನೇಜ್ಮೆಂಟ್ (ಆರ್ಎಐಐ), ಜೆನೆರಿಕ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್, ಟೆಂಪ್ಲೇಟ್ ಮೆಟಾಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮತ್ತು ಜೆನೆರಿಕ್ ಕಂಟೇನರ್ಗಳು ಮತ್ತು ಅಲ್ಗಾರಿದಮ್ಗಳನ್ನು (ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಟೆಂಪ್ಲೇಟ್ ಲೈಬ್ರರಿ ಅಥವಾ ಎಸ್ಟಿಎಲ್) ಒಳಗೊಂಡಿರುವ ಸಿ + + ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಲೈಬ್ರರಿಗೆ ಬೆಂಬಲವನ್ನು ಸೇರಿಸಿತು. ಜಾವಾ ಒಂದು ಸಾಮಾನ್ಯ-ಉದ್ದೇಶದ, ಏಕಕಾಲೀನ, ವರ್ಗ-ಆಧಾರಿತ, ವಸ್ತು-ಆಧಾರಿತ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆಯಾಗಿದ್ದು, ಅನುಷ್ಠಾನದ ಅವಲಂಬನೆಗಳನ್ನು ಕಡಿಮೆ ಮಾಡಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ. ಇದು ಸುರಕ್ಷಿತವಾಗಿರಲು ಮತ್ತು ಹೆಚ್ಚು ಕೊಂಡೊಯ್ಯಲು ಜಾವಾ ವರ್ಚುವಲ್ ಯಂತ್ರವನ್ನು ಅವಲಂಬಿಸಿದೆ. ಇದು ಆಧಾರವಾಗಿರುವ ವೇದಿಕೆಯ ಅಮೂರ್ತತೆಯನ್ನು ಒದಗಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾದ ವ್ಯಾಪಕವಾದ ಗ್ರಂಥಾಲಯದೊಂದಿಗೆ ಸಂಯೋಜಿಸಲ್ಪಟ್ಟಿದೆ. ಜಾವಾ ಎಂಬುದು ಸ್ಥಿರವಾಗಿ ಟೈಪ್ ಮಾಡಲಾದ ಆಬ್ಜೆಕ್ಟ್-ಓರಿಯೆಂಟೆಡ್ ಭಾಷೆಯಾಗಿದ್ದು, ಇದು ಸಿ + + ಗೆ ಹೋಲುವ (ಆದರೆ ಹೊಂದಾಣಿಕೆಯಾಗದ) ವಾಕ್ಯರಚನೆಯನ್ನು ಬಳಸುತ್ತದೆ. ಇದು ಜಾವಡೋಕ್ ಎಂಬ ದಾಖಲಾತಿ ವ್ಯವಸ್ಥೆಯನ್ನು ಒಳಗೊಂಡಿದೆ. ಸಿ + + ಮತ್ತು ಜಾವಾದ ಅಭಿವೃದ್ಧಿಯಲ್ಲಿನ ವಿಭಿನ್ನ ಗುರಿಗಳು ಭಾಷೆಗಳ ನಡುವೆ ವಿಭಿನ್ನ ತತ್ವಗಳು ಮತ್ತು ವಿನ್ಯಾಸ ವಿನಿಮಯಗಳಿಗೆ ಕಾರಣವಾದವು. ವ್ಯತ್ಯಾಸಗಳು ಈ ಕೆಳಗಿನಂತಿವೆಃ ಸಿಂಟ್ಯಾಕ್ಸ್ ಜಾವಾ ಸಿಂಟ್ಯಾಕ್ಸ್ ಭಾಷೆಯ ವೈಶಿಷ್ಟ್ಯಗಳು ಸಂದರ್ಭ-ಮುಕ್ತ ವ್ಯಾಕರಣವನ್ನು ಹೊಂದಿದ್ದು ಅದನ್ನು ಸರಳವಾದ ಎಲ್ಎಎಲ್ಆರ್ ಪಾರ್ಸರ್ನಿಂದ ಪಾರ್ಸ್ ಮಾಡಬಹುದು. ಸಿ + + ಅನ್ನು ಪಾರ್ಸಿಂಗ್ ಮಾಡುವುದು ಹೆಚ್ಚು ಸಂಕೀರ್ಣವಾಗಿದೆ. ಉದಾಹರಣೆಗೆ, ಫೂ <1> (3); ಎಂಬುದು ಫೂ ವೇರಿಯೇಬಲ್ ಆಗಿದ್ದರೆ ಹೋಲಿಕೆಗಳ ಒಂದು ಅನುಕ್ರಮವಾಗಿದೆ, ಆದರೆ ಫೂ ಒಂದು ವರ್ಗದ ಟೆಂಪ್ಲೇಟ್ನ ಹೆಸರಾಗಿದ್ದರೆ ವಸ್ತುವನ್ನು ರಚಿಸುತ್ತದೆ. ಸಿ + + ನೇಮ್ಸ್ಪೇಸ್-ಮಟ್ಟದ ಸ್ಥಿರಾಂಕಗಳು, ಅಸ್ಥಿರಗಳು ಮತ್ತು ಕಾರ್ಯಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಜಾವಾದಲ್ಲಿ, ಅಂತಹ ಘಟಕಗಳು ಕೆಲವು ನಿರ್ದಿಷ್ಟ ಪ್ರಕಾರಕ್ಕೆ ಸೇರಿರಬೇಕು, ಮತ್ತು ಆದ್ದರಿಂದ ಅವುಗಳನ್ನು ವರ್ಗ ಅಥವಾ ಇಂಟರ್ಫೇಸ್ ಎಂಬ ಪ್ರಕಾರದ ವ್ಯಾಖ್ಯಾನದೊಳಗೆ ವ್ಯಾಖ್ಯಾನಿಸಬೇಕು. ಸಿ + + ನಲ್ಲಿ, ವಸ್ತುಗಳು ಮೌಲ್ಯಗಳಾಗಿರುತ್ತವೆ, ಆದರೆ ಜಾವಾದಲ್ಲಿ ಅವು ಅಲ್ಲ. C + + ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಮೌಲ್ಯ ಶಬ್ದಾರ್ಥವನ್ನು ಬಳಸುತ್ತದೆ, ಆದರೆ ಜಾವಾ ಯಾವಾಗಲೂ ಉಲ್ಲೇಖ ಶಬ್ದಾರ್ಥವನ್ನು ಬಳಸುತ್ತದೆ. ಸಿ + + ನಲ್ಲಿ ಉಲ್ಲೇಖ ಶಬ್ದಾರ್ಥವನ್ನು ಆಯ್ಕೆ ಮಾಡಲು, ಪಾಯಿಂಟರ್ ಅಥವಾ ಉಲ್ಲೇಖವನ್ನು ಬಳಸಬಹುದು. C + + ನಲ್ಲಿ, ಕ್ಲೈಂಟ್ ಕೋಡ್ ಅನ್ನು ಮಾರ್ಪಡಿಸುವುದನ್ನು ತಡೆಯಲು ಒಂದು ಪಾಯಿಂಟರ್ ಅಥವಾ ಕಾನ್ಸ್ಟ್ ಆಬ್ಜೆಕ್ಟ್ಗೆ ಉಲ್ಲೇಖವನ್ನು ಘೋಷಿಸಲು ಸಾಧ್ಯವಿದೆ. ಫಂಕ್ಷನ್ಗಳು ಮತ್ತು ವಿಧಾನಗಳು "ಕಾನ್ಸ್ಟ್" ಕೀವರ್ಡ್ ಅನ್ನು ಬಳಸುವ ಮೂಲಕ ಪಾಯಿಂಟರ್ ಸೂಚಿಸಿದ ವಸ್ತುವನ್ನು ಮಾರ್ಪಡಿಸುವುದಿಲ್ಲ ಎಂದು ಖಾತರಿಪಡಿಸಬಹುದು. ಇದು ಸ್ಥಿರ-ನಿಖರತೆಯನ್ನು ಜಾರಿಗೊಳಿಸುತ್ತದೆ. ಜಾವಾದಲ್ಲಿ, ಅಂತಿಮ ಕೀವರ್ಡ್ ಸಿ + + ನಲ್ಲಿನ ಕಾನ್ಸ್ಟ್ ಕೀವರ್ಡ್ ಅನ್ನು ಹೋಲುತ್ತದೆ, ಆದರೆ ಅದರ ಬಳಕೆಯು ಹೆಚ್ಚು ಸೀಮಿತವಾಗಿದೆ. ಬಹುಪಾಲು, ಸ್ಥಿರ-ನಿಖರತೆಯು ವರ್ಗದ ಇಂಟರ್ಫೇಸ್ನ ಶಬ್ದಾರ್ಥವನ್ನು ಅವಲಂಬಿಸಿರಬೇಕು, ಅಂದರೆ, ಅದನ್ನು ಬಲವಾಗಿ ಜಾರಿಗೊಳಿಸಲಾಗುವುದಿಲ್ಲ, ಅಂತಿಮ ಎಂದು ಲೇಬಲ್ ಮಾಡಲಾದ ಸಾರ್ವಜನಿಕ ದತ್ತಾಂಶ ಸದಸ್ಯರನ್ನು ಹೊರತುಪಡಿಸಿ. ಸಿ + + ಗೋಟೋ ಹೇಳಿಕೆಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ, ಇದು ಸ್ಪಾಗೆಟ್ಟಿ ಕೋಡ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ಗೆ ಕಾರಣವಾಗಬಹುದು. ಗೊಟೊ ಹೇಳಿಕೆಯನ್ನು ಹೊರತುಪಡಿಸಿ (ಇದು ನೈಜ ಕೋಡ್ನಲ್ಲಿ ಬಹಳ ವಿರಳವಾಗಿ ಕಂಡುಬರುತ್ತದೆ ಮತ್ತು ಹೆಚ್ಚು ನಿರುತ್ಸಾಹಗೊಂಡಿದೆ), ಜಾವಾ ಮತ್ತು ಸಿ + + ಎರಡೂ ಮೂಲಭೂತವಾಗಿ ಒಂದೇ ನಿಯಂತ್ರಣ ಹರಿವಿನ ರಚನೆಗಳನ್ನು ಹೊಂದಿವೆ, ರಚನಾತ್ಮಕ ನಿಯಂತ್ರಣ ಹರಿವನ್ನು ಜಾರಿಗೊಳಿಸಲು ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ ಮತ್ತು ಕೆಲವು ಗೊಟೊ ತರಹದ ಕಾರ್ಯಗಳನ್ನು ಒದಗಿಸಲು ಬ್ರೇಕ್ ಮತ್ತು ಕಂಟಿನ್ಯೂ ಹೇಳಿಕೆಗಳನ್ನು ಅವಲಂಬಿಸಿವೆ. ಈ ಲೇಬಲ್ ಮಾಡಲಾದ ಹರಿವು ನಿಯಂತ್ರಣ ಹೇಳಿಕೆಗಳು ರಚನಾತ್ಮಕ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ನ ಏಕ-ನಿರ್ಗಮನ ಬಿಂದುವನ್ನು ಮುರಿಯುತ್ತವೆ ಎಂದು ಕೆಲವು ವ್ಯಾಖ್ಯಾನಕಾರರು ಗಮನಸೆಳೆದಿದ್ದಾರೆ. ಸಿ + + ಜಾವಾದಲ್ಲಿ ಹೆಚ್ಚಾಗಿ ಇಲ್ಲದಿರುವ ಕಡಿಮೆ-ಮಟ್ಟದ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ (ಒಂದು ಗಮನಾರ್ಹವಾದ ವಿನಾಯಿತಿಯೆಂದರೆ ನೇರ ಮೆಮೊರಿ ಪ್ರವೇಶ ಮತ್ತು ಕುಶಲತೆಗಾಗಿ sun.misc.Unsafe ಎಪಿಐ). ಸಿ + + ನಲ್ಲಿ, ನಿರ್ದಿಷ್ಟ ಮೆಮೊರಿ ಸ್ಥಳಗಳನ್ನು ಕುಶಲತೆಯಿಂದ ನಿರ್ವಹಿಸಲು ಪಾಯಿಂಟರ್ಗಳನ್ನು ಬಳಸಬಹುದು, ಇದು ಕಡಿಮೆ-ಮಟ್ಟದ ಆಪರೇಟಿಂಗ್ ಸಿಸ್ಟಮ್ ಘಟಕಗಳನ್ನು ಬರೆಯಲು ಅಗತ್ಯವಾದ ಕಾರ್ಯವಾಗಿದೆ. ಅಂತೆಯೇ, ಅನೇಕ C + + ಕಂಪೈಲರ್ಗಳು ಇನ್ಲೈನ್ ಜೋಡಣೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತವೆ. ಅಸೆಂಬ್ಲಿ ಭಾಷೆಯ ಸಂಕೇತವನ್ನು ಸಿ ಪ್ರೋಗ್ರಾಂಗೆ ಆಮದು ಮಾಡಿಕೊಳ್ಳಬಹುದು ಮತ್ತು ಪ್ರತಿಯಾಗಿ. ಇದು ಸಿ ಭಾಷೆಯನ್ನು ಇನ್ನಷ್ಟು ವೇಗಗೊಳಿಸುತ್ತದೆ. ಜಾವಾದಲ್ಲಿ, ಅಂತಹ ಕೋಡ್ ಬಾಹ್ಯ ಗ್ರಂಥಾಲಯಗಳಲ್ಲಿ ಇರಬೇಕು, ಮತ್ತು ಪ್ರತಿ ಕರೆಗೆ ಗಮನಾರ್ಹ ಓವರ್ಹೆಡ್ನೊಂದಿಗೆ ಜಾವಾ ನೇಟಿವ್ ಇಂಟರ್ಫೇಸ್ ಮೂಲಕ ಮಾತ್ರ ಪ್ರವೇಶಿಸಬಹುದು. ಸಿ + + ಶಬ್ದಾರ್ಥವು ಒಂದು ಕಾರ್ಯ/ವಿಧಾನದ ವಾದಗಳಿಗೆ ಪೂರ್ವನಿಯೋಜಿತ ಮೌಲ್ಯಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಜಾವಾ ಹಾಗಲ್ಲ. ಆದಾಗ್ಯೂ, ಜಾವಾದಲ್ಲಿ ಇದೇ ರೀತಿಯ ಫಲಿತಾಂಶಗಳನ್ನು ಪಡೆಯಲು ವಿಧಾನ ಓವರ್ಲೋಡಿಂಗ್ ಅನ್ನು ಬಳಸಬಹುದು ಆದರೆ ಅನಗತ್ಯ ಸ್ಟಬ್ ಕೋಡ್ ಅನ್ನು ಉತ್ಪಾದಿಸಬಹುದು. ಸಿ + + ಗಾಗಿ ಕಂಪೈಲ್ ಮಾಡಲು ಅಗತ್ಯವಿರುವ ಕನಿಷ್ಠ ಕೋಡ್ ಒಂದು ಕಾರ್ಯವಾಗಿದೆ, ಏಕೆಂದರೆ ಜಾವಾ ಒಂದು ವರ್ಗವಾಗಿದೆ. ಸಿ + + ಸ್ಥಳೀಯ ಪ್ರಕಾರಗಳ ನಡುವೆ (ಕೆಲವು ಕಿರಿದಾದ ಪರಿವರ್ತನೆಗಳನ್ನು ಒಳಗೊಂಡಂತೆ) ಸೂಚ್ಯ ಪರಿವರ್ತನೆಗಳ ವ್ಯಾಪ್ತಿಯನ್ನು ಅನುಮತಿಸುತ್ತದೆ ಮತ್ತು ಬಳಕೆದಾರ-ವ್ಯಾಖ್ಯಾನಿತ ಪ್ರಕಾರಗಳನ್ನು ಒಳಗೊಂಡ ಸೂಚ್ಯ ಪರಿವರ್ತನೆಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಸಹ ಅನುಮತಿಸುತ್ತದೆ. ಜಾವಾದಲ್ಲಿ, ಸ್ಥಳೀಯ ಪ್ರಕಾರಗಳ ನಡುವಿನ ವಿಸ್ತರಣೆಯ ಪರಿವರ್ತನೆಗಳು ಮಾತ್ರ ಸೂಚ್ಯವಾಗಿರುತ್ತವೆ; ಇತರ ಪರಿವರ್ತನೆಗಳಿಗೆ ಸ್ಪಷ್ಟವಾದ ಎರಕಹೊಯ್ದ ವಾಕ್ಯರಚನೆಯ ಅಗತ್ಯವಿರುತ್ತದೆ. ಇದರ ಪರಿಣಾಮವಾಗಿ ಜಾವಾ ಮತ್ತು ಸಿ + + ಎರಡರಲ್ಲೂ ಲೂಪ್ ಷರತ್ತುಗಳು (ಇಫ್, ವೈಲ್ ಮತ್ತು ಎಕ್ಸಿಟ್ ಷರತ್ತು ಫಾರ್) ಬೂಲಿಯನ್ ಅಭಿವ್ಯಕ್ತಿಯನ್ನು ನಿರೀಕ್ಷಿಸುತ್ತವೆಯಾದರೂ, ಇಫ್ (ಎ = 5) ನಂತಹ ಕೋಡ್ ಜಾವಾದಲ್ಲಿ ಕಂಪೈಲ್ ದೋಷವನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ ಏಕೆಂದರೆ ಇಂಟಿನಿಂದ ಬೂಲಿಯನ್ಗೆ ಯಾವುದೇ ಸೂಚ್ಯ ಕಿರಿದಾದ ಪರಿವರ್ತನೆ ಇಲ್ಲ, ಆದರೆ ಸಿ + + ನಲ್ಲಿ ಕಂಪೈಲ್ ಮಾಡುತ್ತದೆ. ಕೋಡ್ ಅಕ್ಷರಶೈಲಿಯಾಗಿದ್ದರೆ ಮತ್ತು (a = = 5) ಉದ್ದೇಶಿತವಾಗಿದ್ದರೆ ಇದು ಸೂಕ್ತವಾಗಿದೆ. ಆದಾಗ್ಯೂ, ಪ್ರಸ್ತುತ ಸಿ + + ಕಂಪೈಲರ್ಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಷರತ್ತುಬದ್ಧ ಅಭಿವ್ಯಕ್ತಿಯೊಳಗೆ ಅಂತಹ ನಿಯೋಜನೆಯನ್ನು ನಿರ್ವಹಿಸಿದಾಗ ಎಚ್ಚರಿಕೆಯನ್ನು ಉಂಟುಮಾಡುತ್ತವೆ. ಅಂತೆಯೇ, ಸ್ವತಂತ್ರ ಹೋಲಿಕೆ ಹೇಳಿಕೆಗಳು, ಉದಾಹರಣೆಗೆ. a = = 5;, ಅಡ್ಡಪರಿಣಾಮವಿಲ್ಲದೆ ಸಾಮಾನ್ಯವಾಗಿ ಎಚ್ಚರಿಕೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಕಾರ್ಯಗಳಿಗೆ ನಿಯತಾಂಕಗಳನ್ನು ರವಾನಿಸಲು, ಸಿ + + ಪಾಸ್-ಬೈ-ರೆಫರೆನ್ಸ್ ಮತ್ತು ಪಾಸ್-ಬೈ-ವ್ಯಾಲ್ಯೂ ಎರಡನ್ನೂ ಬೆಂಬಲಿಸುತ್ತದೆ. ಜಾವಾದಲ್ಲಿ, ಪ್ರಾಚೀನ ನಿಯತಾಂಕಗಳನ್ನು ಯಾವಾಗಲೂ ಮೌಲ್ಯದಿಂದ ರವಾನಿಸಲಾಗುತ್ತದೆ. ವರ್ಗ ಪ್ರಕಾರಗಳು, ಇಂಟರ್ಫೇಸ್ ಪ್ರಕಾರಗಳು ಮತ್ತು ವ್ಯೂಹ ಪ್ರಕಾರಗಳನ್ನು ಒಟ್ಟಾರೆಯಾಗಿ ಜಾವಾದಲ್ಲಿ ಉಲ್ಲೇಖ ಪ್ರಕಾರಗಳು ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ ಮತ್ತು ಅವುಗಳನ್ನು ಯಾವಾಗಲೂ ಮೌಲ್ಯದಿಂದ ರವಾನಿಸಲಾಗುತ್ತದೆ. ಜಾವಾ ಅಂತರ್ನಿರ್ಮಿತ ಪ್ರಕಾರಗಳು ಭಾಷೆಯ ನಿರ್ದಿಷ್ಟತೆಯಿಂದ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ನಿರ್ದಿಷ್ಟ ಗಾತ್ರ ಮತ್ತು ವ್ಯಾಪ್ತಿಯನ್ನು ಹೊಂದಿವೆ. ಸಿ + + ನಲ್ಲಿ, ಅಂತರ್ನಿರ್ಮಿತ ಪ್ರಕಾರಗಳಿಗೆ ಕನಿಷ್ಠ ಶ್ರೇಣಿಯ ಮೌಲ್ಯಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ, ಆದರೆ ನಿಖರವಾದ ಪ್ರಾತಿನಿಧ್ಯವನ್ನು (ಬಿಟ್ಗಳ ಸಂಖ್ಯೆ) ನಿರ್ದಿಷ್ಟ ವೇದಿಕೆಯಲ್ಲಿ ಆದ್ಯತೆ ನೀಡಲಾದ ಯಾವುದೇ ಸ್ಥಳೀಯ ಪ್ರಕಾರಗಳಿಗೆ ಮ್ಯಾಪ್ ಮಾಡಬಹುದು. ಉದಾಹರಣೆಗೆ, ಜಾವಾ ಅಕ್ಷರಗಳು 16-ಬಿಟ್ ಯುನಿಕೋಡ್ ಅಕ್ಷರಗಳಾಗಿವೆ, ಮತ್ತು ತಂತಿಗಳು ಅಂತಹ ಅಕ್ಷರಗಳ ಅನುಕ್ರಮದಿಂದ ಕೂಡಿವೆ. ಸಿ + + ಕಿರಿದಾದ ಮತ್ತು ಅಗಲವಾದ ಅಕ್ಷರಗಳೆರಡನ್ನೂ ಒದಗಿಸುತ್ತದೆ, ಆದರೆ ಪ್ರತಿಯೊಂದರ ನಿಜವಾದ ಗಾತ್ರವು ವೇದಿಕೆಯ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ, ಹಾಗೆಯೇ ಅಕ್ಷರಗಳ ಸೆಟ್ ಅನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ತಂತಿಗಳನ್ನು ಯಾವುದೇ ವಿಧದಿಂದ ರಚಿಸಬಹುದು. ಸಿ + + ಕಂಪೈಲರ್ಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಗುರಿ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗೆ ಅತ್ಯಂತ ಪರಿಣಾಮಕಾರಿ ಪ್ರಾತಿನಿಧ್ಯವನ್ನು ಆಯ್ಕೆ ಮಾಡಬಹುದು (ಅಂದರೆ, 64-ಬಿಟ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗೆ 64-ಬಿಟ್ ಪೂರ್ಣಾಂಕಗಳು), ಆದರೆ ಪ್ರಾತಿನಿಧ್ಯವನ್ನು ಜಾವಾದಲ್ಲಿ ನಿಗದಿಪಡಿಸಲಾಗಿದೆ, ಅಂದರೆ ಮೌಲ್ಯಗಳನ್ನು ಕಡಿಮೆ-ದಕ್ಷ ಗಾತ್ರದಲ್ಲಿ ಸಂಗ್ರಹಿಸಬಹುದು, ಅಥವಾ ಉಳಿದ ಬಿಟ್ಗಳನ್ನು ಪ್ಯಾಡ್ ಮಾಡಬೇಕು ಮತ್ತು ಕಡಿಮೆ-ಅಗಲದ ನಡವಳಿಕೆಯನ್ನು ಅನುಕರಿಸಲು ಕೋಡ್ ಅನ್ನು ಸೇರಿಸಬೇಕು. ಸಿ + + ನಲ್ಲಿನ ಫ್ಲೋಟಿಂಗ್ ಪಾಯಿಂಟ್ ಮೌಲ್ಯಗಳು ಮತ್ತು ಕಾರ್ಯಾಚರಣೆಗಳ ಪೂರ್ಣಾಂಕ ಮತ್ತು ನಿಖರತೆಯನ್ನು ಅನುಷ್ಠಾನ-ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ (ಆದಾಗ್ಯೂ ಬಹಳ ವಿಲಕ್ಷಣವಾದ ಅಥವಾ ಹಳೆಯ ವೇದಿಕೆಗಳು ಮಾತ್ರ ಐ. ಇ. ಇ. ಇ 754 ಮಾನದಂಡದಿಂದ ಹೊರಬರುತ್ತವೆ). ಜಾವಾ ಐಚ್ಛಿಕ ಕಟ್ಟುನಿಟ್ಟಾದ ಫ್ಲೋಟಿಂಗ್-ಪಾಯಿಂಟ್ ಮಾದರಿಯನ್ನು (ಸ್ಟ್ರಿಕ್ಟ್ಎಫ್ಪಿ) ಒದಗಿಸುತ್ತದೆ, ಇದು ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳಾದ್ಯಂತ ಹೆಚ್ಚು ಸ್ಥಿರವಾದ ಫಲಿತಾಂಶಗಳನ್ನು ಖಾತರಿಪಡಿಸುತ್ತದೆ, ಆದರೂ ಬಹುಶಃ ನಿಧಾನವಾದ ರನ್-ಟೈಮ್ ಕಾರ್ಯಕ್ಷಮತೆಯ ವೆಚ್ಚದಲ್ಲಿ. ಆದಾಗ್ಯೂ, ಜಾವಾ ಐ. ಇ. ಇ. ಇ. 754 ಮಾನದಂಡವನ್ನು ಕಟ್ಟುನಿಟ್ಟಾಗಿ ಅನುಸರಿಸುವುದಿಲ್ಲ. ಹೆಚ್ಚಿನ ಸಿ + + ಕಂಪೈಲರ್ಗಳು, ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, ಐ. ಇ. ಇ. ಇ 754 ಅನ್ನು ಭಾಗಶಃ ಅನುಸರಿಸುತ್ತವೆ (ಸಾಮಾನ್ಯವಾಗಿ ಕಟ್ಟುನಿಟ್ಟಾದ ರೌಂಡಿಂಗ್ ನಿಯಮಗಳನ್ನು ಹೊರತುಪಡಿಸಿ ಮತ್ತು ಎನ್. ಎ. ಎನ್ ಫಲಿತಾಂಶಗಳಲ್ಲಿ ವಿನಾಯಿತಿಗಳನ್ನು ಹೆಚ್ಚಿಸುತ್ತವೆ), ಆದರೆ ಕೆಲವು ಆಪ್ಟಿಮೈಸಿಂಗ್ಗೆ ಅವಕಾಶ ನೀಡಲು ವಿವಿಧ ಕಟ್ಟುನಿಟ್ಟಿನ ಅನುಸರಣೆ ಆಯ್ಕೆಗಳನ್ನು ಒದಗಿಸುತ್ತವೆ. ನಾವು ಆ ಆಯ್ಕೆಗಳನ್ನು ಕನಿಷ್ಠ ಅನುಸರಣೆಯಿಂದ ಅತ್ಯಂತ ಅನುಸರಣೆಯವರೆಗೆ ವೇಗದ, ಸ್ಥಿರವಾದ (ಜಾವಾದ ಕಟ್ಟುನಿಟ್ಟಾದ ಎಫ್ ಪಿ), ಹತ್ತಿರದ-ಐ. ಇ. ಇ. ಇ, ಮತ್ತು ಕಟ್ಟುನಿಟ್ಟಾದ-ಐ. ಇ. ಇ. ಇ ಎಂದು ಲೇಬಲ್ ಮಾಡಿದರೆ, ಹೆಚ್ಚಿನ ಸಿ + + ಅನುಷ್ಠಾನಗಳು ಡೀಫಾಲ್ಟ್ ಆಗಿ ಹತ್ತಿರದ-ಐ. ಇ. ಇ. ಇ. ಗೆ, ವೇಗದ ಅಥವಾ ಕಟ್ಟುನಿಟ್ಟಾದ-ಐ. ಇ. ಇ. ಇ. ಗೆ ಬದಲಾಯಿಸುವ ಆಯ್ಕೆಗಳೊಂದಿಗೆ, ಆದರೆ ಜಾವಾ ಸ್ಥಿರತೆಗೆ ಬದಲಾಯಿಸುವ ಆಯ್ಕೆಯೊಂದಿಗೆ ವೇಗವನ್ನು ಡೀಫಾಲ್ಟ್ ಮಾಡುತ್ತದೆ ಎಂದು ನಾವು ಹೇಳಬಹುದು. ಸಿ + + ನಲ್ಲಿ, ಪಾಯಿಂಟರ್ಗಳನ್ನು ನೇರವಾಗಿ ಮೆಮೊರಿ ವಿಳಾಸ ಮೌಲ್ಯಗಳಾಗಿ ಕುಶಲತೆಯಿಂದ ನಿರ್ವಹಿಸಬಹುದು. ಜಾವಾ ಉಲ್ಲೇಖಗಳು ವಸ್ತುಗಳಿಗೆ ಸೂಚಕಗಳಾಗಿವೆ. ಜಾವಾ ಉಲ್ಲೇಖಗಳು ಮೆಮೊರಿ ವಿಳಾಸಗಳಿಗೆ ನೇರ ಪ್ರವೇಶವನ್ನು ಅನುಮತಿಸುವುದಿಲ್ಲ ಅಥವಾ ಮೆಮೊರಿ ವಿಳಾಸಗಳನ್ನು ಪಾಯಿಂಟರ್ ಅಂಕಗಣಿತದೊಂದಿಗೆ ಕುಶಲತೆಯಿಂದ ನಿರ್ವಹಿಸಲು ಅನುಮತಿಸುವುದಿಲ್ಲ. ಸಿ + + ನಲ್ಲಿ ಒಬ್ಬರು ಪಾಯಿಂಟರ್ಗಳಿಗೆ ಪಾಯಿಂಟರ್ಗಳನ್ನು, ಇಂಟಸ್ ಮತ್ತು ಡಬಲ್ಸ್ಗಳಿಗೆ ಪಾಯಿಂಟರ್ಗಳನ್ನು ಮತ್ತು ಅನಿಯಂತ್ರಿತ ಮೆಮೊರಿ ಸ್ಥಳಗಳಿಗೆ ಪಾಯಿಂಟರ್ಗಳನ್ನು ನಿರ್ಮಿಸಬಹುದು. ಜಾವಾ ಉಲ್ಲೇಖಗಳು ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಮಾತ್ರ ಪ್ರವೇಶಿಸುತ್ತವೆ, ಎಂದಿಗೂ ಪ್ರಿಮಿಟಿವ್ಗಳು, ಇತರ ಉಲ್ಲೇಖಗಳು ಅಥವಾ ಅನಿಯಂತ್ರಿತ ಮೆಮೊರಿ ಸ್ಥಳಗಳಲ್ಲ. ಜಾವಾದಲ್ಲಿ, ಮೆಮೊರಿಯನ್ನು sun.misc.Unsafe API ಅನ್ನು ಬಳಸಿಕೊಂಡು ಅನಿಯಂತ್ರಿತ ಮೌಲ್ಯಗಳಿಂದ ಓದಬಹುದು ಮತ್ತು ಬರೆಯಬಹುದು, ಆದಾಗ್ಯೂ ಇದು ಅಸಂಬದ್ಧವಾಗಿದೆ ಮತ್ತು ಶಿಫಾರಸು ಮಾಡಲಾಗಿಲ್ಲ. ಸಿ + + ನಲ್ಲಿ, ಪಾಯಿಂಟರ್ಗಳು ಫಂಕ್ಷನ್ಗಳು ಅಥವಾ ಮೆಂಬರ್ ಫಂಕ್ಷನ್ಗಳನ್ನು (ಫಂಕ್ಷನ್ ಪಾಯಿಂಟರ್ಗಳು) ಸೂಚಿಸಬಹುದು. ಜಾವಾದಲ್ಲಿ ಸಮಾನವಾದ ಕಾರ್ಯವಿಧಾನವು ಆಬ್ಜೆಕ್ಟ್ ಅಥವಾ ಇಂಟರ್ಫೇಸ್ ಉಲ್ಲೇಖಗಳನ್ನು ಬಳಸುತ್ತದೆ. ಸ್ಟ್ಯಾಕ್-ನಿಯೋಜಿಸಲಾದ ವಸ್ತುಗಳ ಮೂಲಕ, ಸಿ + + ಸ್ಕೋಪ್ ಮಾಡಲಾದ ಸಂಪನ್ಮೂಲ ನಿರ್ವಹಣೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ, ಇದು ಮೆಮೊರಿ ಮತ್ತು ಇತರ ಸಿಸ್ಟಮ್ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ನಿರ್ವಹಿಸಲು ಬಳಸುವ ತಂತ್ರವಾಗಿದ್ದು, ಇದು ನಿರ್ಣಾಯಕ ವಸ್ತುವಿನ ನಾಶವನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ. ಸಿ + + ನಲ್ಲಿ ಸಂಪನ್ಮೂಲ ನಿರ್ವಹಣೆಯ ವ್ಯಾಪ್ತಿಯನ್ನು ಖಾತರಿಪಡಿಸಲಾಗದಿದ್ದರೂ (ಸರಿಯಾದ ವಿಧ್ವಂಸಕಗಳನ್ನು ಹೊಂದಿರುವ ವಸ್ತುಗಳನ್ನು ಸಹ ಹೊಸ ಮತ್ತು ಅಳಿಸದೇ ಉಳಿದಿರುವ ವಸ್ತುಗಳನ್ನು ಬಳಸಿ ನಿಯೋಜಿಸಬಹುದು) ಇದು ಸಂಪನ್ಮೂಲ ನಿರ್ವಹಣೆಯ ಪರಿಣಾಮಕಾರಿ ವಿಧಾನವನ್ನು ಒದಗಿಸುತ್ತದೆ. ಹಂಚಿದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಶೇರ್ಡ್ _ ಪಿಟಿಆರ್ ಬಳಸಿ ನಿರ್ವಹಿಸಬಹುದು, ಜೊತೆಗೆ ಸೈಕ್ಲಿಕ್ ಉಲ್ಲೇಖಗಳನ್ನು ಮುರಿಯಲು ದುರ್ಬಲ _ ಪಿಟಿಆರ್ ಅನ್ನು ಬಳಸಬಹುದು. ಕಸದ ಸಂಗ್ರಹವನ್ನು ಬಳಸಿಕೊಂಡು ಸ್ವಯಂಚಾಲಿತ ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯನ್ನು ಜಾವಾ ಬೆಂಬಲಿಸುತ್ತದೆ, ಇದು ಆವರ್ತಕ ಉಲ್ಲೇಖಗಳ ಉಪಸ್ಥಿತಿಯಲ್ಲಿಯೂ ಸಹ ತಲುಪಲಾಗದ ವಸ್ತುಗಳನ್ನು ಮುಕ್ತಗೊಳಿಸುತ್ತದೆ, ಆದರೆ ಇತರ ಸಿಸ್ಟಮ್ ಸಂಪನ್ಮೂಲಗಳು (ಫೈಲ್ಗಳು, ಸ್ಟ್ರೀಮ್ಗಳು, ಕಿಟಕಿಗಳು, ಸಂವಹನ ಬಂದರುಗಳು, ಥ್ರೆಡ್ಗಳು, ಇತ್ಯಾದಿ). ಕೊನೆಯ ವಸ್ತುವಿನ ಉಲ್ಲೇಖವನ್ನು ಕೈಬಿಟ್ಟ ತಕ್ಷಣವೇ ಕಸ ಸಂಗ್ರಹಣೆ ಸಂಭವಿಸುತ್ತದೆ ಎಂಬ ಭರವಸೆ ಇಲ್ಲದ ಕಾರಣ ಅದನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ಬಿಡುಗಡೆ ಮಾಡಬೇಕು. ಸಿ + + ಬಳಕೆದಾರ-ವ್ಯಾಖ್ಯಾನಿತ ಆಪರೇಟರ್ ಓವರ್ಲೋಡಿಂಗ್ ಅನ್ನು ಹೊಂದಿದೆ. ಆಪರೇಟರ್ ಓವರ್ಲೋಡಿಂಗ್ ಆಪರೇಟರ್ಗಳನ್ನು (ಅಂಕಗಣಿತ, ಹೋಲಿಕೆಗಳು, ಇತ್ಯಾದಿ) ಬೆಂಬಲಿಸಲು ಬಳಕೆದಾರ-ವ್ಯಾಖ್ಯಾನಿತ ಪ್ರಕಾರಗಳನ್ನು ಅನುಮತಿಸುತ್ತದೆ. ಈ ಆಪರೇಟರ್ಗಳಿಗೆ ಬಳಕೆದಾರ-ವ್ಯಾಖ್ಯಾನಿತ ಅನುಷ್ಠಾನಗಳ ಮೂಲಕ ಪ್ರಾಚೀನ ಪ್ರಕಾರಗಳು. ನಿರ್ವಾಹಕರ ಶಬ್ದಾರ್ಥಗಳನ್ನು ಸಂರಕ್ಷಿಸಲು ಸಾಮಾನ್ಯವಾಗಿ ಶಿಫಾರಸು ಮಾಡಲಾಗುತ್ತದೆ. ಜಾವಾ ಯಾವುದೇ ರೀತಿಯ ಆಪರೇಟರ್ ಓವರ್ಲೋಡಿಂಗ್ ಅನ್ನು ಬೆಂಬಲಿಸುವುದಿಲ್ಲ (ಆದಾಗ್ಯೂ ಅದರ ಗ್ರಂಥಾಲಯವು ಸ್ಟ್ರಿಂಗ್ ಸಂಯೋಜನೆಗಾಗಿ ಅಡಿಷನ್ ಆಪರೇಟರ್ ಅನ್ನು ಬಳಸುತ್ತದೆ). ಜಾವಾ ರಿಫ್ಲೆಕ್ಷನ್ ಮತ್ತು ಅನಿಯಂತ್ರಿತ ಹೊಸ ಕೋಡ್ನ ಡೈನಾಮಿಕ್ ಲೋಡಿಂಗ್ಗಾಗಿ ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಅಪ್ಲಿಕೇಶನ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಇಂಟರ್ಫೇಸ್ (ಎಪಿಐ) ಬೆಂಬಲವನ್ನು ಹೊಂದಿದೆ. ಸಿ + + ಬೈನರಿಗಳ ಸ್ಥಿರ ಮತ್ತು ಕ್ರಿಯಾತ್ಮಕ ಸಂಪರ್ಕವನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ. ಜಾವಾದಲ್ಲಿ ಜೆನೆರಿಕ್ಗಳಿವೆ, ಇದರ ಮುಖ್ಯ ಉದ್ದೇಶವು ಸುರಕ್ಷಿತ ಧಾರಕಗಳನ್ನು ಒದಗಿಸುವುದು. ಸಿ + + ಸಂಕಲನ-ಸಮಯದ ಟೆಂಪ್ಲೆಟ್ಗಳನ್ನು ಹೊಂದಿದೆ, ಇದು ಸಾಮಾನ್ಯ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮತ್ತು ಮೆಟಾಪ್ರೋಗ್ರಾಮಿಂಗ್ಗೆ ಹೆಚ್ಚು ವ್ಯಾಪಕವಾದ ಬೆಂಬಲವನ್ನು ಒದಗಿಸುತ್ತದೆ. ಜಾವಾವು ಟಿಪ್ಪಣಿಗಳನ್ನು ಹೊಂದಿದೆ, ಇದು ವರ್ಗಗಳಿಗೆ ಅನಿಯಂತ್ರಿತ ಕಸ್ಟಮ್ ಮೆಟಾಡೇಟಾವನ್ನು ಸೇರಿಸಲು ಮತ್ತು ಟಿಪ್ಪಣಿ ಸಂಸ್ಕರಣಾ ಸಾಧನದ ಮೂಲಕ ಮೆಟಾಪ್ರೋಗ್ರಾಮಿಂಗ್ ಮಾಡಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಜಾವಾ ಮತ್ತು ಸಿ + + ಎರಡೂ ಸ್ಥಳೀಯ ಪ್ರಕಾರಗಳು (ಮೂಲಭೂತ ಅಥವಾ ಅಂತರ್ನಿರ್ಮಿತ ಪ್ರಕಾರಗಳು ಎಂದೂ ಕರೆಯಲ್ಪಡುತ್ತವೆ) ಮತ್ತು ಬಳಕೆದಾರ-ವ್ಯಾಖ್ಯಾನಿತ ಪ್ರಕಾರಗಳ (ಸಂಯುಕ್ತ ಪ್ರಕಾರಗಳು ಎಂದೂ ಕರೆಯಲ್ಪಡುತ್ತವೆ) ನಡುವೆ ವ್ಯತ್ಯಾಸವನ್ನು ತೋರಿಸುತ್ತವೆ. ಜಾವಾದಲ್ಲಿ, ಸ್ಥಳೀಯ ಪ್ರಕಾರಗಳು ಮೌಲ್ಯ ಶಬ್ದಾರ್ಥವನ್ನು ಮಾತ್ರ ಹೊಂದಿವೆ, ಮತ್ತು ಸಂಯುಕ್ತ ಪ್ರಕಾರಗಳು ಉಲ್ಲೇಖ ಶಬ್ದಾರ್ಥವನ್ನು ಮಾತ್ರ ಹೊಂದಿವೆ. ಸಿ + + ನಲ್ಲಿ ಎಲ್ಲಾ ವಿಧಗಳು ಮೌಲ್ಯದ ಶಬ್ದಾರ್ಥಗಳನ್ನು ಹೊಂದಿವೆ, ಆದರೆ ಯಾವುದೇ ಪ್ರಕಾರಕ್ಕೆ ಒಂದು ಉಲ್ಲೇಖವನ್ನು ರಚಿಸಬಹುದು, ಇದು ಉಲ್ಲೇಖ ಶಬ್ದಾರ್ಥದ ಮೂಲಕ ವಸ್ತುವನ್ನು ಕುಶಲತೆಯಿಂದ ನಿರ್ವಹಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಸಿ + + ಅನಿಯಂತ್ರಿತ ವರ್ಗಗಳ ಬಹು ಆನುವಂಶಿಕತೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ. ಜಾವಾದಲ್ಲಿ ಒಂದು ವರ್ಗವು ಕೇವಲ ಒಂದು ವರ್ಗದಿಂದ ಹುಟ್ಟಿಕೊಳ್ಳಬಹುದು, ಆದರೆ ಒಂದು ವರ್ಗವು ಅನೇಕ ಅಂತರಸಂಪರ್ಕಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು (ಬೇರೆ ರೀತಿಯಲ್ಲಿ ಹೇಳುವುದಾದರೆ, ಇದು ಪ್ರಕಾರಗಳ ಬಹು ಆನುವಂಶಿಕತೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ, ಆದರೆ ಅನುಷ್ಠಾನದ ಒಂದೇ ಆನುವಂಶಿಕತೆಯನ್ನು ಮಾತ್ರ ಬೆಂಬಲಿಸುತ್ತದೆ). ಜಾವಾ ಇಂಟರ್ಫೇಸ್ಗಳು ಮತ್ತು ವರ್ಗಗಳ ನಡುವೆ ಸ್ಪಷ್ಟವಾಗಿ ವ್ಯತ್ಯಾಸವನ್ನು ತೋರಿಸುತ್ತದೆ. ಸಿ + + ನಲ್ಲಿ, ಬಹು ಆನುವಂಶಿಕತೆ ಮತ್ತು ಶುದ್ಧ ವರ್ಚುವಲ್ ಕಾರ್ಯಗಳು ಕೆಲವು ಸಣ್ಣ ವ್ಯತ್ಯಾಸಗಳೊಂದಿಗೆ ಜಾವಾ ಇಂಟರ್ಫೇಸ್ಗಳಂತೆಯೇ ಕಾರ್ಯನಿರ್ವಹಿಸುವ ವರ್ಗಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸಲು ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ. ಬಹು-ಥ್ರೆಡಿಂಗ್ಗಾಗಿ ಜಾವಾ ಭಾಷೆ ಮತ್ತು ಪ್ರಮಾಣಿತ ಗ್ರಂಥಾಲಯ ಬೆಂಬಲ ಎರಡನ್ನೂ ಹೊಂದಿದೆ. ಜಾವಾದಲ್ಲಿ ಸಿಂಕ್ರೊನೈಸ್ ಮಾಡಲಾದ ಕೀವರ್ಡ್ ಬಹು-ಥ್ರೆಡ್ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ಬೆಂಬಲಿಸಲು ಮ್ಯೂಟೆಕ್ಸ್ ಲಾಕ್ಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಜಾವಾ ಹೆಚ್ಚು ಸುಧಾರಿತ ಮಲ್ಟಿ-ಥ್ರೆಡಿಂಗ್ ಸಿಂಕ್ರೊನೈಸಿಂಗ್ಗಾಗಿ ಗ್ರಂಥಾಲಯಗಳನ್ನು ಸಹ ಒದಗಿಸುತ್ತದೆ. ಸಿ + + 11 ಸಿ + + ನಲ್ಲಿ ಬಹು-ಥ್ರೆಡಿಂಗ್ಗಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಮೆಮೊರಿ ಮಾದರಿಯನ್ನು ಹೊಂದಿದೆ, ಮತ್ತು ಥ್ರೆಡ್ಗಳನ್ನು ರಚಿಸಲು ಮತ್ತು ಅನೇಕ ಸಿಂಕ್ರೊನೈಸಿಂಗ್ ಪ್ರಿಮಿಟಿವ್ಗಳಿಗೆ ಲೈಬ್ರರಿ ಬೆಂಬಲವನ್ನು ಹೊಂದಿದೆ. ಇದಕ್ಕಾಗಿ ಅನೇಕ ತೃತೀಯ ಗ್ರಂಥಾಲಯಗಳೂ ಇವೆ. ಸಿ + + ಸದಸ್ಯ ಕಾರ್ಯಗಳನ್ನು ವರ್ಚುವಲ್ ಕಾರ್ಯಗಳೆಂದು ಘೋಷಿಸಬಹುದು, ಅಂದರೆ ಕರೆಯಬೇಕಾದ ವಿಧಾನವನ್ನು ವಸ್ತುವಿನ ರನ್-ಟೈಮ್ ಪ್ರಕಾರದಿಂದ ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ (ಅಕಾ. ಡೈನಾಮಿಕ್ ರವಾನೆ). ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ, ಸಿ + + ನಲ್ಲಿನ ವಿಧಾನಗಳು ವರ್ಚುವಲ್ ಆಗಿರುವುದಿಲ್ಲ (ಅಂದರೆ, ಆಪ್ಟ್-ಇನ್ ವರ್ಚುವಲ್). ಜಾವಾದಲ್ಲಿ, ವಿಧಾನಗಳು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ವರ್ಚುವಲ್ ಆಗಿರುತ್ತವೆ, ಆದರೆ ಅಂತಿಮ ಕೀವರ್ಡ್ (ಅಂದರೆ, ಆಪ್ಟ್-ಔಟ್ ವರ್ಚುವಲ್) ಅನ್ನು ಬಳಸುವ ಮೂಲಕ ವರ್ಚುವಲ್ ಅಲ್ಲದವುಗಳಾಗಿಸಬಹುದು. ಸಿ + + ಎಣಿಕೆಗಳು ಪ್ರಾಚೀನ ವಿಧಗಳಾಗಿವೆ ಮತ್ತು ಪೂರ್ಣಾಂಕ ಪ್ರಕಾರಗಳಿಗೆ ಸೂಚ್ಯ ಪರಿವರ್ತನೆಯನ್ನು ಬೆಂಬಲಿಸುತ್ತವೆ (ಆದರೆ ಪೂರ್ಣಾಂಕ ಪ್ರಕಾರಗಳಿಂದಲ್ಲ). ಜಾವಾ ಎಣಿಕೆಗಳು ಸಾರ್ವಜನಿಕ ಸ್ಥಿರ ಎನಮ್ {enumName1, enumName2} ಆಗಿರಬಹುದು ಮತ್ತು ಅವುಗಳನ್ನು ವರ್ಗಗಳಂತೆ ಬಳಸಲಾಗುತ್ತದೆ. ಮತ್ತೊಂದು ಮಾರ್ಗವೆಂದರೆ java.lang.Enum <E> ಅನ್ನು ವಿಸ್ತರಿಸುವ ಮತ್ತೊಂದು ವರ್ಗವನ್ನು ರಚಿಸುವುದು ಮತ್ತು ಆದ್ದರಿಂದ ಕನ್ಸ್ಟ್ರಕ್ಟರ್ಗಳು, ಕ್ಷೇತ್ರಗಳು ಮತ್ತು ವಿಧಾನಗಳನ್ನು ಇತರ ಯಾವುದೇ ವರ್ಗದಂತೆ ವ್ಯಾಖ್ಯಾನಿಸಬಹುದು. ಸಿ + + 11 ರಂತೆ, ಸಿ + + ಬಲವಾಗಿ-ಟೈಪ್ ಮಾಡಲಾದ ಎಣಿಕೆಗಳನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ, ಇದು ಶೇಖರಣಾ ಪ್ರಕಾರದ ಹೆಚ್ಚು ಪ್ರಕಾರ-ಸುರಕ್ಷತೆ ಮತ್ತು ಸ್ಪಷ್ಟವಾದ ವಿವರಣೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ. ಯುನರಿ ಆಪರೇಟರ್ಗಳು '+ +' ಮತ್ತು '--': ಸಿ + + ನಲ್ಲಿ "ಒಪೆರಾಂಡ್ ಮಾರ್ಪಡಿಸಬಹುದಾದ ಮೌಲ್ಯವಾಗಿರುತ್ತದೆ. [ಬಿಟ್ಟುಬಿಡಲಾಗಿದೆ] ಫಲಿತಾಂಶವು ನವೀಕರಿಸಿದ ಒಪೆರಾಂಡ್ ಆಗಿದೆ; ಇದು ಒಂದು ಮೌಲ್ಯವಾಗಿದೆ. ", ಆದರೆ ಜಾವಾದಲ್ಲಿ" ಮೇಲೆ ತಿಳಿಸಲಾದ ಬೈನರಿ ಸಂಖ್ಯಾ ಪ್ರಚಾರವು ಅನ್ಬಾಕ್ಸಿಂಗ್ ಪರಿವರ್ತನೆ ಮತ್ತು ಮೌಲ್ಯ ಸೆಟ್ ಪರಿವರ್ತನೆಯನ್ನು ಒಳಗೊಂಡಿರಬಹುದು. ಅಗತ್ಯವಿದ್ದರೆ, ಮೌಲ್ಯ ಸೆಟ್ ಪರಿವರ್ತನೆ {ಮತ್ತು/ಅಥವಾ [.] ಬಾಕ್ಸಿಂಗ್ ಪರಿವರ್ತನೆ} ಅನ್ನು ವೇರಿಯೇಬಲ್ನಲ್ಲಿ ಸಂಗ್ರಹಿಸುವ ಮೊದಲು ಮೊತ್ತಕ್ಕೆ ಅನ್ವಯಿಸಲಾಗುತ್ತದೆ. ", ಅಂದರೆ. ಜಾವಾದಲ್ಲಿ, "ಪೂರ್ಣಾಂಕ i = 2;", "+ + i;" ಅನ್ನು ಪ್ರಾರಂಭಿಸಿದ ನಂತರ ಹೊಸ ವಸ್ತುವನ್ನು ನಿಯೋಜಿಸುವ ಮೂಲಕ ಉಲ್ಲೇಖ i ಅನ್ನು ಬದಲಾಯಿಸುತ್ತದೆ, ಆದರೆ C + + ನಲ್ಲಿ ವಸ್ತುವು ಇನ್ನೂ ಒಂದೇ ಆಗಿರುತ್ತದೆ. ಸಂಪನ್ಮೂಲ ನಿರ್ವಹಣೆ ಜಾವಾ ಸ್ವಯಂಚಾಲಿತ ಕಸ ಸಂಗ್ರಹವನ್ನು ಒದಗಿಸುತ್ತದೆ, ಇದನ್ನು ನಿರ್ದಿಷ್ಟ ಸಂದರ್ಭಗಳಲ್ಲಿ ರಿಯಲ್ ಟೈಮ್ ಜಾವಾ ವಿವರಣೆಯ ಮೂಲಕ ಬೈಪಾಸ್ ಮಾಡಬಹುದು. ಸಿ + + ನಲ್ಲಿ ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಕನ್ಸ್ಟ್ರಕ್ಟರ್ಗಳು, ಡಿಸ್ಟ್ರಕ್ಟರ್ಗಳು ಮತ್ತು ಸ್ಮಾರ್ಟ್ ಪಾಯಿಂಟರ್ಗಳ ಮೂಲಕ ಮಾಡಲಾಗುತ್ತದೆ. ಸಿ + + ಮಾನದಂಡವು ಕಸ ಸಂಗ್ರಹವನ್ನು ಅನುಮತಿಸುತ್ತದೆ, ಆದರೆ ಅದರ ಅಗತ್ಯವಿರುವುದಿಲ್ಲ. ಕಸ ಸಂಗ್ರಹವನ್ನು ಆಚರಣೆಯಲ್ಲಿ ವಿರಳವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. ಸಿ + + ಮೆಮೊರಿಯ ಅನಿಯಂತ್ರಿತ ಬ್ಲಾಕ್ಗಳನ್ನು ನಿಯೋಜಿಸಬಹುದು. ಜಾವಾ ಆಬ್ಜೆಕ್ಟ್ ಇನ್ಸ್ಟಂಟಿಯೇಷನ್ ಮೂಲಕ ಮಾತ್ರ ಮೆಮೊರಿಯನ್ನು ನಿಗದಿಪಡಿಸುತ್ತದೆ. ಆರ್ಬಿಟ್ರರಿ ಮೆಮೊರಿ ಬ್ಲಾಕ್ಗಳನ್ನು ಜಾವಾದಲ್ಲಿ ಬೈಟ್ಗಳ ಶ್ರೇಣಿಯಾಗಿ ನಿಯೋಜಿಸಬಹುದು. ಜಾವಾ ಮತ್ತು ಸಿ + + ಸಂಪನ್ಮೂಲ ನಿರ್ವಹಣೆಗೆ ವಿಭಿನ್ನ ನುಡಿಗಟ್ಟುಗಳನ್ನು ಬಳಸುತ್ತವೆ. ಜಾವಾ ಮುಖ್ಯವಾಗಿ ಕಸದ ಸಂಗ್ರಹಣೆಯನ್ನು ಅವಲಂಬಿಸಿದೆ, ಇದು ಮೆಮೊರಿಯನ್ನು ಮರುಪಡೆಯಬಹುದು, ಆದರೆ ಸಿ + + ಮುಖ್ಯವಾಗಿ ರಿಸೋರ್ಸ್ ಅಕ್ವಿಸಿಷನ್ ಈಸ್ ಇನಿಶಿಯಲೈಸೇಶನ್ (ಆರ್. ಎ. ಐ. ಐ) ಭಾಷಾವೈಶಿಷ್ಟ್ಯವನ್ನು ಅವಲಂಬಿಸಿದೆ. ಇದು ಎರಡು ಭಾಷೆಗಳ ನಡುವಿನ ಹಲವಾರು ವ್ಯತ್ಯಾಸಗಳಲ್ಲಿ ಪ್ರತಿಫಲಿಸುತ್ತದೆಃ ಸಿ + + ನಲ್ಲಿ ಸಂಯುಕ್ತ ಪ್ರಕಾರಗಳ ವಸ್ತುಗಳನ್ನು ಸ್ಥಳೀಯ ಸ್ಟ್ಯಾಕ್-ಬೌಂಡ್ ಅಸ್ಥಿರಗಳಾಗಿ ನಿಯೋಜಿಸುವುದು ಸಾಮಾನ್ಯವಾಗಿದೆ, ಅವು ವ್ಯಾಪ್ತಿಯಿಂದ ಹೊರಬಂದಾಗ ನಾಶವಾಗುತ್ತವೆ. ಜಾವಾದಲ್ಲಿ ಸಂಯುಕ್ತ ಪ್ರಕಾರಗಳನ್ನು ಯಾವಾಗಲೂ ರಾಶಿಗಳ ಮೇಲೆ ಹಂಚಲಾಗುತ್ತದೆ ಮತ್ತು ಕಸ ಸಂಗ್ರಾಹಕರು ಸಂಗ್ರಹಿಸುತ್ತಾರೆ (ರಾಶಿ ಹಂಚಿಕೆಯನ್ನು ರಾಶಿ ಹಂಚಿಕೆಗೆ ಪರಿವರ್ತಿಸಲು ಎಸ್ಕೇಪ್ ವಿಶ್ಲೇಷಣೆಯನ್ನು ಬಳಸುವ ವಾಸ್ತವ ಯಂತ್ರಗಳನ್ನು ಹೊರತುಪಡಿಸಿ). ಸಿ + + ಡಿಸ್ಟ್ರಕ್ಟರ್ಗಳನ್ನು ಹೊಂದಿದ್ದರೆ, ಜಾವಾವು ಫೈನಲೈಸರ್ಗಳನ್ನು ಹೊಂದಿದೆ. ಒಂದು ವಸ್ತುವಿನ ಸ್ಥಳಾಂತರವನ್ನು ತೆಗೆದುಹಾಕುವ ಮೊದಲು ಎರಡನ್ನೂ ಆಹ್ವಾನಿಸಲಾಗುತ್ತದೆ, ಆದರೆ ಅವು ಗಮನಾರ್ಹವಾಗಿ ಭಿನ್ನವಾಗಿರುತ್ತವೆ. ಸಿ + + ಆಬ್ಜೆಕ್ಟ್ನ ಡಿಸ್ಟ್ರಕ್ಟರ್ ಅನ್ನು ಸೂಚ್ಯವಾಗಿ (ಸ್ಟ್ಯಾಕ್-ಬೌಂಡ್ ವೇರಿಯೇಬಲ್ಗಳ ಸಂದರ್ಭದಲ್ಲಿ) ಅಥವಾ ವಸ್ತುವನ್ನು ನಿಯೋಜಿಸಲು ಸ್ಪಷ್ಟವಾಗಿ ಆಹ್ವಾನಿಸಬೇಕು. ಒಂದು ವಸ್ತುವನ್ನು ನಿಯೋಜಿಸಲಾಗಿರುವ ಪ್ರೋಗ್ರಾಂನಲ್ಲಿನ ಬಿಂದುವಿನ ಸ್ವಲ್ಪ ಮೊದಲು ಡಿಸ್ಟ್ರಕ್ಟರ್ ಸಿಂಕ್ರೊನಸ್ ಆಗಿ ಕಾರ್ಯಗತಗೊಳ್ಳುತ್ತದೆ. ಸಿಂಕ್ರೊನಸ್, ಕೋಆರ್ಡಿನೇಟೆಡ್ ಅನ್ಇನಿಷಿಯಲೈಸಿಂಗ್ ಮತ್ತು ಸಿ + + ನಲ್ಲಿ ಡೀಅಲ್ಲೊಕೇಟಿಂಗ್ ಹೀಗೆ ಆರ್. ಎ. ಐ. ಐ ಭಾಷಾವೈಶಿಷ್ಟ್ಯವನ್ನು ತೃಪ್ತಿಪಡಿಸುತ್ತದೆ. ಸಿ + + ನಲ್ಲಿನ ಡಿಸ್ಟ್ರಕ್ಟರ್ಗಳು ವಸ್ತುವಿಗೆ ಸಂಬಂಧಿಸಿದ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಮರಳಿ ಪಡೆಯುವ ಸಾಮಾನ್ಯ ಮಾರ್ಗವಾಗಿದೆ ಮತ್ತು ಇದು ಕನ್ಸ್ಟ್ರಕ್ಟರ್ಗಳಿಗೆ ಅಗತ್ಯವಾದ ಪ್ರತಿರೂಪವಾಗಿದೆ. ಜಾವಾದಲ್ಲಿ, ಆಬ್ಜೆಕ್ಟ್ ಡಿಯಾಲೊಕೇಷನ್ ಅನ್ನು ಕಸ ಸಂಗ್ರಾಹಕರು ಸೂಚ್ಯವಾಗಿ ನಿರ್ವಹಿಸುತ್ತಾರೆ. ಜಾವಾ ಆಬ್ಜೆಕ್ಟ್ನ ಫೈನಲೈಸರ್ ಅನ್ನು ಕೊನೆಯ ಬಾರಿಗೆ ಪ್ರವೇಶಿಸಿದ ಸ್ವಲ್ಪ ಸಮಯದ ನಂತರ ಮತ್ತು ಅದನ್ನು ನಿಯೋಜಿಸುವ ಮೊದಲು ಅಸಿಂಕ್ರೊನಸ್ ಆಗಿ ಆಹ್ವಾನಿಸಲಾಗುತ್ತದೆ. ಬಹಳ ಕಡಿಮೆ ವಸ್ತುಗಳಿಗೆ ಅಂತಿಮಗೊಳಿಸುವಿಕೆಗಳ ಅಗತ್ಯವಿರುತ್ತದೆ. ಸಾಮಾನ್ಯವಾಗಿ ಜೆವಿಎಂಗೆ ಹೊರಗಿನ ಸಂಪನ್ಮೂಲಗಳನ್ನು ಬಿಡುಗಡೆ ಮಾಡುವ ಮೂಲಕ, ನಿಯೋಜಿಸುವ ಮೊದಲು ವಸ್ತುವಿನ ಸ್ಥಿತಿಯ ಸ್ವಲ್ಪ ಸ್ವಚ್ಛತೆಯನ್ನು ಖಾತರಿಪಡಿಸುವ ವಸ್ತುಗಳಿಗೆ ಮಾತ್ರ ಅಂತಿಮಗೊಳಿಸುವಿಕೆಯ ಅಗತ್ಯವಿರುತ್ತದೆ. ಅಂತಿಮಗೊಳಿಸುವ ಸಾಧನಗಳ ನೇರ ಬಳಕೆಯನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಶಿಫಾರಸು ಮಾಡಲಾಗುವುದಿಲ್ಲ, ಏಕೆಂದರೆ ಅವು ಅನಿರೀಕ್ಷಿತವಾಗಿರುತ್ತವೆ, ಸಾಮಾನ್ಯವಾಗಿ ಅಪಾಯಕಾರಿ ಮತ್ತು ಹೆಚ್ಚಿನ ಸಮಯ ಅನಗತ್ಯವಾಗಿರುತ್ತವೆ. ಫೈನಲೈಸರ್ಗಳನ್ನು ಸಿ + + ಡಿಸ್ಟ್ರಕ್ಟರ್ಗಳೆಂದು ಭಾವಿಸದಂತೆ ಒಬ್ಬರು ಜಾಗರೂಕರಾಗಿರಬೇಕು. ಬದಲಿಗೆ, ಟ್ರೈ-ವಿತ್-ರಿಸೋರ್ಸಸ್ ಅಥವಾ ಟ್ರೈ-ಫೈನಲಿ ಬ್ಲಾಕ್, ಡಿಸ್ಟ್ರಕ್ಟರ್ನಂತೆಯೇ ಹೆಚ್ಚು ಹೋಲುವ ಉದ್ದೇಶವನ್ನು ಸಾಧಿಸುತ್ತದೆ. ಫೈನಲೈಸರ್ಗಳು ಅಥವಾ ಕ್ಲೀನರ್ಗಳೊಂದಿಗಿನ ಒಂದು ಸಮಸ್ಯೆಯೆಂದರೆ ಅವು ತಕ್ಷಣವೇ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ ಎಂದು ಖಾತರಿಪಡಿಸುವುದಿಲ್ಲ. ಆದ್ದರಿಂದ, ಸಮಯ-ನಿರ್ಣಾಯಕ ಕಾರ್ಯಗಳಿಗೆ ಅಂತಿಮಗೊಳಿಸುವಿಕೆಯನ್ನು ಎಂದಿಗೂ ಬಳಸಬಾರದು. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಅಂತಿಮಗೊಳಿಸುವವರು ತೀವ್ರವಾದ ಕಾರ್ಯಕ್ಷಮತೆಯ ದಂಡಗಳೊಂದಿಗೆ ಬರುತ್ತಾರೆ ಮತ್ತು ವಸ್ತುಗಳನ್ನು ವಿಂಗಡಿಸಲು ತೆಗೆದುಕೊಳ್ಳುವ ಸಮಯವನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಹೆಚ್ಚಿಸುತ್ತಾರೆ, ಆದ್ದರಿಂದ ಅವುಗಳ ಬಳಕೆಯನ್ನು ಜಾವಾ 9ರಲ್ಲಿ ನಿರುತ್ಸಾಹಗೊಳಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಅಸಮ್ಮತಿಗೊಳಿಸಲಾಗುತ್ತದೆ. ಸಿ + + ನಲ್ಲಿ ಆರ್. ಎ. ಐ. ಐ. ಯೊಂದಿಗೆ, ಒಂದು ರೀತಿಯ ಸಂಪನ್ಮೂಲವನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಒಂದು ಸಣ್ಣ ವರ್ಗದೊಳಗೆ ಸುತ್ತಲಾಗುತ್ತದೆ, ಅದು ನಿರ್ಮಾಣದ ನಂತರ ಸಂಪನ್ಮೂಲವನ್ನು ನಿಗದಿಪಡಿಸುತ್ತದೆ ಮತ್ತು ನಾಶವಾದ ನಂತರ ಸಂಪನ್ಮೂಲವನ್ನು ಬಿಡುಗಡೆ ಮಾಡುತ್ತದೆ ಮತ್ತು ಆ ಬಿಂದುಗಳ ನಡುವೆ ಸಂಪನ್ಮೂಲಕ್ಕೆ ಪ್ರವೇಶವನ್ನು ಒದಗಿಸುತ್ತದೆ. ಅಂತಹ ಆರ್. ಎ. ಐ. ಐ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಮಾತ್ರ ಹೊಂದಿರುವ ಯಾವುದೇ ವರ್ಗವು ಡಿಸ್ಟ್ರಕ್ಟರ್ ಅನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುವ ಅಗತ್ಯವಿಲ್ಲ ಏಕೆಂದರೆ ಈ ವರ್ಗದ ಆಬ್ಜೆಕ್ಟ್ ನಾಶವಾಗುವುದರಿಂದ ಆರ್. ಎ. ಐ. ಐ ಆಬ್ಜೆಕ್ಟ್ಗಳ ಡಿಸ್ಟ್ರಕ್ಟರ್ಗಳನ್ನು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಕರೆಯಲಾಗುತ್ತದೆ. ಜಾವಾದಲ್ಲಿ, ಟ್ರೈ/ಕ್ಯಾಚ್/ಫೈನಲ್ ಕನ್ಸ್ಟ್ರಕ್ಟ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಸಂಪನ್ಮೂಲಗಳ ಸುರಕ್ಷಿತ ಸಿಂಕ್ರೊನಸ್ ಡಿಯಾಲೊಕೇಷನ್ ಅನ್ನು ನಿರ್ಣಾಯಕವಾಗಿ ಮಾಡಬಹುದು. ಪರ್ಯಾಯವಾಗಿ, ಜಾವಾ 7ರಲ್ಲಿ ಪರಿಚಯಿಸಲಾದ ಟ್ರೈ-ವಿತ್-ರಿಸೋರ್ಸಸ್ ರಚನೆಯನ್ನು, ಟ್ರೈ-ಫೈನಲಿ ಕನ್ಸ್ಟ್ರಕ್ಟ್ಗೆ ಆದ್ಯತೆಯಾಗಿ ಬಳಸಬೇಕು. ಸಂಪನ್ಮೂಲಗಳೊಂದಿಗೆ ಪ್ರಯತ್ನಿಸುವ ರಚನೆಯು ಹೆಚ್ಚು ಸಂಕ್ಷಿಪ್ತವಾಗಿದೆ ಮತ್ತು ಓದಬಲ್ಲದ್ದಾಗಿದೆ. ಇದು ಹೆಚ್ಚು ಸಹಾಯಕವಾದ ರೋಗನಿರ್ಣಯದ ಮಾಹಿತಿಯನ್ನು ಸಹ ಒದಗಿಸುತ್ತದೆ, ಏಕೆಂದರೆ ನಿಗ್ರಹಿಸಿದ ವಿನಾಯಿತಿಗಳನ್ನು ತಿರಸ್ಕರಿಸಲಾಗುವುದಿಲ್ಲ, ಮತ್ತು ಅವುಗಳನ್ನು ನಿಗ್ರಹಿಸಲಾಗಿದೆ ಎಂದು ಹೇಳುವ ಮಾಹಿತಿಯೊಂದಿಗೆ ಸ್ಟಾಕ್ ಟ್ರೇಸ್ನಲ್ಲಿ ಮುದ್ರಿಸಲಾಗುತ್ತದೆ. ಸಿ + + ನಲ್ಲಿ, ತೂಗಾಡುತ್ತಿರುವ ಪಾಯಿಂಟರ್ ಅನ್ನು ಹೊಂದಲು ಸಾಧ್ಯವಿದೆ, ಇದು ಈಗಾಗಲೇ ನಿಯೋಜಿಸಲಾಗಿರುವ ವಸ್ತುವಿನ ಹಳೆಯ ಉಲ್ಲೇಖವಾಗಿದೆ. ತೂಗಾಡುತ್ತಿರುವ ಪಾಯಿಂಟರ್ ಅನ್ನು ಬಳಸಲು ಪ್ರಯತ್ನಿಸುವುದು ಸಾಮಾನ್ಯವಾಗಿ ಪ್ರೋಗ್ರಾಂ ವೈಫಲ್ಯಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ. ಜಾವಾದಲ್ಲಿ, ಕಸದ ಸಂಗ್ರಾಹಕನು ಉಲ್ಲೇಖಿತ ವಸ್ತುವನ್ನು ನಾಶಪಡಿಸುವುದಿಲ್ಲ. ಸಿ + + ನಲ್ಲಿ, ಆರಂಭಿಕವಲ್ಲದ ಪ್ರಾಚೀನ ವಸ್ತುಗಳನ್ನು ಹೊಂದಲು ಸಾಧ್ಯವಿದೆ. ಜಾವಾ ಪೂರ್ವನಿಯೋಜಿತ ಆರಂಭೀಕರಣವನ್ನು ಜಾರಿಗೊಳಿಸುತ್ತದೆ. ಸಿ + + ನಲ್ಲಿ, ಯಾವುದೇ ಮಾನ್ಯವಾದ ಉಲ್ಲೇಖವಿಲ್ಲದ ನಿಗದಿಪಡಿಸಿದ ವಸ್ತುವನ್ನು ಹೊಂದಲು ಸಾಧ್ಯವಿದೆ. ಅಂತಹ ತಲುಪಲಾಗದ ವಸ್ತುವನ್ನು ನಾಶಪಡಿಸಲಾಗುವುದಿಲ್ಲ (ನಿಯೋಜಿಸಲಾಗಿಲ್ಲ), ಮತ್ತು ಮೆಮೊರಿ ಸೋರಿಕೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಇದಕ್ಕೆ ತದ್ವಿರುದ್ಧವಾಗಿ, ಜಾವಾದಲ್ಲಿ ಒಂದು ವಸ್ತುವನ್ನು ಕಸ ಸಂಗ್ರಾಹಕರು ತಲುಪಲಾಗದವರೆಗೂ (ಬಳಕೆದಾರ ಪ್ರೋಗ್ರಾಂನಿಂದ) ನಿಯೋಜಿಸಲಾಗುವುದಿಲ್ಲ. (ದುರ್ಬಲ ಉಲ್ಲೇಖಗಳು ಬೆಂಬಲಿತವಾಗಿವೆ, ಇದು ತಲುಪುವಿಕೆಯ ವಿವಿಧ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಅನುಮತಿಸಲು ಜಾವಾ ಕಸ ಸಂಗ್ರಾಹಕದೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ.) ಜಾವಾದಲ್ಲಿ ಕಸ ಸಂಗ್ರಹವು ಅನೇಕ ಮೆಮೊರಿ ಸೋರಿಕೆಯನ್ನು ತಡೆಯುತ್ತದೆ, ಆದರೆ ಕೆಲವು ಸಂದರ್ಭಗಳಲ್ಲಿ ಸೋರಿಕೆಗಳು ಇನ್ನೂ ಸಾಧ್ಯವಿದೆ. ಜಾವಾದಲ್ಲಿ ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯ ಬಗ್ಗೆ ಯೋಚಿಸುವ ಅಗತ್ಯವಿಲ್ಲ ಎಂಬ ತಪ್ಪು ಅಭಿಪ್ರಾಯವನ್ನು ಸ್ವಯಂಚಾಲಿತ ಕಸ ಸಂಗ್ರಾಹಕರು ನೀಡಬಹುದು. ಆದಾಗ್ಯೂ, ಇದು ಸಂಪೂರ್ಣವಾಗಿ ನಿಜವಲ್ಲ. ಸಡಿಲವಾಗಿ ಹೇಳುವುದಾದರೆ, ಒಂದು ಪ್ರೋಗ್ರಾಂ "ಮೆಮೊರಿ ಸೋರಿಕೆಗಳನ್ನು" ಹೊಂದಿರಬಹುದು, ಇದನ್ನು ಹೆಚ್ಚು ಔಪಚಾರಿಕವಾಗಿ "ಅನುದ್ದೇಶಿತ ವಸ್ತು ಧಾರಣಗಳು" ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಸಂಭವಿಸಬಹುದಾದ ಮೆಮೊರಿ ಸೋರಿಕೆಗೆ ಒಂದು ಉದಾಹರಣೆಯೆಂದರೆ, ಯಾವುದೇ ತಾರ್ಕಿಕ ದೋಷಗಳಿಲ್ಲದೆ ಬರೆಯಲಾದ ಪ್ರೋಗ್ರಾಂಗೆ, ಅದು ಬಳಕೆಯಲ್ಲಿಲ್ಲದ ಉಲ್ಲೇಖಗಳನ್ನು ತೆಗೆದುಹಾಕಿಲ್ಲ. ಇದು ಕಸ ಸಂಗ್ರಾಹಕ ಚಟುವಟಿಕೆಯ ಹೆಚ್ಚಿನ ಬಳಕೆ, ಹೆಚ್ಚಿನ ಮೆಮೊರಿ ಹೆಜ್ಜೆಗುರುತುಗಳಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ವಿಪರೀತ ಸಂದರ್ಭಗಳಲ್ಲಿ, ಈ ಸಮಸ್ಯೆಯು ಔಟ್ ಆಫ್ ಮೆಮೊರಿ ದೋಷಕ್ಕೆ ಕಾರಣವಾಗಬಹುದು, ಆದರೆ ಇದು ವಿರಳವಾಗಿ ಸಂಭವಿಸುತ್ತದೆ. ವಸ್ತುವಿನ ಉಲ್ಲೇಖಗಳನ್ನು ರದ್ದುಗೊಳಿಸುವುದು ಇದಕ್ಕೆ ಪರಿಹಾರವಾಗಿದೆ. ಮೆಮೊರಿ ಸೋರಿಕೆಗೆ ಎರಡನೇ ಸಾಮಾನ್ಯ ಕಾರಣವೆಂದರೆ ಕ್ಯಾಶೆಯ ಬಳಕೆಯು ಇನ್ನು ಮುಂದೆ ಪ್ರಸ್ತುತವಾಗಿಲ್ಲ. ಹಳೆಯ ಕ್ಯಾಶ್ ಅನ್ನು ಬಳಸುವುದರಿಂದ ಉಂಟಾಗುವ ಮೆಮೊರಿ ಸೋರಿಕೆಗೆ ಪರಿಹಾರವೆಂದರೆ ದುರ್ಬಲ ಹ್ಯಾಶ್ಮ್ಯಾಪ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಕ್ಯಾಶ್ ಅನ್ನು ಪ್ರತಿನಿಧಿಸುವುದು. ಗ್ರಂಥಾಲಯಗಳು ಸಿ + + ಪ್ಲಾಟ್ಫಾರ್ಮ್-ನಿರ್ದಿಷ್ಟ ಗ್ರಂಥಾಲಯಗಳಲ್ಲಿ ಸಾಮಾನ್ಯವಾಗಿ ಲಭ್ಯವಿರುವ ಅನೇಕ ವೈಶಿಷ್ಟ್ಯಗಳಿಗೆ ಕ್ರಾಸ್-ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಪ್ರವೇಶವನ್ನು ಒದಗಿಸುತ್ತದೆ. ಜಾವಾದಿಂದ ಸ್ಥಳೀಯ ಕಾರ್ಯಾಚರಣಾ ವ್ಯವಸ್ಥೆ ಮತ್ತು ಯಂತ್ರಾಂಶ ಕಾರ್ಯಗಳಿಗೆ ನೇರ ಪ್ರವೇಶಕ್ಕೆ ಜಾವಾ ಸ್ಥಳೀಯ ಇಂಟರ್ಫೇಸ್ನ ಬಳಕೆಯ ಅಗತ್ಯವಿರುತ್ತದೆ. ಅದರ ಅನಿಯಂತ್ರಿತ ಅಭಿವ್ಯಕ್ತಿಯಿಂದಾಗಿ, ಕಡಿಮೆ ಮಟ್ಟದ ಸಿ + + ಭಾಷಾ ವೈಶಿಷ್ಟ್ಯಗಳು (ಉದಾಹರಣೆಗೆ. ಅನಿಯಂತ್ರಿತ ಶ್ರೇಣಿಯ ಪ್ರವೇಶ, ಕಚ್ಚಾ ಪಾಯಿಂಟರ್ಗಳು, ಟೈಪ್ ಪನ್ನಿಂಗ್) ಅನ್ನು ಕಂಪೈಲ್-ಸಮಯದಲ್ಲಿ ಅಥವಾ ರನ್-ಟೈಮ್ನಲ್ಲಿ ಓವರ್ಹೆಡ್ ಇಲ್ಲದೆ ವಿಶ್ವಾಸಾರ್ಹವಾಗಿ ಪರಿಶೀಲಿಸಲಾಗುವುದಿಲ್ಲ. ಸಂಬಂಧಿತ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ದೋಷಗಳು ಕಡಿಮೆ ಮಟ್ಟದ ಬಫರ್ ಓವರ್ಫ್ಲೋ ಮತ್ತು ವಿಭಜನೆಯ ದೋಷಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು. ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಟೆಂಪ್ಲೇಟ್ ಲೈಬ್ರರಿಯು ಅಂತಹ ದೋಷಗಳನ್ನು ತಪ್ಪಿಸಲು ಸಹಾಯ ಮಾಡಲು ಉನ್ನತ ಮಟ್ಟದ ಆರ್ಎಐಐ ಅಮೂರ್ತತೆಗಳನ್ನು (ವೆಕ್ಟರ್, ಪಟ್ಟಿ ಮತ್ತು ನಕ್ಷೆಯಂತಹ) ಒದಗಿಸುತ್ತದೆ. ಜಾವಾದಲ್ಲಿ, ಕಡಿಮೆ ಮಟ್ಟದ ದೋಷಗಳು ಸಂಭವಿಸುವುದಿಲ್ಲ ಅಥವಾ ಜಾವಾ ವರ್ಚುವಲ್ ಯಂತ್ರದಿಂದ (ಜೆವಿಎಂ) ಪತ್ತೆಹಚ್ಚಲ್ಪಡುತ್ತವೆ ಮತ್ತು ವಿನಾಯಿತಿಯ ರೂಪದಲ್ಲಿ ಅಪ್ಲಿಕೇಶನ್ಗೆ ವರದಿ ಮಾಡಲ್ಪಡುತ್ತವೆ. ಜಾವಾ ಭಾಷೆಗೆ ಮಿತಿಯಿಲ್ಲದ ಶ್ರೇಣಿಯ ಪ್ರವೇಶದ ಸಂದರ್ಭದಲ್ಲಿ ನಿರ್ದಿಷ್ಟ ನಡವಳಿಕೆಯ ಅಗತ್ಯವಿರುತ್ತದೆ, ಇದಕ್ಕೆ ಸಾಮಾನ್ಯವಾಗಿ ಶ್ರೇಣಿಯ ಪ್ರವೇಶಗಳ ಮಿತಿಯನ್ನು ಪರಿಶೀಲಿಸುವ ಅಗತ್ಯವಿರುತ್ತದೆ. ಇದು ಅಸ್ಥಿರತೆಯ ಸಂಭವನೀಯ ಮೂಲವನ್ನು ನಿವಾರಿಸುತ್ತದೆ ಆದರೆ ಸಾಮಾನ್ಯವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಯನ್ನು ನಿಧಾನಗೊಳಿಸುವ ವೆಚ್ಚದಲ್ಲಿ. ಕೆಲವು ಸಂದರ್ಭಗಳಲ್ಲಿ, ವಿಶೇಷವಾಗಿ ಜಾವಾ 7 ರಿಂದ, ಕಂಪೈಲರ್ ವಿಶ್ಲೇಷಣೆಯು ಮಿತಿಯ ಪರಿಶೀಲನೆಯನ್ನು ಅನಗತ್ಯವೆಂದು ಸಾಬೀತುಪಡಿಸಬಹುದು ಮತ್ತು ಅದನ್ನು ತೆಗೆದುಹಾಕಬಹುದು. ಸ್ಥಳೀಯ ಸರಣಿಗಳ ಮಿತಿಯ ಹೊರಗಿನ ಪ್ರವೇಶಕ್ಕೆ ಸಿ + + ಯಾವುದೇ ನಡವಳಿಕೆಯನ್ನು ಹೊಂದಿಲ್ಲ, ಹೀಗಾಗಿ ಸ್ಥಳೀಯ ಸರಣಿಗಳಿಗಾಗಿ ಯಾವುದೇ ಮಿತಿಯ ಪರಿಶೀಲನೆಯ ಅಗತ್ಯವಿರುವುದಿಲ್ಲ. ಆದಾಗ್ಯೂ, ಎಸ್ಟಿಡಿಃಃ ವೆಕ್ಟರ್ನಂತಹ ಸಿ + + ಸ್ಟ್ಯಾಂಡರ್ಡ್ ಲೈಬ್ರರಿ ಸಂಗ್ರಹಗಳು ಐಚ್ಛಿಕ ಮಿತಿಗಳ ಪರಿಶೀಲನೆಯನ್ನು ನೀಡುತ್ತವೆ. ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಹೇಳುವುದಾದರೆ, ಜಾವಾ ಸರಣಿಗಳು "ಸಾಮಾನ್ಯವಾಗಿ ಸುರಕ್ಷಿತವಾಗಿರುತ್ತವೆ; ಸ್ವಲ್ಪ ನಿರ್ಬಂಧಿತವಾಗಿರುತ್ತವೆ; ಆಗಾಗ್ಗೆ ಓವರ್ಹೆಡ್ ಅನ್ನು ಹೊಂದಿರುತ್ತವೆ" ಆದರೆ ಸಿ + + ಸ್ಥಳೀಯ ಸರಣಿಗಳು "ಐಚ್ಛಿಕ ಓವರ್ಹೆಡ್ ಅನ್ನು ಹೊಂದಿರುತ್ತವೆ; ಸ್ವಲ್ಪ ಅನಿಯಂತ್ರಿತವಾಗಿರುತ್ತವೆ; ಪ್ರಾಯಶಃ ಅಸುರಕ್ಷಿತವಾಗಿರುತ್ತವೆ". ಟೆಂಪ್ಲೆಟ್ಗಳು ವರ್ಸಸ್ ಜೆನೆರಿಕ್ಗಳು ಸಿ + + ಮತ್ತು ಜಾವಾ ಎರಡೂ ಅನುಕ್ರಮವಾಗಿ ಜೆನೆರಿಕ್ ಪ್ರೋಗ್ರಾಮಿಂಗ್, ಟೆಂಪ್ಲೆಟ್ಗಳು ಮತ್ತು ಜೆನೆರಿಕ್ಗಳಿಗೆ ಸೌಲಭ್ಯಗಳನ್ನು ಒದಗಿಸುತ್ತವೆ. ಒಂದೇ ರೀತಿಯ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಅವುಗಳನ್ನು ರಚಿಸಲಾಗಿದ್ದರೂ, ಮತ್ತು ಒಂದೇ ರೀತಿಯ ವಾಕ್ಯರಚನೆಯನ್ನು ಹೊಂದಿದ್ದರೂ, ಅವು ತುಂಬಾ ಭಿನ್ನವಾಗಿವೆ. {| ಕ್ಲಾಸ್ = "ವಿಕಿಟೇಬಲ್"! ಸಿ + + ಮಾದರಿಗಳು! ಜಾವಾ ಜೆನೆರಿಕ್ಸ್ |-| ವರ್ಗಗಳು, ಕಾರ್ಯಗಳು, ಅಲಿಯಾಸ್ಗಳು ಮತ್ತು ಅಸ್ಥಿರಗಳನ್ನು ಟೆಂಪ್ಲೇಟ್ ಮಾಡಬಹುದು. | ವರ್ಗಗಳು ಮತ್ತು ವಿಧಾನಗಳನ್ನು ಸಾರ್ವತ್ರಿಕಗೊಳಿಸಬಹುದು. |-| ನಿಯತಾಂಕಗಳು ಯಾವುದೇ ರೀತಿಯ, ಅವಿಭಾಜ್ಯ ಮೌಲ್ಯ, ಅಕ್ಷರದ ಅಕ್ಷರಶಃ ಅಥವಾ ವರ್ಗ ಟೆಂಪ್ಲೇಟ್ ಆಗಿರಬಹುದು. | ನಿಯತಾಂಕಗಳು ಯಾವುದೇ ಉಲ್ಲೇಖದ ಪ್ರಕಾರವಾಗಿರಬಹುದು, ಇದರಲ್ಲಿ ಪೆಟ್ಟಿಗೆಯಲ್ಲಿರುವ ಪ್ರಾಚೀನ ಪ್ರಕಾರಗಳು (ಅಂದರೆ. ಪೂರ್ಣಾಂಕ, ಬೂಲಿಯನ್.). |-| ಸಂಕಲಿಸಿದಾಗ ಪ್ರತಿ ನಿಯತಾಂಕ-ಸೆಟ್ಗೆ ವರ್ಗ ಅಥವಾ ಕಾರ್ಯದ ಪ್ರತ್ಯೇಕ ಕ್ಷಣಗಳನ್ನು ಉತ್ಪಾದಿಸಲಾಗುತ್ತದೆ. ಕ್ಲಾಸ್ ಟೆಂಪ್ಲೆಟ್ಗಳಿಗೆ, ಬಳಸಲಾಗುವ ಮೆಂಬರ್ ಫಂಕ್ಷನ್ಗಳನ್ನು ಮಾತ್ರ ತ್ವರಿತಗೊಳಿಸಲಾಗುತ್ತದೆ. ವರ್ಗ ಅಥವಾ ಕಾರ್ಯದ ಒಂದು ಆವೃತ್ತಿಯನ್ನು ಸಂಕಲಿಸಲಾಗುತ್ತದೆ, ಇದು ಎಲ್ಲಾ ರೀತಿಯ ನಿಯತಾಂಕಗಳಿಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ (ಟೈಪ್-ಎರೇಸರ್ ಮೂಲಕ). |-| ವಿಭಿನ್ನ ನಿಯತಾಂಕಗಳೊಂದಿಗೆ ತ್ವರಿತಗೊಳಿಸಲಾದ ವರ್ಗ ಟೆಂಪ್ಲೇಟ್ನ ವಸ್ತುಗಳು ಚಾಲನೆಯಲ್ಲಿರುವ ಸಮಯದಲ್ಲಿ ವಿಭಿನ್ನ ಪ್ರಕಾರಗಳನ್ನು ಹೊಂದಿರುತ್ತವೆ (ಅಂದರೆ, ವಿಭಿನ್ನ ಟೆಂಪ್ಲೇಟ್ ಕ್ಷಣಗಳು ವಿಭಿನ್ನ ವರ್ಗಗಳಾಗಿವೆ). | ಟೈಪ್ ನಿಯತಾಂಕಗಳನ್ನು ಸಂಕಲಿಸಿದಾಗ ಅಳಿಸಲಾಗುತ್ತದೆ; ವಿವಿಧ ರೀತಿಯ ನಿಯತಾಂಕಗಳನ್ನು ಹೊಂದಿರುವ ವರ್ಗದ ವಸ್ತುಗಳು ರನ್ ಸಮಯದಲ್ಲಿ ಒಂದೇ ರೀತಿಯದ್ದಾಗಿರುತ್ತವೆ. ಇದು ವಿಭಿನ್ನ ಕನ್ಸ್ಟ್ರಕ್ಟರ್ ಅನ್ನು ಉಂಟುಮಾಡುತ್ತದೆ. ಈ ರೀತಿಯ ಅಳಿಸುವಿಕೆಯಿಂದಾಗಿ, ಸಾಮಾನ್ಯ ವರ್ಗದ ವಿಭಿನ್ನ ಕ್ಷಣಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಮಿತಿಮೀರಿದ ವಿಧಾನಗಳನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಿಲ್ಲ. |-| ವರ್ಗ ಅಥವಾ ಫಂಕ್ಷನ್ ಟೆಂಪ್ಲೇಟ್ನ ಅನುಷ್ಠಾನವು ಅದನ್ನು ಬಳಸಲು ಅನುವಾದ ಘಟಕದೊಳಗೆ ಗೋಚರಿಸಬೇಕು. ಇದು ಸಾಮಾನ್ಯವಾಗಿ ಹೆಡರ್ ಕಡತಗಳಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಗಳನ್ನು ಹೊಂದಿರುವುದನ್ನು ಅಥವಾ ಹೆಡರ್ ಕಡತದಲ್ಲಿ ಸೇರಿಸುವುದನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಸಿ + + 11ರಂತೆ, ಕೆಲವು ತತ್ಕ್ಷಣಗಳ ಸಂಕಲನವನ್ನು ಪ್ರತ್ಯೇಕಿಸಲು ಬಾಹ್ಯ ಮಾದರಿಗಳನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಿದೆ. ಸಂಕಲಿಸಿದ ವರ್ಗ ಕಡತದಿಂದ ವರ್ಗ ಅಥವಾ ಕಾರ್ಯದ ಸಹಿ ಅದನ್ನು ಬಳಸಲು ಸಾಕಾಗುತ್ತದೆ. |-| ಟೆಂಪ್ಲೇಟ್ಗಳು ವಿಶೇಷವಾಗಿರಬಹುದು-ನಿರ್ದಿಷ್ಟ ಟೆಂಪ್ಲೇಟ್ ನಿಯತಾಂಕಕ್ಕೆ ಪ್ರತ್ಯೇಕ ಅನುಷ್ಠಾನವನ್ನು ಒದಗಿಸಬಹುದು. | ಜೆನೆರಿಕ್ಗಳು ವಿಶೇಷವಾಗಿರಲು ಸಾಧ್ಯವಿಲ್ಲ. |-| ಟೆಂಪ್ಲೇಟ್ ನಿಯತಾಂಕಗಳು ಪೂರ್ವನಿಯೋಜಿತ ವಾದಗಳನ್ನು ಹೊಂದಿರಬಹುದು. ಸಿ + + 11ರ ಮೊದಲು, ಇದನ್ನು ಟೆಂಪ್ಲೇಟ್ ವರ್ಗಗಳಿಗೆ ಮಾತ್ರ ಅನುಮತಿಸಲಾಗಿತ್ತು, ಕಾರ್ಯಗಳಿಗೆ ಅಲ್ಲ. | ಸಾಮಾನ್ಯ ರೀತಿಯ ನಿಯತಾಂಕಗಳು ಪೂರ್ವನಿಯೋಜಿತ ವಾದಗಳನ್ನು ಹೊಂದಿರಬಾರದು. |-| ವೈಲ್ಡ್ಕಾರ್ಡ್ಗಳಿಗೆ ಬೆಂಬಲವಿಲ್ಲ. ಬದಲಿಗೆ, ರಿಟರ್ನ್ ಪ್ರಕಾರಗಳು ಸಾಮಾನ್ಯವಾಗಿ ನೆಸ್ಟೆಡ್ ಟೈಪೆಡೆಫ್ಗಳಾಗಿ ಲಭ್ಯವಿರುತ್ತವೆ. (ಅಲ್ಲದೆ, ಸಿ + + 11 ಸ್ವಯಂಚಾಲಿತ ಕೀವರ್ಡ್ ಅನ್ನು ಸೇರಿಸಿದೆ, ಇದು ಸಂಕಲನ ಸಮಯದಲ್ಲಿ ನಿರ್ಧರಿಸಬಹುದಾದ ಯಾವುದೇ ಪ್ರಕಾರಕ್ಕೆ ವೈಲ್ಡ್ಕಾರ್ಡ್ ಆಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ.) | ವೈಲ್ಡ್ಕಾರ್ಡ್ಗಳು ಪ್ರಕಾರದ ನಿಯತಾಂಕವಾಗಿ ಬೆಂಬಲಿತವಾಗಿದೆ. |-| ಪ್ರಕಾರದ ನಿಯತಾಂಕಗಳ ಮಿತಿಗೆ ಯಾವುದೇ ನೇರ ಬೆಂಬಲವಿಲ್ಲ, ಆದರೆ ಮೆಟಾಪ್ರೋಗ್ರಾಮಿಂಗ್ ಇದನ್ನು ಒದಗಿಸುತ್ತದೆ | ಪ್ರಕಾರದ ನಿಯತಾಂಕಗಳ ಮಿತಿಯನ್ನು ಕ್ರಮವಾಗಿ ಮೇಲಿನ ಮತ್ತು ಕೆಳಗಿನ ಮಿತಿಗಳಿಗೆ "ವಿಸ್ತರಿಸುತ್ತದೆ" ಮತ್ತು "ಸೂಪರ್" ನೊಂದಿಗೆ ಬೆಂಬಲಿಸುತ್ತದೆ; ಪ್ರಕಾರದ ನಿಯತಾಂಕಗಳ ನಡುವಿನ ಸಂಬಂಧಗಳನ್ನು ಜಾರಿಗೊಳಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. |-| ನಿಯತಾಂಕ ಪ್ರಕಾರದೊಂದಿಗೆ ವಸ್ತುವಿನ ತ್ವರಿತತೆಯನ್ನು ಅನುಮತಿಸುತ್ತದೆ. | ನಿಯತಾಂಕದ ಪ್ರಕಾರದೊಂದಿಗೆ (ಪ್ರತಿಫಲನವನ್ನು ಹೊರತುಪಡಿಸಿ) ವಸ್ತುವಿನ ತ್ವರಿತತೆಯನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. |-| ವರ್ಗ ಟೆಂಪ್ಲೇಟ್ನ ಪ್ರಕಾರದ ನಿಯತಾಂಕವನ್ನು ಸ್ಥಿರ ವಿಧಾನಗಳು ಮತ್ತು ಅಸ್ಥಿರಗಳಿಗೆ ಬಳಸಬಹುದು. ಸಾಮಾನ್ಯ ವರ್ಗದ ಪ್ರಕಾರದ ನಿಯತಾಂಕವನ್ನು ಸ್ಥಿರ ವಿಧಾನಗಳು ಮತ್ತು ಅಸ್ಥಿರಗಳಿಗೆ ಬಳಸಲಾಗುವುದಿಲ್ಲ. |-| ವಿವಿಧ ರೀತಿಯ ನಿಯತಾಂಕಗಳ ವರ್ಗಗಳು ಮತ್ತು ಕಾರ್ಯಗಳ ನಡುವೆ ಹಂಚಿಕೊಳ್ಳದ ಸ್ಥಿರ ಅಸ್ಥಿರಗಳು. | ವಿವಿಧ ರೀತಿಯ ನಿಯತಾಂಕಗಳ ವರ್ಗಗಳ ನಿದರ್ಶನಗಳ ನಡುವೆ ಹಂಚಿಕೊಳ್ಳಲಾದ ಸ್ಥಿರ ಅಸ್ಥಿರಗಳು. |-| ವರ್ಗ ಮತ್ತು ಕಾರ್ಯ ಟೆಂಪ್ಲೆಟ್ಗಳು ತಮ್ಮ ಘೋಷಣೆಯಲ್ಲಿ ಪ್ರಕಾರದ ನಿಯತಾಂಕಗಳಿಗೆ ಪ್ರಕಾರದ ಸಂಬಂಧಗಳನ್ನು ಜಾರಿಗೊಳಿಸುವುದಿಲ್ಲ. ತಪ್ಪಾದ ರೀತಿಯ ನಿಯತಾಂಕದ ಬಳಕೆಯು ಸಂಕಲನ ವೈಫಲ್ಯಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ, ಆಗಾಗ್ಗೆ ಅದನ್ನು ಆಹ್ವಾನಿಸುವ ಬಳಕೆದಾರರ ಕೋಡ್ಗಿಂತ ಟೆಂಪ್ಲೇಟ್ ಕೋಡ್ನೊಳಗೆ ದೋಷ ಸಂದೇಶವನ್ನು ಉತ್ಪಾದಿಸುತ್ತದೆ. ಟೆಂಪ್ಲೇಟೆಡ್ ತರಗತಿಗಳು ಮತ್ತು ಕಾರ್ಯಗಳ ಸರಿಯಾದ ಬಳಕೆಯು ಸರಿಯಾದ ದಾಖಲೆಯ ಮೇಲೆ ಅವಲಂಬಿತವಾಗಿದೆ. ಮೆಟಾಪ್ರೋಗ್ರಾಮಿಂಗ್ ಹೆಚ್ಚುವರಿ ಪ್ರಯತ್ನದ ವೆಚ್ಚದಲ್ಲಿ ಈ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ. ಸಿ + + 11ರಲ್ಲಿ ಈ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವ ಪ್ರಸ್ತಾಪವಿತ್ತು, ಇದನ್ನು ಕಾನ್ಸೆಪ್ಟ್ಸ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ, ಇದನ್ನು ಮುಂದಿನ ಮಾನದಂಡಕ್ಕೆ ಯೋಜಿಸಲಾಗಿದೆ. | ಸಾಮಾನ್ಯ ವರ್ಗಗಳು ಮತ್ತು ಕಾರ್ಯಗಳು ತಮ್ಮ ಘೋಷಣೆಯಲ್ಲಿ ಪ್ರಕಾರದ ನಿಯತಾಂಕಗಳಿಗೆ ಪ್ರಕಾರದ ಸಂಬಂಧಗಳನ್ನು ಜಾರಿಗೊಳಿಸಬಹುದು. ತಪ್ಪಾದ ರೀತಿಯ ನಿಯತಾಂಕದ ಬಳಕೆಯು ಅದನ್ನು ಬಳಸುವ ಕೋಡ್ನೊಳಗೆ ಟೈಪ್ ದೋಷಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ. ಜೆನೆರಿಕ್ ಕೋಡ್ನಲ್ಲಿ ನಿಯತಾಂಕಗಳ ಪ್ರಕಾರಗಳ ಮೇಲಿನ ಕಾರ್ಯಾಚರಣೆಗಳನ್ನು ಘೋಷಣೆಯಿಂದ ಸುರಕ್ಷಿತವಾಗಿರುವುದನ್ನು ಖಾತರಿಪಡಿಸುವ ರೀತಿಯಲ್ಲಿ ಮಾತ್ರ ಅನುಮತಿಸಲಾಗುತ್ತದೆ. ಇದು ನಮ್ಯತೆಯ ವೆಚ್ಚದಲ್ಲಿ ಹೆಚ್ಚಿನ ರೀತಿಯ ಸುರಕ್ಷತೆಗೆ ಕಾರಣವಾಗುತ್ತದೆ. |-| ಟೆಂಪ್ಲೇಟ್ಗಳು ಟ್ಯೂರಿಂಗ್-ಕಂಪ್ಲೀಟ್ ಆಗಿವೆ (ಟೆಂಪ್ಲೇಟ್ ಮೆಟಾಪ್ರೋಗ್ರಾಮಿಂಗ್ ನೋಡಿ). | ಜೆನೆರಿಕ್ಗಳು ಸಹ ಟ್ಯೂರಿಂಗ್-ಕಂಪ್ಲೀಟ್ |} ವಿವಿಧ ಜಾವಾ ಮತ್ತು ಸಿ + + ಕೋಡ್ ಅನ್ನು ಅನೇಕ ಮೂಲ ಫೈಲ್ಗಳಾಗಿ ವಿಂಗಡಿಸಲು ವಿಭಿನ್ನ ವಿಧಾನಗಳನ್ನು ಬಳಸುತ್ತವೆ. ಎಲ್ಲಾ ಪ್ರೋಗ್ರಾಂ ವ್ಯಾಖ್ಯಾನಗಳಿಗೆ ಕಡತದ ಹೆಸರು ಮತ್ತು ಮಾರ್ಗವನ್ನು ನಿರ್ದೇಶಿಸುವ ಪ್ಯಾಕೇಜ್ ವ್ಯವಸ್ಥೆಯನ್ನು ಜಾವಾ ಬಳಸುತ್ತದೆ. ಇದರ ಕಂಪೈಲರ್ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ವರ್ಗ ಕಡತಗಳನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳುತ್ತದೆ. ಸಿ + + ಮೂಲ ಕಡತಗಳ ನಡುವೆ ಘೋಷಣೆಗಳನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಹೆಡರ್ ಕಡತ ಮೂಲ ಸಂಕೇತ ಸೇರ್ಪಡೆ ವ್ಯವಸ್ಥೆಯನ್ನು ಬಳಸುತ್ತದೆ. ಕಂಪೈಲ್ ಮಾಡಲಾದ ಜಾವಾ ಕೋಡ್ ಫೈಲ್ಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಸಿ + + ನಲ್ಲಿನ ಕೋಡ್ ಫೈಲ್ಗಳಿಗಿಂತ ಚಿಕ್ಕದಾಗಿರುತ್ತವೆ, ಏಕೆಂದರೆ ಜಾವಾ ಬೈಟ್ಕೋಡ್ ಸಾಮಾನ್ಯವಾಗಿ ಸ್ಥಳೀಯ ಯಂತ್ರ ಕೋಡ್ಗಿಂತ ಹೆಚ್ಚು ಸಾಂದ್ರವಾಗಿರುತ್ತದೆ ಮತ್ತು ಜಾವಾ ಪ್ರೋಗ್ರಾಂಗಳು ಎಂದಿಗೂ ಸ್ಥಿರವಾಗಿ ಸಂಪರ್ಕ ಹೊಂದಿರುವುದಿಲ್ಲ. ಸಿ + + ಸಂಕಲನವು ಹೆಚ್ಚುವರಿ ಪಠ್ಯ ಪೂರ್ವ ಸಂಸ್ಕರಣಾ ಹಂತವನ್ನು ಹೊಂದಿದೆ, ಆದರೆ ಜಾವಾ ಇಲ್ಲ. ಹೀಗಾಗಿ ಕೆಲವು ಬಳಕೆದಾರರು ಷರತ್ತುಬದ್ಧ ಸಂಕಲನದ ಉತ್ತಮ ಬೆಂಬಲಕ್ಕಾಗಿ ತಮ್ಮ ನಿರ್ಮಾಣ ಪ್ರಕ್ರಿಯೆಗೆ ಪೂರ್ವ ಸಂಸ್ಕರಣಾ ಹಂತವನ್ನು ಸೇರಿಸುತ್ತಾರೆ. ಜಾವಾದ ವಿಭಾಗ ಮತ್ತು ಮಾಡ್ಯುಲಸ್ ಆಪರೇಟರ್ಗಳನ್ನು ಶೂನ್ಯಕ್ಕೆ ಮೊಟಕುಗೊಳಿಸಲು ಚೆನ್ನಾಗಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. ಸಿ + + (ಪೂರ್ವ-ಸಿ + + 11) ಈ ನಿರ್ವಾಹಕರು ಶೂನ್ಯಕ್ಕೆ ಮೊಟಕುಗೊಳ್ಳುತ್ತಾರೆಯೇ ಅಥವಾ "ಅನಂತಕ್ಕೆ ಮೊಟಕುಗೊಳ್ಳುತ್ತಾರೆಯೇ" ಎಂಬುದನ್ನು ನಿರ್ದಿಷ್ಟಪಡಿಸುವುದಿಲ್ಲ. - 3/2 ಯಾವಾಗಲೂ ಜಾವಾದಲ್ಲಿ-1 ಮತ್ತು ಸಿ + + 11 ಆಗಿರುತ್ತದೆ, ಆದರೆ ಸಿ + + 03 ಕಂಪೈಲರ್ ಪ್ಲಾಟ್ಫಾರ್ಮ್ ಅನ್ನು ಅವಲಂಬಿಸಿ-1 ಅಥವಾ-2 ಅನ್ನು ಹಿಂತಿರುಗಿಸಬಹುದು. C99 ವಿಭಾಗವನ್ನು ಜಾವಾ ಮತ್ತು C + + 11ರಂತೆಯೇ ವ್ಯಾಖ್ಯಾನಿಸುತ್ತದೆ. ಎರಡೂ ಭಾಷೆಗಳು (a ಮತ್ತು b ಪೂರ್ಣಾಂಕ ಪ್ರಕಾರಗಳಾಗಿರುವಲ್ಲಿ) (a/b) * b + (a% b) = = a ಮತ್ತು b (b! = 0) ಎಲ್ಲದಕ್ಕೂ ಖಾತ್ರಿ ನೀಡುತ್ತವೆ. ಸಿ + + 03 ಆವೃತ್ತಿಯು ಕೆಲವೊಮ್ಮೆ ವೇಗವಾಗಿರುತ್ತದೆ, ಏಕೆಂದರೆ ಪ್ರೊಸೆಸರ್ಗೆ ಸ್ಥಳೀಯವಾದ ಯಾವುದೇ ಟ್ರಂಕೇಷನ್ ಮೋಡ್ ಅನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಇದನ್ನು ಅನುಮತಿಸಲಾಗಿದೆ. ಪೂರ್ಣಾಂಕ ಪ್ರಕಾರಗಳ ಗಾತ್ರಗಳನ್ನು ಜಾವಾದಲ್ಲಿ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ (ಪೂರ್ಣಾಂಕವು 32-ಬಿಟ್ ಆಗಿದೆ, ಉದ್ದವು 64-ಬಿಟ್ ಆಗಿದೆ), ಆದರೆ ಸಿ + + ನಲ್ಲಿ ಪೂರ್ಣಾಂಕಗಳು ಮತ್ತು ಪಾಯಿಂಟರ್ಗಳ ಗಾತ್ರವು ಕಂಪೈಲರ್ ಆಗಿದೆ ಮತ್ತು ಅಪ್ಲಿಕೇಶನ್ ಬೈನರಿ ಇಂಟರ್ಫೇಸ್ (ಎ. ಬಿ. ಐ) ನಿರ್ದಿಷ್ಟ ನಿರ್ಬಂಧಗಳೊಳಗೆ ಅವಲಂಬಿತವಾಗಿದೆ. ಹೀಗಾಗಿ ಜಾವಾ ಪ್ರೋಗ್ರಾಂ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳಾದ್ಯಂತ ಸ್ಥಿರವಾದ ನಡವಳಿಕೆಯನ್ನು ಹೊಂದಿರುತ್ತದೆ, ಆದರೆ ಸಿ + + ಪ್ರೋಗ್ರಾಂಗೆ ಕೆಲವು ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗಳಿಗೆ ಹೊಂದಿಕೊಳ್ಳುವ ಅಗತ್ಯವಿರಬಹುದು, ಆದರೆ ಸ್ಥಳೀಯ ಪ್ಲಾಟ್ಫಾರ್ಮ್ಗೆ ಹೆಚ್ಚು ನೈಸರ್ಗಿಕ ಪೂರ್ಣಾಂಕ ಗಾತ್ರಗಳೊಂದಿಗೆ ವೇಗವಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸಬಹುದು. ಸಿ + + ಮತ್ತು ಜಾವಾವನ್ನು ಹೋಲಿಸುವ ಒಂದು ಉದಾಹರಣೆಯು ವಿಕಿಬುಕ್ಸ್ನಲ್ಲಿ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ. ಕಾರ್ಯಕ್ಷಮತೆ ಸಂಕಲಿಸಿದ ಜಾವಾ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ನಡೆಸುವುದರ ಜೊತೆಗೆ, ಜಾವಾ ಅಪ್ಲಿಕೇಶನ್ಗಳನ್ನು ನಡೆಸುವ ಕಂಪ್ಯೂಟರ್ಗಳು ಸಾಮಾನ್ಯವಾಗಿ ಜಾವಾ ವರ್ಚುವಲ್ ಯಂತ್ರವನ್ನು (ಜೆವಿಎಂ) ಸಹ ಚಲಾಯಿಸಬೇಕು, ಆದರೆ ಸಂಕಲಿಸಿದ ಸಿ + + ಪ್ರೋಗ್ರಾಂಗಳನ್ನು ಬಾಹ್ಯ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಲ್ಲದೆ ಚಲಾಯಿಸಬಹುದು. ಸಿ + + ನಂತಹ ಸ್ಥಿರವಾಗಿ ಸಂಕಲಿಸಲಾದ ಭಾಷೆಗಳು ಜಾವಾದ ಆರಂಭಿಕ ಆವೃತ್ತಿಗಳನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಮೀರಿಸಿವೆ. ಏಕೆಂದರೆ ಈ ಎರಡು ನಿಕಟವಾದ ಸಂಬಂಧಿತ ಭಾಷೆಗಳ ಪ್ರೋಗ್ರಾಂ ಹೇಳಿಕೆಗಳು ಸಿ + + ನೊಂದಿಗೆ ಕೆಲವು ಯಂತ್ರ ಸೂಚನೆಗಳನ್ನು ಕಂಪೈಲ್ ಮಾಡಬಹುದು, ಜೆವಿಎಂನಿಂದ ವ್ಯಾಖ್ಯಾನಿಸಿದಾಗ ಪ್ರತಿಯೊಂದೂ ಹಲವಾರು ಯಂತ್ರ ಸೂಚನೆಗಳನ್ನು ಒಳಗೊಂಡ ಹಲವಾರು ಬೈಟ್ ಕೋಡ್ಗಳಾಗಿ ಕಂಪೈಲ್ ಮಾಡಬಹುದು. ಉದಾಹರಣೆಗೆಃ ಕಾರ್ಯಕ್ಷಮತೆಯ ಆಪ್ಟಿಮೈಸೇಶನ್ ಬಹಳ ಸಂಕೀರ್ಣವಾದ ಸಮಸ್ಯೆಯಾಗಿರುವುದರಿಂದ, ಸಿ + + ಮತ್ತು ಜಾವಾ ನಡುವಿನ ಕಾರ್ಯಕ್ಷಮತೆಯ ವ್ಯತ್ಯಾಸವನ್ನು ಸಾಮಾನ್ಯ ಪರಿಭಾಷೆಯಲ್ಲಿ ಪ್ರಮಾಣೀಕರಿಸುವುದು ತುಂಬಾ ಕಷ್ಟ, ಮತ್ತು ಹೆಚ್ಚಿನ ಮಾನದಂಡಗಳು ವಿಶ್ವಾಸಾರ್ಹವಲ್ಲದ ಮತ್ತು ಪಕ್ಷಪಾತದಿಂದ ಕೂಡಿವೆ. ಭಾಷೆಗಳ ವಿಭಿನ್ನ ಸ್ವರೂಪಗಳನ್ನು ಗಮನಿಸಿದರೆ, ನಿರ್ಣಾಯಕ ಗುಣಾತ್ಮಕ ವ್ಯತ್ಯಾಸಗಳನ್ನು ಗುರುತಿಸುವುದು ಸಹ ಕಷ್ಟಕರವಾಗಿದೆ. ಸಂಕ್ಷಿಪ್ತವಾಗಿ ಹೇಳುವುದಾದರೆ, ಜಾವಾದಲ್ಲಿ ಹೊಂದಿಕೊಳ್ಳುವ ಉನ್ನತ ಮಟ್ಟದ ಅಮೂರ್ತತೆಗಳ ಮೇಲೆ ಹೆಚ್ಚು ಅವಲಂಬಿತವಾಗಿರುವುದರಿಂದ, ಅತ್ಯುತ್ತಮವಾಗಿಸಲು ಅಂತರ್ಗತ ಅಸಮರ್ಥತೆಗಳು ಮತ್ತು ಕಠಿಣ ಮಿತಿಗಳಿವೆ, ಆದಾಗ್ಯೂ, ಪ್ರಬಲವಾದ ಜೆಐಟಿ ಕಂಪೈಲರ್ನ ಬಳಕೆಯು (ಆಧುನಿಕ ಜೆವಿಎಂ ಅನುಷ್ಠಾನಗಳಲ್ಲಿರುವಂತೆ) ಕೆಲವು ಸಮಸ್ಯೆಗಳನ್ನು ತಗ್ಗಿಸಬಹುದು. ಯಾವುದೇ ಸಂದರ್ಭದಲ್ಲಿ, ಜಾವಾದ ಅಸಮರ್ಥತೆಗಳು ತುಂಬಾ ದೊಡ್ಡದಾಗಿದ್ದರೆ, ಸಂಗ್ರಹಿಸಿದ ಸಿ ಅಥವಾ ಸಿ + + ಕೋಡ್ ಅನ್ನು ಜಾವಾದಿಂದ ಜೆಎನ್ಐ ಮೂಲಕ ಕರೆಯಬಹುದು. ಜಾವಾ ಭಾಷೆಯಲ್ಲಿ ಅಂತರ್ಗತವಾಗಿರುವ ಕೆಲವು ಅಸಮರ್ಥತೆಗಳು ಮುಖ್ಯವಾಗಿ ಈ ಕೆಳಗಿನವುಗಳನ್ನು ಒಳಗೊಂಡಿವೆಃ ಎಲ್ಲಾ ವಸ್ತುಗಳನ್ನು ರಾಶಿಗಳ ಮೇಲೆ ವಿಂಗಡಿಸಲಾಗಿದೆ. 'ಬಂಪ್ ಅಲೋಕೇಷನ್' ಅನ್ನು ಬಳಸುವ ಆಧುನಿಕ ಜೆವಿಎಂಗಳಲ್ಲಿ ಹಂಚಿಕೆಯು ಅತ್ಯಂತ ವೇಗವಾಗಿದ್ದರೂ, ಇದು ಸ್ಟ್ಯಾಕ್ ಹಂಚಿಕೆಯಂತೆಯೇ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಕಸ ಸಂಗ್ರಹಕಾರರ ಆಹ್ವಾನದಿಂದಾಗಿ ಕಾರ್ಯಕ್ಷಮತೆಯ ಮೇಲೆ ನಕಾರಾತ್ಮಕ ಪರಿಣಾಮ ಬೀರಬಹುದು. ಆಧುನಿಕ ಜೆಐಟಿ ಕಂಪೈಲರ್ಗಳು ಒರಾಕಲ್ ಜೆಡಿಕೆ 6 ರಿಂದ ಸ್ಟ್ಯಾಕ್ ಮೇಲೆ ಕೆಲವು ವಸ್ತುಗಳನ್ನು ನಿಯೋಜಿಸಲು ಎಸ್ಕೇಪ್ ಅನಾಲಿಸಿಸ್ ಅಥವಾ ಎಸ್ಕೇಪ್ ಡಿಟೆಕ್ಷನ್ನೊಂದಿಗೆ ಈ ಸಮಸ್ಯೆಯನ್ನು ಸ್ವಲ್ಪ ಮಟ್ಟಿಗೆ ತಗ್ಗಿಸುತ್ತವೆ. ದಕ್ಷ ದತ್ತಸಂಚಯ ವ್ಯವಸ್ಥೆಗಳು ಮತ್ತು ಸಂದೇಶ ಕಳುಹಿಸುವ ಗ್ರಂಥಾಲಯಗಳಂತಹ ಕಾರ್ಯಕ್ಷಮತೆ-ನಿರ್ಣಾಯಕ ಯೋಜನೆಗಳು ಹಸ್ತಚಾಲಿತ ಸಂಪನ್ಮೂಲ ನಿರ್ವಹಣೆಗೆ ಪ್ರವೇಶವನ್ನು ಪಡೆಯಲು ಮತ್ತು ಸ್ಟ್ಯಾಕ್ ಹಂಚಿಕೆಯನ್ನು ಮಾಡಲು ಸಾಧ್ಯವಾಗಲು sun.misc.Unsafe ನಂತಹ ಆಂತರಿಕ ಅನಧಿಕೃತ API ಗಳನ್ನು ಬಳಸಬೇಕಾಗಿತ್ತು; ಹುಸಿ-ಪಾಯಿಂಟರ್ಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಕುಶಲತೆಯಿಂದ ನಿರ್ವಹಿಸುವುದು. ಪ್ರಮಾಣಿತ ಧಾರಕಗಳನ್ನು ಬಳಸುವುದಕ್ಕೂ ಸಹ ಸಾಕಷ್ಟು ರನ್-ಟೈಮ್ ಎರಕಹೊಯ್ದವು ಕಾರ್ಯಕ್ಷಮತೆಯ ದಂಡವನ್ನು ಪ್ರೇರೇಪಿಸುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಈ ಎರಕಹೊಯ್ದಗಳಲ್ಲಿ ಹೆಚ್ಚಿನವುಗಳನ್ನು ಜೆಐಟಿ ಕಂಪೈಲರ್ ಸ್ಥಿರವಾಗಿ ತೆಗೆದುಹಾಕುತ್ತದೆ. ಸುರಕ್ಷತಾ ಖಾತರಿಗಳು ರನ್-ಟೈಮ್ ವೆಚ್ಚದಲ್ಲಿ ಬರುತ್ತವೆ. ಉದಾಹರಣೆಗೆ, ಕಂಪೈಲರ್ ಕೋಡ್ನಲ್ಲಿ ಸೂಕ್ತ ಶ್ರೇಣಿಯ ಚೆಕ್ಗಳನ್ನು ಹಾಕಬೇಕಾಗುತ್ತದೆ. ಶ್ರೇಣಿ ಪರಿಶೀಲನೆಯೊಂದಿಗೆ ಪ್ರತಿ ಶ್ರೇಣಿಯ ಪ್ರವೇಶವನ್ನು ರಕ್ಷಿಸುವುದು ಪರಿಣಾಮಕಾರಿಯಲ್ಲ, ಆದ್ದರಿಂದ ಹೆಚ್ಚಿನ ಜೆಐಟಿ ಕಂಪೈಲರ್ಗಳು ಅವುಗಳನ್ನು ಸ್ಥಿರವಾಗಿ ಅಥವಾ ಒಳಗಿನ ಲೂಪ್ಗಳಿಂದ ಹೊರಹಾಕುವ ಮೂಲಕ ತೆಗೆದುಹಾಕಲು ಪ್ರಯತ್ನಿಸುತ್ತವೆ (ಆದಾಗ್ಯೂ ಶ್ರೇಣಿ-ಚೆಕ್ಗಳನ್ನು ಐಚ್ಛಿಕವಾಗಿ ಬಳಸಿದಾಗ ಸಿ + + ಗಾಗಿ ಹೆಚ್ಚಿನ ಸ್ಥಳೀಯ ಕಂಪೈಲರ್ಗಳು ಅದೇ ರೀತಿ ಮಾಡುತ್ತವೆ). ಕಡಿಮೆ ಮಟ್ಟದ ವಿವರಗಳಿಗೆ ಪ್ರವೇಶದ ಕೊರತೆಯು ಕಂಪೈಲರ್ಗೆ ಸಾಧ್ಯವಾಗದ ಪ್ರೋಗ್ರಾಂ ಅನ್ನು ಸುಧಾರಿಸುವುದರಿಂದ ಡೆವಲಪರ್ ಅನ್ನು ತಡೆಯುತ್ತದೆ. ಜಾವಾದಲ್ಲಿ ಎಲ್ಲಾ ಬಳಕೆದಾರ-ವ್ಯಾಖ್ಯಾನಿತ ಪ್ರಕಾರಗಳಿಗೆ ಉಲ್ಲೇಖ-ಶಬ್ದಾರ್ಥದ ಕಡ್ಡಾಯ ಬಳಕೆಯು ಹೆಚ್ಚಿನ ಪ್ರಮಾಣದ ಅನಗತ್ಯ ಮೆಮೊರಿ ನಿರ್ದೇಶನಗಳನ್ನು (ಅಥವಾ ಜಿಗಿತಗಳನ್ನು) ಪರಿಚಯಿಸಬಹುದು (ಜೆಐಟಿ ಕಂಪೈಲರ್ನಿಂದ ಹೊರಗುಳಿಯದ ಹೊರತು) ಇದು ಆಗಾಗ್ಗೆ ಕ್ಯಾಶ್ ಮಿಸ್ಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು (ಅಕಾ. ಕ್ಯಾಶ್ ಥ್ರಶಿಂಗ್). ಇದಲ್ಲದೆ, ಕ್ಯಾಶ್-ಆಪ್ಟಿಮೈಸೇಶನ್, ಸಾಮಾನ್ಯವಾಗಿ ಕ್ಯಾಶ್-ಅವೇರ್ ಅಥವಾ ಕ್ಯಾಶ್-ಆಬ್ಲಿವಿಯಸ್ ಡೇಟಾ ಸ್ಟ್ರಕ್ಚರ್ಗಳು ಮತ್ತು ಅಲ್ಗಾರಿದಮ್ಗಳ ಮೂಲಕ, ಕಾರ್ಯಕ್ಷಮತೆಯಲ್ಲಿ ಪ್ರಮಾಣದ ಸುಧಾರಣೆಗಳ ಆದೇಶಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು ಮತ್ತು ಸಮಯ-ಸಂಕೀರ್ಣತೆಯ ಅವನತಿಯನ್ನು ತಪ್ಪಿಸಬಹುದು, ಇದು ಅನೇಕ ಕ್ಯಾಶ್-ನಿರಾಶಾದಾಯಕ ಅಲ್ಗಾರಿದಮ್ಗಳ ಲಕ್ಷಣವಾಗಿದೆ ಮತ್ತು ಆದ್ದರಿಂದ ಇದು ಆಪ್ಟಿಮೈಸೇಶನ್ನ ಪ್ರಮುಖ ರೂಪಗಳಲ್ಲಿ ಒಂದಾಗಿದೆ; ಜಾವಾದಲ್ಲಿ ಕಡ್ಡಾಯವಾದಂತೆ ರೆಫರೆನ್ಸ್-ಸಿಮೆಂಟಿಕ್ಸ್, ಅಂತಹ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳನ್ನು ಆಚರಣೆಯಲ್ಲಿ ಅರಿತುಕೊಳ್ಳಲು ಅಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ (ಪ್ರೋಗ್ರಾಮರ್ ಅಥವಾ ಜೆಐಟಿ ಕಂಪೈಲರ್). ಕಸ ಸಂಗ್ರಹಣೆ, ಸ್ವಯಂಚಾಲಿತ ಮೆಮೊರಿ ನಿರ್ವಹಣೆಯ ಈ ರೂಪವು ಮೆಮೊರಿ ಓವರ್ಹೆಡ್ ಅನ್ನು ಪರಿಚಯಿಸುತ್ತದೆ. ಆದಾಗ್ಯೂ, ಜಾವಾದ ವಿನ್ಯಾಸಕ್ಕೆ ಹಲವಾರು ಪ್ರಯೋಜನಗಳಿವೆ, ಕೆಲವು ಅರಿತುಕೊಂಡವು, ಕೆಲವು ಕೇವಲ ಸಿದ್ಧಾಂತೀಕರಿಸಿದವುಃ ಜಾವಾ ಕಸ ಸಂಗ್ರಹವು ಮೆಮೊರಿ ಹಂಚಿಕೆಗಾಗಿ ಮ್ಯಾಲೋಕ್/ನ್ಯೂ ಸಾಮಾನ್ಯ ಬಳಕೆಗಿಂತ ಉತ್ತಮ ಕ್ಯಾಶ್ ಸುಸಂಬದ್ಧತೆಯನ್ನು ಹೊಂದಿರಬಹುದು. ಆದಾಗ್ಯೂ, ಎರಡೂ ಹಂಚಿಕೆದಾರರು ರಾಶಿಯನ್ನು ಸಮಾನವಾಗಿ ವಿಭಜಿಸುತ್ತಾರೆ ಮತ್ತು ಉತ್ತಮ ಕ್ಯಾಶ್ ಸ್ಥಳವನ್ನು ಪ್ರದರ್ಶಿಸುವುದಿಲ್ಲ ಎಂಬ ವಾದಗಳು ಅಸ್ತಿತ್ವದಲ್ಲಿವೆ. ಆದಾಗ್ಯೂ, ಸಿ + + ನಲ್ಲಿ, ರಾಶಿಯ ಮೇಲೆ ಒಂದೇ ವಸ್ತುಗಳ ಹಂಚಿಕೆಯು ಅಪರೂಪವಾಗಿದೆ, ಮತ್ತು ದೊಡ್ಡ ಪ್ರಮಾಣದಲ್ಲಿ ಒಂದೇ ವಸ್ತುಗಳನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಎಸ್ಟಿಎಲ್ ಧಾರಕದ ಮೂಲಕ ಮತ್ತು/ಅಥವಾ ಸಣ್ಣ ವಸ್ತುವಿನ ಹಂಚಿಕೆಯ ಮೂಲಕ ಬ್ಲಾಕ್ಗಳಲ್ಲಿ ಹಂಚಲಾಗುತ್ತದೆ. ರನ್-ಟೈಮ್ ಸಂಕಲನವು ಕೋಡ್ ಅನ್ನು ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಸುಧಾರಿಸಲು ಕೋಡ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತಿರುವ ವೇದಿಕೆಯ ಬಗ್ಗೆ ಮಾಹಿತಿಯನ್ನು ಬಳಸಬಹುದಾಗಿದೆ. ಆದಾಗ್ಯೂ, ಹೆಚ್ಚಿನ ಅತ್ಯಾಧುನಿಕ ಸ್ಥಳೀಯ (ಸಿ, ಸಿ + +, ಇತ್ಯಾದಿ). ಕಂಪೈಲರ್ಗಳು ಕೊಟ್ಟಿರುವ ವ್ಯವಸ್ಥೆಯ ಸಂಪೂರ್ಣ ಕಂಪ್ಯೂಟೇಶನಲ್ ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಬಳಸಿಕೊಳ್ಳಲು ಅನೇಕ ಕೋಡ್ ಮಾರ್ಗಗಳನ್ನು ಉತ್ಪಾದಿಸುತ್ತವೆ. ಅಲ್ಲದೆ, ಬಹು-ವೇದಿಕೆ ಜೆವಿಎಂ ವಿತರಣೆಗಳಿಗಿಂತ ಸ್ಥಳೀಯ ಕಂಪೈಲರ್ಗಳು ವಾಸ್ತುಶಿಲ್ಪ-ನಿರ್ದಿಷ್ಟ ಆಪ್ಟಿಮೈಸಿಂಗ್ ಮತ್ತು ಸೂಚನಾ ಸೆಟ್ಗಳನ್ನು ಉತ್ತಮವಾಗಿ ಬಳಸಿಕೊಳ್ಳಬಹುದು ಎಂದು ವಿಲೋಮ ವಾದವನ್ನು ಮಾಡಬಹುದು. ರನ್-ಟೈಮ್ ಕಂಪೈಲಿಂಗ್ ಸ್ಥಿರ ಕಂಪೈಲರ್ಗೆ ಸಾಧ್ಯವಾದಷ್ಟು ಹೆಚ್ಚು ಆಕ್ರಮಣಕಾರಿ ವರ್ಚುವಲ್ ಫಂಕ್ಷನ್ ಇನ್ಲೈನಿಂಗ್ಗೆ ಅವಕಾಶ ನೀಡುತ್ತದೆ, ಏಕೆಂದರೆ ಜೆಐಟಿ ಕಂಪೈಲರ್ ವರ್ಚುವಲ್ ಕರೆಗಳ ಎಲ್ಲಾ ಸಂಭವನೀಯ ಗುರಿಗಳ ಬಗ್ಗೆ ಹೆಚ್ಚಿನ ಮಾಹಿತಿಯನ್ನು ಹೊಂದಿದೆ, ಅವು ವಿಭಿನ್ನ ಕ್ರಿಯಾತ್ಮಕವಾಗಿ ಲೋಡ್ ಮಾಡಲಾದ ಮಾಡ್ಯೂಲ್ಗಳಲ್ಲಿದೆಯಾದರೂ ಸಹ. ಪ್ರಸ್ತುತ ಲಭ್ಯವಿರುವ ಜೆವಿಎಂ ಅನುಷ್ಠಾನಗಳಿಗೆ ಹೆಚ್ಚಿನ ಮೊನೊಮಾರ್ಫಿಕ್, ಹೆಚ್ಚಾಗಿ ಮೊನೊಮಾರ್ಫಿಕ್ ಮತ್ತು ಡೈಮಾರ್ಫಿಕ್ ಕರೆಗಳನ್ನು ಇನ್ಲೈನ್ ಮಾಡುವಲ್ಲಿ ಯಾವುದೇ ಸಮಸ್ಯೆ ಇಲ್ಲ, ಮತ್ತು ಜಾವಾ 7 ರಲ್ಲಿ ಸೇರಿಸಲಾದ ಇತ್ತೀಚಿನ ಇನ್ವೋಕ್ ಡೈನಾಮಿಕ್ ವರ್ಧನೆಗಳಿಗೆ ಧನ್ಯವಾದಗಳು, ಮೆಗಾಮಾರ್ಫಿಕ್ ಕರೆಗಳನ್ನು ಇನ್ಲೈನ್ ಮಾಡಲು ಸಂಶೋಧನೆ ಪ್ರಗತಿಯಲ್ಲಿದೆ. ಇನ್ಲೈನಿಂಗ್ ಲೂಪ್ ವೆಕ್ಟರೈಸೇಶನ್ ಅಥವಾ ಲೂಪ್ ಅನ್ರೋಲಿಂಗ್ ನಂತಹ ಹೆಚ್ಚಿನ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳಿಗೆ ಅವಕಾಶ ನೀಡುತ್ತದೆ, ಇದು ಒಟ್ಟಾರೆ ಕಾರ್ಯಕ್ಷಮತೆಯ ಹೆಚ್ಚಳಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ. ಜಾವಾದಲ್ಲಿ, ಥ್ರೆಡ್ ಸಿಂಕ್ರೊನೈಸಿಂಗ್ ಅನ್ನು ಭಾಷೆಯಲ್ಲಿ ನಿರ್ಮಿಸಲಾಗಿದೆ, ಆದ್ದರಿಂದ ಜೆಐಟಿ ಕಂಪೈಲರ್, ಎಸ್ಕೇಪ್ ವಿಶ್ಲೇಷಣೆಯ ಮೂಲಕ, ಲಾಕ್ಗಳನ್ನು ಎಲೈಡ್ ಮಾಡಬಹುದು, ನಿಷ್ಕಪಟ ಬಹು-ಥ್ರೆಡ್ ಕೋಡ್ನ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ಗಮನಾರ್ಹವಾಗಿ ಸುಧಾರಿಸುತ್ತದೆ. ಅಲ್ಲದೆ, ಸಿ + + ನಲ್ಲಿ ಕೆಲವು ಕಾರ್ಯಕ್ಷಮತೆಯ ಸಮಸ್ಯೆಗಳು ಸಂಭವಿಸುತ್ತವೆಃ ಯಾವುದೇ ವಿಳಾಸವನ್ನು ಸೂಚಿಸಲು ಪಾಯಿಂಟರ್ಗಳಿಗೆ ಅವಕಾಶ ನೀಡುವುದು ಪಾಯಿಂಟರ್ ಅಲಿಯಾಸಿಂಗ್ ಸಾಧ್ಯತೆಯ ಕಾರಣದಿಂದಾಗಿ ಆಪ್ಟಿಮೈಜ್ ಮಾಡುವುದನ್ನು ಕಷ್ಟಕರವಾಗಿಸುತ್ತದೆ. ಸಿ + + ನಲ್ಲಿನ ಒಂದೇ ವರ್ಗದ ಟೆಂಪ್ಲೇಟ್ನ ವಿವಿಧ ಕ್ಷಣಗಳಿಂದ ಉತ್ಪತ್ತಿಯಾಗುವ ಕೋಡ್ ಅನ್ನು ಹಂಚಿಕೊಳ್ಳದ ಕಾರಣ (ಜಾವಾದಲ್ಲಿ ಟೈಪ್-ಅಳಿಸಲಾದ ಜೆನೆರಿಕ್ಗಳಂತೆ), ಟೆಂಪ್ಲೇಟ್ಗಳ ಅತಿಯಾದ ಬಳಕೆಯು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಕೋಡ್ ಗಾತ್ರದ (ಕೋಡ್ ಬ್ಲೋಟ್) ಗಮನಾರ್ಹ ಹೆಚ್ಚಳಕ್ಕೆ ಕಾರಣವಾಗಬಹುದು. ಆದಾಗ್ಯೂ, ಫಂಕ್ಷನ್ ಟೆಂಪ್ಲೆಟ್ಗಳು ಆಕ್ರಮಣಕಾರಿಯಾಗಿ ಇನ್ಲೈನ್ ಆಗಿರುವುದರಿಂದ, ಅವು ಕೆಲವೊಮ್ಮೆ ಕೋಡ್ ಗಾತ್ರವನ್ನು ಕಡಿಮೆ ಮಾಡಬಹುದು, ಆದರೆ ಹೆಚ್ಚು ಮುಖ್ಯವಾಗಿ ಕಂಪೈಲರ್ನಿಂದ ಹೆಚ್ಚು ಆಕ್ರಮಣಕಾರಿ ಸ್ಥಿರ ವಿಶ್ಲೇಷಣೆ ಮತ್ತು ಕೋಡ್ ಆಪ್ಟಿಮೈಜಿಂಗ್ಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತದೆ, ಹೆಚ್ಚಾಗಿ ಅವುಗಳನ್ನು ಟೆಂಪ್ಲೇಟೆಡ್ ಅಲ್ಲದ ಕೋಡ್ಗಿಂತ ಹೆಚ್ಚು ಪರಿಣಾಮಕಾರಿಯಾಗಿಸುತ್ತದೆ. ಇದಕ್ಕೆ ವ್ಯತಿರಿಕ್ತವಾಗಿ, ಜಾವಾ ಜೆನೆರಿಕ್ಗಳು ಅಗತ್ಯವಾಗಿ ಜೆನೆರಿಸೈಸ್ಡ್ ಅಲ್ಲದ ಕೋಡ್ಗಿಂತ ಕಡಿಮೆ ಪರಿಣಾಮಕಾರಿಯಾಗಿರುತ್ತವೆ. ಏಕೆಂದರೆ ಸಾಂಪ್ರದಾಯಿಕ ಸಿ + + ಕಂಪೈಲರ್ನಲ್ಲಿ, ಸಿ + + ನಲ್ಲಿ ಕೋಡ್ ಅನ್ನು ಉತ್ಪಾದಿಸಿದ ನಂತರ ಮತ್ತು ಆಪ್ಟಿಮೈಸ್ ಮಾಡಿದ ನಂತರ ಡೈನಾಮಿಕ್ ಲಿಂಕಿಂಗ್ ಅನ್ನು ನಡೆಸಲಾಗುತ್ತದೆ, ವಿಭಿನ್ನ ಡೈನಾಮಿಕ್ ಮಾಡ್ಯೂಲ್ಗಳನ್ನು ವ್ಯಾಪಿಸಿರುವ ಫಂಕ್ಷನ್ ಕರೆಗಳನ್ನು ಇನ್ಲೈನ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಆದಾಗ್ಯೂ, ಎಂ. ಎಸ್. ವಿ. ಸಿ ಮತ್ತು ಕ್ಲಾಂಗ್ + ಎಲ್. ಎಲ್. ವಿ. ಎಂ ನಂತಹ ಆಧುನಿಕ ಸಿ + + ಕಂಪೈಲರ್ಗಳು ಲಿಂಕ್-ಟೈಮ್-ಕೋಡ್-ಜನರೇಷನ್ ಆಯ್ಕೆಗಳನ್ನು ನೀಡುತ್ತವೆ, ಇದು ಮಾಡ್ಯೂಲ್ಗಳನ್ನು ಮಧ್ಯಂತರ ಸ್ವರೂಪಗಳಿಗೆ ಸಂಕಲಿಸಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ, ಇದು ಅಂತಿಮ ಲಿಂಕ್ ಹಂತದಲ್ಲಿ ಇನ್ಲೈನ್ ಮಾಡಲು ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. ಸಿ + + ಭಾಷೆಯನ್ನು ಐಎಸ್ಒ/ಐಇಸಿ ಜೆಟಿಸಿ1/ಎಸ್ಸಿ22/ಡಬ್ಲ್ಯುಜಿ21 ಸಮಿತಿಯು ಪ್ರಕಟಿಸಿರುವ ಐಎಸ್ಒ/ಐಇಸಿ 14882 ಎಂಬ ಐಎಸ್ಒ ಮಾನದಂಡದಿಂದ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. ಸಿ + + 17 ರ ಇತ್ತೀಚಿನ, ಪ್ರಮಾಣೀಕರಣದ ನಂತರದ ಕರಡು ಸಹ ಲಭ್ಯವಿದೆ. ಸಿ + + ಭಾಷೆಯು ಸಿ + + ಸ್ಟ್ಯಾಂಡರ್ಡ್ಸ್ ಕಮಿಟಿ ಎಂಬ ಮುಕ್ತ ಸ್ಟೀರಿಂಗ್ ಸಮಿತಿಯ ಮೂಲಕ ವಿಕಸನಗೊಳ್ಳುತ್ತದೆ. ಈ ಸಮಿತಿಯು ಸಿ + + ಜಾರ್ನೆ ಸ್ಟ್ರೌಸ್ಟ್ರಪ್ನ ಸೃಷ್ಟಿಕರ್ತ, ಸಂಚಾಲಕ ಹರ್ಬ್ ಸಟ್ಟರ್ ಮತ್ತು ಕೈಗಾರಿಕೆಗಳು ಮತ್ತು ಬಳಕೆದಾರರ ಗುಂಪುಗಳ (ಅಂದರೆ, ಪಾಲುದಾರರು) ಅನೇಕ ಪ್ರತಿನಿಧಿಗಳು ಸೇರಿದಂತೆ ಇತರ ಪ್ರಮುಖ ವ್ಯಕ್ತಿಗಳನ್ನು ಒಳಗೊಂಡಿದೆ. ಮುಕ್ತ ಸಮಿತಿಯಾಗಿರುವುದರಿಂದ, ಪ್ರಮಾಣಿತ ಮತ್ತು ತಾಂತ್ರಿಕ ವಿಶೇಷಣಗಳ ಮುಂಬರುವ ಬಿಡುಗಡೆಗಳಿಗೆ ಯಾರಾದರೂ ಸೇರಲು, ಭಾಗವಹಿಸಲು ಮತ್ತು ಕೊಡುಗೆ ನೀಡಲು ಮುಕ್ತರಾಗಿದ್ದಾರೆ. ಸಮಿತಿಯು ಈಗ ಪ್ರತಿ ಕೆಲವು ವರ್ಷಗಳಿಗೊಮ್ಮೆ ಹೊಸ ಮಾನದಂಡವನ್ನು ಬಿಡುಗಡೆ ಮಾಡುವ ಗುರಿಯನ್ನು ಹೊಂದಿದೆ, ಆದಾಗ್ಯೂ ಹಿಂದೆ ಕಟ್ಟುನಿಟ್ಟಾದ ಪರಿಶೀಲನಾ ಪ್ರಕ್ರಿಯೆಗಳು ಮತ್ತು ಚರ್ಚೆಗಳು ಹೊಸ ಮಾನದಂಡಗಳ ಪ್ರಕಟಣೆಯ (1998,2003, ಮತ್ತು 2011) ನಡುವೆ ಹೆಚ್ಚು ವಿಳಂಬವನ್ನು ಉಂಟುಮಾಡಿವೆ. ಜಾವಾ ಭಾಷೆಯನ್ನು ಒರಾಕಲ್ ಪ್ರಕಟಿಸಿದ ಜಾವಾ ಲ್ಯಾಂಗ್ವೇಜ್ ಸ್ಪೆಸಿಫಿಕೇಷನ್ ಎಂಬ ಪುಸ್ತಕದಿಂದ ವ್ಯಾಖ್ಯಾನಿಸಲಾಗಿದೆ. ಜಾವಾ ಭಾಷೆಯು ಜಾವಾ ಸಮುದಾಯ ಪ್ರಕ್ರಿಯೆ ಎಂಬ ಪ್ರಕ್ರಿಯೆಯ ಮೂಲಕ ನಿರಂತರವಾಗಿ ವಿಕಸನಗೊಳ್ಳುತ್ತದೆ, ಮತ್ತು ವಿಶ್ವದ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಸಮುದಾಯವನ್ನು ಜನರು ಮತ್ತು ಸಂಸ್ಥೆಗಳ ಗುಂಪು ಪ್ರತಿನಿಧಿಸುತ್ತದೆ-ಜಾವಾ ಸಮುದಾಯದ ಸದಸ್ಯರು-ಇದು ಸಾರ್ವಜನಿಕ ವಿನಂತಿಗಳನ್ನು ಕಳುಹಿಸುವ ಮೂಲಕ ಭಾಷೆಯ ವರ್ಧನೆಯಲ್ಲಿ ಸಕ್ರಿಯವಾಗಿ ತೊಡಗಿಸಿಕೊಂಡಿದೆ-ಜಾವಾ ನಿರ್ದಿಷ್ಟತೆಯ ವಿನಂತಿಗಳು-ಇದು ಭಾಷೆಗೆ ಸಂಯೋಜಿಸುವ ಮೊದಲು ಔಪಚಾರಿಕ ಮತ್ತು ಸಾರ್ವಜನಿಕ ವಿಮರ್ಶೆಗಳನ್ನು ರವಾನಿಸಬೇಕು. ಜಾವಾಗೆ ದೃಢವಾದ ಮಾನದಂಡದ ಕೊರತೆ ಮತ್ತು ಅದರ ವಿಶೇಷಣಗಳ ಸ್ವಲ್ಪ ಹೆಚ್ಚು ಅಸ್ಥಿರ ಸ್ವರೂಪವು ಹೊಸ ಭಾಷೆ ಮತ್ತು ಗ್ರಂಥಾಲಯದ ವೈಶಿಷ್ಟ್ಯಗಳ ಸೇರ್ಪಡೆಯಲ್ಲಿ ಹೆಚ್ಚು ಸ್ಥಿರತೆ ಮತ್ತು ಸಂಪ್ರದಾಯವಾದವನ್ನು ಬಯಸುವ ಪಾಲುದಾರರಿಂದ ನಿರಂತರ ಟೀಕೆಗೆ ಕಾರಣವಾಗಿದೆ. ಇದಕ್ಕೆ ವ್ಯತಿರಿಕ್ತವಾಗಿ, ಸಿ + + ಸಮಿತಿಯು ನಿರಂತರ ಟೀಕೆಗಳನ್ನು ಸಹ ಪಡೆಯುತ್ತದೆ, ಇದಕ್ಕೆ ವಿರುದ್ಧವಾದ ಕಾರಣಕ್ಕಾಗಿ, ಅಂದರೆ, ತುಂಬಾ ಕಟ್ಟುನಿಟ್ಟಾದ ಮತ್ತು ಸಂಪ್ರದಾಯವಾದಿಯಾಗಿರುವುದು ಮತ್ತು ಹೊಸ ಆವೃತ್ತಿಗಳನ್ನು ಬಿಡುಗಡೆ ಮಾಡಲು ಹೆಚ್ಚು ಸಮಯ ತೆಗೆದುಕೊಳ್ಳುವುದು. ಟ್ರೇಡ್ಮಾರ್ಕ್ "ಸಿ + +" ಯಾವುದೇ ಕಂಪನಿ ಅಥವಾ ಸಂಸ್ಥೆಯ ಟ್ರೇಡ್ಮಾರ್ಕ್ ಅಲ್ಲ ಮತ್ತು ಯಾವುದೇ ವ್ಯಕ್ತಿಯ ಒಡೆತನದಲ್ಲಿಲ್ಲ. "ಜಾವಾ" ಎಂಬುದು ಒರಾಕಲ್ ಕಾರ್ಪೊರೇಶನ್ನ ಟ್ರೇಡ್ಮಾರ್ಕ್ ಆಗಿದೆ. ಉಲ್ಲೇಖಗಳು ಬಾಹ್ಯ ಕೊಂಡಿಗಳು ಸಿ + + ಮತ್ತು ಜಾವಾ ಆಬ್ಜೆಕ್ಟ್ ಓರಿಯೆಂಟೆಡ್ ಮೆಮೊರಿ ಮ್ಯಾನೇಜ್ಮೆಂಟ್ ನಡುವಿನ ವ್ಯತ್ಯಾಸಃ ಜಾವಾ ವರ್ಸಸ್ ಸಿ + + ಅಧ್ಯಾಯ 2: ಸಿ ಯಿಂದ ಜಾವಾ ಹೇಗೆ ಭಿನ್ನವಾಗಿದೆ, ಡೇವಿಡ್ ಫ್ಲನಗನ್ ಜಾವಾ ವರ್ಸಸ್ ಸಿ + + ಸಂಪನ್ಮೂಲ ನಿರ್ವಹಣಾ ಹೋಲಿಕೆ-ಜಾವಾ ವರ್ಸಸ್ ಸಿ ಕಾರ್ಯಕ್ಷಮತೆಯ ಉದಾಹರಣೆಗಳೊಂದಿಗೆ ಸಮಗ್ರ ಕಾಗದ. ಮತ್ತೊಮ್ಮೆ.-ಜಾವಾ ಮತ್ತು ಸಿ/ಸಿ + + ಹೈಪರ್ಪೋಲಿ ನಡುವಿನ ಕಾರ್ಯಕ್ಷಮತೆಯ ವ್ಯತ್ಯಾಸಗಳ ಆಳವಾದ ಚರ್ಚೆ-ಜಾವಾ ಮತ್ತು ಸಿ + + ಹೋಲಿಕೆ ಜಾವಾ ಮತ್ತು ಸಿ + + ಜಾವಾ (ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಭಾಷೆ) ಸಿ + +