Вісім міфів про Java

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Java повільно працює

Це досить старий міф, але колись він дійсно був правдою. Спочатку віртуальні машини, на яких виконувався байт-код Java, були недосконалі, і до того ж мова Java і віртуальна машина розроблялися не для комп'ютерів в звичному їх розумінні, а як якась універсальна середовище для різних пристроїв, де швидкість роботи програм була некритична, а обсяги даних незначні. Різниця в швидкості виконання однакових завдань між звичайним компільованих кодом і інтерпретується кодом Java могла досягати сотень разів. Але незважаючи на це, в даний час швидкість роботи байт-коду на сучасних віртуальних машинах поступається кращим компіляторам машинних кодів всього лише на кілька десятків відсотків, а в деяких випадках навіть і перевершує їх! Невже інтерпретація може обігнати скомпільовану програму? Зрозуміло, немає. Справа в тому, що Java байт-код тепер уже не інтерпретується віртуальною машиною, а компілюється та ще і оптимізується, причому динамічно, на основі зібраних віртуальними машинами даних про хід виконання програми. По тестах на скорострільність Java вельми непогана, але як же йдуть справи з реальними додатками? На жаль, з користувацькими додатками справи йдуть не так вже й добре. Причина тому повільна робота графічних компонентів системи.

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

На Java складно програмувати

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

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

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

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

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

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

Java працює скрізь однаково

Створюєш один раз використовуєш де завгодно (Write once run anywhere). Друга частина цього гасла творців Java містить твердження, що Java-програма працює скрізь однаково. На жаль, насправді все не так просто. Java-машини різних компаній на різних платформах НЕ стовідсотково сумісні один з одним.

Відмінності в роботі Java-машин на різних платформах існують і в реалізації мультизадачності, і в роботі віконної бібліотеки (AWT). Складні Java-програми необхідно проганяти на різних платформах, щоб переконатися, що все в порядку. Взагалі кажучи, навіть і на одній платформі, але на різних машинах, подібні програми можуть виконуватися по-різному. Наприклад, програміст може зіткнутися з ситуацією, коли його код на багатопроцесорній машині поводиться інакше, ніж на однопроцесорній. Особливо слід згадати Java-машину, створену компанією Microsoft (далі MS JVM). Вона носить назву Java не зовсім законно (що було підтверджено недавнім рішенням суду). У MS JVM ви не побачите підтримки технологій RMI або CORBA, зате тут можна використовувати об'єкти ActiveX технологію, специфічну тільки для платформи Windows і більш ніде не існуючу. Microsoft розширила стандартну Java-бібліотеку класів типами, які відображають деякі особливості роботи платформи Windows.

Не можна також забувати і про різну швидкість роботи Java-машин. Ця різниця може призвести до неприпустимих затримок в роботі програми або інших проблем. Висновок з вищесказаного простий: при створенні Java-програм слід тестувати їх на широкому спектрі платформ і не користуватися нестандартними розширеннями мови.

Java це мова програмування

Існує думка, що Java це тільки певна мова програмування. Але це всього лише помилка. Так, Java це ще і мова програмування. Це і цілий спектр інших технологій.

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

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

Java молодша сестра Сі + +

Чи справді мову програмування Java веде своє походження від Сі + +? Скоріше ні, ніж так. Ідея Sun полягала в тому, щоб спростити навчання Java, зробивши її синтаксис схожим на той, що використовується в найбільш поширеній мові програмування. Це повинно було в кінцевому підсумку стимулювати і спростити перехід на Java Сі-програмістів. У той же час в Java закладені ідеї і механізми, почерпнуті з ряду інших систем і мов програмування. Взяти хоча б контроль виходу за кордон масиву (Паскаль). Або той факт, що компіляція Java-програм є роздільною, класи розбиті по пакетах. Це є одним з варіантів модульного програмування (як, скажімо, в Модулі-2), що відрізняється від концепції незалежної компіляції файлів Сі + +. Деякі новації були взяті з невідомих широкій публіці мов і систем. Наприклад, принцип інтерфейсу класів перенесений з мови Objective C, розробленого компанією NeXT. Механізм обробки виняткових ситуацій майже повністю запозичений з модуля-3. Засади внутрішньої реалізації такої важливої ​​складової мови Java, як прибирання сміття, почерпнуті перш за все з Ліспу. Частина нормальних мов, таких, як Ейфель, Модула-3, Оберон, також спочатку мала в своєму розпорядженні цим механізмом.

Узагальнивши сказане вище, можна зробити висновок, що Java увібрала в себе велику кількість ідей і підходів з різних систем програмування і зокрема синтаксис мови Сі + +.

Мова Java придатний тільки для аплетів і Інтернету

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

Ідея вбудовуваних додатків в гіпертекстові документи (HTML) не так вже й нова. Багато фірм намагалися просунути свої технології на цей сектор ринку, але в даний час конкурентів у Java тут небагато. На сьогодні це, мабуть, JavaScript, ActiveX і технологія Flash. Дві останні, щоправда, працюють тільки під управлінням Windows.

Що приваблює в Java програмістів? Потужна модель безпеки, єдиний код для всіх платформ, широкі можливості для використання готових бібліотек, простота програмування. Насправді все не так райдужно, як хотілося б. Модель безпеки, безумовно, не погана, але її реалізації, виконані тими або іншими виробниками, розрізняються. У результаті код, який прекрасно працює під управлінням одного браузера, не працює під управлінням іншого. Ну, якщо в браузерах Java є, то як йдуть справи з додатками, які виконуються без браузера, а під управлінням віртуальної машини прямо в операційній системі? Тут ситуація схожа, в кожній сучасній ОС вже встановлена ​​якась версія JVM. І користувачі здатні виконувати з її допомогою наявні у них програми для JVM, хоча більшість навіть не підозрює про таку можливість. Не слід забувати і про серверні додатки, що включають доступ до баз даних і мережеві додатки. І це основна сфера застосування технологій Java в даний час. Під цю класифікацію підпадають не тільки додатки проміжного рівня, але і самі серверні додатки. А якщо сюди додати ще і клієнтські додатки або навіть аплети, то виходить повний комплект для автоматизації. Платформа Java це не тільки аплети. Вона застосовується повсюдно, починаючи від клієнта і закінчуючи сервером. А якщо згадати, що Java використовується не тільки на ЕОМ, але і в стільникових телефонах, побутовій техніці і смарт-картках, то створюється враження, що вона проникла вже у всі сектори ринку, де хоч якось можливе застосування програмування.

Java ідеал, вона не потребує поліпшень

Java була створена в 19941995 рр.. До цього моменту інформаційні технології отримали інтенсивний розвиток як за рахунок персоналізації комп'ютерів, так і частково за рахунок поширення Інтернету. Автори Java постаралися втілити в ній всі досягнення інформаційної індустрії, але ідеал, як відомо, недосяжний. Дещо все-таки залишилося за бортом, в тому числі перевірка умов правильності виконання програми, програмування за контрактом, шаблони та ін У Сі + + існує засіб перевірки умов, зване asset. Ця функція перевіряє деяку умову, що задається програмістом, на істину. Якщо умова помилкова, asset зупиняє програму і вказує, що допустимі умови роботи порушені, при цьому компілятор при створенні кінцевої версії програми виклики asset відкидає. У Java подібної можливості не існує. Зрозуміло, можна використовувати перевірку умов і генерацію виключень на їх основі, але в результаті всі ці перевірки потраплять у виконуваний код програми. Існує більш потужна технологія, ніж asset. Це Design By Contract, програмування за контрактом, що дозволяє спростити створення великих додатків, які використовують раніше створений код. Java ж не підтримує і програмування за контрактом. Шаблони класів в Сі + + це можливість генерації коду під зазначений користувачем клас (насправді розробники Java цілком усвідомлено відмовилися від шаблонів, вважаючи, що від них більше проблем, ніж користі. Прим. Ред.). Колекція об'єктів, реалізована за допомогою шаблону, буде компілюватися кожного разу для кожного типу об'єктів, що зберігається в цій колекції. Типова колекція об'єктів в Java зберігає екземпляри класу Object, предка всіх Java-класів. Програміст, витягуючи об'єкти з колекції, вимушений використовувати приведення типу, щоб скористатися своїм робочим класом. Такий додаток працює чудово до тих пір, поки інший програміст випадково не додасть в колекцію екземпляр абсолютно іншого класу. Тоді на етапі компіляції помилки не виникає, але вона відбувається пізніше, при витяганні екземпляра і спробі приведення його до невірного типу. В даний час Java продовжує розвиватися. Не виключено, що вже в найближчому майбутньому ми побачимо в ній деякі із згаданих вище можливостей.

Java коштує купу грошей

Чи справді технологія Java є дорогою? Все залежить від складності розроблюваного програмного забезпечення. Скажімо, для невеликого додатку (від одного до трьох людино-місяців) Java може не коштувати взагалі нічого. Безумовно, абсолютно безкоштовною ця технологія не є. Кваліфікований Java-програміст коштує грошей. Існує і необхідність в засобах проектування додатків, профілізації Java-програм і в інших інструментах, використовуваних при створенні великих проектів. Але, взагалі кажучи, конкуренція на ринку подібного ПО досить висока, а отже, ціни знижуються. Вибір різноманітний, і розробник не прив'язаний до конкретної компанії.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Реферат
26кб. | скачати


Схожі роботи:
7 міфів про маркетингових дослідженнях
Вісім методів заспокоїтися
Історії релігій Вісім безсмертних Даосизму
Сценарне планування Вісім кроків методики
Вісім помислів і боротьба з ними по витворам св авви Євагрія
П`ять міфів Петербурга
Художнє своєрідність міфів Ч Айтматова
Вісім принципів сучасного менеджменту якості ключові вигоди від їх застосування
Ядерні сверхматеріали доля невипадкових міфів
© Усі права захищені
написати до нас