Нове в Java 1
Зміни, внесені в саму мову і що дозволяють включати класи один в одного та блоки програми.
Механізм побудови модульних програмних компонентів, призначених для багаторазового використання.
Безліч нових особливостей, що дозволяють писати програми, які працюють у будь-якій точці земної кулі.
Нова модель обробки подій
Нова модель обробки подій у графічних інтерфейсах, призначена для того, щоб полегшити побудову таких інтерфейсів.
Інші нові особливості A WT
AWT в Java 1.1 включає підтримку виведення на друк, операцій копіювання і вставки, контекстних меню, клавіш прискореного виклику меню, а також операцій передачі фокуса. У ньому покращена підтримка кольору, шрифтів, курсорів, прокручування та маніпуляції зображеннями.
Застосування JAR-файлів дозволяє згрупувати всі файли аплету до єдиного архіву. Цифрові підписи відкривають можливість запуску аплетів, які мають повну довіру користувача, в умовах мінімальних обмежень, пов'язаних з безпекою.
Тепер об'єкти можна легко серіалізувати для передачі мережі або запису на диск для постійного зберігання.
Програми на Java можуть тепер відбиватися (reflection) на себе чи інший клас із єдиною метою визначення методів і змінних, заданих у цьому класі, аргументів, переданих методам, тощо. Reflection API дозволяє також викликати методи на ім'я.
Java 1.1 включає нові пакети, які забезпечують підтримку цифрових підписів, обробку повідомлень, обробку ключів і списків керування доступом.
Java Database Connectivity (JDBC)
Новий пакет, що дозволяє Java-програм посилати SQL-запити серверам баз даних. До його складу входить"Міст", який забезпечує взаємодію з існуючими серверами баз даних ODBC.
Видалений виклик методів
Інтерфейс для підтримки розподілених програм на Java, в яких програма, що працює на одному комп'ютері, може викликати методи Java-об'єктів, що зберігаються на іншому комп'ютері.
Java 1.1: пакет за пакетом
Пакети та класи в бібліотеці класів Java взаємопов'язані та взаємозалежні. Багато нових особливостей Java 1.1 базуються на класах, що належать до декількох різних пакетів Java API. Нижче описується кожен із 23 пакетів, що утворюють ядро Java 1.1 API. Тут представлені нові пакети, а також розглянуто зміни, внесені до наявних пакетів.
Окрім можливості створювати JAR-файли та аплети з цифровим підписом та вводити нові атрибути в тег, в пакет java.applet жодних інших істотних змін не було внесено.
У пакеті java.awt містяться нові класи та інтерфейси, призначені для підтримки виведення на друк, контекстних меню та клавіш прискореного виклику меню, а також для забезпечення покращеної підтримки розміщення елементів інтерфейсу користувача на екрані, роботи з курсорами, смугами прокручування, кольорами та відсіканням зображень . У кількох класах реалізована підтримка нової моделі обробки подій пакету AWT, хоча більшість роботи з подіями сконцентрована в одному з декількох нових пакетів, що входять до пакету java.awt.
Класи та інтерфейси даного пакета утворюють фундамент для обміну інформацією між додатками (а також усередині додатку). Цей пакет також містить класи, що підтримують модель передачі інформації шляхом операцій копіювання та вставки через буфер обміну (clipboard). Можна припустити, що в майбутньому пакет буде розширено таким чином, щобзабезпечити підтримку механізму обміну інформацією за допомогою технології drag-and-drop. Один з основних механізмів обміну інформацією, що підтримуються цим пакетом, базується на використанні API серіалізації об'єктів (Object Serialization API) пакету java.io.
Класи подій – класи, які справді описують події.
Слухачі подій (listeners) - інтерфейси, що визначають методи, які мають бути реалізовані об'єктами, зацікавленими в отриманні повідомлень про події певного типу.
Адаптери подій (adaptors) - тривіальні безоператорні реалізації інтерфейсів слухачів подій, які добре пристосовані до створення підкласів.
Всі події та слухачі подій, визначені в цьому пакеті, є розширенням класу EventObject або інтерфейсу Event-Listener, визначених у пакеті java.util.
Цей пакет містить два нових класи фільтрів зображень, у яких використовується покращене масштабування зображень. Також внесено зміни до класів MemoryImageSource та PixelGrabber.
Зміни, внесені до цього пакета, переважно відображають зміни в java.awt. Наприклад, до них відносяться нові інтерфейси, які описують залежні від платформи контекстні меню та смуги прокручування.
Для створення засобів побудови програм, які програміст (і навіть не програміст) може використовувати при створенні програм з окремих Bean-об'єктів.
Для розробки Bean-об'єктів, які можна застосовувати у згаданих вище засобах побудови додатків.
Для розробки додатків (без використання згаданих вище засобів побудови), у яких застосовуються Bean-об'єкти.
Більшість класів та інтерфейсів даного пакету призначенодля розробників додатків або складніших Bean-об'єктів. Програмістам, які використовують Bean-об'єкти або розробляють прості Bean-об'єкти, не обов'язково вивчати більшість особливостей даного пакета. Робота засобів побудови додатків, які застосовують Bean-об'єкти, базується на Reflection API, визначеному в пакеті java.lang.reflect, а в багатьох Bean-об'єктах використовуються переваги API серіалізації об'єктів (Object Serialization API), визначеного в пакеті java.io. У JavaBeans API застосовується та ж модель обробки подій, що і Java 1.1 AWT, і класи та інтерфейси даного пакета, що забезпечують обробку подій, є розширеннями відповідного класу та інтерфейсу, визначених у пакеті java.util.
Пакет java.io – найбільший пакет ядра Java на сьогоднішній день. Це сталося тому, що в Java 1.1 додано такі компоненти:
Повний набір нових класів потоку символів на додаток до більшості існуючих класів введення-виведення через потік байтів. Ці нові потоки читання-запису забезпечують високу ефективність та багатомовну підтримку введення-виведення текстової інформації.
Нові класи та інтерфейси для підтримки серіалізації об'єктів.
Ряд нових типів сімейства IOException.
У цьому пакеті міститься ряд нових сімейств типу Exception і Error, а також нові класи Byte, short і Void, з додаванням яких до всіх простих типів даних Java (включаючи тип void) відповідають певні типи об'єктів. Ця обставина відіграє велику роль для пакету j ava. lang. reflect, де визначається новий Reflection API. До того ж істотні зміни, спрямовані на підтримку роботи Reflection API, внесені і до класу Class. У класах Class HClassLoader містяться методи, які забезпечуютьзнаходження ресурсів, пов'язаних із цим класом, таких як зображення, аудіофайли, файли властивостей тощо. Ресурси відіграють важливу роль у забезпеченні багатомовної підтримки Java 1.1.
Цей новий пакет дозволяє програмі Java перевіряти структуру класів Java і відображати її на власну структуру. У java.lang.reflect містяться класи, які описують змінні, методи та конструктори класів і дозволяють програмі отримати вичерпну інформацію про будь-який об'єкт, масив, метод, конструктор або змінну. Пакет java.Beans дуже базується саме на цьому пакеті.
У цьому новому пакеті міститься лише два класи, які підтримують арифметичні операції над цілими числами та над числами з плаваючою точкою довільної точності. У класі Biglnteger визначено також методи реалізації арифметичних операцій із модулями чисел, перевірки простих чисел та інших особливостей, необхідних криптографії.
Зміни, внесені до пакету java.net, реалізовані на досить низькому рівні. До них відносяться: широкомовні сокети, опції для сокетів у стилі UNIX, а також виключення нових типів, які забезпечують більшу глибину деталізації під час обробки мережевих винятків.
java.rmi У цьому пакеті визначено основні класи та інтерфейси, які використовуються для віддаленого виклику методів. Більшість класів цього пакету є типами винятків. Підпакети пакету java.rmi забезпечують додаткові, більш специфічні функції. У тих випадках, коли віддаленим методам як аргументи необхідно передавати об'єкти, віддалений виклик методу базується на серіалізації об'єктів, що забезпечує пакет java.io.
У цьому невеликому пакеті визначено класи та інтерфейси, які необхідні для реалізаціїрозподіленого збору сміття (DGC - Distributed Garbage Collection).
Цей пакет є найбільшим серед пакетів віддаленого виклику методів і є серцевиною RMI. У ньому визначено класи та інтерфейси, що дозволяють Java-програмі створювати об'єкти, які можуть бути використані віддалено іншими Java-програмами.
Цей пакет містить класи та інтерфейси, які є фундаментальними абстракціями елементів криптографії: відкритих і закритих ключів, сертифікатів, підтверджень про прийом повідомлень і цифрових підписів. У цьому пакеті відсутні реалізації таких абстракцій. За задумом Java Security API є незалежним від реалізації. У Java 1.1 немає реалізації за замовчуванням, але поруч із цим пакетом можна використовувати продажу, здійснювані продавцем конкретного програмного продукту. Базова реалізація механізму безпеки ґрунтується на використанні класу Biglnteger, визначеного в пакеті java .math.
У цьому пакеті визначено інтерфейси високого рівня та деякі винятки, призначені для роботи зі списками керування доступом (ACL – access control list).
У цьому пакеті визначено кілька інтерфейсів, які необхідні роботи схеми безпеки Java Security API, незалежно від реалізації.
java.sql У цьому пакеті міститься Java Database Connectivity (JDBC) API. Класи та інтерфейси, що знаходяться тут, дозволяють програмам на Java посилати SQL-запити баз даних і отримувати на них відповіді.
Як випливає з назви даного пакета, java.util містять допоміжні класи. У цей пакет Java 1.1 додано нові класи для підтримки моделей обробки подій пакетів AWT і Java Beans, для визначення місцевості (locale) і груп ресурсів (resource bundles), що використовуютьсядля забезпечення багатомовної підтримки, а також класи для роботи з датою, часом та часовими поясами.
У цьому пакеті реалізовано класи для розрахунку контрольних сум потоків даних, а також для стиснення та архівування потоків даних з використанням бібліотеки стиснення ZLIB та форматів файлів ZIP та GZIP.