Розробка програми фільтраціі шуму за допомогою сплайнів. Дипломная (ВКР). Информационное обеспечение, программирование.

Розробка програми фільтраціі шуму за допомогою сплайнів. Дипломная (ВКР). Информационное обеспечение, программирование.




💣 👉🏻👉🏻👉🏻 ВСЯ ИНФОРМАЦИЯ ДОСТУПНА ЗДЕСЬ ЖМИТЕ 👈🏻👈🏻👈🏻


























































Информационное обеспечение, программирование

Вы можете узнать стоимость помощи в написании студенческой работы.


Помощь в написании работы, которую точно примут!

Похожие работы на - Розробка програми фільтраціі шуму за допомогою сплайнів

Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе


Скачать Скачать документ
Информация о работе Информация о работе

Нужна качественная работа без плагиата?

Не нашел материал для своей работы?


Поможем написать качественную работу Без плагиата!

Потреба в опису фізичних об'єктів або явищ виникає при
розв’язанні будь-якої прикладної задачі. Першопричиною цього є відсутність
точного опису об’єкта чи явища. Як правило, вихідні дані мають дискретний
характер, а для описання вимагаються неперервні значення. Для вирішення таких
задач були отримані поліноміальні методи наближення, які стали класичним
засобом відтворення неперервних даних за дискретними значеннями. В розробку
поліноміальних методів наближення вагомий внесок зробили К.Вейерштрасс, П.Л.
Чебишев та багато інших математиків. Проте, при всій своїй привабливості,
поліноміальні методи наближення мають ряд недоліків, особливо у випадку
відтворення функцій, що мають малі ступені гладкості. В середині сорокових
років минулого сторіччя Ісаак Шоенберг (I.Shoenberg) запропонував конструкцію, яка,
успадкувавши позитивні якості поліномів, виявилась вільною від їхніх недоліків
- сплайни. Сплайни або, іншими словами, кусково-поліноміальні функції,
побудовані І. Шоенбергом, стали поштовхом для появи нового методу наближення зі
зручними обчислювальними властивостями.


Важливим етапом розвитку теорії сплайнів став опис Карлом де
Бором (K.De Вооr) базисних сплайнів, що дозволило
спростити конструкцію сплайнів. Таким сплайнам присвячені роботи таких математиків
як К. де Бор, А.О. Лигун, М.П. Корнійчук, О.І. Гребенніков та інші. Поява цього
апарата наближення дозволило з одного боку, суттєво спростити обчислювальні
сторони використання сплайнів, а з іншого, в силу локальності сплайнів,
покращити апроксиматичні властивості сплайн-оцінок.


Вирішення будь-якої технічної задачі, пов’язаної з обробкою
цифрових даних (сигналу), незалежно від їх природи, починається з виділення
корисної інформації (інформативних ознак). Як правило вихідна інформація
надається нам с деякою похибкою. Випадкові похибки (шуми) при цьому необхідно
погасити тим чи іншим фільтром. Далі, при вирішенні конкретних задач
інформація, очищена від перешкод, використовується у вигляді вхідної. Якщо
природа перешкод відома, то будуються цифрові фільтри, що реагують саме на такі
перешкоди. Якщо ж природа перешкод не відома, тобто коли на інформативний
сигнал накладений "білий шум", то використовують різноманітні апарати
згладжування, які убирають різкі зміни вхідної інформації. В задачах, що розглядаються
перешкоди, як правило, випадкові, зокрема, мають характер "білого
шуму".


Існують різні методи видалення "білого шуму" з тією
чи іншою точністю. Серед таких методів слід назвати метод згладжування, який
побудований на заміні вхідної інформації центрами тяжіння трикутників, вершини
яких складаються із трьох послідовних точок вхідних даних. В цьому випадку
згладжені дані уточнюються з використанням другої кінцевої різниці. Більш
точніше згладжування даних можна виконати використовуючи уточнення із застосуванням
четвертої кінцевої різниці. Зазначені методи згладжування дають дискретну
інформацію. Доцільніше згладжування виконувати за допомогою сплайнів. При цьому
згладжування буде більш точнішим якщо в якості вхідної інформації використати
згладжені дані, наприклад, за методом центра тяжіння трикутників або більш
точним методом.


У даному проекті розроблено програмний продукт фільтрації
шуму за допомогою сплайнів. До проекту включені програмні модулі, які
реалізують згладжування даних за методом центра тяжіння трикутників та за більш
уточненим методом. Програмний продукт відповідає вимогам сучасного
програмування на мові Java, має дружній інтерфейс, оснащений графічною реалізацією вхідних та
згладжених даних, робота організована в діалоговому режимі. Робота з запропонованим програмним
продуктом не вимагає від користувача знання алгоритмічної мови Java. Програма буде максимально корисна
користувачам-дослідникам, аспірантам, магістрам та усім тим, хто працює з
емпіричною інформацією.







Розділ 1. Загальні положення створення програмного продукту




1.1 Методи
первинної обробки даних - згладжування та характеристика сплайнів


1.1.1 Згладжування даних за методом центрів тяжіння
трикутників


Нехай дано набір з n +1 точки М 0 (х 0 ,у 0 ),
М 1 (х 1 ,у 1 ), ..., М n (х n ,у n )
на площині, отриманих в результаті експерименту чи вимірювання.


Один із самих простих алгоритмів згладжування даних
заснований на заміні трьох послідовних точок центром тяжіння трикутника з
вершинами в цих точках.


Цей алгоритм зображений на рисункі 1.1, де вихідні данні - це
точки М 0 , М 1 ,..., М n , а згладжені точки - М 1 * ,...,
М n -1 * .




Тобто точки М 1 * ,..., М n -1 * це точки перетину медіан трикутників
з вершинами в точках М 0 , М 1 і М 2 ; М 1 ,
М 2 і М 3 , … М n -2 , М n -1 і М n . Зрозуміло, що




Рівності (1) і (2) можна переписати в еквівалентному вигляді




В процесі згладжування кількість даних (точок) зменшилось на
дві. Як правило, процес згладжування повторяють декілька разів. В результаті ми
втрачаємо частину інформації, що призводить до втрати точності при описі контуру
на кінцях. Щоб цього не відбулося, необхідно доповнити розумним способом
вихідні дані і доповнені дані згладити. Якщо дані М 0 , М 1 ,..., М n описують замкнуту криву (в цьому
випадку М 0 = М n ), то достатньо покласти М -1 = М n -1 i М n +1 = М 1 (періодизувати дані).
В цьому випадку буде




Δ 2 x 0 = x 1 - 2x 0 + x -1 = x 1 - 2x 0 + x n -1 ,


Δ 2 x n = x n +1 - 2x n + x n -1 = x 1 - 2x n + x n -1


Δ 2 y 0 = y 1
- 2y 0 + y -1 = y 1 - 2y 0 + y n-1 ,


Δ 2 y n = y n+1
- 2y n + y n-1 = y 1 - 2y n + y n-1




згладжені дані визначаються з допомогою рівностей (3) і (4)
для всіх і = 0,1,…, n. Приведемо два способи довизначення
даних у випадку, коли дані описують незамкнуту криву. Перший спосіб складається
наступним - точки М -1 і М n +1 визначаємо з умови







М -1 М 0 = М 0 М 1 , М n М n -1 = М n +1 М n ,




х -1 = 2х 0 - х 1 , х n +1 = 2x n - x n -1 , (5)


y -1 = 2y 0 - y 1 , y n +1 = 2y n - y n -1 . (6)




В цьому випадку точки M -1 i M n +1 ми вибираємо з умов


2 M -1 = M 2 M 1 * + M 2 M 0 , M n -2 M n +1 = M n -2 M n -1 * + M n -2 M n ,




Знаходячи з цих рівностей х -1 , х n +1 , y -1 і y n +1 отримуємо формули доповнення




Таким чином, ми пришли до наступного алгоритму згладжування
даних, що описують незамкнуту криву.


Обчислюємо значення х -1 , y -1 , х n +1 , y n +1 у відповідності з рівностями (7),
(8) чи (5), (6) і обчислюємо згладжені дані x i * , y i * для всіх і = 0, 1, …, n по формулам




Формули (9), (10) дають хороші результати згладжування в тих
випадках, коли похибки вимірювання великі. В тих випадках коли похибки дуже
великі, то використовують ці алгоритми декілька разів. При малих похибки
алгоритм, приведений вище, може (навіть при одноразовому використанні)
"перегладити" дані, спотворити достовірну інформацію. В таких
випадках зазвичай використовують (краще декілька разів) більш "м’які"
алгоритми згладжування, які відрізняються от (9), (10) меншим коефіцієнтом при
другій різниці.


Точне формулювання такого алгоритму виглядає так:




Зрозуміло, що якщо α = 0, то і , а якщо α
= 1/3, то
отриманий приведений раніше алгоритм згладжування (по центрам тяжіння). Якщо ж 0
< α < 1/3, ми отримуємо "місток" між найбільш "м’яким"
алгоритмом (α =0) і найбільш "жорстким"
(α =1/3).







1.1.2 Алгоритми згладжування підвищеної точності


Наведений у попередньому підрозділі алгоритм згладжування є
досить ефективним у випадках, коли даних багато. Однак, при неумілому
використанні його, у випадку, коли число даних невелике, ми можемо перегладити
дані у відрізок прямої, коли крива незамкнута і стягнути в точку, коли крива
замкнута. В цьому підрозділі наведено більш точний (але і більш складний)
алгоритм згладжування. В основі його лежить формула




Для того, щоб алгоритм працював, необхідно виконання
наступних вимог:


1. обґрунтувати рівність (12) і
вибір β;


2. довизначити точки М -2 ,
М -1 , М n +1 i М n + 2 (щоб
було можливо знайти величини Δ 4 М 0 , Δ 4 М 1 , Δ 4 М n -1 , Δ 4 М n ) і повторювати згладжування;


3. знайти критерій зупинки
алгоритму згладжування.


Для того, щоб відповісти на перше запитання, приведемо
спочатку інший підхід до обґрунтування алгоритму, описаного в попередньому
параграфі.


Нехай заданий набір з n +1 точки М і (х і ,у і )
(і = 0, 1, 2, …, n) на
площині. Цьому набору поставимо у відповідність два набора точок




Для кожної трійки чисел , і визначимо коефіцієнти a i b прямої at + b так, щоб сума квадратів похибок









Φ(a, b) = (x i-1 - (a(i-1) + b)) 2
+ (x i - (ai + b)) 2 + (x i+1 - (a(i+1) + b)) 2




Нехай a * i b * рішення цієї задачі на мінімум. Тоді
ми покладаємо




Необхідна і достатня умова мінімуму у нашій задачі така




Застосувавши ту саму процедуру до даних (i, yi) (і = 0,1,…,n), ми прийдемо до алгоритму
згладжування по "центрам тяжіння трикутників".


Перейдемо до побудови алгоритму підвищеної точності. Для
кожної п’ятірки чисел




(і - 2, х і-2 ), (і - 1, х і-1 ), (і, х і ),
(і + 1, х і-1 ), (і + 2, х і+2 )




визначимо коефіцієнти a, b i c параболи at 2 + bt + c з умови мінімуму суми квадратів
похибок




Якщо a * , b * i c * - вирішення цієї задачі на мінімум,
то покладаємо




Провівши необхідні в цьому випадку обчислення (знаходимо і
прирівнюємо до нуля частні похідні по a, b, c і вирішуючи отриману при цьому
систему трьох лінійних рівнянь з трьома невідомими), знаходимо значення a * , b * i c * . Потім підставляючи ці значення в
(13), отримуємо




Отже, алгоритм згладжування підвищеної точності складається в
тому, що нові значення i для всіх і = 0,1,2,…,n розраховуються по формулам




Для того, щоб алгоритм працював, необхідно довизначити точки




М -2 (х -2 , у -2 ), М -1 (х -1 ,
у -1 ), М n + 1 (х n + 1 , у n + 1 ), М n +2 (х n +2 , у n +2 ).




Визначимо коефіцієнти a, b i c з умови мінімуму суми квадратів
похибок




Необхідні і достатні умови екстремуму мають вид




Вирішуючи цю систему, і, підставляючи знайдені значення a, b, c у (16),
отримаємо




Точно так же довизначаємо і значення у -1 , у -2 ,
у n + 1 , у n +2 .


Таким чином пришли до наступного алгоритму згладжування
підвищеної точності:


1.     довизначаємо точки (х і , у і ) для
i = -2, -1, n+1, n+2, виходячи з рівностей (17) - (20)
і аналогічних рівностей для y i ;


.       Після цього визначаємо нові точки (х і * ,
у і * ) у відповідності з рівностями (14) - (15).





1.1.3 Умова закінчення згладжування даних


Багаторазове використання алгоритму згладжування може суттєво
спотворити вихідну інформацію, аж до втрати форми початкового контуру.


Зрозуміло, що це залежить від точності завдання вихідних
даних або від рівня помилок (шумів). Чим більше рівень помилок, тим більше
необхідно операцій згладжування. З іншої сторони, якщо число ітерацій занадто
велике дані "розгладяться" у відрізок прямої (якщо дані описують
незамкнуту криву) або стягнуться в точку (у випадку замкнутої кривої).


Алгоритм зупинки згладжування опирається на наступному факті:
якщо дані згладжені не достатньо, то довжини ломаних, послідовно з’єднуючи
точки до и після згладжування, істотно відрізняються (після згладжування
довжина ломаної зменшується), а якщо дані згладжені достатньо - довжини цих
ломаних майже співпадають.


Нехай M 0 , M 1 , …, M n - вихідні дані, а M 0 *, M 1 *, …, M n * - згладжені і




Тоді математичне очікування величини пропорційно величині α
* n
* ε * θ n ,
де ε - рівень похибки.


Якщо ж x i = x(a + ih), y i = y(a+ih) (i = 0, 1, …, n; h = (b - a)/n), і, функції х(t) i у(t) чотири
рази безперервно диференціюємо на відрізку [а, b] (тобто якщо дані знімаються
рівномірно з гладкої кривої), то




тобто величина прагне до нуля пропорційно 1/n 2 .


Можна указати і критерій зупинки процесу згладжування. Для
цього достатньо записати дискретний аналог нерівності (11) (з константою 2А замість
А, щоб знехтувати похибкою дискретизації, і величиною О(h 3 )). Нехай


i , k (x i , k ,y i , k ) (i = 0, 1, …, n)




- набір точок отриманих в результаті k-ого згладжування,




- довжина ломаної, що з’єднує точки, отримані в результаті k-ого згладжування, тобто




не виконується, то згладжування продовжуємо, якщо виконується
- припиняємо.


Приведемо формальний алгоритм згладжування.


Дані масиви: x 0 , x 1 , …, x n , y 0 , y 1 , …, y n ,


Вибираємо α [0, 1/3], і розраховуємо величини




Δ 2 x і = x i +1 - 2x i + x i -1 (i = 0, 1, …, n),


Δ 2 y і = y i +1 - 2y i + y i -1 (i = 0, 1, …, n).




Для того, щоб визначити чи достатньо згладжені дані,
обчислимо







і аналогічні величини для qy i і рy i . Тоді дискретним аналогом функції θ(t) є набор чисел




то процес згладжування можна вважати закінченим. У іншому
випадку все необхідно повторити, взявши в якості вихідної інформації масиви x 0 * , x 1 * , …, x n * , y 0 * , y 1 * , …, y n * . Для методу більш підвищеної точності
умова закінчення згладжування визначається наступним чином. Нехай l n - довжина ломаної,
яка з’єднує точки (х і ,у і ) (і = 0,1,...,n), а l n * - довжина, яка з’єднує точки (х і *,у і *)
(і = 0,1,...,n). Тоді математичне
очікування різниці |l n - l n * | пропорційне величині n β σ l n . Якщо
ж х і = х(α +іh), y і = y(α
+іh) (i = 0,1,…,n), де функції х(t) и у(t) мають п’ять неперервних похідних на
відрізку [а, b], то







Якщо вхідні дані зовсім рідкі (наприклад, якщо вони
знімаються з опорних точок за допомогою вимірювальної головки), то
застосовувати розглянуті вище алгоритми не доречно.


В цих випадках застосовують інші методи згладжування вихідних
даних, наприклад, методи сплайн-згладжування чи способи згладжування даних які
базуються на різноманітних модифікаціях методу найменших квадратів.


Широке використання в останні три десятиліття сплайнових
методів в інженерних розрахунках само по собі говорить про переваги сплайнів
перед класичними методами. В теперішній час практично в кожній монографії,
присвяченій інженерній геометрії, машинній графіці, САПР і другим суміжним
напрямкам, приділяється увага методам сплайн-функцій. При цьому відсутня
література із систематичним аналізом того, чому той чи інший вид сплайнів
використовується при вирішенні конкретної інженерної задачі.


В цьому підрозділі розглянемо той вид сплайнів, на основі
яких, як з кубиків, будуть будуватися різні види сплайнів необхідних для
вирішення різноманітних задач.


Введенню цих сплайнів предпошлем поняття оператора Стеклова
від даної функції ƒ(t).


Нехай дано число h > 0 і розбиття δ n дійсної вісі R = (-∞,∞) точками іh (і = 0, ±1, ±2, …).


Для любої інтегруємої на всій вісі функції ƒ(t) розглянемо функцію




і назвемо її функцією Стеклова з кроком h для інтегруємої функції ƒ(t).


Ця властивість функції Стеклова слугує базою для побудови
багатьох алгоритмів згладжування даних і конструювання на їх основі
різноманітних демпферних пристроїв. Всі вони, як правило, засновані на
використанні операторів виду




Функцію B r , h (t)
введемо з допомогою рекурентних співвідношень




Цю функцію назвемо нормалізованим В-сплайном по рівномірному
розбиттю чи просто В-сплайном.


Відмітимо деякі властивості В-сплайнів необхідні в
подальшому.


Передусім відмітимо, що В-сплайн порядка r має в якості носія (замикання
множини, де він відмінний від нуля) проміжок




тобто B r , h (t) ≠
0 всередині відрізка d r .


Із виду B 0, h і властивостей функції Стеклова випливає, що




Приділимо увагу сплайнам порядку 3, тобто параболічному
сплайну, оскільки він використовується в роботі.


Передусім відмітимо (це легко отримати безпосередньо з
визначення В-сплайнів), що




1.1.5 Інтерполяційні с плайни третього порядку


Сплайнами називають кусково-многочленні функції з однорідною
структурою. Термін цей походить від англійського слова spline - креслярський інструмент, рейка, що
використовується для проведення гладкої лінії через фіксовані точки.


Найбільш розповсюджений і історично найбільш ранній приклад
сплайна - ломана.


Сплайни володіють рядом чудових властивостей, які забезпечили
їм успіх у різноманітних додатках.


Так, в порівнянні з класичними апаратами приближення функцій,
сплайни володіють кращими апроксимативними властивостями. Наприклад, на відміну
від інтерполяційних многочленів, послідовність інтерполяційних сплайнів по
рівномірній сітці завжди сходиться до інтерполюємої неперервної функції. З
іншої сторони, простота реалізації сплайнових методів на комп’ютерах, їх висока
ефективність, роблять використання сплайнів у інженерних розрахунках в багатьох
випадках просто незамінними. Окрім того, наявність у сплайнів екстремальних
властивостей, особливо, те, що інтерполяційний сплайн приймає форму
матеріальної кривої з мінімальною потенціальною енергією, роблять природним
використання сплайнів в багатьох задачах динаміки механічних систем.


Перейдемо до точного визначення сплайнів.


Сплайном мінімального дефекту порядку r по заданому розбиттю Δ h ={ih} ∞ i =-∞ називається r-1 разів неперервно-диференціюєма функція S r (t), яка на кожному інтервалі (ih, (i+1)h) (i=0, ±1, ±2, …) є многочленом степені не вище r.


Відмітимо, що на множині сплайнів порядку r (r ≥ 0) існує сплайн тотожно
рівний нулю і сплайн тотожно рівний одиниці.


Звідси і із того, що добуток многочлена степені r на число α є многочлен тієї ж степені,
якщо α ≠ 0 і тотожній нуль при α
= 0, а також з
того, що сума многочленів степені n ≤ r і m ≤ r є многочлен степені не вище r, отримуємо, що множина всіх сплайнів
степені r по розбиттю Δ h є лінійний простір.


Таким чином, якщо S r (Δ h ) множина всіх сплайнів мінімального дефекту по розбиттю Δ h , і




σ r , i S r (Δ h ) (i = 1, 2, …, n),




то лінійна комбінація функцій σ r , i також буде лежати у множині S r (Δ h ), тобто




Множина кубічних сплайнів - це множина всіх інтегралів від
параболічних сплайнів, які можна записати у вигляді:




Сплайн S r (t) називається інтерполяційним, якщо для функції x(t) він повністю співпадає зі
значеннями функції в вузлах розбиття.


Якщо S 3, k (t) aсимптотично співпадає з
інтерполяційним ( ), то він називається майже інтерполяційним.




Задача визначення сплайну зводиться до визначення C i .


Для зручності припустимо, що x(t) періодична функція. Це
припущення зроблено для того, щоб не розглядати різні види граничних умов для
сплайнів.


Якщо ми розглянемо розбиття вісі з вузлами в т. , то в якості періоду розглянемо T = nh, при цьому можна припустити, що:




і з такими коефіцієнтами визначимо значення сплайна в т. ih, то отримаємо, що S 3 (ih) = x(ih), тобто S 3 (t) - інтерполяційний сплайн.


Відмітимо, що коефіцієнти C i можна отримати виходячи з інших
міркувань. Якщо S 3 (t) інтерполює x(t) в точках ih, тоді значення сплайну і значення
функції в цих точках співпадають.




Отримаємо систему з рівнянь та невідомих. В матричній формі:




Діагональне переважання для цієї матриці говорить про те, що
для вирішення цієї системи можна використати метод прогонки або матричний
спосіб.


Кожен з цих сплайнів задається явно. Якщо змінюється значення
x(t) тільки в одній точці, то зміниться
тільки цей елемент та декілька сусідніх, тобто цей сплайн є локальним.




1.2 Загальна характеристика об’єктно-орієнтованої мови Java


Все програмування в тій чи іншій мірі пов’язане з керуванням
складними задачами: складність вирішуваної проблеми накладається на складність
системи, в якій вона вирішується. Саме через ці труднощі більшість програмних
проектів закінчується невдачою. І до моменту створення мови Java ні одна з мов не була змодельована і
створена в розрахунку на подолання складності розробки та підтримування
програм. Звісно, багато
рішень при створенні програм приймались з розрахунку на вирішення складностей, але при цьому
завжди знаходилось ще щось, що вважалось досить важливим, щоб враховувати це
при плануванні мови. Все це неминуче змушувало програмістів "битись
головою об стіну" при зіткненні з проблемами. Наприклад, С++ створювався в
розрахунку на ефективність та сумісність з С (щоб легко було переходити з цієї
мови на С++). Обидва рішення, безперечно, корисні і стали одними з причин
успіху С++, але також привели до додаткових труднощів, що не дозволило успішно
втілити в життя деякі проекти. Або інший приклад: Visual Basic (VB) спочатку
був прив’язаний до Basic, у якій не була закладена можливість розширення, із-за
чого всі доповнення, створенні для VB, мають жахливий і складно підтримуваний
синтаксис. З іншої сторони, С++, VB, Perl і інші мови, подібні Smalltalk,
частково фокусувались на подоланні труднощів і, як результат, стали успішними у
вирішення певних типів задач.


Творці Java із Sun, схоже, поруч с іншими цілями хотіли по
можливості спростити роботу програміста. Вони наче говорили: "Ми хочемо,
щоб ви могли швидше і простіше написати надійний код". Раніше такий намір
приводив до того, що швидкодія програм залишала бажати кращого (хоча згодом
ситуація покращилась). Однак такий підхід дивовижно подіяв на терміни розробки
програм; для розробки еквівалентної програми на С++ необхідно в два рази чи ще
більше людино-годин. Вже одне це приводить до економії колосальних грошей та
безлічі часу, але Java не "застигає" в захопленні досягнутим. Творці
мови йдуть далі, вбудовуючи підтримку технологій, які стали важливими в
останній час (багатозадачність, мереживне програмування), у саму мову чи її бібліотек,
що значно спрощує вирішення цих задач. Нарешті, Java енергійно береться за
дійсно складні проблеми: платформно-незалежні програми, динамічна зміна коду і
навіть безпека. Кожна з цих проблем в змозі затримати терміни здачі вашого
проекту, а може легко стати неподоланною перешкодою. Таким чином, перспективи
Java дивують: вона значно підвищує продуктивність роботи програмістів.


У всіх випадках - при створенні програм, командній розробці
проектів, конструюванні інтерфейсів користувача для спілкування програми з
споживачем, запуску програм на різних типах комп’ютерів, простому написанні
програм, використовуючи Інтернет - Java розширює "полосу пропуску"
інформації при комунікаціях між людьми.





Програма, написана на одній з мов високого рівня, до яких
відноситься і мова Java, так званий вихідний модуль ("сирець"
на жаргоні, від англійського "source"), не може бути відразу ж
виконана. Її спочатку треба відкомпіліювати, тобто перекласти в послідовність
машинних команд - об’єктний модуль . Але і він, як правило, не може бути
відразу ж виконаний: об’єктний модуль треба ще зкомпонувати з бібліотеками, що
використовуються у модулі функцій і дозволити перехресні посилання між секціями
об’єктного модуля, отримавши в результаті завантажуємий модуль - повністю
готову до виконання програму.


Вихідний модуль, написаний на Java, не може уникнути цих
процедур, але тут проявляється головна особливість технології Java - програма
компілюється відразу в машинні команди, але не команди якогось конкретного
процесора, а в команди так званої віртуальної машини Java (JVM, Java Virtual
Machine). Віртуальна машина Java - це сукупність команд разом з системою їх
виконання. Для спеціалістів скажемо, що віртуальна машина Java повністю
стекова, так що не вимагається складна адресація комірок пам’яті і велика
кількість регістрів. Тому команди JVM короткі, більшість з них має довжину 1
байт, через це команди JVM називають байт-кодами (bytecodes), хоча є
команди довжиною 2 і 3 байта. Згідно статистичним дослідженням середня довжина
команди складає 1,8 байта. Повне описання команд і всієї архітектури JVM
міститься у специфікації віртуальної машини Java (VMS, Virtual Machine
Specification). Для того, щоб точніше дізнатися, як працює віртуальна машина
Java, необхідно ознайомитись з цією специфікацією.


Друга особливість Java - всі стандартні функції, які
викликаються в програмі, підключаються до неї лише на етапі виконання, а не
включаються в байт-коди. Як говорять спеціалісти, відбувається динамічна
компоновка (dynamic binding). Це також сильно зменшує об’єм відкомпільованої
програми.


Отже, на першому етапі програма, написана на мові Java,
перекладається компілятором в байт-коди. Ця компіляція не залежить від типу
якогось конкретного процесора і архітектури деякого конкретного комп’ютера.
Вона може бути виконана один раз відразу ж після написання програми. Байт-код
записуються в одному чи декількох файлах, можуть зберігатись у зовнішній
пам’яті чи передаватися по мережі. Це особливо зручно завдяки невеликому
розміру файлів з байт-кодами. Потім отримані в результаті компіляції байт-коди
можна виконувати на любому комп’ютері, що має систему, яка реалізує JVM. При
цьому не важливий ні тип процесора, ні архітектура комп’ютера. Так реалізується
принцип Java "Write once, run anywhere" - "Написане один раз,
виконується де завгодно".


Інтерпретація байт-кодів і динамічна компоновка значно
затримують виконання програм. Це не має значення в тих ситуаціях, коли
байт-коди передаються по мережі, мережа все одно повільніше любої інтерпретації,
але в других ситуаціях вимагається потужний і швидкий комп’ютер. Саме тому
постійно йде вдосконалення інтерпретаторів в сторону збільшення швидкості
інтерпретації. Розроблені JIT-компілятори (Just-In-Time), які запам’ятовують
вже інтерпретовані частини коду в машинних командах процесора і просто
виконують ці частини при повторному зверненні, наприклад, в циклах. Це значно
збільшує швидкість обчислень, що повторюються. Фірма SUN розробила цілу
технологію Hot-Spot і включає її в свою віртуальну машину Java. Але, звісно,
найбільшу швидкість може дати лише спеціалізований процесор.


Фірма SUN Microsystems випустила мікропроцесори PicoJava, які
працюють на системі команд JVM, і збирається випускати цілу лінійку все більш
потужних Java-процесорів. Є вже і Java-процесори других фірм. Ці процесори
безпосередньо виконують байт-коди. Але при виконанні програм Java на других
процесорах необхідна ще інтерпретація команд JVM у команди конкретного
процесора, а значить, необхідна програма-інтерпретатор, причому для кожного
типу процесорів, і для кожної архітектури комп’ютера треба написати свій
інтерпретатор.


Ця задача вже вирішена практично для всіх комп’ютерних
платформ. На них реалізовані віртуальні машини Java, а для найбільш
розповсюджених платформ існує декілька реалізацій JVM різних фірм. Все більше
операційних систем і систем керування базами даних включають реалізацію JVM в
своє ядро. Створена і спеціальна операційна система JavaOS, що застосовується в
електронних пристроях. В багатьох браузерів вбудована віртуальна машина Java
для виконання апплетів.


Окрім реалізації JVM для виконання байт-кодів на комп’ютері
ще необхідно мати набір функцій, які викликаються із байт-кодів и динамічно
компонуються з байт-кодами. Цей набір оформляється у вигляді бібліотеки класів
Java, яка складається з одного чи декількох пакетів . Кожна функція може
бути записана байт-кодами, але, оскільки вона буде зберігатися на конкретному
комп’ютері, її можна записати прямо у системі команд цього комп’ютера,
уникнувши тим самим інтерпретації байт-кодів. Такі функції називають
"рідними" методами (native methods). Використання "рідних"
методів прискорює виконання програми.


Фірма SUN Microsystems - творець технології Java -
безкоштовно розповсюджує набір необхідних програмних інструментів для повного
циклу роботи з цією мовою програмування: компіляції, інтерпретації, відладки,
включающий і велику бібліотеку класів, під назвою JDK (Java Development Kit). Є
набори інструментальних програм і других фірм. Наприклад, великою популярністю
користується JDK фірмы IBM.


Набір програм і класів JDK містить:


·             компілятор javac із вихідного тексту
в байт-коди; інтерпретатор java, який містить реалізацію JVM;


·             спрощений інтерпретатор jre (в
останніх версіях відсутній);


·             програму перегляду апплетів
appietviewer, що заміняє браузер;


·             програму архівації і стиснення jar;


·             програму збору документації javadoc;


·             програму javah генерації заголовкових
файлів мови С;


·             програму javakey додання електронного
підпису;


·             програму native2ascii, що перетворює
бінарні файли в текстові;


·             програми rmic і rmiregistry для
роботи з видаленими об’єктами;


·             програму seriaiver, яка визначає
номер версії класу;


·             бібліотеки і заголовкові файли
"рідних" методів;


·             бібліотеку класів Java API
(Application Programming Interface).


В 1996 р. була випущена перша версія JDK 1.0, яка
модифікувалась до версії з номером 1.0.2. В цій версії бібліотека класів Java
API містила 8 пакетів. Весь набір JDK 1.0.2 поставлявся в упакованому вигляді в
одному файлі розміром близько 5 Мбайт, а після розпаковки займав близько 8
Мбайт на дискі.


В 1997 р. з’явилась версія JDK 1.1, остання її модифікація,
1.1.8, випущена в 1998 р. В цій версії було 23 пакета класів, займала вона 8,5
Мбайт в упакованому вигляді і близько 30 Мбайт на дискі.


В перших версіях JDK всі пакети бібліотеки Java API були
упаковані в один архівний файл classes.zip і викликались безпосередньо з цього
архіву, його не треба розпаковувати.
1. Ціль дипломного проекту - розробка програмного продукту
фільтрації шуму за допомогою сплайнів. Дипломная (ВКР). Информационное обеспечение, программирование.

Курсовая работа по теме Использование технологии продуктивного чтения во внеурочной работе по изобразительному искусству
Язык Как Зеркало Национальной Культуры Эссе
Классификация Рынков Реферат
Дипломная работа по теме Управление работой налоговых органов (на примере ИМНС РФ по Фрунзенскому району г. Саратова)
Курсовая работа: Социально-экономическая модель цивилизации древних майя. Скачать бесплатно и без регистрации
Реферат: Йохан Хейзинга Игра. Скачать бесплатно и без регистрации
Курсовая Работа На Тему Страховой Рынок И Его Функционирование В Рф
Воспитательная Система Макаренко Реферат
Реферат: Развитие рок-музыки. Скачать бесплатно и без регистрации
Вино Эссе Мама Купить
Курсовая работа: Культура і якість торговельного обслуговування
Дипломная работа по теме Совершенствование управления трудовыми ресурсами организации (на примере ЗАО 'Точная механика')
М.м.сперанский и кодификация законов российской империи
Реферат по теме Тема подвига советского народа в Великой Отечественной войне в литературе
Реферат: Добровільна відмова при незакінченому злочині Суб єкт злочину
Реферат по теме Бухгалтерский учёт расчётов с поставщиками и подрядчиками
Сочинение по теме Линия «Зла» в произведениях русской литературы 90-х годов ХХ века
Доклад: Мужчины не любят женщин, не знающих мужское тело
Реферат по теме Прыжковые упражнения на мягкой опоре как одно из средств снижения ударной нагрузки на стопу и общего укрепления организма
Реферат Дорожного Движения
Курсовая работа: Русско-германские отношения в начале ХХ века
Похожие работы на - Избирательная система Российской Федерации
Похожие работы на - Идеомоторная тренировка

Report Page