Рейтинг користувача: 1 / 5

Активна зіркаНеактивна зіркаНеактивна зіркаНеактивна зіркаНеактивна зірка
 

СТВОРЕННЯ DLL-БІБЛІОТЕКИ. СТВОРЕННЯ КОМПОНЕНТІВ WINDOWS FORMS

МЕТОДИЧНІ ВКАЗІВКИ

до лабораторної роботи № 4

з дисципліни «Крос-платформенне програмування та хмарні сервіси»

для магістрів галузі знань 12 «Інформаційні технології»

спеціальності 124 «Системний аналіз»

спеціалізації «Системи і методи прийняття рішень»

 

Затверджено

на засіданні кафедри інформаційних систем та мереж

Протокол №01 від 25.08.2016 р.

Львів-2016


 

Створення DLL-бібліотеки. Створення компонентів WindowsForms: Методичні вказівки до лабораторної роботи № 4 / Укл.: В.А. Висоцька, Л.В. Чирун. – Львів: Видавництво Національного університету ”Львівська політехніка”, 2016. – 44 с.

Укладачі                     Висоцька В.А., к.т.н., доцент

                                      Чирун Л.В., к.т.н, доцент

 

 

Відповідальний за випуск Литвин В.В., д.т.н., професор.

Рецензенти                 Берко А.Ю., д.т.н., професор.

                                      Верес О.М., к.т.н, доцент.


Метою роботи є полягає у виконання наступних пунктів

1. Створення DLL-бібліотеки

2. Створення рішення з кількох проектів (модулів)

3. Створення DLL-бібліотеки як окремого рішення.

4. Вивчення структури збірки, метаданих збірки

5. Створення Windows Forms та елементів керування

6. Обробка подій від клавіатури

7. Компонент NumericUpDown – регулятор чисел

Теоретичні відомості

  1. КОМПОНЕНТНА ІДЕОЛОГІЯ

1.1. Поняття крос-платформності, її типи та крос-платформного програмування

Крос-платформність (багатоплатфо́рмність) можливість виконувати програмне забезпечення (ПЗ) без переписування його коду на різних апаратних платформах та під управлінням різних операційних систем (інакше кажучи, на платформах різних ОС).

Платформа (комп'ютерна) – апаратний та/або програмний комплекс, який служить основою для різних обчислювальних систем.

Проаналізуємо стан корпоративного програмного середовища типової організації:

                 основна маса комп'ютерів базується на апаратній платформі Intel або AMD, можливо є кілька комп'ютерів Compaq, Sun тощо;

                 основна операційна система, встановлена на робочих місцях користувачів – MSWindows(91-93%);

                 основний Web-серверApache (61-75%)на платформі UNIX;

Веб-сервер це сервер, що приймає HTTP-запити від клієнтів, зазвичай веб-браузерів, і видає їм HTTP-відповіді, зазвичай разом з HTML-сторінкою, зображенням, файлом, медіа-потоком або іншими даними. Веб-сервери – це основа Всесвітньої павутини. Веб-сервером називають як програмне забезпечення, що виконує функції веб-сервера, так і безпосередньо комп'ютер, на якому це ПЗ працює.

Клієнт передає веб-серверу запити на отримання ресурсів, позначених URL-адресами. Ресурси це HTML-сторінки, зображення, файли, медіа-потоки або інші дані, які необхідні клієнту. У відповідь веб-сервер передає клієнтові запитані дані. Цей обмін відбувається по протоколу HTTP.В якості клієнтів для звернення до веб-серверів можуть використовуватися різні програми та пристрої:

  • веб-браузер, що працює на настільному комп'ютері або переносному пристрої (наприклад, кишеньковому ПК);
  • різноманітні програми, що самостійно звертаються до веб-серверів для отримання оновлень або іншої інформації (наприклад, антивірус може періодично запитувати у певного веб-сервера оновлення своїх баз даних);
  • мобільний телефон, який отримує доступ до ресурсів веб-сервера за допомогою протоколу WAP;
  • інші цифрові пристрої або побутова техніка.

Деякі відомі веб-сервери:

  • Apache вільний веб-сервер, найчастіше використовуваний в UNIX-подібних операційних системах;
  • IIS від компанії Microsoft, розповсюджуваний з серверними ОС сімейства Windows;
  • Nginx вільний веб-сервер, розроблювальний Ігорем Сисоєва з 2002 року і користується великою популярністю на великих сайтах;
  • Lighttpd вільний веб-сервер;
  • Google Web Server веб-сервер, заснований на Apache і доопрацьований компанією Google;
  • Смола вільний веб-сервер застосувань;
  • Cherokee вільний веб-сервер, керований тільки через веб-інтерфейс;
  • Коренева система веб-сервер, написаний на Java;
  • THTTPD простий, маленький, швидкий і безпечний веб-сервер.

                 використовувані поштові програмилідер MS Outlook (40%);

                 використовуваний інтернет-браузер;

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

Кросбраузерність властивість сайту відображатися та працювати у всіх популярних браузерах ідентично. Під ідентичністю розуміється відсутність розвалів верстки і здатність відображати матеріал з однаковим ступенем читабельності. Поняття «кросбраузерність» дуже часто плутають з попиксельною відповідністю, що насправді є різними поняттями.

Цей термін почали використовувати під час браузерних війн, що відбувалися в кінці 90-х років. У цьому контексті термін відноситься до сайтів, які працюють як в Internet Explorer, так і в Netscape Navigator. У той час виробники стали впроваджувати власні функції для браузерів, що призвело до деяких особливостей відображення і концептуальним відмінностей в роботі.

Війни браузерів. У середині 90-х ринок браузерів монополізував Netscape Navigator. У 1996 році компанія Microsoft випустила Windows 95 OSR2, що включала Internet Explorer 3.0. Цей момент можна вважати початком війни браузерів, що закінчилася у 1999 році повним падінням Netscape і тріумфом Internet Explorer, що зайняв більше 95% ринку.

Втім, гинучи, Netscape завдала «удар у спину» Microsoft, випустивши вихідний код свого браузера під вільною ліцензією MPL (Mozilla Public License). На його основі (код був написаний заново) були створені нові браузери Mozilla Suite та Mozilla Firefox. Останній поступово набирав популярність.

Війна браузерів була б виключно комерційною справою корпорацій, якби основним прийомом в боротьбі не стало додавання до браузера специфічних, нестандартних можливостей. Найбільші відмінності виникали у підтримці JavaScript – мови сценаріїв, що додає інтерактивність документам. У результаті багато документів було «оптимізовано» для конкретного браузера і абсолютно не читалися в іншому.

З появою на ринку у 2003 році браузера Opera , а потім у 2004 році – Mozilla Firefox, які з тих пір повільно, але планомірно набирали популярність, частка IE почала знижуватися, він перестав бути монополістом.

Насьогодні за даними StatCounter розподіл популярності інтернет-браузерів серед українських інтернет-користувачів має наступний вигляд (див. табл.). Дещо здивувала така статистика по Opera, але при подальшому вивченні матеріалів різних статистичних даних з'ясувалося, що в показнику по Opera підсумовувалися показники за версіями Opera РС та показники Opera Mini. Популярність Opera Mini швидше обумовлена різким зростанням попиту на всілякі мобільні пристрої в Україні за останні 2 роки. Що слід зауважити стосовно IE і питання, яке багато кого цікавить, – коли ж він нарешті помре. Показники по IE значно не змінилися і, скоріше за все, сильно не змінюватимуться доти, доки IE буде передвстановленим браузером в операційній системі Windows.

Таблиця – Статистика використання Інтернет-браузерів по Україні

Браузер 2009 2010 січень 2011
Opera 42.96% 35.40% 35.45%
Firefox 27.01% 32.89% 33.41%
IE 26.53% 21.32% 17.40%
Google Chrome 2.38% 8.48% 12.15%
Інші 1,12% 1,91% 1,59

На сайті http://korrespondent.net/tech/406795-issledovateli-opredelili-samyj-populyarnyj-brauzer-sredi-ukraincev наведено статистику популярності браузерів на основі тримісячного дослідження, проведеного компанією Universal Studio Ukrainе серед різних верств населення в Україні. Дослідження проводилося з грудня 2007 по березень 2008 року, індексувалася активність користувачів всесвітньої мережі в залежності від віку та досвідченості у користуванні інтернетом. Отримані результати розділили на три категорії: недосвідчені користувачі, рядові користувачі та досвідчені користувачі інтернету.

У першу категорію потрапили користувачі, вік яких – 13-20 та 40-45 років, і які лише недавно підключилися до інтернету. Виявилося, що найпопулярнішим браузером серед даної категорії населення є Internet Explorer (74,5%), на другому місці опинився Firefox (13,4%), далі йде Opera (11,2%) та інші 0,9%.

У другу категорію потрапили рядові користувачі, переважний вік яких 17-40 років. Це люди з чималим досвідом використання ресурсів Інтернету, які знають, що і де шукати і половина хоч би раз здійснювали покупки в інтернеті. Виявилося, що серед даної категорії населення найпопулярнішим браузером є Firefox (48,8%), за ним йде Opera (27,4%), далі IE (23,1%) та інші (0,7%).

Що стосується досвідчених користувачів з переважним віком 25-40 років, серед яких чимало власників сайтів, адміністраторів, веб-дизайнерів і співробітників веб-студій, то вони надають перевагу Firefox (44,7%), за ним йде Opera (42,8% ), IE (11,9%), інші (0,6%).

А ось загальна статистика використання браузерів виглядає так: IE (40%), Firefox (35,2%), Opera (24%), інші браузери 0,8%.

                 основне офісне програмне забезпечення MS Office;

                 використовувані корпоративні СУБД – “велика трійка” Oracle, IBM та MS SQL Server, рішення для малих та середніх застосувань – MS Access, MySQL та PostgreSQL;

Система керування базами даних (СКБД) сукупність програмних і лінгвістичних засобів загального або спеціального призначення, що забезпечують управління створенням і використанням баз даних. Деякі відомі СУБД:

Oracle Database– об'єктно-реляційна система керування базами даних компанії Oracle.

IBM DB2 – сімейство систем керування реляційними базами даних, що випускаються корпорацією IBM.

Microsoft SQL Server– система керування реляційними базами даних, розроблена корпорацією Microsoft.

Microsoft Office Access реляційна СКБД корпорації Microsoft. Має широкий спектр функцій, включаючи зв'язані запити, зв'язок із зовнішніми таблицями і базами даних. Завдяки вбудованій мові VBA, в самому Access можна писати програми, що працюють з базами даних.

PostgreSQL – вільна об'єктно-реляційна система керування базами даних.

MySQL – вільна система керування базами даних. Розробку та підтримку MySQL здійснює корпорація Oracle.

Крім того, на комп’ютерах типової організації може бути встановлене наступне програмне забеспечення:

                 системи документообігу;

                 графічні редактори;

                 системи автоматизації проектування тощо.

 

Аппаратні та програмні платформи для мобільних пристроїв

Сьогодні в абсолютній більшості мобільних пристроїв використовуються процесори архітектури ARM (Advanced RISC Machine). Архітектура (але не самі процесори) розробляється британською компанією ARM Limited. Власну реалізацію архітерктури ARM мають Apple, DEC, NVIDIA, Samsung, Quallcomm.

98% мобільних телефонів, смартфонів, планшетів на платформі ARM.

90% вбудованих систем теж ARM (цифрові плеєри, мережеве обладнання, ігрові приставки, комп'ютерні комплектуючі тощо).

Практично всі популярні ОС мають реалізацію для ARM:

                 iPhone OS/IOS, Mac OS X (Apple);

                 Android (Google);

                 Windows Phone, Windows 8 (Microsoft);

                 Bada (Samsung);

                 Symbian (Nokia та інші);

                 PalmOS (Palm/Hewlett-Packard) [ПРОЕКТ ЗАКРИТО];

                 Linux;

                 BSD;

                 Solaris тощо.

Популярність мобільних ОС. Google та Apple очевидні лідери на ринку смартфонів (див. таблицю). У другому кварталі 2011 року загальна частка IOS та Android подвоїлася і склала 62% проти трохи більше 31% у другому кварталі 2010 року. Аналітики Gartner відзначають, що обидві платформи мають приємні інтерфейси, пропонують потрібні споживачам застосування і зростаюче портфоліо сервісів від самих виробників операційних систем.

Таблиця – Світові продажі смартфонів по частках мобільних ОС

Мобільні ОС 2-й кв. 2011 2-й кв. 2010
Android 43.4 % 17.2 %
Symbian 22.1 % 40.9 %
iOS 18.2 % 14.1 %
Research In Motion 11.7 % 18.7 %
Bada 1.9 % 0.9 %
Microsoft 1.6 % 4.9 %
Інші 1.0 % 3.2 %

Крос-платформеність та ії типи

З усьго цього стає зрозуміло, що поняття кросплатформності може використовуватися на різних абстрактних рівнях структури компьютерної системи:

                 апаратної платформи;

                 операційної системи;

                 мови програмування;

                 середовища виконання;

                 прикладних програм.

Крос-платформеність на рівні апаратної платформи

Апаратна платформанижній шар багаторівневої організації обчислювальної системи (апаратура, операційна система, прикладне програмне забезпечення), на який спираються ОС та прикладне ПЗ. Апаратні платформи відрізняються одна від одної архітектурою центрального процесора і використовуваними шинами зв'язку функціональних блоків.

Основні апаратні платформи:

                 платформи на базі процесорів Intel та їх аналогів (AMD);

                 високопродуктивні сервера та робочі станції SUN (на базі процесорів SunSparc);

                 високопродуктивні сервера HP (на базі RISC-процесорів);

                 платформи Apple.

Кожній апаратній платформі відповідають сумісні з нею операційні системи та прикладні програми, які можуть на ній запускатися.

Відомі платформи ОС:

                 Microsoft Windows — узагальнююча назва операційних систем, розроблених корпорацією Microsoft (див. схему Родинне дерево Windows”).

Перші версії були не повноцінними операційними системами, а лише оболонками до ОС MS DOS.Сімейство Windows 9х вже є повноцінними операційними системами та не потребують для своєї роботи підтримки з боку MSDOS. Підвищені вимоги до зворотньої сумісності (можливість виконання програм, написаних для MSDOS та ранніх версій Windows) призвели до компромісів в архітектурі, що вплинуло на стабільність Windows цього сімейства.

Windows NT була розроблена «з нуля», розвивалася окремо від інших ОС сімейства Windows. Із самого початку Windows NT позиціонувалась не на домашнє використання, а як надійне рішення для робочих станцій (Windows NT Workstation) та серверів (Windows NT Server). Це дозволяло не звертати значної уваги на зворотню сумісність. ОС сімейства Windows NT працювали на процесорах з архітектурою IA32 та деяких менших RISC-процесорів: Alpha, MIPS (до версії 2000, що вийшла лише у версії для IA32).

Windows XP є розвитком Windows 2000 Professional. Назва XP (походить від англ. experience – досвід, враження, професійний) увійшла до практики використання, як професійна версія. На відміну від Windows 2000, Windows XP є виключно клієнтською системою. Її серверним варіантом є випущена пізніше система Windows Server 2003, побудовані на основі одного і того ж ядра ОС.

Windows Vista — версія Microsoft Windows NT, використовується на персональних комп'ютерах, представлена у варіантах для 64- та для 32-розрядних процесорів.

Windows 7 — назва найновішої версії, котра менше, ніж через три роки після випуску попередньої комерційно невдалої ОС Windows Vista.Всі варіанти Windows 7, крім найбільш спрощених, працюють як на 32-бітній, так і на 64-бітній платформах.

Примітка. IA32 (Intel Architecture 32, x86 або 80x86) загальна назва мікропроцесорної архітектури, яка була вперше реалізована в процесорах компанії Intel, а потім інших виробників – AMD, VIA, Transmeta, IDT тощо. Сьогодні домінує на ринку настільних і мобільних комп'ютерів та малих серверів.

                 Unixсімейство переносимих багатозадачних та багато­користувацьких операційних систем(див. схему Геніалогічне дерево UNIX-систем).

Перша система UNIX була розроблена у 1969 році в підрозділі Bell Labs компанії AT&T. З того часу була створена велика кількість різних UNIX-систем. Юридично лише деякі з них мають повне право називатися «UNIX»; решта ж, хоча і використовують подібні концепції та технології, поєднуються терміном «UNIX-подібні» (англ. UNIX-like).

Сьогодні  UNIX-системи використовуються в основному на серверах, а також як вбудовані системи для різного устаткування. На ринку ОС для робочих станцій та домашнього застосування лідером є Microsoft Windows, UNIX займає тільки друге (Mac OS X), третє (GNU / Linux) і багато наступні місця.

UNIX-системи мають велику історичну важливість, оскільки завдяки їм поширилися деякі популярні сьогодні концепції і підходи в області ОС і програмного забезпечення. Також, в ході розробки Unix-систем був створений мова Сі.

Серед прикладів відомих UNIX-подібних операційних систем: BSD, Solaris, Linux, Android, MeeGo, NeXTSTEP, Mac OS X, Apple iOS.

BSD (Berkeley Software Distribution) система розповсюдження програмного забезпечення в початкових кодах, створена для обміну досвідом між навчальними закладами. Особливістю пакетів ПЗ BSD була спеціальна ліцензія BSD, яку коротко можна охарактеризувати так: весь вихідний код власність BSD, всі правки власність їх авторів.

Зараз термін BSD найчастіше вживається як синонім BSD-UNIX загальної назви варіантів UNIX, що сходять до дистрибутивів університету Берклі. До сімейстава BSD належать: NetBSD, FreeBSD, OpenBSD, ClosedBSD, MirBSD, DragonFly BSD, PC-BSD, DesktopBSD, SunOS, TrueBSD, Frenzy, Ultrix та частково Darwin (ядро Mac OS X).

Solaris комп'ютерна операційна система, розроблена компанією Sun Microsystems, яка нині належить Oracle Corporation. Хоча Solaris – це ОС з закритим вихідним кодом, більша його частина відкрита та опублікована в проекті OpenSolaris.

Просто Linux або GNU/Linux Unix-подібна операційна система, створена та поширювана згідно з моделлю розробки вільного та відкритого програмного забезпечення. На відміну від інших ОС, Linux не має єдиної «офіційної» комплектації, а поширюється (найчастіше безкоштовно) у вигляді ряду різних готових дистрибутивів, які мають свій набір прикладних програм і вже налаштованих під конкретні потреби користувача.

Android портативна (мережева) операційна система для комунікаторів, планшетних комп'ютерів, електронних книжок, цифрових програвачів, наручних годинників, нетбуків та смартбуков, заснована на ядрі Linux.

OS X (до версії 10.7 Lion називалася Mac OS X) пропріетарна операційна система від Apple. OS X входить в сімейство операційних систем OS X, до якого відноситься і Apple, IOS. Також, OS X є наступницею Mac OS 9 - останньої версії «класичної» Macintosh Operating System (Mac OS). OS X друга за популярністю у світі операційна система. Її ринкова частка в сегменті настільних комп'ютерів в лютому 2012 року склала 6,92%.

iOS (до 2010 року iPhone OS) мобільна операційна система, що розробляється і випускається американською компанією Apple. Була випущена в 2007 році, спочатку для iPhone та IPod Touch, пізніше - для таких пристроїв, як IPAD і Apple TV. На відміну від Windows Phone і Google Android, випускається тільки для пристроїв, вироблених фірмою Apple.

Інтерфейс користувача IOS заснований на концепції прямого маніпулювання з використанням жестів мультитач. Елементи керування інтерфейсом складаються з повзунків, перемикачів і кнопок.

IOS розроблена на основі Mac OS X і використовує той же POSIX-сумісний набір основних компонентів Дарвіна.

Переносимість операційних систем. Сучасні ОС часто є крос-платформними. Так, при розробці Windows NT переносимість була однією з її першочергових завдань, за приклад були взяті ОС Unix та Mach. Кількість платформ, для яких існували релізні версії ОС сімейства Windows NT, вражає: Intel x86, MIPS , PowerPC, DEC Alpha, Itanium та AMD x86-64. Незалежними виробниками комп'ютер-них систем були також розроблені версії Windows NT для архітектур Clipper та SPARC, однак ці версії не були випущені як самостійні програмні продукти.

ОС з відкритим кодом, такі як NETBSD, Linux, FREEBSD, AROS, можуть працювати на декількох різних платформах, найчастіше це x86, m68k, POWERPC, Alpha, AMD64, SPARC. Операційна система NETBSD вважається самою переносною, вона портована на більшість існуючих платформ.

Емуляція

Якщо програма не призначена для виконання (запуску) на певній платформі, але для цієї платформи існує емулятор платформи, базової для даної програми, то програма може бути виконана в середовищі емулятора.

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

Крос-платформність на рівні ОС

Платформа ОС являє собою загальну організацію виконання прикладних програм, задаючи, наприклад, порядок запуску програми, схему використання нею адресного простору, зафіксовані в архітектурі операційної системи, плюс – інтерфейс для програмування застосувань (API), на рівні операційної системи.

При розгляді сумісності, або подібності, на рівні ОС, наприклад, системних викликів, файлових систем та користувацького середовища, при порівнянні споріднених ОС (наприклад, UNIX) або сімейства, наприклад, Microsoft Windows, йдеться про сумісність на рівні API операційної системи, наприклад, в рамках сімейства ОС, а не абстрактного поняття «платформи».

Крос- платформні мови програмування

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

 
   

Програма на компільованій мові за допомогою компілятора (спеціальної програми) перетворюється (компілюється) в машинний код (набір інструкцій) для даного типу процесора і далі збирається в виконуваний модуль. Іншими словами, компілятор переводить вихідний текст програми з мови програмування високого рівня в двійкові коди інструкцій процесора.

Якщо програма написана на скриптовій мові, то інтерпретатор безпосередньо виконує (інтерпретує) вихідний текст без попереднього перекладу. При цьому програма залишається написаною на вихідній мові й не може бути запущена без інтерпретатора. Процесор комп'ютера, у цьому контексті, можна назвати інтерпретатором для машинного коду.

Поділ на компільовані та інтерпретовані мови є умовним, бо для будь-якої традиційно компильованої мови, як, наприклад, Паскаль, можна написати інтерпретатор. Крім того, більшість сучасних «чистих» інтерпретаторів не виконують конструкції мови безпосередньо, а компілюють їх в деяке високорівневе проміжне представлення (наприклад, з разименованія змінних і розкриттям макросів).

Для будь-якої мови, що інтерпретується, можна створити компілятор – наприклад, мова Лісп, спочатку була інтерпретованою мовою, може компілюватися без будь-яких обмежень. Створюваний під час виконання програми код може так само динамічно компілюватися під час виконання.

Як правило, скомпільовані програми виконуються швидше і не вимагають для виконання додаткових програм, оскільки вже переведені на машинну мову. Разом з тим, після кожної зміни тексту програми потрібно її перекомпілювати, що уповільнює процес розробки. Крім того, скомпільована програма може виконуватися тільки на тому ж типі комп'ютерів і, як правило, під тією ж операційною системою, на яку був розрахований компілятор. Щоб створити виконуваний файл для машини іншого типу, потрібна нова компіляція.

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

Однак інтерпретовані програми виконуються помітно повільніше, ніж компільовані, крім того, вони не можуть виконуватися без програми-інтерпретатора.

Деякі мови, наприклад, Java і C #, знаходяться між компільованих та інтерпретуються. А саме, програма компілюється не в машинну мову, а в машинно-незалежний код низького рівня, байт-код. Далі байт-код виконується віртуальною машиною. Для виконання байт-коду зазвичай використовується інтерпретація, хоча окремі його частини для прискорення роботи програми можуть бути трансльовані в машинний код безпосередньо під час виконання програми за технологією компіляції «на льоту» (Just-in-time compilation, JIT). Java байт-код виконується віртуальною машиною Java (Java Virtual Machine, JVM), байт-код для C # – Common Language Runtime.

Подібний підхід у деякому сенсі дозволяє використовувати плюси як інтерпретаторів, так і компіляторів. Слід згадати, що є мови, мають і інтерпретатор, і компілятор (Форт).

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

Мови C, С++, PureBasic та FreePascalкрос-платформні мови на рівні компіляції, тобто для цих мов існують компілятори під різні платформи.

Історична довідка. На початку 70-х років Деніс Рітчі (Dennis Ritchie), працівник компанії Bell Laboratories, займався розробкою операційної системи UNIX. Для цього Рітчі була потрібна мова, яка б бути забезпечувала ефективне керування апаратними засобами та одночасно створення компактних, швидко працюючих програм. Традиційно такі потреби програмістів задовольняв ассемблер, який тісно пов’язаний з внутрішньою машинною мовою комп’ютера. Однак ассемблер – це мова низького рівня, він прив’язаний до відповідного типу процесора і враховують його особливості, тому для перенесення програми на асемблері на іншу апаратну платформу її потрібно майже цілком переписати. ОС UNIX призначалася для робота на комп’ютерах різих типів. Рітчі потребував мови, що поєднувала б у собі характерну для мов низького рівня ефективність та можливість доступа до апаратних засобів з більш загальним характером та можливістю перенесення (у 70-ті роки це називалося мобільністю), що властиві мовам високого рівня. Тому на основі існуючих на той час старих мов програмування – BCPL та B Рітчі створив мову С.

Вперше в історії мова С була реалізована на комп’ютері DEC PDP-11 у 1972 році. Насьогодні практично всі нові операційні системи написані на С або на С++. Протягом двох наступних десятиліть С став доступним для більшості комп’ютерів. С незалежна від апаратних засобів. В кінці 70-х років С розвився у те, що зараз відносять до “традиційного С”, “класичного С” або “С Керніана та Рітчі” (публікація видавництвом Prentice-Hall книги Кернігана та Рітчі “Мова програмування С” звернула широку увагу до цієї мови).

Мови скриптів PHP, ActionScript, Perl, Python, Tcl та Rubyкрос-платформні мови, що інтерпретуються, їх інтерпретатори існують для багатьох платформ.

Java та C#крос-платформні мови на рівні виконання, тобто їх виконувані файли можна запускати на різних платформах без попередньої перекомпіляції. Це забезпечує двох-етапна компіляція через проміжний код, для виконання якого в Java використовується віртуальна машина (JRE), а в C# загальномовне середовища програмування CLR.

Не менш важливі для крос-платформності стандартизовані бібліотеки часу виконання. Зокрема, стандартом стала бібліотека мови С (це опис програмного інтерфейсу, а не справжня бібліотека, придатна для використання в процесі компіляції). З великих кроссплатформенних бібліотек – Qt, GTK+, FLTK, STL, Boost, OpenGL, SDL, OpenAL, OpenCL.

Qt (вимовляється «к'ют») крос-платформний інструментарій розробки ПЗ на мові C++. Є також «прив'язки» до багатьох інших мов програмування: Python – PyQt, PySide; Ruby QtRuby; Java Qt Jambi; PHP PHP-Qt тощо. Дозволяє запускати написане за його допомогою ПЗ в більшості сучасних ОС шляхом простої компіляції програми для кожної ОС без зміни початкового коду. Включає в себе всі основні класи, які можуть знадобитися при розробці прикладного ПЗ, починаючи від елементів графічного інтерфейсу та закінчуючи класами для роботи з мережею, базами даних і XML. Qt є повністю об'єктно-орієнтованим, легко розширюваним і підтримує техніку компонентного програмування. Існують версії бібліотеки для Microsoft Windows, систем класу UNIX з графічною підсистемою X11, iOS, Android, Mac OS X, Microsoft Windows CE, QNX, Linux-систем, що вбудовуються, та платформи S60. У даний момент розглядається можливість впровадження підтримки Qt в Windows Phone. Також йде портування на Haiku.

GTK+ (скорочення від GIMP ToolKit) крос-платформна бібліотека елементів інтерфейсу. Поряд з Qt є однією з двох найбільш популярних насьогодні бібліотек для X Window System. Спочатку була частиною графічного редактора GIMP, потім розвинулася в окремий проект і отримала помітну популярність. GTK + вільне ПЗ, яке розповсюджується на умовах GNU LGPL, що дозволяє створювати як вільне, так і пропрієтарне ПЗ з використанням бібліотеки. GTK + є офіційною бібліотекою для створення графічного інтерфейсу проекту GNU.

FLTK (Fast, Light Toolkit) – багато-платформна бібліотека інструментів з відкритим вихідним кодом (ліцензія LGPL) для побудови графічного інтерфейсу користувача (GUI). FLTK почав розроблятися як заміна бібліотеці XForms, а пізніше був портований на Mac OS та Windows. FLTK з'явився раніше, ніж інші популярні бібліотеки для створення GUI, але був практично невідомий до 1998 року.

Стандартна бібліотека шаблонів STL (Standard Template Library) набір узгоджених узагальнених алгоритмів, контейнерів, засобів доступу до їхнього вмісту і різних допоміжних функцій в C++. До включення в стандарт C++ бібліотека STL була сторонньою розробкою, спочатку фірми HP, а потім SGI. Стандарт мови не називає її «STL», оскільки ця бібліотека стала невід'ємною частиною мови, проте багато людей досі використовують цю назву, щоб відрізняти її від решти частини стандартної бібліотеки (потоки введення/виведення (iostream), підрозділ С та ін.). Архітектура STL розроблена Олександром Степановим і Менгом Лі.

Крос- платформні середовища виконання

Віртуальна машина JRE (Java Runtime Environment) на платформі Java компанії Sun Microsystems (нині належить Oracle). JRE доступні для багатьох платформ (Windows, Mac OS, Unix), звідси принцип «написано одного разу, запускається скрізь» (write once, run anywhere).

Java Virtual Machine (скорочено Java VM, JVM) віртуальна машина Java основна частина виконуючої системи Java, так званого Java Runtime Environment (JRE). Віртуальна машина Java інтерпретує і виконує байт-код Java, попередньо створений з вихідного тексту Java-програми компілятором Java (javac). JVM може також використовуватися для виконання програм, написаних на інших мовах програмування.

Java Runtime Environment (JRE) мінімальна реалізація віртуальної машини, необхідна для виконання Java-застосувань, без компілятора та інших засобів розробки. Складається з віртуальної машини - Java Virtual Machine і бібліотеки Java-класів. JRE поширюється вільно і для більшості платформ може бути завантажена з сайту Oracle. Засоби розробки разом з JRE входять в JDK.

Java Development Kit (JDK) – безкоштовно поширюваний компанією Oracle Corporation (раніше Sun Microsystems) комплект розробника застосувань на мові Java, що включає в себе компілятор Java (javac), стандартні бібліотеки класів Java, приклади, документацію, різноманітні утиліти та виконавчу систему Java (JRE). До складу JDK не входить інтегроване середовище розробки на Java, тому розробник, що використовує тільки JDK, змушений використовувати зовнішній текстовий редактор і компілювати свої програми через утиліти командного рядка. Всі сучасні інтегровані середовища розробки застосувань на Java, такі, як NetBeans IDE, Sun Java Studio Creator, IntelliJ IDEA, Borland JBuilder, Eclipse, спираються на сервіси, що надаються JDK.

Середовище виконання CLR (Common Language Runtime) на платформі .NET Framework компанії Microsoft.Хоча .NET офіційно розрахована на роботу під ОС сімейства Microsoft Windows, існують незалежні проекти (Mono та Portable.NET), що дозволяють запускати програми .NET на багатьох інших ОС.

Microsoft .NET (читається дот-нет) — програмна технологія, запропонована фірмою Microsoft як платформа для створення як звичайних програм, так і веб-програм. Багато в чому є продовженням ідей та принципів, покладених в технологію Java.

Одною з ідей .NET є сумісність служб, написаних різними мовами. Хоча ця можливість рекламується Microsoft як перевага .NET, платформа Java має таку саму можливість.

Кожна бібліотека (збірка) в .NET має свідчення про свою версію, що дозволяє усунути можливі конфлікти між різними версіями збірок.

.NET — крос-платформена технологія, в цей час існує реалізація для платформи Microsoft Windows, FreeBSD (від Microsoft) і варіант технології для ОС Linux в проекті Mono (в рамках угоди між Microsoft з Novell), DotGNU [1].

Захист авторських прав відноситься до створення середовищ виконання (CLR — Common Language Runtime) для програм .NET. Компілятори для .NET випускаються багатьма фірмами для різних мов вільно.

.NET поділяється на дві основні частини — середовище виконання (по суті віртуальна машина) та інструментарій розробки.

Середовища розробки .NET-програм: Visual Studio .NET (C++, C#, J#), SharpDevelop, Borland Developer Studio (Delphi, C#) і т. д. Середовище Eclipse має додаток для розробки .NET-програм. Застосовні програми також можна розроблювати в текстовому редакторі та використовувати консольний компілятор.

Як і технологія Java, середовище розробки .NET створює байт-код, призначений для виконання віртуальною машиною. Вхідна мова цієї машини в .NET називається CIL (Common Intermediate Language), також відома як MSIL (Microsoft Intermediate Language), або просто IL. Застосування байт-кода дозволяє отримати кроссплатформеність на рівні скомпільованого проекту (в термінах .NET: збірка), а не на рівні початкового тексту, як, наприклад, в С. Перед запуском збірки в середовищі виконання (CLR) байт-код перетворюється вбудованим в середовище JIT-компілятором (just in time, компіляція на льоту) в машинні коди цільового процесора.

Слід зазначити, що один з перших JIT-компіляторів для Java був також розроблений фірмою Microsoft (тепер в Java використовується досконаліша багаторівнева компіляція — Sun HotSpot). Сучасна технологія динамічної компіляції дозволяє досягнути аналогічного рівня швидкодії з традиційними «статичними» компіляторами (наприклад, С++) і питання швидкодії часто залежить від якості того чи іншого компілятора.

Проект Mono

Mono – проект по створенню повноцінного втілення системи.NET Framework на базі вільного програмного забезпечення. Основний розробник проекту Mono – корпорація Xamarin, раніше Novell. Проект очолює Мігель де Ікаса, відомий розробник, засновник проекту GNOME. Реалізації Mono існують для наступних операційних систем: Windows, Linux, BSD (FreeBSD, OpenBSD, NetBSD), Solaris, Mac OS X, Apple iOS, Wii. Підтримуються платформи: s390, SPARC, PowerPC, x86/x86-64, IA64, ARM, Alpha, MIPS, HPPA.

Склад і функціональність. Mono включає компілятор мови C# – dmcs, середовище виконання .NET – mono (з підтримкою JIT) та mint (без підтримки JIT), відладчик, а також ряд бібліотек, включаючи реалізацію WinForms, ADO.NET та ASP.NET, а також компілятори smcs (для створення застосувань для Moonlight) і vbc (для додатків, написаних на VB.NET).

В рамках проекту також розробляються прив'язки для графічної бібліотеки GTK+ на платформу. NET.

Також Mono містить альтернативу структурі WPF-застосувань (XAML+ C#, або будь-який інший мову, який підтримується в даному середовищі виконання). Дана мова називається Glade, за допомогою нього можна збирати GTK-додатки.

Mono може виконувати модулі, написані на мовах C #, Visual Basic. NET, Java, Boo, Nemerle, Python, JavaScript, Erlang, SmallTalk, Lisp, PHP та Object Pascal (за наявності компілятора в середу .Net/Mono). Очікується також підтримка мов C, Ada 2005 та Eiffel.

Юридичні питання. Після укладення Microsoft домовленості з компанією Novell, платформа Mono була офіційно визнана реалізацією .NET на Unix-подібних ОС (Linux, Mac OS X та інших). Однак домовленість стосується тільки Novell та клієнтів Novell; також технології ASP.NET, ADO.NET і Windows.Forms не були стандартизовані ECMA/ISO, і використання їх у Mono знаходиться під загрозою юридичних претензій з боку Microsoft (претензії можливі тільки в країнах, де існують патенти на ПЗ). Mono надає реалізацію ASP.NET, ADO.NET та Windows.Forms, але в той же час рекомендує не використовувати ці API.

Прийнята в проекті ліцензія на компілятор та інші програми - GNU GPL. Ліцензія на середовище виконання та інші бібліотеки - GNU LGPL. Ліцензія на бібліотеки класів – X11 License. Патенти на C#/CLI належать Microsoft, і ведуться суперечки щодо ризику та допустимості зростання залежності від Mono або C#.

Програми, засновані на Mono:

                 Pinta – растровий графічний редактор з відкритим вихідним кодом, натхненний редактором Paint.NET;

                 Banshee – медіаплеєр з відкритим вихідним кодом для Linux та
Mac OS X;

                 MonoDevelop – вільне середовище розробки.

Крос-платформне програмне забезпечення

Крос-платформне програмне забезпечення програмне забезпечення, що працює більш ніж на одній апаратній платформі та операційній системі.

Типовим прикладом є ПЗ, призначене для роботи в операційних системах Linux та Windows одночасно.

Типова мета створення кроссплатформенного програмного забезпечення – "пережити" ту конкретну платформу, для якої воно створювалося.

Прикладами ПЗ, що виконується на різних апаратних платформах та під управлінням різних операційних систем, є різноманітні програми, написані на мовах програмування для віртуальних машин, таких, як, наприклад, PHP, Perl, Python, Java, та багато інших, а також кросплатформні середовища розробки застосувань.

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

                 Apacheвільнийвеб-сервер, підтримує операційні системи Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS.

                 IBMLotusNotes(також Lotus Notes, Lotus Notes/Domino) – програмний продукт, платформа для автоматизації спільної діяльності робочих груп (Groupware), що містить засоби електронної пошти, персональних і групових електронних календарів, служби миттєвих повідомлень та середовище виконання застосувань ділової взаємодії. Випущений у 1989 році американською компанією Lotus Development, яка в 1995 році поглинула корпорація IBM.

                 MozillaFirefoxвільно поширюваний браузер, що входить в набір програм Mozilla застосувань, розробкою та поширенням якого займається Mozilla Corporation. Третій за популярністю браузер у світі. офіційно випускається для Microsoft Windows, Mac OS X, Android та Linux. Доступні неофіційні збірки для FreeBSD, BeOS, і безлічі інших Unix-подібних операційних систем.

                 MozillaThunderbirdбезкоштовна, крос-платформена, вільно поширювана програма для роботи з електронною поштою і групами новин, а при установці розширення Lightning (ПО), і з календарем. Є складовою частиною проекту Mozilla.

                 SeaMonkeyвільний набір програм для роботи в Інтернеті. Є прямим продовженням Mozilla Suite.

                 MySQLвільна система керування базами даних. Розробку та підтримку MySQL здійснює корпорація Oracle, яка отримала права на торговельну марку разом з поглиненою Sun Microsystems, яка раніше придбала шведську компанію MySQL AB. MySQL є рішенням для малих і середніх застосувань.

                 OpenOffice.orgвільний пакет офісних застосувань. Конкурує з комерційними офісними пакетами (у тому числі Microsoft Office) як на рівні форматів, так і на рівні інтерфейсу користувача. Одним з перших почав підтримувати новий відкритий формат OpenDocument (ISO/IEC 26300). Офіційно підтримується на платформах Linux, Microsoft Windows, Mac OS X Intel/PowerPC (підтримка оболонки Аква знаходиться на стадії альфа-тестування) й раніше підтримувався Solaris SPARC/Intel. Існують порти для OpenSolaris, FreeBSD і Linux PowerPC. Заснований на коді StarOffice, що був придбаний, а потім випущений з відкритим вихідним кодом фірмою Sun Microsystems. Після покупки останньої права на OO.o перейшли до компанії Oracle.

                 Operaвеб-браузер і програмний пакет для роботи в Інтернеті, що випускається компанією Opera Software.

                 BinkDмережевий протокол прикладного рівня, розроблений для передачі файлів в Фідонеті або в інших FTN-мережах, що походить поверх TCP-з'єднання.

                 CVS(Concurrent Versions System) програмний продукт, що відноситься до розряду систем керування версіями (version control system). Зберігає історію змін певного набору файлів, як правило, вихідного коду програмного забезпечення, та полегшує спільну роботу групи людей (програмістів) над одним проектом. CVS популярна у світі відкритого ПЗ.

                 Emacsсімейство багатофункціональних розширюваних текстових редакторів.

                 GIMP, GoldEd, Inkscape, LibreOffice, VIM тощо.

Компілятор GCC (GNU Compiler Collection, GCC) — набір компіляторів для різних мов програмування. GCC — вільне програмне забезпечення, розроблене Фондом Вільних Програм під ліцензією GNU GPL та GNU LGPL, і є ключовою складовою набору знарядь розробки GNU (GNU development toolchain). Це стандартний компілятор для вільних Юнікс-подібних операційних систем, і деяких пропрієтарних систем, що з них розвинулись, наприклад Mac OS X.

Спочатку називався GNU Компілятор Сі, оскільки підтримував лише одну мову програмування — C. Пізніше був розширений для підтримки C++, Fortran, Java (компілятор GCJ), Ada, та інших.

Портування

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

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

Портування – включення коду програми в роботу Апаратно-програмного забезпечення.

Портовність (переносимість, англ. Portability) зазвичай відноситься до однієї з двох речей:

                 Портовність – як можливість один раз відкомпілювати код (зазвичай в певний проміжний код, який потім інтерпретується або компілюється під час виконання, «на льоту», англ. Just-In-Time), а потім запускати його на безлічі платформ без будь-яких змін.

                 Портовність – як властивість ПЗ, що описує, наскільки легко це ПЗ може бути портоване. З розвитком ОС, мов і техніки програмування стає все простіше портувати програми між різними платформами. Однією з початкових цілей створення мови С та стандартної бібліотеки цієї мови була можливість простого портування програм між несумісними апаратними платформами. Додаткові переваги в плані портовності можуть мати програми, що задовольняють спеціальним стандартам та правилам написання (див., наприклад, Smart Package Manager).

Необхідність у виконанні портування виникає зазвичай через відмінності в системі команд процесора, відмінностей між способами взаємодії операційної системи та програм (API, Application Program Interface), принципових відмінностей в архітектурі обчислювальних систем, або через деяких несумісності, або навіть за повної відсутності використовуваної мови програмування в цільовому оточенні.

Міжнародні стандарти (зокрема, просувні ISO) значно спрощують портування, завдяки тому що вони описують середовище виконання програм таким чином, що відмінності між платформами стають мінімальними. Часто портування програм між платформами, що реалізують один і той же стандарт (такий як POSIX.1), зводиться до перекомпіляції програми на новій платформі.

Існує також все більш розширюваний набір інструментів, що полегшують портування, наприклад, таких як GCC, що надає незмінну мову програмування на різних платформах.

Деякі мови програмування високого рівня (Eiffel, Esterel) досягають портованості шляхом трансляції вихідного коду в проміжну мову, що має компілятори для багатьох процесорів та операційних систем.

Термін портування часто застосовується до комп'ютерних ігор, а саме, до процесу переносу комп'ютерної гри з первісної цільової платформи (персонального комп'ютера або ігрової приставки) на іншу платформу. Ранні порти відеоігор, по суті, були результатом значного або повного переписування програми, але все більше сучасних ігор розробляється з використанням програмного забезпечення, що дозволяє генерувати код як для PC так і для однієї або декількох ігрових консолей.

В залежності від того, для чого спочатку розроблялося те чи інше програмне забезпечення, його називають рідним або портувати. Рідне ПЗ (англ. native) розробляється відразу для тієї платформи (апаратного забезпечення та/або операційної системи), про яку йде мова. Портоване ПЗ (англ. ported) розробляється для одних платформ, після чого переноситься для роботи на інших платформах.

Мобільність та переносимість

Мобільність програмного забезпечення (software mobility або softwareportability) – здатність програмного забезпечення працювати на різних апаратних платформах або під управлінням різних операційних систем.

Синоніми: Переносимість програмного забезпечення

Мобільне програмне забезпечення – програмне забезпечення, здатне функціонувати на різних програмно-апаратних платформах.

Глоссарий по информационному обществу / Под общ. ред. Ю.Е. Хохлова. – М.: Институт развития информационного общества, 2009. – 162 с.

Мобільність ПЗ (portability) – група властивостей ПЗ, яка зумовлює їх пристосованість для переносу з одного середовища функціонування в інші.

Означення 1. Крос-платформне програмне забезпечення — програмне забезпечення, що працює більш ніж на одній апаратній платформі і операційній системі (ОС).

Означення 2. Крос-платформне програмування – технологія створення і інтеграції в єдину систему компонентів, які розроблені на різних платформах.

Рівні кросплатформності

Поняття кросплатформності може використовуватися на різних рівнях абстракції інформаційних систем:

1. На рівні мови програмування

Крос-платформними можна назвати більшість сучасних мов програмування високого рівня. Наприклад, C, С++ і Object Pascal — крос-платформні мови на рівні компіляції, тобто для цих мов є компілятори під різні платформи. Java і C# — крос-платформні мови на рівні виконання, тобто їх виконувані файли можна запускати на різних платформах без попередньої перекомпіляції.

Це забезпечує двох-етапна компіляція через проміжний код. В Java для цього використовується байт-код і віртуальна машина (JRE), реалізація якої є для різних ОС, а в C# - через проміжний код на проміжній мові програмування (близькій до мови ассемблера) і загальномовного середовища програмування (CLRCommonLanguageRuntime). Нагадаємо, що CLR – це динамічна складова .Net Framework.

Реалізація .Net Framework є для всіх версій Windows. Реалізація для платформи Linux – проект MONO.

Мови скриптів - PHP, ActionScript, Perl, Python, Tcl і Ruby — кросплатформні мови, що інтерпретуються, їх інтерпретатори існують для багатьох платформ.

2. На рівні прикладних програм

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

Приклади:



3. На рівні операційної системи

Сучасні операційні системи також часто є крос-платформними. Наприклад, операційні системи з відкритим кодом, такі як NETBSD, Linux, FREEBSD, AROS можуть працювати на декількох різних платформах, найчастіше це x86, m68k, POWERPC, Alpha, AMD64, SPARC. Microsoft Windows може працювати як на платформі Intel x86, так і на Intel Itanium. Операційна система NETBSD є самою переносною, вона портована на більшість існуючих платформ.

Емуляція

Якщо програма не призначена для виконання (запуску) на певній платформі, але для цієї платформи існує емулятор платформи, базової для даної програми, то програма може бути виконана в середовищі емулятора.

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

1.2. Визначення та властивості компонентів. Специфікація інтерфейсу як контракту

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

Компонентне програмування є подальшим розвитком об'єктно-орієнтованого програмування (ООП) і концепції «повторного використання» (reuse).

Компонентне програмування покликане забезпечити простішу і швидшу процедуру інсталяції прикладного програмного забезпечення, а також збільшити відсоток повторного використання коду, тобто підсилити основні переваги ООП.

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

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

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

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

Таким чином, компонент — це виділена структурна одиниця розгортання з чітко визначеним інтерфейсом.

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

Властивості компонентів

1. Використання компонента (виклик його методів) можливе лише через його інтерфейси відповідно до контракту.

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

Для опису інтерфейсів призначені мови опису інтерфейсів IDL (InterfaceDefinitionLanguage).

Ці мови містять операції, які є викликами відкритих (public) методів класів, що входять до складу компонента, і операнди – відкриті (public) поля класів.

2. Компонент повинен працювати в будь-якому середовищі, де є необхідні для його роботи інші компоненти.

Це вимагає наявності певної інфраструктури, яка дозволяє компонентам знаходити один одного і взаємодіяти по певних правилах.

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

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

Існують декілька компонентних моделей в різних ОС і від різних виробників. Правильно взаємодіяти один з одним можуть лише компоненти, побудовані в рамках однієї моделі, оскільки компонентна модель визначає «мову», на якій компоненти можуть спілкуватися один з одним.

Окрім компонентної моделі, для роботи компонентів необхідний деякий набір базових служб (basic services). Наприклад, компоненти повинні уміти знаходити один одного в середовищі, яке, можливо, розподілене на декілька машин. Компоненти повинні уміти передавати один одному дані, знову ж таки, можливо, за допомогою мережевих взаємодій, але реалізації окремих компонентів самі по собі не повинні залежати від вигляду використовуваного зв'язку і від розташування їх партнерів по взаємодії. Набір таких базових, необхідних для функціонування більшості компонентів служб, разом з підтримуваною з їх допомогою компонентною моделлю називається компонентним середовищем (або компонентним каркасом, component framework). Приклади відомих компонентних середовищ — різні реалізації J2EE, .NET Framework, CORBA, COM, COM+, DCOM.

3. Компоненти відрізняються від класів об'єктно-орієнтованих мов.

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

Зазвичай компонент є крупнішою структурною одиницею, ніж клас. Реалізація компонента часто складається з декількох тісно зв'язаних один з одним класів.

4. Компоненти не залежать від мов програмування.

Компоненти зберігаються і поширюються у бінарному вигляді і не залежать від мов програмування програмної системи.

Користувач і постачальник компонента можуть використовувати різні мови і бути територіально розподіленими.

(Для ознайомлення з повним текстом статті необхідно залогінитись)