нність мови Java від С або С + + полягає в тому, що архітектура Java не дозволяє випадково або навмисно пошкодити пам'ять програми. Замість арифметики покажчиків Java використовує повноцінні об'єкти для масивів і рядків, що дозволяє контролювати індекси доступу до них під час виконання. Крім того, неможливі перетворення між цілими числами і покажчиками.
При порівнянні таких мов програмування як C # та Java ми можемо сказати, що обидві мови використовують як синтаксичної основи мова програмування C. Зокрема, від нього успадковані без змін:
- позначення початку / кінця блоку коду фігурними дужками;
- позначення, асоціативність і пріоритет більшості вбудованих операцій (привласнення, арифметичні, логічні, побітові операції, операції інкремента / декремента, тернарного умовна операція «?:»);
- синтаксис опису та використання змінних і функцій (порядок «тип ім'я», використання модифікаторів, обов'язковість дужок для функцій, опис формальних параметрів);
- синтаксис всіх основних конструкцій: умовного оператора, циклів, оператора множинного вибору;
- відсутність процедур (їх замінюють функції типу void);
- найменування вбудованих елементарних типів (крім bool, в Java цей тип називається boolean);
- використання крапки з комою і т.д.
Все це призводить до того, що програми на Java і C # зовні на перший погляд виглядають надзвичайно схоже на C-програми. В обох мовах зроблені однотипні розширення та доповнення стосовно C (або C + +), зокрема, розширено алфавіт і введений власний синтаксис, що підтримує пакети, імпорт описів, визначення одиниць компіляції.
1.2 Віртуальна машина Java
Програма, написана на одній з мов високого рівня, до яких належить і мова Java, так званий вихідний модуль, не може бути відразу ж виконана. Її спочатку треба відкомпілювати, тобто перевести в послідовність машинних команд - об'єктний модуль. Але і він, як правило, не може бути відразу, же виконано: об'єктний модуль треба ще скомпонувати з бібліотеками використаних в модулі функцій і дозволити перехресні посилання між секціями об'єктного модуля, отримавши в результаті завантажувальний модуль - повністю готову до виконання програму.
Вихідний модуль, написаний на Java, не може уникнути цих процедур, але тут проявляється головна особливість технології Java - програма компілюється відразу в машинні команди, але не команди якогось конкретного процесора, а в команди так званої віртуальної машини Java (JVM, JavaVirtualMachine). Віртуальна машина Java - це сукупність команд разом з системою їх виконання. Віртуальна машина Java повністю стекова, так що не потрібно складна адресація комірок пам'яті і велика кількість регістрів. Тому команди JVM короткі, більшість з них має довжину 1 байт, від чого команди JVM називають байт-кодами (bytecodes), хоча є команди довжиною 2 і 3 байти. Згідно статистичним дослідженням середня довжина команди складає 1,8 байта. Повний опис команд і всієї архітектури JVM міститься в специфікації віртуальної машини Java (VMS, VirtualMachineSpecification).
Інша особливість Java - всі стандартні функції, що викликаються в програмі, підключаються до неї тільки на...