Дипломная работа: Створення навчальної програми по вивченню іноземної мови
Вимоги до переносимості примусили відмовитися від традиційного способу створення і доставки бінарних файлів, що містять машинні коди і, отже, прив'язаних до певної платформи. Сьогодні, щоб вижити в цих джунглях архітектури процесорів, операційних систем і графічних оболонок, програма повинна бути нейтральною до архітектури і динамічно настроюватись.
Створена система розробки Java задовольняє всім цим вимогам:
- проста, тому може бути використана широким колом розробників;
- об'єктно орієнтована, що відповідає сучасному погляду на програмування;
- підтримує багатопотоковість, що дозволяє виконувати декілька завдань одночасно;
- інтерпретіруєма, що забезпечує переносимість і покращує динамічні властивості.
Розглянемо кожну з цих властивостей окремо.
Система Java створена на основі простої мови програмування, техніка використання якої близька до загальноприйнятої і вивчення якої не вимагає значних зусиль.
Java як мова програмування є об'єктно-орієнтованою з моменту створення. Крім того, програміст із самого початку забезпечується набором стандартних бібліотек, що забезпечують функціональність від стандартного введення/виведення і мережевих протоколів до графічних призначених для користувача інтерфейсів. Ці бібліотеки легко можуть бути розширені.
Не дивлячись на те, що мова С++ була знехтувана, синтаксис мови Java максимально наближений до синтаксису С++. Це робить мову знайомою широкому колу програмістів. В той же час з мови було видалено багато властивостей, які роблять С++ зайве складною для користування, не будучи абсолютно необхідними. В результаті мова Java вийшла простішою і більш органічною, ніж С++.
Java істотно полегшує створення надійного програмного забезпечення. Окрім вичерпної перевірки на етапі компіляції, система передбачається аналіз на етапі виконання. Сама мова спроектована так, щоб виробляти у програміста звичку писати правильно.
Модель роботи з пам'яттю, в якій виключено використання покажчиків, робить неможливим цілий клас помилок, характерних для С і С++.
Через те, що Java призначена для роботи в розподіленому середовищі, безпека стає надзвичайно важливою проблемою. Вимоги безпеки визначають багато рис як мови, так і реалізації всієї системи.
Компілятор Java проводить байт-коди, тобто модулі додатку мають не-залежний формат, який може бути проінтерпретований на безлічі різноманітних платформ. Це вже не початкові тексти, але ще не платформно-залежні машинні коди.
Наступний крок — “заморожування” стандарту на формат основних вбудованих типів даних. Програма, створена на одній платформі, працює на всіх інших.
Цей стандарт фіксований в документі, Java Virtual Machine. Стандарт може бути реалізований на будь-якій апаратно-програмній платформі, що підтримує багатопотоковість.
Схема роботи системи і набір байт-кодів віртуальної машини Java такі, що дозволяють досягти високої продуктивності на етапі виконання програми:
- аналіз кодів на дотримання правил безпеки проводиться один раз до запуску кодів на виконання, у момент виконання таких перевірок вже не потрібно, і коди виконуються максимально ефективно;
- робота з базовими типами максимально ефективна, для операцій з ними зарезервовані спеціальні байт-коди;
- методи в класах не обов'язково зв'язуються динамічно;
- автоматичний збирач сміття працює окремим фоновим потоком, не уповільнюючи основну роботу програми, але в той же час забезпечуючи своєчасне повернення вільної пам'яті в систему;
- стандарт передбачає можливість написання критичних по продуктивності ділянок програми в машинних кодах.
Природа мови, що інтерпретується, дозволяє зробити фазу лінкування простою, інкрементальною і, отже, швидкою. Це різко скорочує цикл розробки і тестування програмних фрагментів.
Багатопотоковість дозволяє виконувати в рамках однієї програми декілька завдань одночасно. Це стає особливо актуально в сучасних розподілених програмах, коли процеси мережевого обміну можуть йти одночасно і асинхронно. При цьому програма продовжує реагувати на введення інформації користувачем без неприємних затримок.
Багатопотоковість підтримується на рівні мови — частина примітивів синхронізації вбудована в систему реального часу, а бібліотека містить базовий клас Thread. До того ж системні бібліотеки написані thread-safe, тобто всі вони можуть бути використані в багатопотокових додатках.
Система забезпечує динамічну збірку програми. Класи підвантажуються в міру необхідності, причому завантажені вони можуть бути з будь-якої точки мережі, що дозволяє зробити внесення змін до програм прозорим для користувача. Користувач може бути впевнений, що завжди працює з свіжою версією програми.
Досвід показує, що відсутність стандартних базових бібліотек для мови С++ надзвичайно ускладнює роботу з нею. Внаслідок того, що будь-яка нетривіальна програма вимагає наявність деякого набору базових класів, розробникам доводиться користуватися різними несумісними між собою бібліотеками або писати свій власний варіант такого набору.
Все це ускладнює як розробку, так і подальшу підтримку програми, утрудняє стиковку програм, написаних різними людьми.
Повна система Java включає готовий набір бібліотек, який можна розбити на наступні пакети: