
Платформа Java як операційне середовище
13.1 Основні властивості платформи Java
Прийнято вважати, що технологія Java зародилася ще в 1980 р. Вона була створена групою розробників фірми Sun Microsystems, ініціаторами цього проекта були Патрік Нотогн і Джеймс Гослінг. Початьково цей проект ( тоді він називався Оak) призначався для керування підключення до мережі побутових засобів з встроєними обчислюваними можливостями. У 1995 році проект дістав свою нинішню назву і бувпереорієнтований на програмування в Internet. Надаліможливості і функції мови і платформи Java істотнорозширилися. На сьогодні можна назвати чотири типипрограм, що створюються у рамках технології Java :
додатки - програми в звичайному розумінні, що виконуються,проте лише в середовищі платформи Java;
аплети - програми, що виконуються в середовищі Web-броузера, що підтримує платформу Java(Sun HotJava,Netscape Communicator, Microsoft Internet Explorer), такіпрограми можуть передаватися по Internet і виконуватисяна комп'ютері клієнта;
сервлети і корпоративні біни - Java- програми,серверні компоненти розподілених застосувань;
програми(поки для них немає загальної назви), щовиконуються в середовищах продуктів проміжногопрограмного забезпечення, наприклад, програми длясервера додатків Lotus Domino, процедури, щозберігаються, для СУБД IBM DB2 і Oracle і тому подібне.
Технологія Java складається з двох основнихкомпонентів: - мови програмування Java [19]; - платформи Java [25].
Мова програмування Java є універсальною об'єктно-орієнтованою мовою програмування, синтаксис якої дуже схожий на синтаксис C++ . Відмінності Java від С++ полягають в тому, що, по-перше, Java набагато більше послідовно утілює парадигму об'єктно-орієнтованогопрограмування, по-друге, в Java відсутні деякі властивості C++, що роблять останній важким для розуміння і легким для помилок(наприклад, арифметика покажчиків), по-третє, в Java введені деякі додаткові властивості, що розширюють її функціональність(наприклад, нитки ісинхронізація). Сама по собі мова Java була б не така цікава(в усякому разі, для нас), коли б не платформа Java. Платформа Java або середовище виконання Java(JRE - java runtime environment) - це набір програмних засобів, що забезпечують виконання Java-програми на будь-якій апаратній платформі і всередовищі будь-якої ОС. У JRE входить віртуальна машина Java і набір стандартних бібліотек Java. Девіз технології Java - "написано одного разу - працює скрізь". Sun Microsystems декларує великийнабір переваг мови і платформи Java, але, безумовно,ключовою гідністю Java є переносимість.
Переносимість в Java досягається за рахунок того, що Java-програма компілюється не безпосередньо в якійсь конктретній ЕОМ, а в так званий байт-код Java – команди деякої абстрактної машини, яка називається віртуальною машиною Java (Java VM), як показано на рисунку 13.1. Кінцевим результатом - виконавчим модулем файл-клас являється – програма в байт-коді Java. На цільовій платформі (на тій машині, на якій програма виконується) повинна бути запущена програмна Java VM, яка емулює ЕОМ, здатну виконувати команди байт-кода Java . Сама Java VM платформо-залежна, тобто призначена для виконання на конкретній платформі і в конкретній операційній системі. Java VM читає команди байт-кода Java і моделює їх виконання на тій апаратній платформі і в тому операційному середовищі, в якому вона працює. При цьому вона використовує бібліотеки Java, також платформно-залежні. Стержнем технології є специфікації байт-кода Java, файла і класа Java VM. Компілятори Java можуть бути створені ( і створюються) різними розробниками, але всі генеруючі чи виконуючі модулі повинні відповідати специфікації байт-кода Java. Більш того, існують і компілятори інших мов програмування , які генерують байт- код Java. Також різними розробниками можуть розроблюватися ( і розробляються) Java VM, але всі Java VM повинні виконувати стандартний байт-код Java.
Отже, Java-програма виконується в режимі інтерпретації. Хоча фірма Sun Microsystems декларує ефективність в чисті основних властивостей Java-програм , що стосується швидкодії, це твердження м’яко кажучи сумнівне. Інтерпретована програма в принципі не може виконуватись так бистро, як програма в цільових кодах. Ефективність роботи Java-програм залежить від ефективності роботи Java VM, и Java VM різних розробників значно відрізняються по цьому показнику ( лідером являється фірма ІВМ). В складі розробки засобів Java є також сучасні (just-in-time) компілятори (JIT), які транслюють байт-код Java в код цільової платформи, результатом чого являється виконуваний модуль в форматі цільової програми і системи. Такий модуль виконується без участі Java VM і його виконання проходить ефективніше, чим виконання інтерпретованого байт-кода , але це вже виходить за межі Java.
Таким чином, незалежність Java- програм від конкретноїапаратної платформи і ОС досягається за рахунок того,що Java платформа є додатковим "прошарком" міждодатком і ОС і замість специфічних системних викликівAPI конкретної ОС додаток використовує API JRE або базові конструкції мови.
Нище ми розглянемо деякі особливості віртуального «процесора» Java VM, як такої платформи, на якій виконуються Java-програми.