Вісім міфів про Java h2>
Java повільно працює h2>
Це
досить старий міф, але коли-то він справді був правдою. Спочатку
віртуальні машини, на яких виконувався байт-код Java, були недосконалі, і до
того ж мова Java і віртуальна машина розроблялися не для комп'ютерів в
звичному їх розумінні, а як якась універсальна середовище для різних
пристроїв, де швидкість роботи програм була некритична, а обсяги даних
незначні. Різниця в швидкості виконання однакових завдань між звичайним
компільовані кодом і інтерпретується кодом Java могла досягати сотень разів. Але
незважаючи на це, в даний час швидкість роботи байт-коду на сучасних
віртуальних машинах поступається кращим компіляторам машинних кодів всього лише на
кілька десятків відсотків, а в деяких випадках навіть і перевершує їх!
Невже інтерпретація може обігнати скомпільовану програму? Зрозуміло,
немає. Справа в тому, що Java байт-код тепер вже не інтерпретується віртуальною
машиною, а компілюється та ще й оптимізується, причому динамічно, на основі
що збираються віртуальними машинами даних про хід виконання програми. По тестах
на скорострільність Java досить непогана, але як же йдуть справи з реальними
додатками? На жаль, з одними додатками справи йдуть не так
вже й добре. Причина тому повільна робота графічних компонентів системи. p>
Програмісти
Java знають, що в мові є два стандартні можливості для роботи з
призначеним для користувача інтерфейсом AWT і Swing. AWT це платформозавісімая реалізація
графічного інтерфейсу користувача. Швидкість роботи більшості її реалізацій
цілком задовільна, але кількість функцій дуже обмежено. В якості
альтернативи AWT розроблена бібліотека Swing. Вона цілком заснована на
можливості мови, має безліч функцій і платформонезалежних, але швидкість
її роботи невисока. p>
На Java складно програмувати h2>
Міф
про складність програмування на Java заснований більшою частиною на тому, що
стандартна бібліотека класів має багаторівневу деревоподібну структуру і
включає величезну кількість різноманітних об'єктів і прикладних алгоритмів. Але
саме завдяки стандартним класами спрощується створення та підтримка
додатків. p>
Мова
програмування Java є повністю об'єктно-орієнтованим. За
синтаксису він схожий на Сі + +. При цьому надмірний, що приводить до помилок
функціонал Сі + + (такий, як перевантаження операторів або множинне
спадкоємство) відкинутий. Замість множинного успадкування в Java застосовується
набагато більш проста концепція інтерфейсу, тобто іменованого угоди про
дзвінки набору функцій. Java використовує строгу типізацію і не допустить
невірної передачі параметра, до того ж вона набагато суворіше Сі + + ставиться до
недбалість у вихідному коді і, наприклад, не дозволить створити метод зі свідомо
невживаних ділянкою коду. Також Java не відкомпілює програму з
неініціалізовані змінної. p>
Один
з головних джерел проблем при розробці програм неправильне
використання динамічної пам'яті, а точніше, некоректне звільнення зайнятих
раніше блоків. Java використовує концепцію збирача сміття. Це означає, що
програмісту абсолютно не потрібно піклуватися про звільнення зайнятої ділянки
пам'яті. Система сама додасть його до вільної пам'яті, коли виявить, що
посилань з програми на даний об'єкт вже немає. p>
Для
сигналізації про помилки Java вдається до модної концепції винятків.
Виняток це якесь спеціальне подія, яка сигналізує про помилку в
програмі. Більшість мов програмування (і API) для сигналізації про помилку
передають викликає результат виклику функції (погано або добре). Код аналізу
повернутого значення в результаті виявляється перемішаним з кодом
нормального виконання програми, це ускладнює читання програм та їх
модифікацію. Проте, що набагато важливіше, виключення не тільки покращують
читаність вихідних текстів, а й не дозволяють викликає функції
проігнорувати помилку. Програміст зобов'язаний або відловити виняток, або
перекласти цей обов'язок на зухвалу функцію. p>
До
сказаного можна додати, що в Java вбудована підтримка мультизадачності. При
створення багатопотокових додатків розробнику, як правило, доводиться
використовувати засоби операційної системи (семафори, Мьютекси) для
синхронізації задач. Java ж пропонує універсальне рішення на основі
конструкцій самої мови. p>
Резюмуючи,
можна сказати, що за складністю програмування Java і в порівняння не йде з
Сі + + або Паскалем. Розвинені можливості мови, підтримка збору сміття, єдина
стандартна бібліотека класів, контроль з боку компілятора все це помітно
спрощує створення додатків і прискорює їх налагодження. p>
Java працює скрізь однаково h2>
Створюєш
один раз використовуєш де завгодно (Write once run anywhere). Друга частина цього
гасла творців Java містить твердження, що Java-програма працює скрізь
однаково. На жаль, насправді все не так просто. Java-машини
різних компаній на різних платформах НЕ стовідсотково сумісні один з
одним. p>
Відмінності
в роботі Java-машин на різних платформах існують і в реалізації
мультизадачності, і в роботі віконної бібліотеки (AWT). Складні Java-програми
необхідно проганяти на різних платформах, щоб переконатися, що все в порядку.
Взагалі кажучи, навіть і на одній платформі, але на різних машинах, подібні
програми можуть виконуватися по-різному. Наприклад, програміст може зіткнутися
з ситуацією, коли його код на багатопроцесорної машині веде себе інакше, ніж на
однопроцесорній. Особливо слід згадати Java-машину, створену компанією
Microsoft (далі MS JVM). Вона носить назву Java не зовсім законно (що було
підтверджено недавнім рішенням суду). У MS JVM ви не побачите підтримки
технологій RMI або CORBA, зате тут можна використовувати об'єкти ActiveX
технологію, специфічну тільки для платформи Windows і більше ніде не існує.
відображають деякі особливості роботи платформи Windows. p>
Не можна
також забувати і про різну швидкість роботи Java-машин. Ця різниця може
призвести до неприпустимих затримок в роботі програми або інших проблем.
Висновок із вищесказаного простий: при створенні Java-програм слід тестувати
їх на широкому спектрі платформ і не користуватися нестандартними розширеннями
мови. p>
Java це мова програмування h2>
Існує
думку, що Java це тільки якийсь мова програмування. Але це всього лише
оману. Так, Java це ще й мова програмування. Це і цілий спектр
інших технологій. p>
Java
це платформа, сучасна програмна платформа, за великим рахунком прагне
замінити всі функції операційної системи. Можливо, це в недалекому майбутньому і
відбудеться (хоча подібні спроби вже були, але провалилися). Основний коник
Java платформонезавісимость, тобто незалежність програмних засобів,
що працюють на віртуальній машині, від апаратного забезпечення та операційної
системи. p>
Слід
помітити, що для платформи Java існує кілька десятків різних мов
програмування. Деякі з них можуть компілюватися самим компілятором
Java, інші ж здатні працювати безпосередньо з віртуальною машиною. p>
Java молодша сестра Сі + + h2>
Дійсно
Чи мова програмування Java веде своє походження від Сі + +? Скоріше ні, ніж
так. Ідея Sun полягала в тому, щоб спростити навчання Java, зробивши її
синтаксис схожим на той, що використовується в найбільш поширеному мовою
програмування. Це повинно було в кінцевому підсумку стимулювати і спростити
перехід на Java Сі-програмістів. У той же час в Java закладені ідеї і
механізми, почерпнуті з ряду інших систем і мов програмування. Взяти
хоча б контроль виходу за кордон масиву (Паскаль). Або той факт, що
компіляція Java-програм є роздільної, класи розбиті по пакетах. Це
є одним з варіантів модульного програмування (як, скажімо, в
Модулі-2), що відрізняється від концепції незалежної компіляції файлів Сі + +.
Деякі новації були взяті з невідомих широкій публіці мов і систем. До
Наприклад, принцип інтерфейсу класів перенесено з мови Objective C,
розробленого компанією NeXT. Механізм обробки виняткових ситуацій майже
повністю запозичений з модулів-3. Засади внутрішньої реалізації такої
важливою складовою мови Java, як збірка сміття, почерпнуті перш за все з
Ліспу. Частина нормальних мов, таких, як Ейфель, Модула-3, Оберон, також
спочатку мала в своєму розпорядженні цим механізмом. p>
Узагальнивши
сказане вище, можна зробити висновок, що Java увібрала в себе велику кількість
ідей і підходів з різних систем програмування і в тому числі синтаксис мови
Сі + +. p>
Мова Java придатний тільки для аплетов та Інтернету h2>
Java
нерозривно пов'язують з аплетах. І дійсно, аплети невід'ємна частина як
мови, так і платформи Java в цілому. До того ж їх створення вдалий
маркетинговий крок Sun. Без аплетов світ про Java не дізнався б так швидко. p>
Ідея
вбудованих додатків в гіпертекстові документи (HTML) не так вже й нова.
Багато фірм намагалися просунути свої технології на цей сектор ринку, але в
Нині конкурентів у Java тут небагато. На сьогодні це, мабуть,
JavaScript, ActiveX і технологія Flash. Дві останні, щоправда, працюють тільки
під управлінням Windows. p>
Що
залучає в Java програмістів? Потужна модель безпеки, єдиний код для
всіх платформ, широкі можливості для використання готових бібліотек,
простота програмування. Насправді все не так райдужно, як хотілося
б. Модель безпеки, безумовно, не погана, але її реалізації, виконані
тими чи іншими виробниками, розрізняються. У результаті код, прекрасно
що працює під керуванням одного браузера, не працює під управлінням
іншого. Ну, якщо в браузерах Java є, то як йдуть справи з додатками,
які виконуються без браузера, а під керуванням віртуальної машини прямо в
операційній системі? Тут ситуація схожа, в кожній сучасній ОС вже
встановлена якась версія JVM. І користувачі здатні виконувати з її допомогою
наявні у них програми для JVM, хоча більшість навіть не підозрює про
такої можливості. Не слід забувати і про серверні додатки, що включають
доступ до баз даних і мережеві додатки. І це основна сфера застосування технологій
Java в даний час. Під цю класифікацію підпадають не тільки програмні
проміжного рівня, але й самі серверні додатки. А якщо сюди додати
ще й клієнтські програми або навіть аплети, то виходить повний комплект для
автоматизації. Платформа Java це не тільки аплети. Вона застосовується
повсюдно, починаючи від клієнта і закінчуючи сервером. А якщо згадати, що
Java використовується не тільки на ЕОМ, а й у стільникових телефонах, побутовій техніці і
смарт-картки, то складається враження, що вона вже проникла в усі сектори
ринку, де хоч як-то можливе застосування програмування. p>
Java ідеал, вона не потребує поліпшень h2>
Java
була створена в 19941995 рр.. До цього моменту інформаційні технології набули
інтенсивний розвиток як за рахунок персоналізації комп'ютерів, так і частково за
рахунок розповсюдження Інтернету. Автори Java постаралися втілити в ній все
досягнення інформаційної індустрії, але ідеал, як відомо, недосяжний.
Дещо все-таки залишилося за бортом, у тому числі перевірка умов правильності
виконання програми, програмування за контрактом, шаблони та ін У Сі + +
існує засіб перевірки умов, зване asset. Ця функція перевіряє
деякий умова, що задається програмістом, на істину. Якщо умова помилково,
asset зупиняє програму і вказує, що допустимі умови роботи
порушені, при цьому компілятор при створенні кінцевої версії програми виклики
asset відкидає. У Java такої можливості не існує. Зрозуміло, можна
використовувати перевірку умов і генерацію винятків на їх основі, але в
результаті всі ці перевірки потраплять у виконуваний код програми. Існує
більш потужна технологія, ніж asset. Це Design By Contract, програмування по
контрактом, що дозволяє спростити створення великих програм, які
використовують раніше створений код. Java ж не підтримує і програмування по
контрактом. Шаблони класів в Сі + + це можливість генерації коду під вказаний
користувачем клас (насправді розробники Java цілком усвідомлено
відмовилися від шаблонів, вважаючи, що від них більше проблем, ніж користі. Прим.
ред.). Колекція об'єктів, реалізована за допомогою шаблону, буде
компілюватися кожен раз для кожного типу об'єктів, що зберігається в цій
колекції. Типова колекція об'єктів в Java зберігає екземпляри класу Object,
предка всіх Java-класів. Програміст, витягуючи об'єкти з колекції, змушений
використовувати приведення типу, щоб скористатися своїм робочим класом.
Таке додаток працює чудово до тих пір, поки інший програміст
випадково не додасть до колекції примірник зовсім іншого класу. Тоді на
етапі компіляції помилки не виникає, але вона відбувається пізніше, при отриманні
примірника і спробі приведення його до невірного типу. В даний час Java
продовжує розвиватися. Не виключено, що вже в найближчому майбутньому ми побачимо в
ній деякі зі згаданих вище можливостей. p>
Java коштує купу грошей h2>
Дійсно
Чи справді технологія Java є дорогою? Все залежить від складності
розробляється програмного забезпечення. Скажімо, для невеликого програми
(від одного до трьох людино-місяців) Java може не коштувати взагалі нічого.
Безумовно, абсолютно безкоштовною ця технологія не є. Кваліфікований
Java-програміст коштує грошей. Існує і необхідність у засобах
проектування додатків, профілювання Java-програм і в інших
інструментах, які використовуються при створенні великих проектів. Але, взагалі кажучи,
конкуренція на ринку подібного ПО досить висока, а отже, ціни
знижуються. Вибір різноманітний, і розробник не прив'язаний до конкретної компанії.
p>
Список літератури h2>
Для
підготовки даної роботи були використані матеріали з сайту http://www.i2n.ru
p>