Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Виконання 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 — всі стандартні функції, що викликаються в програмі, підключаються до неї тільки на eтапі виконання, а не включаються в байт-коди. Як говорять спеціалісти, відбувається динамічне компонування (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.

0.3. Що таке JDK?

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

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

· інтерпретатор java, який містить реалізацію JVM;

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

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

· налаштовувач jdt>;

· дизассемблер javap;

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

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

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

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

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

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

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

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

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

В попередні версії JDK включались і налаштовувальні варіанти виконуваних програм: javac_g, java_g і т.д. Компанія SUN Microsystems постійно розвиває і обновляє JDK, кожний рік появляються нові версії.

Крім JDK, компанія SUN окремо розповсюджує ще і набір JRE (Java Runtime Environment).

 

0.4. Що таке JRE?

Набір програм і пакетів класів JRE містить все необхідне для виконання байт-кодів, в тому числі інтерпретатор java (в попередніх версіях полегшений інтерпретатор jre) і бібліотеку класів. Це частина JDK, яка не містить компілятори, налаштовувачі і інші засоби розробки. Якраз JRE або його аналог інших фірм міститься в браузерах, що вміють виконувати програми на Java, в операційних системах і системах управління базами даних.

Хоча JRE входить до складу JDK, фірма SUN розповсюджує цей набір і окремим файлом.

Після установки Java ви одержите каталог з назвою, наприклад, jdk1.3, а в ньому підкаталоги:

· bin, який містить виконувані файли;

· demo, який містить приклади програм;

· docs, котрий містить документацію, якщо ви її установили;

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

· jre, котрий містить набір JRE;

· old-include, для сумісності зі старими версіями;

· lib, котрий містить бібліотеки класів і файли властивостей;

· src, з вихідними текстами програм JDK. В нових версіях замість каталогу знаходиться упакований файл src.jar.

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

Якщо ваш JDK являється частиною якогось інтегрованого середовища програмування, наприклад JBuilder, то деякі з перечислених вище папок можуть знаходитися в іншому місці. Прогляньте вашу папку JDK. А у нас інтегрованим середовищем програмування є NetBeans.

 

 

1.Показати на прикладі. + NetBeans IDE — вільне інтегроване середовище розробки (IDE) для мов програмування Java, JavaFX, C/C++, PHP, JavaScript, Python, Groovy. Середовище може бути встановлене і для підтримки окремих мов, і у повній конфігурації. Середовище розробки NetBeans за умовчанням підтримує розробку для платформ J2SE і J2EE.

Проект NetBeans IDE підтримувався і спонсорувався фірмою Sun Microsystems і після придбання Sun — Oracle, проте розробка NetBeans ведеться незалежно співтовариством розробників (NetBeans Community) і компанією NetBeans.Org.

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

NetBeans IDE доступна для платформ Microsoft Windows, GNU/Linux, FreeBSD, і Solaris (як SPARC, так x86). Для інших платформ доступна можливість зібрати NetBeans самостійно із сирцевих текстів.

* Рефакторинг (англ. refactoring) — перетворення програмного коду, зміна внутрішньої структури програмного забезпечення для полегшення розуміння коду і легшого внесення подальших змін без зміни зовнішньої поведінки самої системи.

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

<== предыдущая лекция | следующая лекция ==>
Нейтральний аспект | Типи даних
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 1644; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.019 сек.