ть функціональність. Незважаючи на перший погляд, оптимістичну картину, без багатьох популярних бібліотек функціональність і зручність використання Java «з коробки» залишає бажати кращого.
Одним з головних властивостей Java, який забезпечив йому величезну популярність, є переносимість. Філософія Java проголошує принцип «Write once - run everywhere», який вказує на те, що, в теорії, Java-код може бути виконаний на будь JVM, що працює на будь-якому пристрої. У реальному житті, звичайно, даний принцип працює з великими застереженнями, проте це не заважає успішної працездатності JVM більш ніж на трьох мільярдах пристроїв. Найімовірніше, за допомогою привабливою перспективі переносимості, саме Java був обраний в якості мови програмування для операційної системи (ОС) Android. Філософія платформи включає в себе варіанти використання ОС на будь-якому пристрої з будь мікропроцесорної архітектурою, будь то ARM, x86 або будь-яка інша.
ОС Android є гарним прикладом лукавості принципу «Write once - run everywhere»: зважаючи на обмеженість ресурсів використання стандартної JVM було ускладнено, і єдиним можливим вибором було використання Java ME JVM, розробленої для мобільних пристроїв. Однак, компанія Google вирішила розробити власну віртуальну машину Dalvik VM, яка відрізняється від інших JVM наступним [3]:
. Використовується спеціальний формат DEX для зберігання двійкових кодів з метою зменшення їх розміру.
. Dalvik VM оптимізована для виконання декількох процесів одночасно.
. Використовується архітектуру, засновану на регістрах проти стековой архітектури в інших JVM.
. Використовується власний набір інструкцій, а не стандартний байткод JVM.
. Можливий запуск декількох незалежних Android-додатків в одному процесі.
. Реалізовано спеціальний механізм серіалізациі об'єктів, заснований на класах Parcel і Parcelable.
. Є особливий спосіб для виконання викликів між процесами, заснований на Android Interface Definition Language (AIDL).
Крім нової JVM, також були переглянуті стандартні пакети Java JDK API. Деякі з не були видалені, наприклад, все, що стосувалося Swing (бібліотеки для створення графічного інтерфейсу користувача), але у тому числі додалося деяку кількість власних android. пакетів. Таким чином, далеко не всяка програма або бібліотека, написана на Java, зможе без проблем бути компільованою і запуститися на Android-пристрої.
У зв'язку з великою популярністю мобільних розробок, існує велика кількість джерел інформації з Android-розробці. Основним джерелом, в першу чергу, є офіційна документація [4]. Крім технічної документації комплекту засобів розробки (Software Development Kit, SDK), офіційний сайт містить безліч прикладів, керівництва з реалізації стандартних компонентів, покрокові рекомендації з розробки додатків з нуля, а також вимоги до дизайну.
Однією з найбільш популярних книг є [5]. Дана книга являє собою практичний курс з написання програмного забезпечення на базі другої версії Android SDK. Безсумнівно, книга сильно застаріла на даний момент, однак все ще є хорошим структурованим керівництвом з вивчення платформи. Оскільки безліч додатків створюється з умовою сумісності з більш старими версіями ОС Android, багато приклади з даної книги не втратили актуальності.
Як би там не було, з будь-якого з вище наведених джерел можна почерпнути відомості про архітектуру і процесі розробки додатків. Будь Android-додаток, містить в собі хоча б один з так званих App Components - компонентів додатка. Існують чотири види основних компонентів програми: Activity, Service, Content Provider і Broadcast Receiver. На жаль, не існує будь-якого офіційного перекладу цих термінів на російську мову. У перекладеної літературі зазвичай використовується калька з англійської, наприклад, Activity - «Активність». Оскільки термін «Активність» не зовсім відповідає тому, для чого служить клас Activity (про його призначення буде написано нижче), в більшості інтернет-джерел використовується російська транскрипція термінів, наприклад, Activity - «Активити».
Активити являє собою одну «сторінку» з інтерфейсом користувача (якщо проводити аналоги з веб-інтерфейсами). Всі призначені для користувача активують є класами, успадкованими від стандартного класу Activity. Тут можна провести деяку паралель з технологією Windows Forms, однак, оскільки Java не підтримує часткові (partial) класи, в Android-додатках використовується інший спосіб зв'язування елементів інтерфейсу і користувальницького класу-активують. Кожна активують володіє певним життєвим циклом (малюнок 1.1), який є гарною демонстрацією специфіки мобільних додатків. Оскільки ресурси мобільних пристроїв досит...