Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лекция1

.doc
Скачиваний:
6
Добавлен:
16.02.2016
Размер:
181.25 Кб
Скачать

У Java існує всього 8 типів даних , які не є об'єктами . Вони були визначені з найпершої версії і ніколи не змінювалися. Це п'ять цілочисельних типів: byte , short , int , long , а також до них відносять символьний char . Потім два дрібних типу float і double і, нарешті , булевський тип boolean . Такі типи називаються простими , або примітивними (від англійського primitive ), і вони докладно розглядаються в лекції , присвяченій типам даних. Всі інші типи - об'єктні або посилальні (англ. reference ) .

Синтаксис Java чомусь багатьох ввів в оману. Він дійсно створений на основі синтаксису мов C / C + + , так що якщо подивитися на вихідний код програм , написаних на цих мовах і на Java , то не відразу вдається зрозуміти , яка з них якою мовою написана. Це чомусь дало багатьом привід думати , що Java - це спрощений C + + з додатковими можливостями , такими як garbage collector . Автоматичний збирач сміття ( garbage collector ) ми розглянемо трохи нижче , але вважати , що Java такий же мова, як і C + +, - велика помилка.

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

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

Що ж до об'єктної моделі , то вона скоріше була побудована за зразком таких мов, як Smalltalk від IBM , або розроблений ще в 60 -ті роки в Норвезькому Обчислювальному Центрі мову Simula , на який посилається сам творець Java Джеймс Гослінг .

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

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

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

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

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

Нарешті , Internet - бум 90 -х років набирав обертів і висував нові, жорсткіші вимоги до термінів розробки. Багаторічні проекти , які були минулого звичайною справою , перестали відповідати потребам замовників , нові системи треба було створювати максимум за рік , а то й за лічені місяці .

Крім введення garbage collector , були зроблені й інші кроки для полегшення розробки . Деякі з них вже згадувалися - відмова від множинного спадкоємства , спрощення синтаксису та ін Можливість створення багатопотокових додатків була реалізована в перші ж версії Java ( дослідження показали , що це дуже зручно для користувачів , а існуючі стандарти спираються на телетайпні системи , які застаріли багато років тому). Інші особливості будуть розглянуті в наступних лекціях. Однак те , що створення і підтримка систем дійсно простіше на Java , ніж на C / C + + , давно є загальновизнаним фактом. Втім , все-таки ці мови створені для різних цілей , і кожен має свої незаперечні переваги.

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

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

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

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

Сукупність описаних властивостей Java дозволяє стверджувати , що мова вельми пристосований для розробки Internet - і інтранет ( внутрішні мережі корпорацій ) -додатків.

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

Отже, підіб'ємо підсумки. Java- платформа володіє наступними перевагами :

переносимість , або кроссплатформенность ;

об'єктна орієнтованість , створена ефективна об'єктна модель ;

звичний синтаксис С / С + + ;

вбудована і прозора модель безпеки;

орієнтація на Internet -завдання , мережеві розподілені додатки ;

динамічність , легкість розвитку і додавання нових можливостей ;

простота освоєння.

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

Основні версії та продукти Java

Відразу обмовимося , що під продуктами тут розуміються програмні рішення від компанії Sun , що є " зразками реалізації" ( reference implementation ) .

Отже, вперше Java була оголошена 23 травня 1995 . Основними продуктами , доступними на той момент у вигляді бета- версій , були :

Java language specification , JLS , специфікація мови Java ( що описує лексику , типи даних , основні конструкції і т.д.);

специфікація JVM ;

Java Development Kit , JDK - засіб розробника , що складається в основному з утиліт , стандартних бібліотек класів і демонстраційних прикладів .

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

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

JDK довгий час було базовим засобом розробки додатків. Воно не містить ніяких текстових редакторів , а оперує тільки вже існуючими Java -файлами. Компілятор представлений утилітою javac ( java compiler ) . Віртуальна машина реалізована програмою java . Для тестових запусків аплетів існує спеціальна утиліта appletviewer . Нарешті , для автоматичної генерації документації на основі вихідного коду додається засіб javadoc .

Перша версія містила всього 8 стандартних бібліотек :

java.lang - базові класи , необхідні для роботи будь-якого додатку (назва - скорочення від language ) ;

java.util - багато корисні допоміжні класи;

java.applet - класи для створення аплетів ;

java.awt , java.awt.peer - бібліотека для створення графічного інтерфейсу користувача (GUI) , називається Abstract Window Toolkit , AWT , докладно описується в лекції 11 ;

java.awt.image - додаткові класи для роботи із зображеннями ;

java.io - робота з потоками даних ( streams ) і з файлами;

java.net - робота з мережею .

Таким чином , всі бібліотеки починаються з java , саме вони є стандартними. Всі інші ( починаються з com , org тощо) можуть змінюватися в будь-якої версії без підтримки сумісності.

Фінальна версія JDK 1.0 була випущена в січні 1996 року.

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

Друга цифра змінилася від 0 до 4 ( остання на момент створення курсу ) . У кожній версії відбувалося істотне розширення стандартних бібліотек ( 212 , 504 , 1781 , 2130 і 2738 - кількість класів і інтерфейсів з 1.0 по 1.4) , а також додавалися деякі нові можливості в саму мову. Змінювалися і утиліти, що входять в JDK .

Нарешті , третя цифра означає розвиток однієї версії. У мові або бібліотеках нічого не змінюється , лише усуваються помилки , проводиться оптимізація , можуть мінятися ( додаватися ) аргументи утиліт. Так , остання версія JDK 1.0 - 1.0.2 .

Хоча з розвитком версії 1.х нічого не видаляється , звичайно , якісь функції або класи застарівають .

Висновок

У цій лекції ми розповіли про те, яка непроста ситуація склалася в корпорації Sun в епоху розвитку персональних комп'ютерів наприкінці 1990 року. Патрік Нотон у своєму листі зумів виявити справжні причини такого стану та позначити справжні цілі для створення успішного продукту . Завдяки цьому за підтримки Джеймса Гослінга розпочався проект Green . Одним з продуктів , створених в рамках цього проекту , стала абсолютно нова платформа OaK . Для її просування Sun заснувала дочірню компанію FirstPerson , але справжній успіх прийшов , коли платформу , перейменувавши в Java , зорієнтували на застосування в Internet.

Глобальна мережа з'явилася в квітні 1993 року з виходом першого браузера Mosaic 1.0 і завойовувала користувача аудиторію з вражаючою швидкістю. Першим прикладом Java -додатків стали аплети , що запускаються за допомогою спеціально створеного браузера HotJava . Нарешті , після майже чотирирічної історії створення та розвитку , Java була офіційно представлена ​​світу . Завдяки підписанню ліцензійної угоди з Netscape , ця подія стала воістину тріумфальним.

Були розглянуті різні варіанти застосування Java. Окремо був описаний мову Java Script , який , незважаючи на подібність у назві , має не так багато спільного з Java. Докладно розглянуті відмітні особливості Java. Описано базові продукти від Sun: JDK і JRE . Коротко висвітлено історію розвитку версій платформи Java , включаючи додаються технології і продукти.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]