Розробка програми фільтраціі шуму за допомогою сплайнів
Методи первинної обробки даних - згладжування та характеристика сплайнів. Загальна характеристика об'єктно-орієнтованої мови Java. Принципи побудови графічного інтерфейсу. Розробка алгоритму програми та інтерфейсу користувача програмного продукту.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | украинский |
Дата добавления | 10.10.2013 |
Размер файла | 3,3 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
18
1.5.СГЛАЖИВАНИЕ ПОВЫШЕННОЙ ТОЧНОСТИ
Размещено на http://www.allbest.ru/
Вступ
Потреба в опису фізичних об'єктів або явищ виникає при розв'язанні будь-якої прикладної задачі. Першопричиною цього є відсутність точного опису об'єкта чи явища. Як правило, вихідні дані мають дискретний характер, а для описання вимагаються неперервні значення. Для вирішення таких задач були отримані поліноміальні методи наближення, які стали класичним засобом відтворення неперервних даних за дискретними значеннями. В розробку поліноміальних методів наближення вагомий внесок зробили К.Вейерштрасс, П.Л. Чебишев та багато інших математиків. Проте, при всій своїй привабливості, поліноміальні методи наближення мають ряд недоліків, особливо у випадку відтворення функцій, що мають малі ступені гладкості. В середині сорокових років минулого сторіччя Ісаак Шоенберг (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.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 (періодизувати дані). В цьому випадку буде
Д2x0 = x1 - 2x0 + x-1 = x1 - 2x0 + xn-1,
Д2xn = xn+1 - 2xn + xn-1 = x1 - 2xn + xn-1
Д2y0 = y1 - 2y0 + y-1 = y1 - 2y0 + yn-1,
Д2yn = yn+1 - 2yn + yn-1 = y1 - 2yn + yn-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 = 2xn - xn-1, (5)
y-1 = 2y0 - y1, yn+1 = 2yn - yn-1. (6)
В цьому випадку точки M-1 i Mn+1 ми вибираємо з умов
M2M-1 = M2M1* + M2M0, Mn-2Mn+1 = Mn-2Mn-1* + Mn-2Mn,
чи, що те саме,
Знаходячи з цих рівностей х-1, хn+1, y-1 і yn+1 отримуємо формули доповнення
Таким чином, ми пришли до наступного алгоритму згладжування даних, що описують незамкнуту криву.
Обчислюємо значення х-1, y-1, хn+1, yn+1 у відповідності з рівностями (7), (8) чи (5), (6) і обчислюємо згладжені дані xi*, yi* для всіх і = 0, 1, …, n по формулам
Формули (9), (10) дають хороші результати згладжування в тих випадках, коли похибки вимірювання великі. В тих випадках коли похибки дуже великі, то використовують ці алгоритми декілька разів. При малих похибки алгоритм, приведений вище, може (навіть при одноразовому використанні) "перегладити" дані, спотворити достовірну інформацію. В таких випадках зазвичай використовують (краще декілька разів) більш "м'які" алгоритми згладжування, які відрізняються от (9), (10) меншим коефіцієнтом при другій різниці.
Точне формулювання такого алгоритму виглядає так:
Зрозуміло, що якщо б = 0, то і , а якщо б = 1/3, то отриманий приведений раніше алгоритм згладжування (по центрам тяжіння). Якщо ж 0 < б < 1/3, ми отримуємо "місток" між найбільш "м'яким" алгоритмом (б =0) і найбільш "жорстким" (б =1/3).
1.1.2 Алгоритми згладжування підвищеної точності
Наведений у попередньому підрозділі алгоритм згладжування є досить ефективним у випадках, коли даних багато. Однак, при неумілому використанні його, у випадку, коли число даних невелике, ми можемо перегладити дані у відрізок прямої, коли крива незамкнута і стягнути в точку, коли крива замкнута. В цьому підрозділі наведено більш точний (але і більш складний) алгоритм згладжування. В основі його лежить формула
Для того, щоб алгоритм працював, необхідно виконання наступних вимог:
обґрунтувати рівність (12) і вибір в;
довизначити точки М-2, М-1, Мn+1 i Мn+2 (щоб було можливо знайти величини Д4М0, Д4М1, Д4Мn-1, Д4Мn) і повторювати згладжування;
знайти критерій зупинки алгоритму згладжування.
Для того, щоб відповісти на перше запитання, приведемо спочатку інший підхід до обґрунтування алгоритму, описаного в попередньому параграфі.
Нехай заданий набір з n +1 точки Мі(хі,уі) (і = 0, 1, 2, …, n) на площині. Цьому набору поставимо у відповідність два набора точок
.
Для кожної трійки чисел , і визначимо коефіцієнти a i b прямої at + b так, щоб сума квадратів похибок
Ц(a, b) = (xi-1 - (a(i-1) + b))2 + (xi - (ai + b))2 + (xi+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 параболи at2 + bt + c з умови мінімуму суми квадратів похибок
Якщо a*, b* i c* - вирішення цієї задачі на мінімум, то покладаємо
Провівши необхідні в цьому випадку обчислення (знаходимо і прирівнюємо до нуля частні похідні по a, b, c і вирішуючи отриману при цьому систему трьох лінійних рівнянь з трьома невідомими), знаходимо значення a*, b* i c*. Потім підставляючи ці значення в (13), отримуємо
(14)
Аналогічно отримуємо
(15)
Отже, алгоритм згладжування підвищеної точності складається в тому, що нові значення i для всіх і = 0,1,2,…,n розраховуються по формулам
де 0 < в < 3/35.
Для того, щоб алгоритм працював, необхідно довизначити точки
М-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) і аналогічних рівностей для yi;
2. вибираємо 0 < в < 3/35;
3. Після цього визначаємо нові точки (хі*, уі*) у відповідності з рівностями (14) - (15).
1.1.3 Умова закінчення згладжування даних
Багаторазове використання алгоритму згладжування може суттєво спотворити вихідну інформацію, аж до втрати форми початкового контуру.
Зрозуміло, що це залежить від точності завдання вихідних даних або від рівня помилок (шумів). Чим більше рівень помилок, тим більше необхідно операцій згладжування. З іншої сторони, якщо число ітерацій занадто велике дані "розгладяться" у відрізок прямої (якщо дані описують незамкнуту криву) або стягнуться в точку (у випадку замкнутої кривої).
Алгоритм зупинки згладжування опирається на наступному факті: якщо дані згладжені не достатньо, то довжини ломаних, послідовно з'єднуючи точки до и після згладжування, істотно відрізняються (після згладжування довжина ломаної зменшується), а якщо дані згладжені достатньо - довжини цих ломаних майже співпадають.
Формулювання цього факту наступне:
Нехай M0, M1, …, Mn - вихідні дані, а M0*, M1*, …, Mn* - згладжені і
Тоді математичне очікування величини пропорційно величині б * n * е * иn, де е - рівень похибки.
Якщо ж xi = x(a + ih), yi = y(a+ih) (i = 0, 1, …, n; h = (b - a)/n), і, функції х(t) i у(t) чотири рази безперервно диференціюємо на відрізку [а, b] (тобто якщо дані знімаються рівномірно з гладкої кривої), то
Де
тобто величина прагне до нуля пропорційно 1/n2.
Можна указати і критерій зупинки процесу згладжування. Для цього достатньо записати дискретний аналог нерівності (11) (з константою 2А замість А, щоб знехтувати похибкою дискретизації, і величиною О(h3)). Нехай
Mi,k(xi,k,yi,k) (i = 0, 1, …, n)
- набір точок отриманих в результаті k-ого згладжування,
- довжина ломаної, що з'єднує точки, отримані в результаті k-ого згладжування, тобто
Якщо нерівність
не виконується, то згладжування продовжуємо, якщо виконується - припиняємо.
Приведемо формальний алгоритм згладжування.
Дані масиви: x0, x1, …, xn, y0, y1, …, yn,
Вибираємо б [0, 1/3], і розраховуємо величини
Д2xі = xi+1 - 2xi + xi-1 (i = 0, 1, …, n),
Д2yі = yi+1 - 2yi + yi-1 (i = 0, 1, …, n).
Знайдемо згладжені дані
і обчислимо величини
Для того, щоб визначити чи достатньо згладжені дані, обчислимо
і аналогічні величини для qyi і рyi. Тоді дискретним аналогом функції и(t) є набор чисел
,
а дискретним аналогом А - число
Якщо буде виконуватись умова
то процес згладжування можна вважати закінченим. У іншому випадку все необхідно повторити, взявши в якості вихідної інформації масиви x0*, x1*, …, xn*, y0*, y1*, …, yn*. Для методу більш підвищеної точності умова закінчення згладжування визначається наступним чином. Нехай ln - довжина ломаної, яка з'єднує точки (хі,уі) (і = 0,1,...,n), а ln* - довжина, яка з'єднує точки (хі*,уі*) (і = 0,1,...,n). Тоді математичне очікування різниці |ln - ln*| пропорційне величині n в у ln. Якщо ж хі = х(б +іh), yі = y(б +іh) (i = 0,1,…,n), де функції х(t) и у(t) мають п'ять неперервних похідних на відрізку [а, b], то
Якщо вхідні дані зовсім рідкі (наприклад, якщо вони знімаються з опорних точок за допомогою вимірювальної головки), то застосовувати розглянуті вище алгоритми не доречно.
В цих випадках застосовують інші методи згладжування вихідних даних, наприклад, методи сплайн-згладжування чи способи згладжування даних які базуються на різноманітних модифікаціях методу найменших квадратів.
1.1.4 Базисні сплайни
Широке використання в останні три десятиліття сплайнових методів в інженерних розрахунках само по собі говорить про переваги сплайнів перед класичними методами. В теперішній час практично в кожній монографії, присвяченій інженерній геометрії, машинній графіці, САПР і другим суміжним напрямкам, приділяється увага методам сплайн-функцій. При цьому відсутня література із систематичним аналізом того, чому той чи інший вид сплайнів використовується при вирішенні конкретної інженерної задачі.
В цьому підрозділі розглянемо той вид сплайнів, на основі яких, як з кубиків, будуть будуватися різні види сплайнів необхідних для вирішення різноманітних задач.
Введенню цих сплайнів предпошлем поняття оператора Стеклова від даної функції ѓ(t).
Нехай дано число h > 0 і розбиття дn дійсної вісі R = (-?,?) точками іh (і = 0, ±1, ±2, …).
Для любої інтегруємої на всій вісі функції ѓ(t) розглянемо функцію
і назвемо її функцією Стеклова з кроком h для інтегруємої функції ѓ(t).
Ця властивість функції Стеклова слугує базою для побудови багатьох алгоритмів згладжування даних і конструювання на їх основі різноманітних демпферних пристроїв. Всі вони, як правило, засновані на використанні операторів виду
Позначимо
Функцію Br,h(t) введемо з допомогою рекурентних співвідношень
Цю функцію назвемо нормалізованим В-сплайном по рівномірному розбиттю чи просто В-сплайном.
Відмітимо деякі властивості В-сплайнів необхідні в подальшому.
Передусім відмітимо, що В-сплайн порядка r має в якості носія (замикання множини, де він відмінний від нуля) проміжок
тобто Br,h(t) ? 0 всередині відрізка dr.
Із виду B0,h і властивостей функції Стеклова випливає, що
Приділимо увагу сплайнам порядку 3, тобто параболічному сплайну, оскільки він використовується в роботі.
Передусім відмітимо (це легко отримати безпосередньо з визначення В-сплайнів), що
і графік B3,h(t) має вид
Рис. 1.2
1.1.5 Інтерполяційні сплайни третього порядку
Сплайнами називають кусково-многочленні функції з однорідною структурою. Термін цей походить від англійського слова spline - креслярський інструмент, рейка, що використовується для проведення гладкої лінії через фіксовані точки.
Найбільш розповсюджений і історично найбільш ранній приклад сплайна - ломана.
Сплайни володіють рядом чудових властивостей, які забезпечили їм успіх у різноманітних додатках.
Так, в порівнянні з класичними апаратами приближення функцій, сплайни володіють кращими апроксимативними властивостями. Наприклад, на відміну від інтерполяційних многочленів, послідовність інтерполяційних сплайнів по рівномірній сітці завжди сходиться до інтерполюємої неперервної функції. З іншої сторони, простота реалізації сплайнових методів на комп'ютерах, їх висока ефективність, роблять використання сплайнів у інженерних розрахунках в багатьох випадках просто незамінними. Окрім того, наявність у сплайнів екстремальних властивостей, особливо, те, що інтерполяційний сплайн приймає форму матеріальної кривої з мінімальною потенціальною енергією, роблять природним використання сплайнів в багатьох задачах динаміки механічних систем.
Перейдемо до точного визначення сплайнів.
Сплайном мінімального дефекту порядку r по заданому розбиттю Дh ={ih}?i=-? називається r-1 разів неперервно-диференціюєма функція Sr(t), яка на кожному інтервалі (ih, (i+1)h) (i=0, ±1, ±2, …) є многочленом степені не вище r.
Відмітимо, що на множині сплайнів порядку r (r ? 0) існує сплайн тотожно рівний нулю і сплайн тотожно рівний одиниці.
Звідси і із того, що добуток многочлена степені r на число б є многочлен тієї ж степені, якщо б ? 0 і тотожній нуль при б = 0, а також з того, що сума многочленів степені n ? r і m ? r є многочлен степені не вище r, отримуємо, що множина всіх сплайнів степені r по розбиттю Дh є лінійний простір.
Таким чином, якщо Sr(Дh) множина всіх сплайнів мінімального дефекту по розбиттю Дh, і
уr,i Sr(Дh) (i = 1, 2, …, n),
то лінійна комбінація функцій уr,i також буде лежати у множині Sr(Дh), тобто
Множина кубічних сплайнів - це множина всіх інтегралів від параболічних сплайнів, які можна записати у вигляді:
Сплайн Sr(t) називається інтерполяційним, якщо для функції x(t) він повністю співпадає зі значеннями функції в вузлах розбиття.
Якщо S3,k(t) aсимптотично співпадає з інтерполяційним (), то він називається майже інтерполяційним.
Задача визначення сплайну зводиться до визначення Ci.
Для зручності припустимо, що x(t) періодична функція. Це припущення зроблено для того, щоб не розглядати різні види граничних умов для сплайнів.
Якщо ми розглянемо розбиття вісі з вузлами в т. , то в якості періоду розглянемо T = nh, при цьому можна припустити, що:
.
Якщо в якості Ci розглядати суму:
і з такими коефіцієнтами визначимо значення сплайна в т. ih, то отримаємо, що S3(ih) = x(ih), тобто S3(t) - інтерполяційний сплайн.
Відмітимо, що коефіцієнти Ci можна отримати виходячи з інших міркувань. Якщо S3(t) інтерполює x(t) в точках ih, тоді значення сплайну і значення функції в цих точках співпадають.
Отримаємо систему з рівнянь та невідомих. В матричній формі:
Діагональне переважання для цієї матриці говорить про те, що для вирішення цієї системи можна використати метод прогонки або матричний спосіб.
Кожен з цих сплайнів задається явно. Якщо змінюється значення x(t) тільки в одній точці, то зміниться тільки цей елемент та декілька сусідніх, тобто цей сплайн є локальним.
1.2 Загальна характеристика об'єктно-орієнтованої мови Java
1.2.1 Генезис Java
Все програмування в тій чи іншій мірі пов'язане з керуванням складними задачами: складність вирішуваної проблеми накладається на складність системи, в якій вона вирішується. Саме через ці труднощі більшість програмних проектів закінчується невдачою. І до моменту створення мови Java ні одна з мов не була змодельована і створена в розрахунку на подолання складності розробки та підтримування програм. Звісно, багато рішень при створенні програм приймались з розрахунку на вирішення складностей, але при цьому завжди знаходилось ще щось, що вважалось досить важливим, щоб враховувати це при плануванні мови. Все це неминуче змушувало програмістів "битись головою об стіну" при зіткненні з проблемами. Наприклад, С++ створювався в розрахунку на ефективність та сумісність з С (щоб легко було переходити з цієї мови на С++). Обидва рішення, безперечно, корисні і стали одними з причин успіху С++, але також привели до додаткових труднощів, що не дозволило успішно втілити в життя деякі проекти. Або інший приклад: Visual Basic (VB) спочатку був прив'язаний до Basic, у якій не була закладена можливість розширення, із-за чого всі доповнення, створенні для VB, мають жахливий і складно підтримуваний синтаксис. З іншої сторони, С++, VB, Perl і інші мови, подібні Smalltalk, частково фокусувались на подоланні труднощів і, як результат, стали успішними у вирішення певних типів задач.
Творці Java із Sun, схоже, поруч с іншими цілями хотіли по можливості спростити роботу програміста. Вони наче говорили: "Ми хочемо, щоб ви могли швидше і простіше написати надійний код". Раніше такий намір приводив до того, що швидкодія програм залишала бажати кращого (хоча згодом ситуація покращилась). Однак такий підхід дивовижно подіяв на терміни розробки програм; для розробки еквівалентної програми на С++ необхідно в два рази чи ще більше людино-годин. Вже одне це приводить до економії колосальних грошей та безлічі часу, але Java не "застигає" в захопленні досягнутим. Творці мови йдуть далі, вбудовуючи підтримку технологій, які стали важливими в останній час (багатозадачність, мереживне програмування), у саму мову чи її бібліотек, що значно спрощує вирішення цих задач. Нарешті, Java енергійно береться за дійсно складні проблеми: платформно-незалежні програми, динамічна зміна коду і навіть безпека. Кожна з цих проблем в змозі затримати терміни здачі вашого проекту, а може легко стати неподоланною перешкодою. Таким чином, перспективи Java дивують: вона значно підвищує продуктивність роботи програмістів.
У всіх випадках - при створенні програм, командній розробці проектів, конструюванні інтерфейсів користувача для спілкування програми з споживачем, запуску програм на різних типах комп'ютерів, простому написанні програм, використовуючи Інтернет - Java розширює "полосу пропуску" інформації при комунікаціях між людьми.
1.2.2 Виконання 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.
1.2.3 Що таке JDK
Набір програм і класів JDK містить:
· компілятор javac із вихідного тексту в байт-коди; інтерпретатор java, який містить реалізацію JVM;
· спрощений інтерпретатор jre (в останніх версіях відсутній);
· програму перегляду апплетів appietviewer, що заміняє браузер;
· відладчик jdt;
· дизассемблер javap;
· програму архівації і стиснення 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 і викликались безпосередньо з цього архіву, його не треба розпаковувати.
Потім набор інструментальних засобів JDK був сильно перероблений.
Версія JDK 1.2 вийшла у грудні 1998 р. і містила вже 57 пакетів класів. В архівному вигляді цей файл розміром майже 20 Мбайт і ще окремий файл розміром більше0 17 Мбайт з упакованою документацією. Повна версія розташовується на 130 Мбайтах дискового простору, з них близько 80 Мбайт займає документація.
Починаючи з цієї версії, всі продукти технології Java власного виробництва компанія SUN стала називати Java 2 Platform, Standard Edition, скорочено J2SE, a JDK перейменувала в Java 2 SDK, Standard Edition (Software Development Kit), скорочено J2SDK, оскільки випускається еще Java 2 SDK Enterprise Edition і Java 2 SDK Micro Edition. До речі, сама компанія SUN часто користується і старої назвою, а в літературі утвердилась назва Java 2. Окрім 57 пакетів класів, обов'язкових на любій платформі і отримавших назву Core API, в Java 2 SDK vl.2 входять ще додаткові пакети класів, що називаються Standard Extension API. У версії Java 2 SDK SE, vl.3, яка вийшла в 2000 р., вже 76 пакетів класів, які складають Core API.
На теперішній час версія JDK 1.0.2 вже не використовується. Версія JDK 1.1.5 з графічною бібліотекою AWT вбудована в популярні браузери Internet Explorer 5.0 і Netscape Communicator 4.7, тому вона вкикористовується для створення апплетів. Технологія Java 2 широко використовується на серверах і в клієнт-серверних системах.
Окрім JDK, компанія SUN окремо розповсюджує ще й набір JRE (Java Runtime Environment).
1.2.4 Об'єктно-орієнтоване програмування в Java
Вся півстолітня історія програмування комп'ютерів, а може бути, і історія всієї науки - це спроба справитися зі складністю оточуючого світу. Задачі, що стають перед програмістами, робляться все більш нагромадженими, інформація, яку треба обробити, росте як сніговий ком. Ще недавно звичайним одиницями вимірювання інформації були кілобайти і мегабайти, а зараз уже говорять лише про гігабайти і терабайти. Як тільки програмісти пропонують більш-менш задовільне рішення запропонованих задач, тут же виникають нові, ще більш складні задачі. Програмісти вигадають нові методи, створюють нові мови. За півстоліття з'явилось декілька сотень мов, запропоновано безліч методів і стилів. Деякі методи і стилі стають загальноприйнятними і створують на деякий час так звану парадигму програмування.
1.2.5 Принципи об'єктно-орієнтованого програмування
Об'єктно-орієнтоване програмування розвивається вже більш двадцяти років. Існує декілька шкіл, кожна з яких пропонує свій набір принципів роботи з об'єктами і по-своєму висловлює ці принципи. Але є декілька загальноприйнятих понять. Перерахуємо їх.
1. Абстракція - опис кожної моделі відбувається у вигляді одного чи декількох класів (classes). Клас можна вважати проектом, зліпком, кресленням, по якому потім будуть створюватися конкретні об'єкти. Клас містить опис змінних і констант, що характеризують об'єкт. Вони називаються полями класу (class fields). Процедури, що описують поведінку об'єкта, називаються методами класу (class methods). Всередині класу можна описати и вкладені класи (nested classes) і вкладені інтерфейси. Поля, методи і вкладені класи першого рівня є членами класу (class members). Різні школи об'єктно-орієнтованого програмування пропонують різні терміни, ми використовуємо термінологію, прийняту в технології Java.
2. Ієрархія об'єктів давно використовується для їх класифікації. Особливо детально вона пророблена в біології. Все знайомі з сімействами, родами і видами. Ми можемо зробити опис своїх домашніх тварин (pets): кішок (cats), собак (dogs), корів (cows) і інших.
3. Модульність - цей принцип стверджує - кожний клас повинен складати окремий модуль. Члени класу, до яких не планується звертання зовні, повинні бути інкапсульовані.
4. Принцип KISS - самий основний, базовий і самий великий принцип програмування - принцип KISS - не вимагає в поясненні і перекладі: "Keep It Simple, Stupid!"
1.3 Принципи побудови графічного інтерфейсу
Є багато різноманітних графічних систем: MS Windows, X Window System, Macintosh. В кожній з них свої правила побудови вікон і їх компонентів: меню, полів введення, кнопок, списків, полос прокрутки. Ці правила складні і заплутані. Графічні API містять сотні функцій.
Для спрощення створення вікон і їх компонентів написані бібліотеки класів: MFC, Motif, OpenLook, Qt, Tk, Xview, OpenWindows і безліч других. Кожний клас такої бібліотеки описує відразу цілий графічний компонент, який керується методами цього і других класів.
В технології Java справа ускладнюється тим, що додатки Java повинні працювати в любій чи хоча б в багатьох графічних середовищах. Потрібна бібліотека класів, незалежна від конкретної графічної системи. В першій версії JDK задачу вирішили наступним чином: були розроблені інтерфейси, що містять методи роботи з графічними об'єктами. Класи бібліотеки AWT реалізують ці інтерфейси для створення додатків. Додатки Java використовують дані методи для розміщення і переміщення графічних об'єктів, зміни їх розмірів, взаємодії об'єктів.
Бібліотека класів Java, що заснована на peer-інтерфейсах, отримала назву AWT (Abstract Window Toolkit). При виведенні об'єкту, створеного в додатку Java і заснованого на peer-інтерфейсі, на екрані створюється парний йому (peer-to-peer) об'єкт графічної підсистеми операційної системи, який і відображається на екрані. Ці об'єкти тісно взаємодіють під час роботи додатку. Тому графічні об'єкти AWT в кожному графічному середовищі мають вид, характерний для цього середовища: в MS Windows, Motif, OpenLook, OpenWindows, скрізь вікна, створені в AWT, виглядають як "рідні" вікна.
Саме через таку реалізацію peer-інтерфейсів і других "рідних" методів, написаних, головним чином, на мові C++, доводиться для кожної платформи випускати свій варіант JDK.
У версії JDK 1.1 бібліотека AWT була перероблена. В неї добавлена можливість створення компонентів, повністю написаних на Java і що не залежать від peer-інтерфейсів. Такі компоненти стали називати "легкими" (lightweight) на відміну від компонентів, реалізованих через peer-інтерфейси, названих "важкими" (heavy).
"Легкі" компоненти скрізь виглядають однаково, зберігають заданий при створенні вид (look and feel). Більше того, додаток можна розробити таким чином, щоб після його запуску можна було обрати якийсь певний вид: Motif, Metal, Windows 95 чи який-небудь інший, і змінити цей вид в любий момент роботи.
Ця цікава особливість "легких" компонентів отримала назву PL&F (Pluggable Look and Feel) чи plaf.
Була створена велика бібліотека "легких" компонентів Java, яку назвали Swing. В ній були переписані всі компоненти бібліотеки AWT, так що бібліотека Swing може використовуватися самостійно, не дивлячись на те, що всі класи з неї розширюють класи бібліотеки AWT.
Бібліотека класів Swing поставлялась як доповнення до JDK 1.1. В склад Java 2 SDK вона включена як основна графічна бібліотека класів, що реалізує ідею "100% Pure Java", поруч з AWT.
В Java 2 бібліотека AWT значно розширена додаванням нових засобів малювання, виведення текстів і зображень, отримавши назву Java 2D, і засобів, які реалізують переміщення тексту методом DnD (Drag and Drop).
Окрім того, в Java 2 включені нові методи введення/виведення Input Method Framework і засоби зв'язку з додатковими пристроями введення/виведення, такими як світове перо чи клавіатура Бройля, названі Accessibility.
Все ці засоби Java 2: AWT, Swing, Java 2D, DnD, Input Method Framework і Accessibility склали бібліотеку графічних засобів Java, названу JFC (Java Foundation Classes).
1.3.1 Компонент і контейнер
Основне поняття графічного інтерфейсу користувача (ГІК) - компонент (component) графічної системи. На російській мові це слово має на увазі просто складову частину, елемент чого-небудь, але у графічному інтерфейсі це поняття значно конкретніше. Воно означає окремий, повністю визначений елемент, який можна використовувати в графічному інтерфейсі незалежно від інших елементів. Наприклад, це поле введення, кнопка, строчка меню, полоса прокрутки, радіокнопка. Саме вікно додатка - також його компонент. Компоненти можуть бути і невидимими, наприклад, панель, яка об'єднує компоненти, також є компонентом.
Ви не здивуєтесь, дізнавшись, що в AWT компонентом вважається об'єкт класу Component чи об'єкт всякого класу, що розширяє клас component. В класі component зібрані загальні методи роботи з любим компонентом графічного інтерфейсу користувача. Цей клас - центр бібліотеки AWT.
Кожний компонент перед виведенням на екран поміщається в контейнер (container). Контейнер "знає", як розмістити компоненти на екрані. Зрозуміло, в мові Java контейнер - це об'єкт класу Container чи всякого його розширення. Прямий спадкоємець цього класу - клас jcomponent - вершина ієрархії багатьох класів бібліотеки Swing.
Створивши компонент - об'єкт класу Component чи його розширення, необхідно додати його до попередньо створеного об'єкту класу container чи його розширення одним із методів add ().
Клас Container сам є невидимим компонентом, він розширює клас Component. Таким чином, в контейнер наряду з компонентами можна поміщати контейнери, в яких знаходяться якісь інші компоненти, досягаючи тим самим більшої гнучкості розташування компонентів.
Основне вікно додатка, яке активно взаємодіє з операційною системою, необхідно побудувати по правилам графічної системи. Воно повинно переміщатися по екрану, змінювати розміри, реагувати на дії миші та клавіатури. У вікні повинні бути, як мінімум, наступні стандартні компоненти.
· Строчка заголовку (title bar), з лівої сторони якої необхідно розмістити кнопку контекстного меню, а з правої - кнопки згортання і роззгортання вікна і кнопку закриття додатка.
· Необов'язкова строчка меню (menu bar) з випадаючими пунктами меню.
· Горизонтальна і вертикальна полоси прокрутки (scrollbars).
· Вікно повинно бути оточено рамкою (border), що реагує на дії миші.
Вікно з цими компонентами в готовому виді описане в класі Frame. Щоб створити вікно, достатньо зробити свій клас розширенням класу Frame.
1.3.2 JFreeChart
JFreeChart це безкоштовна Java бібліотека, яка спрощує розробникам відображати графіки професійної якості в своїх додатках. Проект JFreeChart був заснований у лютому 2000 року Девідом Гілбертом. Сьогодні JFreeChart є найбільш широко використовуваною графічною бібліотекою на базі Java, з версією 1.0.14, яка досягла більше 450 000 завантажень на сьогоднішній день. Цей проект продовжує розвиватися і підтримуватися Девідом Гілбертом, за участі великого товариства розробників.
Великий набір функцій JFreeChart включає в себе:
· послідовно і добре документований API, який підтримує широкий спектр типів діаграм;
· гнучку, що добре розширюється, конструкцію, як для серверних, так і для клієнтських додатків;
· підтримання багатьох типів вихідних форматів, в тому числі компонентів Swing, графічних файлів (в тому числі PNG і JPEG) і векторних форматів графічних файлів (включаючи PDF, EPS и SVG);
· JFreeChart є програмним забезпеченням з "відкритим кодом", чи, точніше, вільно розповсюдженим програмним забезпеченням. Вона розповсюджується на умовах GNU Lesser General Public Licence (LGPL), яка дозволяє використовувати його у власних додатках.
1.4 JAMA - бібліотека матриць на мові Java
JAMA (Java Matrix Library) - бібліотека функцій лінійної алгебри. Бібліотека створена MathWorks і NIST та є публічним надбанням. Вона призначена для забезпечення достатньою функціональністю для рутинних проблем, запакована таким чином, що є природною і зрозумілою для неспеціалістів. Немає ніякої гарантії, що майбутні версії JAMA будуть сумісні з поточною.
Сумісний матричний пакет, Jampack, також був розроблений у NIST та Університеті Мериленда. Два пакети виникли з необхідності оцінки альтернативних проектів для реалізації матриць на Java. JAMA базується на одному класі матриці у строго об'єктно-орієнтованій структурі. Jampack використовує більш відкритий підхід, який піддається розширенню користувачем. Як виявилось, для звичайних користувачів пакетів принципова різниця в синтаксисі матричних операцій.
Бібліотека існує в двох версіях: на мові Java (власне JAMA) і як бібліотека шаблонів на мові C++ (JAMA/C++). Версія на C++ використовує Template Numerical Toolkit, яка розроблена там же. Версія на Java виконує низькорівневі операції сама.
JAMA складається з шести класів: Matrix, CholeskyDecomposition, LUDecomposition, QRDecomposition, SingularValueDecomposition и EigenvalueDecomposition.
Клас Matrix забезпечує основні операції обчислювальної лінійної алгебри. Різноманітні конструктори створюють матриці з двомірних масивів подвійної точності з плаваючою комою. Різноманітні методи gets та sets забезпечують доступ до підматрицям і матричних елементів. Основні арифметичні операції включають додавання і множення матриць, нормування матриць. Також включений зручний методи виводу на екран матриці.
П'ять фундаментальних матричних розкладань, які складаються з пари чи трьох матриць, перестановка векторів, і тому подібне, дають результати у п'яти класах розкладання. Ці розкладання доступні класу Matrix для розрахунку рішення лінійних рівнянь, визначників, обернених матриць та інших функції матриць. Ці п'ять декомпозицій:
· Розкладання Холецького симетричних матриць, позитивно визначених матриць
· LU-розкладання (Гауса) прямокутних матриць
· QR-розкладання прямокутних матриць
· Розкладання по власним значенням обох симетричних і несиметричних квадратних матриць
· Сингулярне розкладання прямокутної матриці
На даний час JAMA має справу лише з дійсними матрицями. Очікується, що майбутні версії будуть також з комплексними матрицями. Створення такої версії було відкладене, оскільки важливі розробки не можуть бути зроблені, поки певні питання, що стосуються реалізації комплексних чисел в мові Java не будуть вирішені.
Оскільки JAMA не містить нічого, крім заголовкових файлів з шаблонами, вона не вимагає компіляції. Оскільки всі класи використовують шаблони, однаково легко використовувати матриці та вектори з елементами типу float, double чи описаних користувачем типів.
1.5 Огляд IDE засобів для програмування на Java
1.5.1 Порівняльна характеристика інтегрованих середовищ розробки
За більше ніж десятилітню історію мови Java, змінилось не одне покоління інтегрованих середовищ розробки (Integrated Development Environment -IDE)[1]. Еволюція IDE засобів обумовлена безліччю факторів, сукупність яких називається - інформаційні технології, що включають в себе програмну і апаратну складові, а також розвиток самої мови, яке відбувається не лише в глибину, оптимізація якихось можливостей, що ярко демонструють прихід нових бібліотек Swing замість застарівших AWT, але і "в ширину", це виникнення технологій JSP, більша інтеграція з СКБД і серверами додатків, підтримка технологій Spring, Hibernate і інше.
І якщо перші IDE засоби, представляли в сьогоденному понятті примітивний текстовий редактор, який слугував лише для набору початкових кодів, а всю іншу роботу, починаючи від компіляції і закінчуючи остаточною зборкою проекту приходилось виконувати вручну, то сьогоднішні сучасні, є фактично багатофункціональними пристроями, що беруть на себе не лише звичні функції але і ряд додаткових починаючи від автоматичного створення Javadoc, рефакторингу, профайлингу, UML-проектування, клієнта для підключення до любої СКБД і закінчуючи такими екзотичними, що не відносяться до процесу розробки, як перевірка орфографії.
Безумовно, що розплатою за всі ці "зручності", є підвищені вимоги до ресурсів комп'ютера. Існує думка, що 80% користувачів використовують можливості існуючого програмного забезпечення лише на 20%, це також можна спроектувати і на IDE-засоби. Так як всі їх переваги може оцінити лише програміст, який не один рік займається розробкою на відповідній технології. А початківцям складно оцінити адекватно той чи інший засіб, тому, як правило, його самостійний вибір відбувається по двом критеріям - інтуїтивна зрозумілість інтерфейсу і різноманітні одночасно - ресурсні характеристики, такі як завантаження, компіляція, запуск, займаємий об'єм ОЗУ. Адже на перших порах необхідні лише компілятор, відладчик, і безпосередньо сама Java-машина.
В таблиці 1.1 включені пакети програм, які є інтегрованими середовищами розробки. Окремі компілятори і відгадчики не згадуються.
Таблиця 1.1. Порівняння інтегрованих середовищ розробки
IDE |
Ліцензія |
Написана на Java |
Windows |
Linux |
Mac OS X |
Інші плат-форми |
GUI builder |
|
JDeveloper |
Пропіетарна OTN JDeveloper License (freeware) |
Так |
Так |
Так |
Так |
generic JVM |
Так |
|
jGRASP |
Пропіетарна (freeware) |
Так |
Так |
Так |
Так |
Ні |
||
JBuilder |
Пропіетарна |
Так |
Так |
Так |
Так |
Solaris |
Так |
|
JCreator |
Пропіетарна |
Ні |
Так |
Ні |
Ні |
Ні |
||
MyEclipse |
Пропіетарна |
Так |
Так |
Так |
Так |
Так |
||
Rational Application Developer |
Пропіетарна |
Так |
Так |
Так |
No |
Solaris, AIX |
Так |
|
Servoy |
Пропіетарна |
Невідомо |
Так |
Так |
Так |
Solaris |
Так |
|
Xcode Apple |
Пропіетарна |
Ні |
Ні |
Ні |
Так |
Так |
||
DrJava |
Ліберальна |
Так |
Так |
Так |
Так |
Solaris |
Ні |
|
BlueJ |
GPL2+GNU linking exception |
Так |
Так |
Так |
Так |
Solaris |
Ні |
|
Geany |
GPL |
Ні |
Так |
Так |
Так |
Solaris |
Ні |
|
Greenfoot |
GPL |
Так |
Так |
Так |
Так |
Solaris |
Ні |
|
IDE |
Ліцензія |
Написана на Java |
Windows |
Linux |
Mac OS X |
Інші платформи |
GUI builder |
|
KDevelop |
GPL |
Ні |
Ні |
Так |
Ні |
Solaris |
Невідомо |
|
Eclipse JDT IBM |
EPL |
Так |
Так |
Так |
Так |
Solaris |
Так |
|
NetBeans Oracle |
CDDL, GPL2 |
Так |
Так |
Так |
Так |
Solaris |
Так |
|
IntelliJ IDEA |
ALv2, пропіетарна |
Так |
Так |
Так |
Так |
Solaris |
Так |
1.5.2 NetBeans IDE - універсальне інтегроване середовище розробки додатків
NetBeans IDE - безкоштовне інтегроване середовище розробки з відкритим початковим кодом для розробників програмного забезпечення. Середовище надає всі засоби, необхідні для створення професійних десктоп додатків, корпоративних, мобільних і веб-додатків на платформі Java, а також C/C++, PHP, JavaScript, Groovy и Ruby.
Подобные документы
Розробка програми для моделювання роботи алгоритму Дейкстри мовою C# з використанням об’єктно-орієнтованих принципів програмування. Алгоритм побудови робочого поля. Програмування графічного інтерфейсу користувача. Тестування програмного забезпечення.
курсовая работа [991,4 K], добавлен 06.08.2013Загальна характеристика методів проектування та документації додатків. Розробка інтерфейсу програми для медичного діагностичного центру. Вибір архітектури. Описання логічної структури програми. Розробка структури бази даних проекту, полів таблиць.
курсовая работа [2,0 M], добавлен 21.08.2015Розробка програми для управління навчальним процесом студентської групи вищого навчального закладу. Об’єктно-орієнтоване проектування об’єктів групи. Створення мови програмування Java. Побудова графічного інтерфейсу. Робота з невеликими базами даних.
курсовая работа [935,3 K], добавлен 21.12.2013Аналіз технічного забезпечення, вибір інструментального програмного забезпечення та середовища розробки програм. Створення класів для реалізації необхідних функцій для роботи програмного засобу. Розробка інтерфейсу для користувача та лістинг програми.
курсовая работа [343,9 K], добавлен 24.08.2012Розробка програми для автоматизованого розрахунку продажів у крамниці спорттоварів. Розробка концептуальної та логічної моделей бази даних. Автоматизація обробки інформації. Ядро програмного прикладного забезпечення. Розробка візуального інтерфейсу.
курсовая работа [2,3 M], добавлен 26.12.2014Проектування інтерфейсу програми. Вимоги до продукту. Вхідні дані на розробку автоматизованої системи. Вибір середовища програмування. Розробка структури бази даних. Функціональна та логічна структура програми. Розробка структури таблиць бази даних.
курсовая работа [43,1 K], добавлен 30.06.2015Створення програми для роботи з веб-камерою з автоматичним визначенням встановленої камери на комп'ютері. Характеристика апаратної конфігурації програми. Опис мови і середовища програмування. Розробка алгоритму, інструкції для програміста та користувача.
курсовая работа [1,2 M], добавлен 26.07.2013Оцифровування карти за допомогою програмного продукту ArcGis. Порівняння методів інтерполяції за допомогою програмних продуктів Surfer та ArcGis. Згладжування отриманих сіткових даних за допомогою сплайнів і фільтрації. Застосування сіткових чисел.
курсовая работа [2,1 M], добавлен 31.01.2014Створення програми для виконання найпростіших функцій календаря за допомогою Borland DELPHI 2007. Аналіз процесу обробки інформації і побудова функціональних діаграм. Розробка інтерфейсу користувача, форм вводу-виводу інформації, основних алгоритмів.
курсовая работа [1,3 M], добавлен 01.06.2013Розробка алгоритму по виявленню і локалізації особи на зображенні у візуальному середовищі Delphi. Розробка програми по виділенню областей кольору шкіри особи, крапок, ліній і яскравості зображення. Опис структури програми і інтерфейсу користувача.
курсовая работа [3,9 M], добавлен 07.01.2014