Глава 1 революція на ім’я java

Глава 1 Революція на ім'я Java

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

Створення мови Java - це дійсно один з найзначніших кроків вперед в області розробки середовищ програмування за останні 20 років. Мова HTML (Hypertext Markup Language - мова розмітки гіпертексту) була необхідна для статичного розміщення сторінок у "Всесвітній павутині" WWW (World Wide Web). Мова Java потрібен для якісного стрибка в створенні інтерактивних продуктів для мережі Internet.

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

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

    Давайте ближче познайомимося з усіма цими трьома аспектами, але спочатку - історія створення.

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

    Нотон, хоча і не розраховував на те, що хтось зверне увагу на його лист, все ж виклав свої претензії, нещадно розкритикувавши недоліки Sun Microsystems, зокрема, розробляється в той момент архітектуру ПО NeWS. На подив Нотона, його лист здобуло успіх: він був розісланий всім провідним інженерам Sun Microsystems, які не забарилися відгукнутися і висловити гарячу підтримку своєму колезі і схвалення його поглядів на ситуацію в Sun Microsystems. Звернення викликало схвалення і у вищого керівництва компанії, а саме, у Білла Джоя (Bill Joy), засновника Sun Microsystems, і Джеймса Гослінга (James Gosling), начальника Нотона.

    У той день, коли Нотон повинен був піти з компанії, було прийнято рішення про створення команди провідних розробників з тим, щоб вони робили що завгодно, але створили щось незвичайне. Команда з шести чоловік приступила до розробки нового об'єктно-орієнтованої мови програмування, який був названий Oak (дуб), на честь дерева, що росло під вікном Гослінга.

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

    Саме помітні Web-сторінки з анімацією залучили більшість ранніх прихильників мови Java. Оскільки користувачі не відразу змогли повністю освоїти найбільш революційні аспекти Java, ця мова часто порівнювався з іншими технологіями для завантаження динамічних зображень і простого взаємодії з Web-клієнтами. Компанії, традиційно займаються розробкою мультимедійних технологій, наприклад, Adobe або MacroMedia, стверджували, що їхні продукти надають ті ж можливості, що і Java. На думку Kaleida, Taligent і NeXT, їх власні об'єктно-орієнтовані середовища розробки були не менш революційні. Microsoft заявляв про перемогу технології десятирічної давності. Насправді ніщо не може зрівнятися з тим, що ви відкриєте для себе, відчувши міць програмування на мові Java.

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

    Революційний мову програмування

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

    Простота і міць

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

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

    Java обмежує вас в декількох ключових областях і таким чином сприяє виявленню помилок на ранніх стадіях розробки програми. У той же час в ній відсутні багато джерел помилок, властивих іншим мовам програмування (строга типізація, наприклад). Більшість використовуваних сьогодні програм "відмовляють" в одній з двох ситуацій: при виділенні пам'яті, або при виникненні виняткових ситуацій. У традиційних середовищах програмування розподіл пам'яті є досить нудним заняттям - програмісту доводиться самому стежити за усієї використовуваної в програмі пам'яттю, не забуваючи звільняти її в міру того, як потреба в ній відпадає. Найчастіше програмісти забувають звільняти захоплену ними пам'ять або, що ще гірше, звільняють ту пам'ять, яка все ще використовується який-небудь частиною програми. Виняткові ситуації в традиційних середовищах програмування часто виникають в таких, наприклад, випадках, як розподіл на нуль або спроба відкрити неіснуючий файл, і їх доводиться обробляти за допомогою незграбних і нечитабельних конструкцій (крім Delphi). Java фактично знімає обидві ці проблеми, використовуючи збирач сміття для звільнення вільної пам'яті і вбудовані об'єктно-орієнтовані засоби для обробки виняткових ситуацій.

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

    Незалежність від архітектури ЕОМ

    Питання про довговічність і переносимості коду важливіше релігійних воєн між ПК і Макінтоша. Творці Java наклали на мову і на середу часу виконання кілька жорстких вимог, які на ділі, а не на словах дозволяють, одного разу написавши, завжди запускати програму в будь-якому місці і в будь-який час (де існує віртуальна Java-машина - браузери на всіх платформах, OS / 2, Netware).

    Інтерпретація плюс висока продуктивність

    Надзвичайна здатність Java виконувати свій код на будь-який з підтримуваних платформ досягається тим, що її програми транслюються в якесь проміжне уявлення, зване байт-кодом (bytecode). Байт-код, в свою чергу, може інтерпретуватися в будь-якій системі, в якій є середовище часу виконання Java. Більшість ранніх систем, в яких намагалися забезпечити незалежність від платформи, володіло величезним недоліком - втратою продуктивності (Basic, Perl). Незважаючи на те, що в Java використовується інтерпретатор, байт-код легко перекладається безпосередньо в "рідні" машинні коди (Just In Time compilers) "на льоту". При цьому досягається дуже висока продуктивність (Symantec JIT вбудований в Netscape Navigator).

    Мова Java, хоча і більш складний ніж мови командних інтерпретаторів, все ж незмірно простіше для вивчення, ніж інші інші мови програмування, наприклад C ++. Риси мови стануть здаватися вам природним шляхом для вирішення тих чи інших завдань і сприятимуть відпрацюванню хорошого стилю програмування. Оскільки об'єктна модель в Java одночасно проста і виразна, ви скоро звикнете з об'єктно-орієнтованим стилем створення програм.

    Багата об'єктне середовище

    Середовище Java - це щось набагато більше, ніж просто мова програмування. У неї вбудований набір ключових класів, що містять основні абстракції реального світу, з яким доведеться мати справу вашим програмам. Основою популярності Java є вбудовані класи-абстракції, які зробили його мовою, дійсно незалежним від платформи. Бібліотеки, подібні MFC / COM, OWL, VCL, NeXTStep, Motif і OpenDoc прекрасно працюють на своїх платформах, однак сьогодні головною платформою стає Internet.

    У реалізації Java 1.1.6 знаходиться 23 пакета (в Java 1.0.2 їх було 8), а кількість класів - 503 (211). Зараз проходить завершальну стадію бета-тестування JDK 1.2. Для тих, хто збирається підтримувати Java 1.0 поряд з 1.1 (актуальність цієї підтримки підтверджує Borland JBuilder 2.0 та інші продукти), спеціально виділені нововведення 1.1 в Додаток 2.

    Пакети Java API