Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические материалы СПтаОС (3курс).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
929.79 Кб
Скачать

1.3.2. Що таке jdk

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

  • компілятор javac з початкового тексту в байт-коды;

  • інтерпретатор java, що містить реалізацію JVM;

  • відладчик jdt>;

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

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

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

У 1996 р. була випущена перша версія JDK 1.0, яка модифікувалася до версії з номером 1.0.2. У 1997 р. з'явилася версія JDK 1.1, остання її модифікація, 1.1.8, випущена в 1998 р. Версія JDK 1.2 вийшла в грудні 1998 р.

1.3.3. Як використовувати jdk

Не дивлячись на те, що набір JDK призначений для створення програм, що працюють в графічних середовищах, таких як MS Windows, він орієнтований на виконання з командного рядка вікна MS-DOS Prompt в Windows 95/98/ME або вікна Command Prompt в Windows NT/2000/XP.

Написати програму на Java можна в будь-якому текстовому редакторові, наприклад, Notepad, WordPad в MS Windows. Треба тільки зберегти файл в текстовому форматі і дати йому розширення Java. Хай для прикладу, ім'ям файлу буде MyProgram.java, а сам файл збережений в поточному каталозі.

Після створення цього файлу з командного рядка викликається компілятор javac і йому передається початковий файл як параметр:

javac MyProgram.java

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

Компілятор мовчазний — якщо компіляція пройшла успішно, він нічого не повідомить, на екрані з'явиться тільки запрошення операційної системи. Якщо ж компілятор відмітить помилки, то він виведе, на екран повідомлення про них.

Далі з командного рядка викликається інтерпретатор байт-кодів java, якому передається файл з байт-кодами, причому його ім'я записується без розширення:

Java MyProgram

На екрані з'явиться виведення результатів роботи програми або повідомлення про помилки часу виконання.

Якщо робота з командного рядка, здається вам декілька застарілою, використовуйте для розробки інтегроване середовище (наприклад, Eclipse-SDK).

1.3.4. Проста програма на Java

Відповідно до давно сталої традиції розглянемо як перше завдання наступну.

Листинг 1.1. Програма, що виводить на екран текст “Здравствуй, мир!”

public class Hello {

public static void main(String[] args) {

System.out.println("Здравствуй, мир!");

}

}

Приведений вище текст обов'язково повинен міститися у файлі з ім'ям Hello.java. Зверніть увагу на те, що перша буква в імені є прописною, а останні - рядковими. Аби на екран видати російський текст, набирайте вашу програму в редакторові NotePad (або AkelPad), та Сохраните как … с кодировкой 866 (ОЕМ-русский).

Як і більшість інших мов, Java допускає довільне форматування тексту програми. Це означає, що будь-яку програму в принципі можна записати в один довгий рядок або, навпаки, максимально розтягнути по вертикалі, розміщуючи на кожному рядку лише по одній лексемі - мінімальній неділимій одиниці мови. Приведена вище програма складається з наступного ланцюжка лексем: ключові слова public, class, ідентифікатор Hello, роздільник {, ключові слова public, static і void, ідентифікатор main, роздільник (, ідентифікатор String, роздільники [ і ], ідентифікатор args, роздільники ) і {, ідентифікатор System, роздільник ., ідентифікатор out, роздільник ., ідентифікатор println, роздільник (, строковий літерал "Здрастуйте, світ!", роздільники ) ;, і двічі }. Дана програма не містить лексем лише ще одного типа, що існує в мові, - констант, прикладом якої є, скажімо, число 5.

Людина, проте, не машина, і їй далеко не байдуже, як відформатований текст програми. Невдале форматування істотно ускладнює правильне сприйняття тексту і породжує потенційні помилки.

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

Послідовне виконання двох команд javac Hello.java і java Hello повинне привести до того, що на екрані з'явиться результат роботи програми - рядок Здрастуйте, світ!

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

У лістингу 1.2 приведена програма в найпростішому вигляді, записана на мові Java, яка виводить на екран середнє значення двох чисел.

Лістинг 1.2. Проста програма на мові Java.

/* Програма обчислення середнього значення двох чисел */

class SredZnach {

public static void main(String args[]) { // опис методу

double a=5, b=20, SredZ; // опис змінних

SredZ = (a+b)/2;

System.out.println("(a+b)/2 = " + SredZ);

}

}

Або з введенням чисел а i b:

/* Програма обчислення середнього значення двох чисел */

import java.io.*; //подключаем библиотеку ввода\вывода

class SredZna {

public static void main(String args[]) { // опис методу

double a=5, b=20, SredZ; // опис змiнних

String line = null; //обьявляем переменные

try {

BufferedReader is = new BufferedReader( //обьявляем

new InputStreamReader(System.in)); //буффер ввода

System.out.println("Введiть значення для а = ");

line = is.readLine(); //читаем строку

//a = Integer.parseInt(line); //берём с нее переменную(указываем тип Integer)

a = Double.parseDouble(line);//берём с нее переменную(указываем тип Double)

System.out.println("Введiть значення для b = ");

line = is.readLine(); //читаем строку

b = Double.parseDouble(line);//берём с нее переменную(указываем тип Double)

}

catch (NumberFormatException ex) { //"ловим" ошибки ввода

System.err.println("Not a valid number: " + line); //"ловим" ошибки ввода

}

catch (IOException e) { //"ловим" ошибки ввода

System.err.println("Unexpected IO ERROR: " + e);//"ловим" ошибки ввода

}

SredZ = (a+b)/2;

System.out.println("(a+b)/2 = " + SredZ);

}

}

Всяка програма складається з одного або декількох класів, в цьому простому прикладі тільки один клас (class).

Початок класу наголошується службовим словом class, за яким слідує ім'я класу, вибране довільно, в даному випадку SredZnach. Все, що міститься в класі, записується у фігурних дужках ({ }) і складає тіло класу (class body).

Всі дії проводяться за допомогою методів обробки інформації, коротко говорять просто метод (method). Ця назва уживається в мові Java замість назви "функція", вживаної в інших мовах.

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

Як і належить функції, метод завжди видає в результаті (частіше говорять, повертає (returns)) тільки одне значення, тип якого обов'язково указується перед ім'ям методу. Метод може і не повертати ніякого значення, граючи роль процедури, як в нашому випадку. Тоді замість типу повертаного значення записується слово void, як це і зроблено в прикладі.

Після імені методу в дужках, через кому, перераховуються аргументи (arguments) - або параметри методу. Для кожного аргументу указується його тип і, через пропуск, ім'я. У прикладі тільки один аргумент, його тип — масив, що складається з рядків символів. Рядок символів — це вбудований в Java API тип string, а квадратні дужки — ознака масиву. Ім'я масиву може бути довільним, в прикладі вибрано ім'я args .

Перед типом поверненого методом значення можуть бути записані модифікатори доступу. У прикладі їх два. Ключове слово public дозволяє програмістові управляти видимістю будь-якого методу і будь-якої змінної. В даному випадку модифікатор доступу public означає, що метод main видно і доступно будь-якому класу. Існують ще 2 покажчики рівня доступу — private і protected, з якими ви детальніше можете познайомитися у відповідній літературі.

Наступне ключове слово static забезпечує можливість виклику методу main () на самому початку виконання програми. За допомогою цього слова оголошуються методи і змінні класу, використовувані для роботи з класом в цілому. Методи, в оголошенні яких використано ключове слово static, можуть безпосередньо працювати тільки з локальними і статичними змінними. Модифікатори взагалі необов'язкові, але для методу main () вони необхідні.

Після імені методу ставляться дужки, щоб підкреслити, що це ім'я саме методу, а не простої змінної. Все, що містить метод, тіло методу (method body), також записується у фігурних дужках ({ }).

Блок також записується у фігурних дужках ({ }). Блок містить в собі нуль або декілька операторів з метою використовувати їх як один оператор в тих місцях, де по правилах мови можна записати тільки один оператора.

Єдина дія, яка виконує метод main () у прикладі, полягає у обчисленні виразу (SredZ = (a+b)/2) і виклику іншого методу з складним ім'ям System.out.println і передачі йому на обробку одного аргументу: текстова константа "(a+b)/2 = " з’єднана операцією конкатенації (+) із змінною SredZ. Текстові константи записуються в лапках, які є тільки обмежувачами і не входять до складу тексту. Як бачимо, оператор + є поліморфним і виконується різним чином для чисел і рядків:

2 + 2 // 4

"i = " + "c" // "i = c"

2 + "i = " // Помилка!

Складене ім'я System.out.println означає, що в класі System, що входить в Java API, визначається змінна з ім'ям out, що містить екземпляри одного з класів Java API, класу PrintStream, в якому є метод println() . Все це стане ясно пізніше, коли ви будете вивчати мову Java, а поки просто писатимемо це довге ім'я.

Дія методу println () полягає у виведенні свого аргументу у вихідний потік, пов'язаний зазвичай з виводом на екран текстового терміналу, у вікно MS-DOS Prompt або Command Prompt. Після виводу курсор переходить на початок наступного рядка екрану. У складі Java API є і метод print (), курсор, що залишається, в кінці виведеного рядка. Зрозуміло, що це прямий вплив мови Pascal.

Зробимо відразу важливе зауваження. Мова Java розрізняє строчні і прописні букви. Імена main, Main, MAIN різні з погляду компілятора Java. У прикладі важливо писати String, System із заголовної букви, а main з маленькою. Але усередині текстової константи неважливо, писати Century або century, компілятор взагалі не "дивиться" на неї, різниця буде видна тільки на екрані.

Мова Java розрізняє прописні і строчні букви. Свої імена можна записувати як завгодно, можна було б дати класу ім'я Sredznach або sredznach, але між Java-програмистами складена угода - "Code Conventions for the Java Programming Language". Ось декілька пунктів цієї угоди:

  • імена класів починаються з прописної букви; якщо ім'я містить декілька слів, то кожне слово починається з прописної букви;

  • імена методів і змінних починаються з строчної букви; якщо ім'я містить декілька слів, то кожне наступне слово починається з строчної букви;

  • імена констант записуються повністю прописними буквами; якщо ім'я складається з декількох слів, то між ними ставиться знак підкреслення.

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

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

У текст програми можна вставляти коментарі, які компілятор не враховуватиме. Вони дуже корисні для пояснень по ходу програми. В період відладки можна вимикати з дій один або декілька операторів, помітивши їх символами коментаря, як говорять програмісти, "закомментарив" їх. Коментарі вводяться таким чином:

  • за двома підряд символами //, без пропуску між ними, починається коментар, що продовжується до кінця рядка;

  • за символами /* починається коментар, який може займати декілька рядків, до двох символів */ (без пропусків між цими знаками).

При використанні дійсних констант в кінці константи можна поставити букву F або f, тоді константа зберігатиметься у форматі типу float: 3.5f, -45.67F, 4.7e-5f . Можна приписати і букву D (або d ): 0.045D, -456.77889d, що означає тип double, але це зайве, оскільки дійсні константи і так зберігаються у форматі типу double.

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

Називайте файл з програмою ім'ям класу, що містить метод main (), дотримуючи регістр букв. У нашому прикладі, збережемо програму у файлі з ім'ям SredZnach.java у поточному каталозі. Потім викличемо компілятор, передаючи йому ім'я файлу як аргумент: javac SredZnach.java

Компілятор створить файл з байт-кодами, дасть йому ім'я SredZnach.class і запише цей файл в поточний каталог. Залишилося викликати інтерпретатор, передавши йому як аргумент ім'я класу (а не файлу): Java SredZnach

Ще раз нагадуємо, не указуйте розширення class при виклику інтерпретатора.

Щоб не “засмічувати” директорію, де знаходитися компілятор і інтерпретатор Java, своїми програмами, складіть bat-файл для запуску компілятора і інтерпретатора, якщо не прописаний шлях до Java в ОС. Наприклад:

ZAPUSK_Javaс.bat: ZAPUSK_Java.bat:

rem zapusk kompilytora rem zapusk interpretatora

c:\jdk1.3.1_04\bin\javac.exe lab1.java c:\jdk1.3.1_04\bin\java.exe lab1

pause pause