Словарь java — терминов. Язык программирования Java

, Scala , Python , BeanShell , Kotlin , Gentee

Лицензия GNU General Public License / Java Community Process Сайт java.com

Достоинством подобного способа выполнения программ является полная независимость байт-кода от операционной системы и оборудования , что позволяет выполнять Java-приложения на любом устройстве, для которого существует соответствующая виртуальная машина. Другой важной особенностью технологии Java является гибкая система безопасности, в рамках которой исполнение программы полностью контролируется виртуальной машиной. Любые операции, которые превышают установленные полномочия программы (например, попытка несанкционированного доступа к данным или соединения с другим компьютером), вызывают немедленное прерывание.

Часто к недостаткам концепции виртуальной машины относят снижение производительности. Ряд усовершенствований несколько увеличил скорость выполнения программ на Java:

  • применение технологии трансляции байт-кода в машинный код непосредственно во время работы программы (JIT -технология) с возможностью сохранения версий класса в машинном коде,
  • широкое использование платформенно-ориентированного кода (native-код) в стандартных библиотеках,
  • аппаратные средства, обеспечивающие ускоренную обработку байт-кода (например, технология Jazelle , поддерживаемая некоторыми процессорами фирмы ARM).

По данным сайта shootout.alioth.debian.org, для семи разных задач время выполнения на Java составляет в среднем в полтора-два раза больше, чем для C/C++, в некоторых случаях Java быстрее, а в отдельных случаях в 7 раз медленнее . С другой стороны, для большинства из них потребление памяти Java-машиной было в 10-30 раз больше, чем программой на C/C++. Также примечательно исследование, проведённое компанией Google , согласно которому отмечается существенно более низкая производительность и бо́льшее потребление памяти в тестовых примерах на Java в сравнении с аналогичными программами на C++ .

Идеи, заложенные в концепцию и различные реализации среды виртуальной машины Java, вдохновили множество энтузиастов на расширение перечня языков, которые могли бы быть использованы для создания программ, исполняемых на виртуальной машине . Эти идеи нашли также выражение в спецификации общеязыковой инфраструктуры CLI , заложенной в основу платформы .NET компанией Microsoft .

История версий

JDK 1.0

Разработка Java началась в 1990 году, первая официальная версия - Java 1.0, - была выпущена только 21 января 1996 года. Кодовое имя Oak.

JDK 1.1

  • Библиотека Accessibility.
  • Java 2D.
  • Поддержка технологии drag-and-drop .
  • Полная поддержка Unicode , включая поддержку ввода на японском, китайском и корейском языках.
  • Поддержка воспроизведения аудиофайлов нескольких популярных форматов.
  • Полная поддержка технологии CORBA .
  • JIT-компилятор, улучшенная производительность.
  • Усовершенствования инструментальных средств JDK, в том числе поддержка профилирования Java-программ.

J2SE 1.2

Дата выпуска 8 декабря 1998 года. Кодовое имя Playground. В данном случае встречается путаница. Выпускались книги, например, Beginning Java 2 by Ivor Horton (Mar 1999), фактически по J2SE 1.2 (бывшее название - Java 2). Вместе с тем по сей день такие книги публикуются, например: Х. М. Дейтел, П. Дж. Дейтел, С. И. Сантри. Технологии программирования на Java 2. Распределённые приложения (2011).

В то время, когда, как известно, Java 2 была исторически заменена следующими релизами, подобные названия книг дезориентируют в понимании, о какой же версии Java они написаны на самом деле. Если J2SE 1.2 принято считать за Java 2, а авторы книг за Java 2 принимают JDK 7, это приводит к полной путанице.

J2SE 1.3

J2SE 1.4

J2SE 5.0

Спецификация Java 5.0 была выпущена 30 сентября 2004 года, кодовое имя Tiger. C этой версии изменена официальная индексация, вместо Java 1.5 правильнее называть Java 5.0. Внутренняя же индексация Sun осталась прежней - 1.x. Минорные изменения теперь включаются без изменения индексации, для этого используется слово «Update» или буква «u», например, Java Development Kit 5.0 Update 22. Предполагается, что в обновления могут входить как исправления ошибок, так и небольшие добавления в API, JVM.

В данной версии разработчики внесли в язык целый ряд принципиальных дополнений:

  • Перечислимые типы (англ. enum ). Ранее отсутствовавшие в Java типы оформлены по аналогии с C++ , но при этом имеют ряд дополнительных возможностей.
    • Перечислимый тип является полноценным классом Java, то есть может иметь конструктор, поля, методы, в том числе скрытые и абстрактные.
    • Перечисление может реализовывать интерфейсы .
    • Для перечислений имеются встроенные методы, дающие возможность получения значений типа по имени, символьных значений, соответствующих именам, преобразования между номером и значением, проверки типа на то, что он является перечислимым.
  • Аннотации - возможность добавления в текст программы метаданных, не влияющих на выполнение кода, но допускающих использование для получения различных сведений о коде и его исполнении. Одновременно выпущен инструментарий для использования аннотированного кода. Одно из применений аннотаций - упрощение создания тестовых модулей для Java-кода.
  • Средства обобщённого программирования (англ. generics ) - механизм, аналогичный Eiffel (позже также появились и в C#, принципиально отличаются от шаблонов C++), дающий возможность создавать классы и методы с полями и параметрами произвольного объектного типа. С использованием данного механизма реализованы новые версии коллекций стандартной библиотеки Java.
  • Методы с неопределённым числом параметров.
  • Autoboxing/Unboxing - автоматическое преобразование между скалярными типами Java и соответствующими типами-обёртками (например, между int - Integer). Наличие такой возможности сокращает код, поскольку исключает необходимость выполнения явных преобразований типов в очевидных случаях.
  • Разрешён импорт статических полей и методов.
  • В язык введён цикл по коллекции объектов (итератор, англ. foreach ).
  • Было введено использование Javadoc -комментариев, которые используются для автоматического оформления документации по комментариям в исходном коде.

Java SE 6

Релиз версии состоялся 11 декабря 2006 года, кодовое имя Mustang. Изменена официальная индексация - вместо ожидаемой 6.0 версия значится как 6. Минорные изменения, как и в Java 5.0, вносятся в обычные обновления версии, например, Java Standard Edition Development Kit 6 Update 27. Внесены следующие изменения:

Java FX

Java ME Embedded

Java SE 7

Релиз версии состоялся 28 июля 2011 года, кодовое имя Dolphin . В финальную версию Java Standard Edition 7 не были включены все ранее запланированные изменения. Согласно плану развития (план «Б») , включение нововведений будет разбито на две части: Java Standard Edition 7 (без лямбда-исчисления , проекта Jigsaw, и части улучшений Coin) и Java Standard Edition 8 (все остальное), намеченный на конец 2012 года.

В новой версии, получившей название Java Standard Edition 7 (Java Platform, Standard Edition 7), помимо исправления большого количества ошибок, было представлено несколько новшеств. Так, например, в качестве эталонной реализации Java Standard Edition 7 использован не проприетарный пакет JDK , а его открытая реализация OpenJDK , а сам релиз новой версии платформы готовился при тесном сотрудничестве инженеров Oracle с участниками мировой экосистемы Java, комитетом JCP (Java Community Process) и сообществом OpenJDK . Все поставляемые Oracle бинарные файлы эталонной реализации Java Standard Edition 7 собраны на основе кодовой базы OpenJDK , сама эталонная реализация полностью открыта под лицензией GPLv2 с исключениями GNU ClassPath, разрешающими динамическое связывание с проприетарными продуктами. К другим нововведениям относится интеграция набора небольших языковых улучшений Java, развиваемых в рамках проекта Coin, добавлена поддержка языков программирования с динамической типизацией, таких, как Ruby , Python и JavaScript , поддержка загрузки классов по URL , обновлённый XML -стек, включающий JAXP 1.4, JAXB 2.2a и JAX-WS 2.2 и другие .

За 5 дней до выхода релиза Java Standard Edition 7 было обнаружено несколько серьёзных ошибок в горячей оптимизации циклов, которая включена по умолчанию и приводит виртуальную машину Java к краху. Специалисты Oracle найденные ошибки за столь короткий срок исправить не могли, но пообещали, что они будут исправлены во втором обновлении (Java 7 Update 2) и частично в первом .

Список нововведений

Java SE 8

Список нововведений

  • Полноценная поддержка лямбда-выражений .
  • Ключевое слово default в интерфейсах для поддержки функциональности по умолчанию.
  • Ссылки на методы.
  • Функциональные интерфейсы (предикаты , поставщики и т. д.)
  • Потоки (stream) для работы с коллекциями
  • Новое API для работы с датами
  • … (не закончено)

Java SE 9

Список нововведений

  • Интеграция jigsaw.
  • Обновление Process API для лучшего взаимодействия с не-Java процессами операционной системы.
  • Новый HTTP-клиент с поддержкой HTTP 2.0, веб-сокетов и заменой устаревшему HttpURLConnection.
  • Новый компилятор "Graal"
  • Сжатые строки
  • Java Microbenchmark Harness (JMH)
  • ...(не закончено)

Классификация платформ Java

Внутри Java существует несколько основных семейств технологий:

  • Java SE - Java Standard Edition, основное издание Java, содержит компиляторы, API, Java Runtime Environment ; подходит для создания пользовательских приложений, в первую очередь - для настольных систем.
  • Java EE - Java Enterprise Edition, представляет собой набор спецификаций для создания программного обеспечения уровня предприятия.
  • Java ME - Java Micro Edition, создана для использования в устройствах, ограниченных по вычислительной мощности, например, в мобильных телефонах , КПК , встроенных системах;
  • JavaFX - технология, являющаяся следующим шагом в эволюции Java как Rich Client Platform; предназначена для создания графических интерфейсов корпоративных приложений и бизнеса.
  • Java Card - технология предоставляет безопасную среду для приложений, работающих на смарт-картах и других устройствах с очень ограниченным объёмом памяти и возможностями обработки.

Java и Microsoft

В 2005 году компанией Microsoft для платформы .NET был представлен Java-подобный язык , не соответствующий официальной спецификации языка Java и исключённый впоследствии из стандартного инструментария разработчика Microsoft Visual Studio , начиная с Visual Studio 2008 .

Java и Android

Язык Java активно используется для создания мобильных приложений под операционную систему Android. При этом программы компилируются в нестандартный байт-код, для использования их виртуальной машиной Dalvik (начиная с Android 5.0 Lollipop виртуальная машина заменена на ART). Для такой компиляции используется дополнительный инструмент, а именно Android SDK (Software Development Kit), разработанный компанией Google .

Разработку приложений можно вести в среде Android Studio , NetBeans , в среде Eclipse , используя при этом плагин Android Development Tools (ADT), или в IntelliJ IDEA . Версия JDK при этом должна быть 5.0 или выше.

Следующие компании в основном фокусируются на Java (J2EE) технологиях: SAP , IBM , Oracle . В частности, СУБД Oracle Database включает JVM как свою составную часть, обеспечивающую возможность непосредственного программирования СУБД на языке Java, включая, например, хранимые процедуры .

Производительность

Программы, написанные на Java, имеют репутацию более медленных и занимающих больше оперативной памяти, чем написанные на языке C . Тем не менее, скорость выполнения программ, написанных на языке Java, была существенно улучшена с выпуском в 1997-1998 годах так называемого JIT-компилятора в версии 1.1 в дополнение к другим особенностям языка для поддержки лучшего анализа кода (такие, как внутренние классы, класс StringBuffer, упрощенные логические вычисления и т. д.). Кроме того, была произведена оптимизация виртуальной машины Java - с 2000 года для этого используется виртуальная машина HotSpot . По состоянию на февраль 2012 года, код Java 7 приблизительно в 1.8 раза медленнее кода, написанного на языке Си .

Некоторые платформы предлагают аппаратную поддержку выполнения для Java [ ] . К примеру, микроконтроллеры, выполняющие код Java на аппаратном обеспечении вместо программной JVM, а также основанные на ARM процессоры, которые поддерживают выполнение байткода Java через опцию Jazelle.

Основные возможности

Внутри пакета есть два независимых пространства имен: переменные и методы.

Пример программы

Пример использования Generics

import java.util.* ; public class Sample { public static void main (String args ) { // Создание объекта по шаблону. List < String > strings = new LinkedList < String >(); strings . add ("Hello" ); strings . add ("world" ); strings . add ("!" ); for (String s : strings ) { System . out . print (s + " " ); } } }

Пример использования Reflection

import java.lang.reflect.Field ; import java.lang.reflect.Method ; class TestClass { private int value ; public int getValue () { return value ; } public void setValue (int valueIn ) { this . value = valueIn ; } } public class Main { public static void main (String args ) { TestClass testClass = new TestClass (); for (Field field : testClass . getClass (). getDeclaredFields ()) { System . out . printf ("name:%s, type:%s \n" , field . getName (), field . getType (). getCanonicalName ()); } for (Method method : testClass . getClass (). getDeclaredMethods ()) { System . out . printf ("name:%s, return type:%s \n" , method . getName (), method . getReturnType (). getCanonicalName ()); } } }

Пример использования Аннотаций

import java.lang.annotation.ElementType ; import java.lang.annotation.Retention ; import java.lang.annotation.RetentionPolicy ; import java.lang.annotation.Target ; @Retention (RetentionPolicy . RUNTIME ) @Target (ElementType . TYPE ) public @interface Annotation { public boolean value () default false ; } @Annotation (value = true ) public class TestClass { } public class Main { public static void main (String args ) { TestClass testClass = new TestClass (); Annotation annotation = testClass . getClass (). getAnnotation (Annotation . class ); if (annotation != null ) { System . out . printf ("value:%s \n" , annotation . value ()); } } }

Основные идеи

Примитивные типы

В языке Java только 8 примитивных (скалярных, простых) типов : boolean , byte , char , short, int , long, float , double . Существует также вспомогательный девятый примитивный тип - void , однако переменные и поля такого типа не могут быть объявлены в коде, а сам тип используется только для описания соответствующего ему класса, для использования при рефлексии : например, с помощью класса Void можно узнать, является ли определённый метод типа void: Hello.class.getMethod("main", String.class).getReturnType() == Void.TYPE .

Длины и диапазоны значений примитивных типов определяются стандартом, а не реализацией, и приведены в таблице. Тип char сделали двухбайтовым для удобства локализации (один из идеологических принципов Java): когда складывался стандарт, уже существовал Unicode -16, но не Unicode-32. Поскольку в результате не осталось однобайтового типа, добавили новый тип byte, причём в Java, в отличие от других языков, он не является беззнаковым. Типы float и double могут иметь специальные значения + ∞ {\displaystyle +\infty } , и «не число» (NaN). Для типа double они обозначаются Double.POSITIVE_INFINITY , Double.NEGATIVE_INFINITY , Double.NaN ; для типа float - так же, но с приставкой Float вместо Double. Минимальные и максимальные значения, принимаемые типами float и double, тоже стандартизованы.

Тип Длина (в байтах) Диапазон или набор значений
boolean 1 в массивах, 4 в переменных true, false
byte 1 −128..127
char 2 0..2 16 −1, или 0..65535
short 2 −2 15 ..2 15 −1, или −32768..32767
int 4 −2 31 ..2 31 −1, или −2147483648..2147483647
long 8 −2 63 ..2 63 −1, или примерно −9.2·10 18 ..9.2·10 18
float 4 -(2-2 −23)·2 127 ..(2-2 −23)·2 127 , или примерно −3.4·10 38 ..3.4·10 38 , а также − ∞ {\displaystyle -\infty } , ∞ {\displaystyle \infty } , NaN
double 8 -(2-2 −52)·2 1023 ..(2-2 −52)·2 1023 , или примерно −1.8·10 308 ..1.8·10 308 , а также − ∞ {\displaystyle -\infty } , ∞ {\displaystyle \infty } , NaN

Такая жёсткая стандартизация была необходима, чтобы сделать язык платформенно-независимым, что является одним из идеологических требований к Java. Тем не менее, одна небольшая проблема с платформенной независимостью всё же осталась. Некоторые процессоры используют для промежуточного хранения результатов 10-байтовые регистры или другими способами улучшают точность вычислений. Для того, чтобы сделать Java максимально совместимой между разными системами, в ранних версиях любые способы повышения точности вычислений были запрещены. Однако это приводило к снижению быстродействия. Выяснилось, что ухудшение точности ради платформенной независимости мало кому нужно, тем более если за это приходится платить замедлением работы программ. После многочисленных протестов этот запрет отменили, но добавили ключевое слово strictfp , запрещающее повышение точности.

Преобразования при математических операциях

В языке Java действуют следующие правила:

  1. Если один операнд имеет тип double, другой тоже преобразуется к типу double.
  2. Иначе, если один операнд имеет тип float, другой тоже преобразуется к типу float.
  3. Иначе, если один операнд имеет тип long, другой тоже преобразуется к типу long.
  4. Иначе оба операнда преобразуются к типу int.

Данный способ неявного преобразования встроенных типов полностью совпадает с преобразованием типов в C++ .

Объектные переменные, объекты, ссылки и указатели

В языке Java имеются только динамически создаваемые объекты. Причём переменные объектного типа и объекты в Java - совершенно разные сущности. Переменные объектного типа являются ссылками , то есть неявными указателями на динамически создаваемые объекты. Это подчёркивается синтаксисом описания переменных. Так, в Java нельзя писать:

double a [ 10 ][ 20 ]; Foo b (30 );

double a = new double [ 10 ][ 20 ]; Foo b = new Foo (30 );

При присваиваниях, передаче в подпрограммы и сравнениях объектные переменные ведут себя как указатели, то есть присваиваются, копируются и сравниваются адреса объектов. А при доступе с помощью объектной переменной к полям данных или методам объекта не требуется никаких специальных операций разыменовывания - этот доступ осуществляется так, как если бы объектная переменная была самим объектом.

Объектными являются переменные любого типа, кроме примитивного. Явных указателей в Java нет. В отличие от указателей C, C++ и других языков программирования, ссылки в Java в высокой степени безопасны благодаря жёстким ограничениям на их использование, в частности:

Благодаря таким специально введенным ограничениям в Java невозможно прямое манипулирование памятью на уровне физических адресов (хотя определено значение ссылки, не указывающей ни на что: null).

Если нужен указатель на примитивный тип, используются классы-обёртки примитивных типов: Boolean , Byte , Character , Short , Integer , Long , Float , Double .

Дублирование ссылок и клонирование

Из-за того, что объектные переменные являются ссылочными, при присваивании не происходит копирования объекта. Так, если написать

Foo foo , bar ; … bar = foo ;

то произойдет копирование адреса из переменной foo в переменную bar . То есть foo и bar будут указывать на одну и ту же область памяти, то есть на один и тот же объект; попытка изменить поля объекта, на который ссылается переменная foo , будет менять объект, с которым связана переменная bar , и наоборот. Если же необходимо получить именно ещё одну копию исходного объекта, пользуются или методом (функцией-членом, в терминологии C++) clone () , создающим копию объекта, или (реже) копирующим конструктором (конструкторы в Java не могут быть виртуальными, поэтому экземпляр класса-потомка будет неправильно скопирован конструктором класса-предка; метод клонирования вызывает нужный конструктор и тем самым позволяет обойти это ограничение).

Метод clone() требует, чтобы класс реализовывал интерфейс Cloneable (об интерфейсах см. ниже). Если класс реализует интерфейс Cloneable , по умолчанию clone() копирует все поля (мелкая копия ). Если требуется не копировать, а клонировать поля (а также их поля и так далее), надо переопределять метод clone() . Определение и использование метода clone() часто является нетривиальной задачей .

Инициализация переменных

Все переменные или требуют явного определения, или автоматически заполняются нулями (0, null, массивом нулей). Таким образом, исчезают гейзенбаги , связанные со случайным использованием неинициализированной памяти, характерные для низкоуровневых языков вроде C.

Сборка мусора

В языке Java невозможно явное удаление объекта из памяти - вместо этого реализована Сборка мусора . Традиционным [ ] приёмом, дающим сборщику мусора «намёк» на освобождение памяти, является присваивание переменной пустого значения null . Это, однако, не значит, что объект, заменённый значением null , будет непременно и немедленно удалён, но есть гарантия, что этот объект будет удалён именно в будущем. Данный приём всего лишь устраняет ссылку на объект, то есть отвязывает указатель от объекта в памяти. При этом следует учитывать, что объект не будет удален сборщиком мусора, пока на него указывает хотя бы одна ссылка из используемых переменных или объектов. Существуют также методы для инициации принудительной сборки мусора, но не гарантируется, что они будут вызваны исполняющей средой, и их не рекомендуется использовать для обычной работы.

Классы и функции

Java не является процедурным языком: любая функция может существовать только внутри класса. Это подчёркивает терминология языка Java, где нет понятий «функция» или «функция-член» (англ. member function ), а только метод . В методы превратились и стандартные функции. Например, в Java нет функции sin() , а есть метод Math.sin() класса Math (содержащего, кроме sin() , методы cos() , exp() , sqrt() , abs() и многие другие). Конструкторы в Java не считаются методами. Деструкторов в Java не существует, а метод finalize() ни в коем случае нельзя считать аналогом деструктора.

Конструкторы

Конструктор - это специальный метод, который обязательно вызывается при создании нового объекта, то есть объект (экземпляр класса) не может быть создан без вызова конструктора класса. Не всегда удобно инициализировать все переменные класса при создании его экземпляра, поэтому переменные экземпляра часто объявляют внутри тела конструктора, а инициализируют как аргументы конструктора при создании экземпляра класса. Иногда проще, чтобы какие-то значения были бы созданы по умолчанию при создании объекта. В таком случае переменные объявляются и инициализируются внутри тела конструктора.

Конструктор инициализирует объект непосредственно во время создания. Имя конструктора совпадает с именем класса, включая регистр, а по синтаксису конструктор похож на метод без возвращаемого значения.

private int Cat (); // так выглядит метод по имени Cat Cat (); // так выглядит конструктор класса Cat

В отличие от метода, конструктор никогда ничего не возвращает.

Конструктор определяет действия, выполняемые при создании объекта класса, и является важной частью класса. Как правило, программисты стараются явно указать конструктор. Если явного конструктора нет, то Java автоматически создаст его (пустым) для использования по умолчанию.

Создадим класс Box с конструктором, который просто установит начальные значения для коробки.

class Box { int width ; // ширина коробки int height ; // высота коробки int depth ; // глубина коробки // Конструктор Box (int a , int b ) { width = a ; height = b ; depth = 10 ; } // вычисляем объём коробки int getVolume () { return width * height * depth ; } }

Статические методы и поля

В Java (как и в C++) используются статические поля и статические методы (англ. static method - в теории программирования их также называют методами класса), которые задаются при помощи ключевого слова static . Статические поля (переменные класса) имеют тот же смысл, что и в C++: каждое такое поле является собственностью класса, поэтому для доступа к статическим полям не требуется создавать экземпляры соответствующего класса.

Например, математические функции, реализованные в классе Math , представляют собой как раз статические методы данного класса. Поэтому можно писать

double x = Math . sin (1 );

Math m = new Math (); double x = m . sin (1 );

Поскольку статические методы существуют независимо от объектов (экземпляров класса), они не имеют доступа к обычным (не статическим) полям и методам данного класса. В частности, при реализации статического метода недопустимо использовать идентификатор this .

Благодаря возможности статического импорта, возможно также вызывать статические функции и константы без указания класса, чтобы вместо кода

double x = Math . sin (Math . tan (Math . sqrt (y )) + Math . floor (24.5 )) + Math . cos (42 * Math . PI );

писать код

import static java.lang.Math.* ; ... double x = sin (tan (sqrt (y )) + floor (24.5 )) + cos (42 * PI );

Завершённость (final)

Ключевое слово final (финальный) имеет разные значения при описании поля, метода или класса.

  1. Финальное поле класса инициализируется при описании или в конструкторе класса (а статическое поле - в статическом блоке инициализации). Впоследствии его значение не может быть изменено. Если статическое поле класса или переменная проинициализированы константным выражением, они рассматриваются компилятором как именованная константа ; в таком случае их значение может быть использовано в операторах switch (для констант типа int), а также для условной компиляции (для констант типа boolean) при использовании с оператором if .
  2. Значения локальных переменных , а также параметров метода , помеченных ключевым словом final, не могут быть изменены после присвоения. При этом их значения могут использоваться внутри анонимных классов .
  3. Метод класса, отмеченный словом final, не может быть переопределён при наследовании.
  4. Финальный класс не может иметь наследников.

Абстрактность

В Java методы, не объявленные явно как static , final или private , являются виртуальными в терминологии C++: при вызове метода, по-разному определённого в базовом и наследующем классах, всегда производится проверка времени выполнения.

Абстрактным методом (модификатор abstract) в Java называется метод, для которого заданы параметры и тип возвращаемого значения, но не задано тело. Абстрактный метод определяется в классах-наследниках. Аналог абстрактного метода в C++ - чисто виртуальная функция (pure virtual function). Для того чтобы в классе можно было описывать абстрактные методы, сам класс тоже должен быть описан как абстрактный. Объекты абстрактного класса создавать нельзя.

Интерфейсы

Высшей степенью абстрактности в Java является интерфейс (модификатор interface). Все методы интерфейса абстрактны: описатель abstract даже не требуется. Интерфейс в Java не считается классом, хотя, по сути, является полностью абстрактным классом. Класс может наследовать/расширять (extends) другой класс или реализовывать (implements) интерфейс. Кроме того, интерфейс может наследовать/расширять другой интерфейс.

В Java класс не может наследовать более одного класса, зато может реализовывать несколько интерфейсов. Множественное наследование интерфейсов не запрещено, то есть один интерфейс может наследоваться от нескольких.

Интерфейсы можно использовать в качестве типов параметров методов. Нельзя создавать экземпляры интерфейсов.

Маркерные интерфейсы

В Java есть интерфейсы, которые не содержат методов для реализации, а специальным образом обрабатываются JVM:

  • java.lang.Cloneable
  • java.io.Serializable
  • java.util.RandomAccess
  • java.rmi.Remote

Шаблоны в Java (generics)

Начиная с версии Java 5 в языке появился механизм обобщённого программирования - шаблоны, внешне близкие к шаблонам C++. С помощью специального синтаксиса в описании классов и методов можно указать параметры-типы, которые внутри описания могут использоваться в качестве типов полей, параметров и возвращаемых значений методов.

// Объявление обобщённого класса class GenericClass < E > { E getFirst () { ... } void add (E obj ) { ... } } // Использование обобщённого класса в коде GenericClass < String > var = new GenericClass < String >(); var . add ("qwerty" ); String p = var . getFirst ();

Допускается обобщённое объявление классов, интерфейсов и методов. Кроме того, синтаксис поддерживает ограниченные объявления типов-параметров: указание в объявлении конструкции вида требует, чтобы тип-параметр T реализовывал интерфейсы A, B, C и так далее, а конструкция требует, чтобы тип-параметр T был типом C или одним из его предков.

В отличие от шаблонов C#, шаблоны Java не поддерживаются средой исполнения - компилятор просто создаёт байт-код, в котором никаких шаблонов уже нет. Реализация шаблонов в Java принципиально отличается от реализации аналогичных механизмов в C++: компилятор не порождает для каждого случая использования шаблона отдельный вариант класса или метода-шаблона, а просто создаёт одну реализацию байт-кода, содержащую необходимые проверки и преобразования типов. Это приводит к ряду ограничений использования шаблонов в программах на Java.

Проверка принадлежности к классу

В Java можно явно проверить, к какому классу принадлежит объект. Выражение foo instanceof Foo истинно, если объект foo принадлежит классу Foo или его наследнику, или реализует интерфейс Foo (или, в общем виде, наследует класс, который реализует интерфейс, который наследует Foo).

Далее функция getClass() , определённая для всех объектов, выдаёт объект типа Class . Для каждого класса создаётся не более одного описывающего его объекта типа Class , поэтому эти объекты можно сравнивать. Так, например, foo.getClass() == bar.getClass() будет истинно, если объекты foo и bar принадлежат к одному классу.

Кроме того, объект типа Class любого типа можно получить так: Integer.class , Object.class .

Прямое сравнение классов не всегда является оптимальным средством проверки на принадлежность к классу. Зачастую вместо него используют функцию isAssignableFrom() . Эта функция определена у объекта типа Class и принимает объект типа Class в качестве параметра. Таким образом, вызов Foo.class.isAssignableFrom(Bar.class) вернёт true в случае, если Foo является предком класса Bar . Так как все объекты являются потомками типа Object , вызов Object.class.isAssignableFrom() всегда вернёт true .

В паре с упомянутыми функциями объекта типа Class используются также функции isInstance() (эквивалентно instanceof), а также cast() (преобразует параметр в объект выбранного класса).

Средства разработки ПО

  • JDK - помимо набора библиотек для платформ Java SE и Java EE , содержит компилятор командной строки javac и набор утилит, также работающих в режиме командной строки.
  • NetBeans IDE - свободная интегрированная среда разработки для всех платформ Java - Java ME , Java SE и Java EE . Пропагандируется Oracle , владельцем технологии Java, как базовое средство для разработки ПО на языке Java и других языках ( , C++ , PHP , Fortran и др.).
  • Eclipse IDE - свободная интегрированная среда разработки для

Программа - это последовательность инструкций, созданных на языке программирования. Язык программирования отличается от обычных языков людей, используемых в повседневном общении. Язык программирования жестко регламентирован, от его правил нельзя отступать. Правила, которые определяет, как устроен язык, составляют синтаксис языка. Правила синтаксиса определяют словарь языка, как конструируется программа с использованием таких структур, как, например, циклы, ветвления, функции. Только синтаксически правильная программа может быть скомпилирована. Программы с ошибками будут отвергнуты. Программист должен создать такую программу, которая не будет содержать ни одной синтаксической ошибки. Для этого программисту необходимы детальные знания правил синтаксиса. Помимо синтаксической корректности программа должна быть осмысленна, т. е. выполнять логически обоснованную последовательность действий. Смысл программы - это семантика программы. Семантически верная программа считает именно то, что программист подразумевал при ее создании.

Создадим простейшую программу. Процесс создания состоит из трех основных частей:

Ввод текста программы в компьютер;

Компиляция введенного кода;

Выполнение скомпилированного кода.

Простейший код программы будет выглядеть так:

public class HelloWorld {

//A program to display the message // "Hello, World!" on standard output

System.out.println("Hello, World!");

Эта программа выводит сообщение "Hello, World!" Вывод этого сообщения осуществляется при помощи команды

System.out.println("Hello, World!");

Это пример вызова функции. Здесь вызвана функция System.out .println. Функция - это набор нескольких инструкций, объединенных вместе и образующих единое целое с заданным именем. В данном случае мы используем встроенную функцию. Встроенная функция - это заранее определенная функция, которая является неотъемлемой частью языка. Программа содержит в себе комментарии. Комментарии при работе программы полностью игнорируются. В данном случае строки комментария начинаются с символов // и заканчиваются с концом строки. Многострочные комментарии заключаются между символами /* и */. Все, кроме комментариев, подчинено правилам синтаксиса языка. В первой строке нашей программы мы определяем класс с именем HeiioWorid. Отметим, что не всякий класс является программой. Для того чтобы класс стал самостоятельной программой, в нем должна содержаться функция main о, которая определяется таким образом:

public static void main(String args) {

statements

При обращении к интерпретатору Java при запуске программы, интерпретатор обращается к функции main о. Слово public означает, что эта функция может быть вызвана извне, т. е. не из самой программы. Это важно, поскольку функция вызывается интерпретатором. Значения остальных слов станут понятны позже. Между фигурными скобками располагается набор инструкций, которые будут вызваны и выполнены при обращении к функции.

Апплеты создаются по-другому:

public class InterestIConsole extends ConsoleApplet {

protected String getTitleO {

return "Sample program V’lnterestlV";

protected void program() {

double principal; // вложенная сумма

double interest; // процент за год

interest = principal * rate; // процент principal = principal + interest; /* вывод результата */ console.put("The interest earned is $"); console.putln(interest);

console.put("The value of the investment after one year is $"); console.putln(principal);

При этом используется следующая вспомогательная программа, содержащаяся в файле ConsoleApplet.java:

impo гt j ava.awt.*;

impo rt java.awt.event.*;

public class ConsoleApplet extends java.applet.Applet

implements Runnable, ActionListener { protected String title = "Java Console I/O"; protected String getTitleO { return title;

protected ConsolePanel consoles- protected void program () {

console.putln("Hello, World!");

private Button runButton;

private Thread programThread = null;

// поток run () private boolean programRunning = falser- private boolean firstTime = true; // false - если программа считает первый раз

public void run() { // запуск programRunning = true;

programRunning = false; stopProgram() ;

synchronized private void startProgram() { runButton.setLabel("Abort Program"); if (!firstTime) { console.clear() ; try { Thread.sleep(300); } // задержка перед перезапуском программы

catch (InterruptedException e) { }

firstTime = false; programThread = new Thread(this); programThread.start() ;

synchronized private void stopProgram() { if (programRunning) { programThread.stop(); try { programThread.join(1000); } catch (InterruptedException e) { }

console.clearBuffers(); programThread = null; programRunning = false; runButton.setLabel("Run Again"); runButton.requestFocus();

public void init() {

setBackground(Color.black);

setLayout(new BorderLayout(2,2)); console = new ConsolePanel(); add("Center",console);

Panel temp = new Panel();

temp.setBackground(Color.white) ; Label lab = new Label(getTitle()); temp.add(lab) ;

lab.setForeground(new Color(180,0,0)); add("North", temp);

runButton = new Button("Run the Program");

temp = new Panel();

temp.setBackground(Color.white);

temp.add(runButton);

runButton.addActionListener(this);

add("South",temp); }

public Insets getlnsets() { return new Insets(2,2,2,2);

public void stop() {

if (programRunning) { stopProgram() ; console.putln() ;

console.putln("*** PROGRAM HALTED");

synchronized public void actionPerformed(ActionEvent evt) { if (programThread != null) { stopProgram(); console.putln();

console.putln("*** PROGRAM ABORTED BY USER");

Переменные и примитивные типы

Имена играют фундаментальную роль в программировании. При помощи имен называются разные вещи. Важно знать синтаксис и семантику при использовании имен. Имя - это последовательность одного или нескольких

символов. Имя должно начинаться с буквы и состоять из букв, цифр, символов подчеркивания (_). Например:

Quite_a_long_name

Заглавные буквы и строчные буквы считаются различными. Имена

HelloWorld, heiioworid, helloworld, hEiioWorLD - это разные имена. Определенные имена являются зарезервированными и имеют специальное назначение и не могут быть использованы программистом для других целей, например:

и еще несколько десятков других имен.

Значение присваивается переменной при помощи оператора присваивания в виде:

variable = expression;

Например:

interest = rate * principal;

Переменная служит для хранения только одного типа данных. Существуют типы, встроенные в Java, это примитивные типы:

Тип short соответствует двум байтам, интервал значений от -32 768 до 32 767. Тип int соответствует 32 битам, интервал значений от -2 147 483 648 до 2 147 483 647. Тип long соответствует 64 битам, интервал значений от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807. Тип float занимает 4 байта памяти, максимальное значение примерно 10 38 . Тип char занимает два байта памяти. Имя константы называется литералом. Для логического литерала существует два значения true и false.

Пример программы, в которой используются переменные и операторы присваивания:

public class Interest {

public static void main(String args) { /* объявление переменных */ double principal; // вложенная сумма

double rate; // годовой процент

double interest; // начисление за год

/* вычисления */ principal = 17000; rate = 0.07;

interest = principal * rate; principal = principal + interest;

/* вывод результата */ System.out.print("The interest earned is $"); System.out.println(interest);

System.out.print("The value of the investment after one year is $");

System.out.println(principal); }

Строки, объекты, функции

В предыдущем разделе мы рассмотрели восемь примитивных типов и тип строк string. Существует принципиальное различие между примитивными типами и типом string. Дело в том, что string - это объект. В наших примерах будет использоваться класс Textio. Код Java-программы (TextlO.java) приведен в конце настоящего приложения.

Классы в Java выполняют две важные функции. Первая состоит в том, что классы объединяют в себе переменные и функции, содержащиеся в этом классе. Переменные и функции становятся статическими членами класса, так, например, функция main о - статическая функция класса. В определении таких функций используется слово static. Второе назначение классов - они описывают объекты. Класс - это тип, а объект - это значение этого типа, string - это название класса, который является частью языка Java. И строка, например, "Hello, World" - это значение типа string.

Всем известны математические функции, такие, как, например, квадратный корень. В языке Java существует аналогичная функция, Math.sqrt. Эта функция - статический член класса, называемого Math. Если х - это какое-либо числовое значение, то Math.sqrt (х) - это тоже значение, равное квадратному корню от х. Чтобы вывести это значение на печать, мы используем следующую команду: System.out.print(Math.sqrt(x));

Можно использовать оператор присваивания для инициализирования переменной:

lengthOfSide = Math.sqrt(х);

Функция представляет переменную типа double и может применяться там, где используются переменные типа double.

Еще один пример математической функции:

Эта функция вычисляет модуль (абсолютное значение). Среди математических функций есть и другие, например, Math, sin (х), Math.cos(x), Math.tan (x), Math.asin (x), Math.acos(x), Math.atan (x), Math.exp(x), Math, log (x) , Math.pow (x, y) , Math, floor (x) , Math, random ().

Приведем пример программы, использующей эти функции:

public class TimedComputation {

public static void main(String args) {

long startTime; // стартовое время в миллисекундах

long endTime; // время при завершении вычислений, в миллисекундах double time; // Разница времен, в секундах. startTime = System.currentTimeMillis();

double width, height, hypotenuse; // стороны треугольника width = 42.0; height = 17.0;

hypotenuse = Math.sqrt(width*width + height*height);

System.out.print("A triangle with sides 42 and 17 has hypotenuse ");

System.out.printIn(hypotenuse);

System.out.printIn("\nMathematically, sin(x)*sin(x) + " + "cos(x)*cos(x) - 1 should be 0."); System.out.println("Let’s check this for x = 1:");

System.out.print("sin(l)*sin(l) + cos(1)*cos(1) - 1 is "); System.out.printIn(Math.s in(1)*Math.s in(1)

Math.cos(1)*Math.cos (1) – 1); System.out.println("(There can be round-off errors when " + " computing with real numbers!)");

System.out.print("\nHere is a random number: ");

System.out.printIn(Math.random());

endTime = System.currentTimeMillis();

time = (endTime – startTime) / 1000.0;

System.out.print("\nRun time in seconds was: ");

System.out.printIn(time);

Величина типа string - это объект. Этот объект содержит данные, а именно, последовательность символов, составляющих строку. В нем есть также функции. Например, функция length о вычисляет длину строки. Строку можно создать при помощи следующей декларации:

str = "Seize the day!"; Еще один пример:

System.out.print("The number of characters in "); System.out.println("the string V’Hello WorldV is "); System.out.println("Hello World".length());

Объект string содержит множество функций. Вот некоторые из них.

Si.equals (s2) - возвращает логическое значение, true - если строка si в точности такая же, как строка s2.

Si.equalslgnoreCase (s2) - то же самое, что и sl.equalsO, но заглавные и строчные буквы считаются одинаковыми.

Si. length () - целое значение, равное количеству символов в строке.

Si.charAt(N) - значение типа char, символ, расположенный на позиции с номером N в строке, начиная с нулевой позиции.

Si. substring (n,m) - тип string, строка с символами в позициях N,

N+ 1, …, м- 1.

Si.indexof (s2) - целое, если s2 является фрагментом si, то возвращается номер позиции, с которого начинается s2 в si.

Si. compareTo (s2) - целое, если строки равны, то 0.

Si. touppercase () - строка, записанная заглавными буквами.

Si. trim о - строка с удаленными непечатаемыми символами, такими как пробелы, табуляции и т. п.

Строки можно складывать:

System.out.println("Hello, " + name + ". Pleased to meet you!");

Примитивные типы можно прибавлять к строке, тогда они приводятся к строчному типу:

System.out.print("After "); System.out.print(years);

System.out.print(" years, the value is "); System.out.print(principal); Это можно записать в виде:

System.out.print("After " + years + " years, the value is " + principal);

Выражения

Литералы, переменные, функции - это примеры простых выражений. Более сложные выражения состоят из простых выражений и операторов, например А+В*С, В*С.

Арифметические операторы

Арифметические операторы обозначаются знаками +,-,*, /.

Операторы увеличения и уменьшения на единицу

Эти операторы требуют только одного операнда, обозначаются ++ и -.

counter = counter + 1; goalsScored = goalsScored + 1;

Эти выражения с помощью операторов увеличения и уменьшения можно записать следующим образом:

counter++; goa1s S со red++;

у = x++; у = ++x;

Text10.putIn(-x) ; z = (++x) * (y-) ;

Если x равно 6, то после выполнения инструкции у = х++ у будет равно 6, а после выполнения инструкции у = ++х у будет равно 7. В обоих случаях новое значение для х будет 7.

Операторы сравнения

Операторы сравнения используются при работе с логическими величинами, значение их булево, т. е. true или false:

А == в - А "равняется" В;

А!= в - А "не равняется" В;

А < в - А "меньше чем" В;

А > в - А "больше чем" В;

А <= в - А "меньше или равно" В;

А >= в - А "больше или равно" В.

Эти операторы можно использовать при работе с числовыми значениями в качестве операндов.

boolean sameSign;

sameSign = ((х > 0) == (у > 0));

Логические операторы

Логические операторы работают с логическими значениями. Это операторы and (И) (&&), or (ИЛИ) (и), not (НЕ) (!). Например:

(х!= 0) && (у/х > 1) test = ! test;

Условные операторы

Общий вид простого условного оператора:

boolean-expression ? expression-1: expression-2

Если булево выражение имеет значение true, то выполняется expression-i, в противном случае выполняется expression-2. Например:

next = (N с е 2 == 0) ? (N/2) : (3*N+1) ;

Операторы присваивания и приведения типа

Примеры j

int A; double X; short B; A = 17;

X = А; //А приводится к типу double

В = A; // нельзя, тип не приводится автоматически

Исправление:

В = (short)А; // тип приводится в явном виде

При приведении некоторых типов могут произойти смысловые изменения значений, так (short) 100 ООО равно 34 464. Тип short образуется путем взятия 4 битов от исходного значения, часть информации теряется.

Пример использования операторов приведения типа

(int) (6*Math. random о) - целое случайное число из набора 0, 1,2, 3, 4, 5.

Можно приводить типы из целых к char, при этом берется значение соовет- ствующего символа в соответствии с кодировкой Unicode. Например, (char) 97 - это ‘a’, a (int) ‘ + ‘ равно 43.

Примеры j

х -= у; // х = х - у;

х *= у; // х = х * у;

х /= у; // х = х / у;

х с е= у; // х = х % у; (для целых х и у)

q &&= р; // q = q && р; (для логических booleans q и р)

Комбинированные операторы присваивания можно использовать и со строками:

str += X str = str + X

Иерархия операторов

Между операторами установлено старшинство. В последовательности операторов они выполняются не один за другим, как написано, а в соответствии

с правилами иерархии операторов. Приведем список операторов в соответствии с их положением в иерархии операторов. Чем выше в этом списке находится оператор, тем большим приоритетом он обладает. Из двух операторов с разным приоритетом в первую очереди выполняется такой оператор, приоритет которого выше.

Унарными операторами называются такие операторы, для выполнения которых необходим один операнд. Бинарные операторы требуют наличия двух операндов. Тернарные операторы работают с тремя операндами.

Список операторов в соответствии с иерархией:

1. Унарные операторы: ++, -, !, унарные - и +, оператор приведения типа.

2. Умножение и деление: *, /, %.

3. Сложение и вычитание: +, -.

4. Операторы отношений: <, >, <=, >=.

5. Операторы равенства и неравенства: ==, !=.

6. Логическое сложение "И": &&.

7. Логическое "ИЛИ": ||.

8. Условный оператор: ?:

9. Операторы присваивания: =, +=, -=, *=, /=, %=.

Операторы, находящиеся в одной строчке в списке, который приводится выше, имеют одинаковый приоритет. Операторы с одинаковым приоритетом выполняются в том порядке, в котором они появляются в тексте программы. При этом необходимо учитывать, что для унарных операторов и операторов присваивания этот порядок таков, что операторы выполняются по порядку справа налево. Остальные операторы выполняются по порядку слева направо. Порядок выполнения операторов можно изменять. Для этого используются круглые скобки. В первую очередь будут выполняться те операторы, которые заключены в скобки.

7 ответов

Концептуальная разница проста:

    Декларация: вы заявляете, что что-то существует, например, класс, функция или переменная. Вы не говорите ничего о том, как выглядит этот класс или функция, вы просто говорите, что он существует.

    Определение. Вы определяете, как что-то реализуется, например, класс, функция или переменная, то есть вы говорите, что это на самом деле.

В Java разница между ними невелика, и формально говоря, объявление включает не только идентификатор, но и его определение. Вот как я лично подробно интерпретирую термины:

    Классы . Java действительно не разделяет декларации и определения, как это делает C/С++ (в файлах заголовка и cpp). Вы определяете их в том месте, где вы их объявляете.

    Функции . Когда вы пишете интерфейс (или абстрактный класс), вы можете сказать, что вы объявляете функцию, не определяя ее. Обычные функции, однако, всегда определяются прямо там, где они объявлены. Если хотите, смотрите тело функции как свое определение.

    Переменные . Объявление переменной может выглядеть следующим образом:

    (вы заявляете, что существует переменная x и имеет тип int), если она является локальной переменной или членом. В Java нет информации о x для определения, кроме возможных значений, которые она должна содержать, которая определяется назначением для нее.

Вот краткий обзор того, как я использую термины:

Abstract class SomeClass { // class decl. // \ int x; // variable decl. | // | public abstract void someMethod(); // function decl. | // | public int someOtherMethod() { // function decl. | // | class if (Math.random() > .5) // \ | def. return x; // | function definition | else // | | return -x; // / | // | } // | } // /

Спецификация языка Java задает и использует термин "объявление" широко, но не использует "определение" , кроме как нормальное английское слово.

Мое свидетельство заключается в том, что термин "декларация" появляется несколько раз в таблице содержания JLS и индексе, но слово "определение" также не отображается.

Итак, когда вы видите, что кто-то использует слово "определение" в контексте Java, они либо используют его в нетехническом смысле, либо небрежно относятся к своей терминологии.

В последнем случае они могут означать то же, что и технический термин "декларация" , или они могут означать что-то другое. И если они означают что-то еще, вам нужно спросить их, что они означают. Если они определили его... достаточно справедливым, но это не стандартная терминология.

Ответы, в которых говорится, что "определение" относится к точке, в которой инициализируется переменная, специально не поддерживаются... в контексте Java. В Java инициализация переменной происходит либо в точке объявления, либо в более позднем назначении. В последнем случае специальный термин не используется... или нужен... кроме назначения и/или инициализации. Нет указанной точки, в которой хранилище выделяется для переменной. В самом деле, есть вероятность, что пространство для самой переменной выделено до , объявление будет достигнуто.

Причина, по которой термин "декларация" не используется в Java в спецификации JLS, заключается в том, что он не нужен.

  • Так как Java позволяет объявлять участников в любом порядке, нет необходимости в "форвардных объявлениях".
  • В Java пространство стека, необходимое для переменной, является постоянной времени компиляции, поэтому вычисления смещения стека происходят во время компиляции. (Помните, что в Java массив является ссылкой на объект кучи... и только ссылка хранится в кадре стека.)
  • То, как Java обрабатывает "определение без инициализации" поля или переменной, не требует отдельной "декларации". Если требуется инициализация переменной, это может произойти в нескольких точках исходного кода.

(Единственное место в Java, где они могли использовать объявление в сравнении с определением, - это абстрактные методы. За исключением того, что если бы они это сделали, ему пришлось бы ссылаться на объявление обычного метода как на определение... для согласованности. и это будет путать, поэтому они просто называют "абстрактный" подзаголовок декларацией абстрактного метода.)

C и С++ обрабатывают эти вещи по-разному и, следовательно, в своих технических описаниях требуются разные термины "объявление" и "определение" . Я принимаю определения "Глоссарий Солнца": они C/С++ -центрические.

декларация: Оператор, который устанавливает идентификатор и связывает с ним атрибуты без необходимости резервирования его хранилища (для данных) или обеспечения реализации (для методов).

определение: Объявление, которое резервирует хранилище (для данных) или обеспечивает реализацию (для методов).

То, как я читаю глоссарий Sun, будет следующим:

List i; // declaration - variable on the stack i = new ArrayList(); // definition - gives variable a reference

1. Декларация означает создание a primitive or Object reference variable , но без присвоения значения или объекта соответственно.

, например:

Int x; // declaration of x of type int Cat myCat; // declaration of myCat an Object of type Cat

2. Defination - это когда мы присваиваем им значения или объект.

Int x = 5; Cat myCat = new Cat();

3. В случае метода, как это...

Public abstract void go(); // Method Declaration (Abstract method) public void go(){ // Method Defination // Your code }

Я думаю, что я могу лучше объяснить этот вопрос, например.

100% Pure Java TM
Под термином «100% Pure Java TM » понимают Java-программу, которая опирается только на специфицированное поведение Java-платформы, не использует платформно-зависимых (native) методов и не зависит ни от каких программных интерфейсов, кроме Java core API. Программа сертификации служит для того, чтобы определить, является ли данное приложение или апплет 100% Pure Java или нет.

Abstract Window Toolkit — AWT
Стандартный пакет графических компонент, реализованных с использованием специфических платформенных методов. Данные компоненты поддерживают лишь то подмножество функциональных возможностей, которое присуще всем платформам.

В значительной степени вытеснен набором компонент Project Swing (см. Swing-компоненты).

abstract
Ключевое слово языка программирования Java, используемое в определении класса для указания на невозможность создания его экземпляров, но при этом доступного для наследования другими классами. Абстрактный класс может содержать нереализованные (абстрактные) методы, которые должны быть реализованы в его подклассах.

абстрактный класс (abstract class)
Класс, который содержит один или более абстрактных методов, вследствие чего нельзя создавать экземпляры данного класса. Абстрактные классы определены таким образом, чтобы другие классы могли расширять и конкретизировать их, реализуя абстрактные методы.

абстрактный метод (abstract method)
Метод, не имеющий реализации.

контроль доступа (access control)
Технические средства, посредством которых ограничиваются множества пользователей или программ, взаимодействующих с ресурсами, с целью повышения целостности, конфиденциальности и доступности.

АЦИН (ACID — Atomicity, Consistency, Isolation and Durability)
Акроним четырех свойств, обеспечиваемых транзакциями: атомарность, целостность, изоляция и надежность.

активация (activation)
Процесс передачи корпоративных компонент (enterprise beans) из вторичного устройства хранения данных в память.

список фактических параметров (actual parameter list)
Аргументы, определенные в вызове метода (см. список формальных параметров).

альфа-фактор (alpha value)
Значение, указывающее яркость (или интенсивность) пикселя.

интерфейс прикладного программирования (API — Application Programming Interface)
Спецификация, предназначенная для пользователей и описывающая методы доступа к свойствам и состоянию объектов и классов.

апплет (applet)
Компонент, который обычно исполняется в Web-браузере или в любой другой программе просмотра апплетов.

контейнер апплетов (applet container)
Контейнер, включающий в себя поддержку модели программирования апплетов.

устройства (appliances)
Сетевые устройства, такие как принтеры, терминалы с поддержкой технологии Java TM и клиенты, управляемые посредством использования Java Management API (JMAPI).

компоновщик приложения (application assembler)
Человек, объединяющий компоненты и модули в большие модули разработки.

клиентское приложение (application client)
Клиентская программа первого уровня, исполняемая на собственной виртуальной Java-машине.

контейнер клиентского приложения (application client container)
Контейнер, поддерживающий клиентские приложения и обеспечивающий интегрированное представление API платформы J2EE.

модуль клиентского приложения (application client module)
Программный модуль, состоящий из одного или более классов и описания клиентского приложения.

поставщик программных компонент (Application Component Provider)
Поставщик, который предоставляет классы Java, реализующие методы компонентов, описания JSP-страниц и необходимые дескрипторы.

модель программирования приложения (Application Programming Model — APM)
Модель прикладного программирования, которая определяет, как использовать и объединять возможности платформы J2EE для создания прикладных решений в предметной области предприятия.

аргумент (argument)
Элемент данных, указанный в вызове метода. Аргумент может быть константой, переменной или выражением.

массив (array)
Совокупность элементов данных одного типа, в которой позиция каждого элемента однозначно определена целым числом (индексом массива).

Американский Стандартный Код Обмена Информацией (American standard code for information interchange — ASCII)
Стандартно, на один символ отводится 7 бит. См. также Уникод.

атомарный (atomic)
Операция, выполняемая как единый неделимый акт.

аутентификация (authentication)
Процесс, посредством которого один объект показывает другому, что он действует от имени определенной идентификационной записи. Платформа J2EE нуждается в трех видах аутентификации: обычной (basic), связанной с формой (form-based) и взаимной (mutual).

базовая (открытая) аутентификация (basic authentication)
Метод проверки Web-сервером имени пользователя и пароля, полученных при помощи механизма аутентификации, встроенного в Web-клиент.

bean-компонент (bean)
Программный компонент многократного использования. Bean-компоненты могут быть объединены для создания приложения.

механизм сохранения, управляемый bean-компонентом (bean-managed persistence)
Механизм, при котором передача данных между переменными экземпляров bean-компонента и основным администратором ресурсов управляется bean-компонентом.

транзакция, управляемая bean-компонентом (bean-managed transaction)
Корпоративный компонент (enterprise bean) определяет границы транзакции.

бинарный оператор (binary operator)
Знак операции, имеющий два аргумента.

бит (bit)
Минимальная единица информации в компьютере. Может принимать значения 0 или 1.

побитовый оператор (bitwise operator)
Знак операции, воздействующий на операнды, как на набор битов (0 и 1). Например, бинарные логические операции (&, |, ^), бинарные операции сдвига (<<, >>, >>>) и унарная операция дополнения (~).

блок (block)
Любой код на языке программирования Java TM , заключенный между двумя фигурными скобками. Например, {x = 1;}.

булевский (boolean)
Относится к выражению или переменной, которые могут принимать только два значения: true («истина») и false («ложь»). В языке программирования Java TM существует тип boolean, а также литеральные константы true и false.

ограничительная область (bounding box)
Прямоугольник наименьшего размера, содержащий указанную геометрическую фигуру. Для растровых объектов включает все заданные пиксели.

break
Ключевое слово языка программирования Java TM . Оператор break передаёт управление строке, следующей за текущей структурой. Если за break следует метка, то программа продолжает исполнение, начиная с «помеченного» оператора.

бизнес-логика (business logic)
Код, реализующий функциональность приложения. В модели Enterprise Java Beans эта логика реализуется при помощи методов корпоративного компонента (enterprise bean).

бизнес-метод (business-method)
Метод корпоративного компонента (enterprise bean), реализующий бизнес-логику или правила приложения.

байт (byte)
Последовательность из восьми битов. В языке программирования Java TM определен соответствующий тип byte.

байт-код (bytecode)
Машинно-независимый код, генерируемый Java-компилятором и исполняемый Java-интерпретатором.

методы обратной связи (callback methods)
Метод компонента, вызываемый контейнером для уведомления компонента о важных событиях во время его жизненного цикла.

вызывающий оператор (caller)
См. администратор вызывающего оператора

администратор вызывающего оператора (caller principal)
Администратор, который идентифицирует объект, вызывающий метод корпоративного компонента (enterprise bean).

case
Ключевое слово языка программирования Java (оператор switch), которое определяет набор инструкций, исполняющихся в случае, если значение переключающего выражения совпадает со значением константы (разметки выбирающего предложения), указанной в конструкции case.

преобразование типа (casting)
Явное преобразование одного типа данных в другой.

catch
Ключевое слово языка программирования Java TM , используемое для объявления блока инструкций, которые должны быть выполнены в случае исключительной ситуации или ошибки выполнения, возникающей в предшествующем блоке try.

char
Ключевое слово языка программирования Java TM , используемое для объявления переменной символьного типа.

класс (class)
Тип в языке программирования Java TM , определяющий реализацию особого вида объекта. Описание класса определяет экземпляр класса, его переменные и методы. Так же определяются интерфейсы и суперклассы. По умолчанию суперклассом любого класса является Object.

метод класса (типа) (class method)
Метод, который вызывается безотносительно ссылки на конкретный объект. Методы класса влияют на класс в целом, а не на конкретный его экземпляр.

Также носит название статического метода. См. также метод экземпляра.

путь к классам (classpath)
Переменная среды окружения, которая сообщает виртуальной машине Java TM и приложениям Java (например, утилитам, расположенным в директории JDK TM 1.1.X\bin), где находятся библиотеки классов, включая пользовательские библиотеки.

Свойство виртуальной машины (JVM), которое может быть задано с помощью переменной окружения, либо другими способами, например, с помощью опций JVM.

переменная класса (типа) (class variable)
Переменная, относящаяся к некоторому классу в целом, а не к отдельным экземплярам класса. Переменные класса являются элементами определения класса.

Также носит название статического поля. См. также переменная экземпляра.

клиент (client)
В модели соединения «клиент-сервер» клиент — это процесс, который удаленно обращается к ресурсам вычислительного сервера.

адрес основного кода (codebase)
При работе с атрибутом code в тэге APPLET указывает полный путь к файлу главного класса апплета: code определяет имя файла, а codebase — URL директории, содержащей файл.

комментарий (comment)
Поясняющий текст в программе, который игнорируется компилятором. В приложениях Java TM комментарии выделяются символами // или /*…*/.

фиксация (транзакции) (commit)
Момент транзакции, когда все изменения, проведенные в процессе транзакции, фиксируются в базе данных.

единица компиляции (compilation unit)
Минимальная единица исходного кода, которая может быть откомпилирована. В текущей реализации Java TM единица компиляции — это последовательность определений интерфейсов и классов, которой могут предшествовать объявление пакета и объявления импорта.

компилятор (compiler)
Программа, транслирующая исходный код приложения в код, исполняемый компьютером. Java TM -компилятор транслирует исходный код, написанный на языке Java, в машинно-независимый код (байт-код) для виртуальной машины Java. См. также интерпретатор.

компонент (component)
Программный модуль, поддерживаемый контейнером. Компоненты конфигурируемы на стадии разработки. Платформа J2EE определяет четыре вида компонент: корпоративные компоненты (enterprise beans), Web-компоненты, апплеты и клиентские приложения.

контракт компонента (component contract)
Набор условий, регулирующих отношения между компонентом и его контейнером. Контракт включает: управление жизненным циклом компонента, контекстный интерфейс, используемый образцом компоненты для получения информации о контейнере или использования возможностей контейнера, и списка функциональных возможностей, которые должен поддерживать каждый контейнер для данной компоненты.

окружение компонента (component environment)
Набор требований, определяемых Поставщиком Программных Компонент (Application Component Provider), которые должны быть доступны компоненту J2EE. Записи окружения декларативно определены в описании компонента. Каждый компонент указывает и получает доступ к значениям конфигурации компонента, используя контекст java:comp/env JNDI. Эти значения могут быть объектами, от которых зависит компонент, такими как JDBC DataSource или простыми значениями, такими как налоговая ставка.

компоновка (compositing)
Процесс наложения одного изображения на другое, с целью получения единого изображения.

соединение (connection)
См. менеджер соединений.

мастер соединения (connection factory)
См. менеджер ресурсов мастера соединения.

коннектор (connector)
Стандартный механизм расширения контейнеров для обеспечения взаимодействия с управленческими информационными системами (Executive Information Systems — EISs). Коннектор специфичен для каждой EIS и состоит из адаптера ресурсов и средств разработки приложений для взаимодействия с EIS. Адаптер ресурсов подключен к контейнеру посредством контрактов системного уровня, определенных в архитектуре коннектора.

архитектура коннектора (connector architecture)
Архитектура, предназначенная для интеграции серверов J2EE с управленческими информационными системами (Executive Information Systems — EISs). Архитектура состоит из двух частей: адаптер ресурсов производителя EIS и сервер J2EE, поддерживающий этот адаптер. Данная архитектура определяет набор контрактов, которые должны поддерживаться адаптером ресурсов для подключения к J2EE-серверу. Например, транзакции, обеспечение безопасности, управление ресурсами.

конструктор (constructor)
Метод особого рода, создающий объект и инициализирующий его поля. В языке программирования Java имя конструктора совпадает с именем класса. Конструкторы вызываются системой при создании экземпляра объекта (исполнении конструкции new).

const
Зарезервированное ключевое слово языка Java TM . Однако, не используется текущими версиями Java.

контейнер (container)
Сущность, обеспечивающая управление, безопасность, разработку и сервисы выполнения компонент. Кроме того, каждый тип контейнера (EJB, Web, JSP, сервлет, апплет или приложение-клиент) также предоставляет свои специфические сервисы.

персистенция (сохраняемость), управляемая контейнером (container-managed persistence)
Механизм, при котором передача данных между экземпляром корпоративной компоненты и менеджером расположенных ниже ресурсов управляется контейнером корпоративной компоненты (enterprise bean).

транзакция, управляемая контейнером (container-managed transaction)
Транзакция, границы которой определяются EJB-контейнером. Экземпляр корпоративной компоненты (enterprise bean) должен использовать транзакции, управляемые контейнерами.

контекстный атрибут (context attribute)
Объект, встроенный в контекст, ассоциированный с сервлетом.

continue
Ключевое слово языка программирования Java, которое обозначает оператор, завершающий текущую итерацию цикла и, если условие повторения выполняется, начинающий исполнение следующей. Если за данным ключевым словом следует метка, continue возобновляет исполнение, начиная с помеченного оператора (то есть начинается следующая итерация цикла, помеченного данной меткой).

диалоговый режим (conversational state)
Значения полей сессии bean-компонента плюс транзитивное замыкание объектов, доступных из полей bean-компонента. Транзитивное замыкание bean-компонента определяется в терминах протокола сериализации языка Java, которые сохранены посредством сериализации экземпляра bean-компонента.

Common Object Request Broker Architecture — CORBA
Технология построения распределенных объектных приложений, специфицируемая группой по развитию стандартов объектного программирования (Object Management Group — OMG).

базовый класс (core class)
Публичный класс (или интерфейс), являющийся стандартным членом Java TM Platform. Обязательным свойством таких классов является их доступность в любой операционной системе, поддерживающей среду Java. Программой, «полностью» написанной на языке Java, называется программа, использующая только такие классы, и, следовательно, обладающая свойством независимости от платформы. См. также 100% Pure Java TM .

базовые пакеты (core packages)
Необходимый набор программных интерфейсов приложений (Application Programming Interfaces — APIs) платформы Java,который поддерживается в любой реализации.

метод create (create method)
Метод, определенный в «домашнем» интерфейсе и вызываемый клиентом, для создания корпоративной компоненты (enterprise bean).

полномочия (credentials)
Учетная запись с параметрами доступа пользователя, сформированными после его успешной аутентификации.

критическая секция (critical section)
Фрагмент программы, в котором поток выполняет действия над общим ресурсом, доступ к которому должен быть монопольным.

пакет проверки совместимости (Compatibility Test Suite — CTS)
Набор программ, предназначенных для проверки соответствия продуктов J2EE спецификации платформы J2EE.

объявление (declaration)
Выражение, связывающее идентификатор с атрибутами (типом). При необходимости осуществляется выделение памяти (для данных) или выполнение (для методов). См. также описание.

default
Ключевое слово языка программирования Java TM , при необходимости используемое после всех условий case в блоке switch. Если ни одно из проверяемых значений не совпадает со значением оператора switch, то выполняются инструкции, следующие после ключевого слова default.

описание (definition)
Объявление, осуществляющее резервирование памяти (для данных) или выполнение (для методов). См. также объявление.

делегирование (delegation)
Передача (делегирование) функций — способность объекта или потока внутри объекта выполнять под именем клиента запросы к другим удаленным объектам.

администратор размещения (deployer)
Человек, устанавливающий модули и приложения J2EE в операционной системе.

размещение (deployment)
Процесс установки программного обеспечения в операционную среду.

дескриптор размещения (deployment descriptor)
XML-файл, поставляемый с каждым модулем и приложением и описывающий процесс их установки. Дескриптор размещения управляет инструментами для установки модуля или приложения с какими-либо специфичными опциями контейнера, а также описывает особые требования, предъявляемые к конфигурации.

«является потомком» (derived from)
Класс X «является потомком» класса Y, если класс X расширяет (наследует) класс Y. См. также подкласс, суперкласс.

распределенный (distributed)
Работающий более чем в одном адресном пространстве.

распределенное приложение (distributed application)
Приложение, которое составлено из различных компонент, выполняющихся в различных средах, обычно, на разных платформах, соединенных посредством сети. Стандартные распределенные приложения: двухзвенное (клиент/сервер), трехзвенное (клиент/промежуточное программное обеспечение/сервер), n-звенное (клиент/множественное промежуточное программное обеспечение/сервер).

do
Ключевое слово языка программирования Java TM , используемое для объявления цикла, повторяющего блок инструкций. Условие выхода из цикла определяется ключевым словом while в конце итерации.

объектная модель документа (Document Object Model — DOM)
Дерево объектов и интерфейсы для реализации обхода вершин дерева и написания его XML-версии согласно спецификации W3C.

double
Ключевое слово языка программирования Java TM , используемое для определения переменной типа double.

двойная точность (double precision)
Согласно спецификации языка программирования Java TM , число с плавающей точкой, занимающее 64 бита данных. См. также одинарная точность.

определение типа документа (Document Type Definition — DTD)
Описание структуры и свойств XML-файлов.

EJB-контейнер (EJB-container)
Контейнер, содержащий корпоративные компоненты (EJB).

поставщик EJB-контейнера (EJB Container Provider)
Производитель, который предоставляет EJB-контейнер.

EJB-контекст (EJB-context)
Объект, позволяющий корпоративному компоненту (enterprise bean) запускать сервисы контейнера и получать информацию о программе, вызвавшей клиентский метод.

«домашний» объект EJB (EJB home object)
Объект, обеспечивающий жизненный цикл операций (создания, удаления, поиска) для корпоративного компонента (enterprise bean). Класс для «домашнего» объекта EJB порожден инструментами разработки контейнера. «Домашний» объект EJB реализует собственный интерфейс корпоративного компонента (enterprise bean). Клиент ссылается на «домашний» объект EJB, чтобы выполнить операции жизненного цикла EJB-объекта. Для определения местонахождения EJB home object клиент использует JNDI интерфейс.

EJB-.jar файл (EJB .jar file)
Архив JAR, который содержит EJB-модуль.

EJB-модуль (EJB module)
Программный модуль, который состоит из одного или более корпоративных компонентов (enterprise beans) и дескриптора установки EJB.

EJB-объект (EJB object)
Объект, чей класс реализуется удаленным интерфейсом корпоративного компонента (enterprise bean). Клиент никогда не ссылается непосредственно на экземпляр корпоративного компонента, а только на объект EJB. Класс для объекта EJB порожден инструментами разработки, входящими в состав контейнера.

EJB-сервер (EJB-server)
Программное обеспечение, предоставляющее службы EJB-контейнеру. Например, EJB-контейнер обычно зависит от менеджера транзакций, который является частью EJB-сервера, предназначенной для двухфазного завершения распределенных транзакций параллельно со всеми участвующими в ней менеджерами ресурсов. Архитектура J2EE предполагает, что EJB-сервер, содержащий EJB-контейнер, поставляется тем же производителем, поэтому не существует соглашения между двумя этими сущностями. EJB-сервер может содержать один и более контейнеров EJB.

поставщик EJB-сервера (EJB Server Provider)
Производитель, который поставляет EJB-сервер.

ресурс управленческой информационной системы (ресурс УИС) (EIS resource)
Сущность, предоставляющая функциональные возможности УИС клиентам системы. Например, запись или множество записей в системе базы данных, бизнес-объект в ERP-системе (системе, предназначенная для планирования и управления ресурсами предприятий), программа транзакции в системе обработки транзакций.

else
Ключевое слово языка программирования Java TM , используемое для выполнения блока инструкций в том случае, если проверка условия в операторе if дала отрицательный результат (false).

технология EmbeddedJava TM (Embedded Java TM technology)
Технология, которая впервые появилась в рамках Java 2 Platform. Распространение этой технологии ограничено лицензионным соглашением, которое позволяет владельцу лицензии использовать определенные Java-технологии для создания и внедрения встроенных приложений.

инкапсуляция (encapsulation)
Локализация (упрятывание) части данных в пределах класса. Поскольку объекты инкапсулируют данные и реализацию, пользователь может рассматривать объект как черный ящик, предоставляющий услуги. Переменные и методы экземпляров класса могут добавляться, удаляться или изменяться, но до тех пор, пока услуги, предоставляемые объектом, не изменяются, нет необходимости переписывать код, использующий данный объект. См. также переменная экземпляра класса и метод экземпляра класса.

корпоративный компонент (enterprise bean)
Компонент, реализующий бизнес-задачу или бизнес-объект, либо сущность или сессионный компонент.

управленческая информационная система — УИС (Enterprise Information System — EIS)
Приложения, которые содержат существующую систему управления информацией всей компании. Эти приложения обеспечивают информационную инфраструктуру предприятия. УИС предлагает определенный набор услуг своим клиентам. Эти услуги представлены клиентам как локальные и/или удаленные интерфейсы. Примеры УИС: ERP-система (система, предназначенная для планирования и управления ресурсами предприятий), универсальная система обработки транзакций, существующая система баз данных.

поставщик корпоративных компонент (Enterprise Bean Provider)
Прикладной программист, разрабатывающий классы корпоративных компонентов (enterprise beans), удаленные и локальные интерфейсы, файлы дескрипторов установки и упаковывает их в EJB-.jar файл.

Enterprise JavaBeans TM — EJB
Архитектура, предназначенная для развития и установки объектно-ориентированных, распределенных, корпоративных приложений. Приложения, написанные с использованием архитектуры Enterprise JavaBeans TM , являются масштабируемыми, многопользовательскими и безопасными.

компонент управления данными (entity bean)
Корпоративный компонент (enterprise bean), который отображает постоянные данные, хранящиеся в базе данных. Сущность идентифицируется первичным ключом. Если контейнер, которому принадлежит сущность, разрушается, сущность, ее первичный ключ и все удаленные ссылки сохраняются.

ebXML
ebXML основан на стандарте XML (Extensive Markup Language) и предназначен для поставки модульного набора спецификаций, позволяющего предприятиям различного масштаба и географического положения вести дела посредством Internet. ebXML снабжает компании и организации стандартным методом обмена деловой информацией, ведения торговых отношений, передачи данных, а также определения и регистрации бизнес процессов.

исключительная ситуация (exception)
Ситуация, возникающая во время работы программы вследствие неудачного выполнения операции, или запрограммированная с использованием оператора throw. Если в программе не предусмотрена реакция на возникшую ситуацию, дальнейшее исполнение программы невозможно. Язык программирования Java TM поддерживает обработку исключительных ситуаций при помощи ключевых слов try, catch и throw. См. также обработчик исключительных ситуаций.

обработчик исключительных ситуаций (exception handler)
Блок кода, реагирующий на определенный тип исключительных ситуаций. Если исключительная ситуация произошла вследствие ошибки, после которой программа может возобновить работу, то программа продолжает выполнение после обработчика исключительных ситуаций.

исполняемый код (executable context)
Программа, которая выполняется из HTML-файла. См. также апплет.

«расширяет» (extends)
Класс X может «расширять» класс Y с целью добавления функциональности (при помощи добавления полей и методов классу Y или переопределения методов класса Y). В таком случае говорят, что класс X является подклассом класса Y. Один интерфейс «расширяет» другой при помощи добавления методов. См. также «произошел из».

метод поиска (finder method)
Метод, определенный в «домашнем» интерфейсе и вызываемый клиентом для нахождения сущности.

первая поставка пользователям (First Customer Ship — FCS)
Дата выпуска/передачи продукта пользователю.

поле (field)
Элемент класса. Пока не определено обратное, поле не является статическим.

терминальный — final
Ключевое слово языка программирования Java TM . Объявление класса с модификатором final означает, что класс нельзя расширить или наследовать. Final-методы не могут переопределяться, final-переменные не могут изменять свое начальное значение.

finally
Ключевое слово языка программирования Java TM , задающее блок операций, которые будут выполнены независимо от того, произошла исключительная ситуация или ошибка в блоке, определенном с ключевым словом try, или нет.

float
Ключевое слово языка программирования Java TM , используемое для определения числа с плавающей точкой.

for
Ключевое слово языка программирования Java TM , используемое для объявления цикла, повторяющего блок инструкций. Программист определяет выполняемые операции, условия выхода из цикла, а также некоторые начальные действия перед началом первой итерации (инициализацию служебных переменных и пр.).

аутентификация, связанная с формой (form-based authentication)
Аутентификация, при которой Web-сервер выдает специализированную форму для входа в систему.

FTP — протокол (File Transfer Protocol — FTP)
Internet-протокол, основанный на TCP\IP. Предназначен для передачи файлов между хост-компьютерами. См. также TCP\IP.

список формальных параметров (formal parameter list)
Параметры, заданные в описании метода. См. также список фактических параметров.

«сборка мусора» (garbage collection)
Автоматическое обнаружение и освобождение памяти, которая больше не используется. Система управления и слежения за правильностью выполнения программы (Java TM runtime system) выполняет «сборку мусора» таким образом, чтобы программисту не требовалось напрямую вызывать методы освобождения памяти. При необходимости программист может запустить сборщик мусора явно, путем вызова специального метода. В этом случае сборка мусора будет выполняться синхронно.

goto
Зарезервированное слово языка программирования Java TM . Однако, в текущих версиях языка не используется.

группа (group)
Совокупность пользователей в пределах данного домена политики безопасности.

графический интерфейс пользователя (Graphical User Interface — GUI)
Графический интерфейс, предназначенный для удобства использования некоторых программ.

манипулятор (handle)
Объект, используемый для уникальной идентификации корпоративного компонента (enterprise bean). Клиент может сериализовать манипулятор, а затем десериализовать его для получения ссылки на корпоративный компонент (enterprise bean).

шестнадцатеричный (hexadecimal) Система счисления с основанием 16. Знаки 0-9 и a-f представляют цифры от 0 до 15. В программе, написанной на языке Java TM , шестнадцатеричные числа должны начинаться с символов 0x. См. также восьмеричный.

иерархия (hierarchy)
Классификация соотношений, в которой каждый элемент, кроме верхнего (называемого корнем), является специализированным видом элемента, расположенного над ним. Каждый элемент может иметь один или несколько элементов, находящихся ниже него в иерархии. В иерархии классов Java TM , образуемой при наследовании, корнем является класс Object.

«домашний» интерфейс (home interface)
Один из двух интерфейсов для корпоративного компонента (enterprise bean). «Домашний» интерфейс может определять несколько методов для создания и удаления корпоративного компонента (enterprise bean). Для сессионных компонентов (session beans) «домашний» интерфейс определяет методы создания и удаления, тогда как для сущностей (entity beans) — методы создания, нахождения и удаления.

«домашний» манипулятор (home handle)
Объект, используемый для получения ссылки на «домашний» интерфейс. «Домашний» манипулятор может быть сериализован и записан в ПЗУ, а также десериализован для получения ссылки.

Браузер HotJava TM (HotJava(TM) Browser)
Легко настраиваемый Web-браузер, разработанный компанией Sun Microsystems и написанный на языке программирования Java TM .

язык разметки гипертекста (HyperText Markup Language — HTML)
Файловый формат для гипертекстовых страниц в Internet, основанный на SGML. Очень прост и разрешает внедрение изображений, звуков, видео, полей форм, а также простое форматирование текста. Ссылки на другие объекты внедряются с помощью URL.

протокол передачи гипертекстовых файлов (HyperText Transfer Protocol — HTTP)
Internet-протокол, основанный на TCP/IP и предназначенный для доступа к гипертекстовым объектам с удаленного компьютера. См. также TCP/IP.

протокол защищенной передачи гипертекстов (HyperText Transmission Protocol, Secure — HTTPS)
HTTP в совокупности с SSL (Secure Sockets Layer) — протоколом защищенных сокетов.

язык описания интерфейсов (Interface Definition Language — IDL)
Интерфейсы прикладного программирования (APIs), написанные на языке Java TM , которые обеспечивают функциональную совместимость на основе стандартов и способность взаимодействия с CORBA (Common Object Request Broker Architecture).

идентификатор (identifier)
Имя элемента (переменной, класса, метода и проч.) программы, написанной на языке Java TM .

Internet InterORB Protocol — IIOP
Протокол, определяющий передачу сообщений между сетевыми объектами по протоколам TCP/IP и используемый для коммуникаций между брокерами объектных запросов CORBA.

if
Ключевое слово языка программирования Java TM , предназначенное для проверки условия и выполнения блока инструкций, если проверка дала положительный результат (true).

заимствование прав (impersonation)
Процесс, при котором одна сущность принимает идентичность и привилегии другой сущности без ее уведомления о том, что произошло делегирование. Заимствование прав — это случай простого делегирования.

implements
Ключевое слово языка программирования Java TM , включаемое при необходимости в объявление класса, для определения интерфейсов, которые реализует данный класс.

import
Ключевое слово языка программирования Java TM , определяющее классы или целые пакеты, на которые может ссылаться программа, без включения названий пакетов в ссылку.

наследование (inheritance)
Концепция классов, автоматически включающих все переменные и методы, определенные в супертипе. См. также суперкласс, подкласс.

параметр инициализации (initialization parameter)
Параметр, который инициализирует контекст, связанный с сервлетом.

экземпляр (instance)
Объект класса. В программах, написанных на языке Java TM , экземпляр класса создается при помощи оператора new, за которым следует имя класса-типа.

метод экземпляра (instance method)
Любой метод, который вызван от имени экземпляра класса. Также называется просто метод. См. метод класса.

переменная экземпляра (instance variable)
Любой элемент данных, связанный с объектом. Каждый экземпляр класса имеет собственную копию переменной, определенной в классе. Также носит название поля. См. переменная класса.

instanceof
Ключевое слово языка программирования Java TM , имеющее два аргумента и проверяющее, является ли тип первого аргумента преобразуемым к типу второго аргумента.

int
Ключевое слово языка программирования Java TM , используемое для определения переменной целого типа (integer).

interface
Ключевое слово языка программирования Java TM , используемое для определения набора методов и постоянных значений (класса специального вида). Интерфейс в дальнейшем может реализовываться классами, которые определяют этот интерфейс с ключевым словом implements.

Интернет, международная компьютерная сеть (Internet)
Огромная сеть, состоящая из миллионов компьютеров многих организаций и стран всего мира. Физически сеть Internet составлена из большого количества сетей, причем данные передаются при помощи единого набора протоколов.

протокол сети Интернет (Internet Protocol — IP)
Основной протокол Internet. Осуществляет ненадежную доставку индивидуальных пакетов от одного компьютера другому. Не дает никаких гарантий о том, будет ли доставлен пакет, сколько времени займет доставка, придут ли групповые пакеты в том порядке, в котором они были посланы. Протоколы, надстроенные над IP, добавляют понятия связности и надежности. См. также TCP/IP.

интерпретатор (interpreter)
Программа, которая поочередно декодирует и исполняет каждую инструкцию кода. Интерпретатор Java TM декодирует и выполняет код для виртуальной машины Java*. См. также компилятор, система поддержки и выполнения программ.

независимый поставщик ПО (Independent Software Vendor — ISV)
Фирма, разрабатывающая программное обеспечение для платформы, созданной другой организацией.

приложение J2EE (J2EE application)
Любой составной модуль, поддерживающий функциональность J2EE. Это может быть один модуль или группа модулей, упакованных в.war-файл, содержащий дескриптор размещения J2EE-приложения. Приложения J2EE обычно проектируются так, что они распределены по нескольким вычислительным уровням.

продукт J2EE (J2EE product)
Продукт разработки, соответствующий спецификации платформы J2EE.

поставщик продуктов J2EE (J2EE Product Provider)
Производитель, поставляющий продукты J2EE.

сервер J2EE (J2EE server)
Исполняемая часть продукта J2EE. Сервер J2EE обеспечивает Web и/или EJB-контейнеры.

JAIN
См. Java APIs for Integrated Networks TM .

JAR-файлы (Java ARchive files (.jar))
Файловый формат, используемый для группирования нескольких файлов в один.

файловый формат JAR (JAR file format)
Платформно-независимый файловый формат, соединяющий несколько файлов в один. Составные апплеты, написанные на языке Java TM , и необходимые для них компоненты (.class-файлы, изображения, звуковые и другие файлы) могут быть упакованы в JAR-файл и затем загружены в браузер за одну HTTP-транзакцию. Данный формат также поддерживает сжатие файлов и цифровые подписи.

Java TM
Торговая марка компании Sun для ряда технологий по созданию и безопасной работе программного обеспечения как в автономных, так и в сетевых средах.

Java TM Application Environment — JAE
Версия исходного кода программного обеспечения Java Development Kit (JDK TM).

Java APIs for Integrated Networks TM — JAIN
Дает возможность быстрой разработки продуктов и сервисов, использующих сетевые взаимодействия, на платформе Java.

платформа J2SE (Java TM 2 Platform, Standard Edition (J2SE platform))
Ядро платформы технологии Java.

платформа J2EE (Java TM 2 Platform, Enterprise Edition (J2EE platform))
Среда для разработки корпоративных приложений. Платформа J2EE состоит из набора услуг, интерфейсов прикладного программирования (APIs) и протоколов, обеспечивающих функциональные возможности для разработки многоуровневых Web-приложений.

Java TM 2 SDK, Enterprise Edition
Реализация платформы J2EE компании Sun. Данная реализация включает описание работы платформы J2EE.

JavaBeans TM
Модель переносимых платформонезависимых компонентов многократного использования.

Java Blend TM
Продукт, позволяющий разработчику упростить разработку приложений баз данных при помощи отображения записей баз данных в объекты языка Java TM и Java-объектов — в базы данных.

Java Card TM API
API для систем с минимальным набором ресурсов, в частности для смарт-карт. Среда прикладных программных средств, соответствующая стандарту ISO 7816-4 для интеллектуальных карт.

JavaCheck TM
Инструмент для проверки соответствия приложений и апплетов языка Java.

JavaChip TM
Процессор фирмы Sun, выполняющий байт-код виртуальной машины Java*. На компьютере с процессором JavaChip TM байт-код минует эмуляцию Java-машины на какой-либо платформе, исполняясь непосредственно аппаратным процессором.

Java TM Compatibility Kit (JCK)
Набор испытательных программ и инструментальных средств, используемых для проверки совместимости реализации платформы Java соответствующим спецификациям Java-платформ, а также эталонным реализациям программ Java. TCK дляJava 2 Standard Edition. См. TCK.

интерфейс JDBC (Java Database Connectivity — JDBC TM )
Промышленный стандарт для независимого от базы данных взаимодействия Java TM -платформы и широкого диапазона базданных. JDBC TM определяет API для доступа к базам данных из Java-приложений.

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

комплект разработчика для Java (Java Development Kit — JDK TM)
Среда программирования для написания апплетов и приложений в языке программирования Java.

Java TM Electronic Commerce Framework
Структурированная архитектура для разработки приложений электронной коммерции в языке программирования Java TM .

Java TM Enterprise API
Данный API упрощает создание крупномасштабных приложений и приложений баз данных, которые совместно используют мультимедийные данные с другими приложениями в пределах организации или через Internet. В семействе Java TM Enterprise API разработано четыре интерфейса прикладного программирования.

библиотека базовых классов Java (Java TM Foundation Classes — JFC)
Дополнительные библиотеки классов графического пользовательского интерфейса (Graphical User Interface — GUI), добавляемые к абстрактному оконному интерфейсу (Abstract Window Toolkit — AWT).

Java TM IDL
Технология, обеспечивающая функциональную совместимость и способность к взаимодействию CORBA и J2EE-платформы. Эти возможности позволяют приложениям J2EE вызывать операции удаленных сетевых служб, используя OMG IDL и IIOP.

Java TM Interface Definition Language (IDL)
API, написанные на языке программирования Java, которые обеспечивают функциональную совместимость и способность к взаимодействию с CORBA (Common Object Request Broker Architecture).

JavaMail TM
API для отправки и получения сообщений.

Java TM Media APIs
Набор интерфейсов прикладного программирования (APIs) для интеграции аудио и видео файлов, двумерных шрифтов, графики и изображений, а также трехмерных моделей и телефонии.

Java TM Media Framework
Ядро структуры поддерживает часы для синхронизации различных потоков (например, аудио и видео сигналов). Standard extension framework позволяет пользователям организовать потоки аудио и видео информации.

Java TM Message Service — JMS
Интерфейс прикладного программирования (API) для использования корпоративных систем передачи сообщений, таких как IBM MQ Series, TIBCO Rendezvous и т.д.

Java Naming and Directory Interface TM (JNDI)
Стандартный API к корпоративной службе каталогов.

операционная система Java (JavaOS TM)
Операционная система, основанная на технологии Java TM и оптимизированная для работы на различных платформах. Операционная среда JavaOS TM обеспечивает работу Java-приложений непосредственно на аппаратных платформах, минуя ведущую операционную систему.

JavaPlan TM
Инструмент для объектно-ориентированного проектирования и схематического изображения, написанный на языке программирования Java TM .

платформа Java TM (Java TM Platform)
Состоит из языка Java, предназначенного для написания программ, набора интерфейсов прикладного программирования (APIs), библиотек классов, других программ, используемых при разработке и компиляции, программ проверки ошибок, а также виртуальной машины Java, которая загружает и выполняет файлы классов.

Кроме того, платформа Java подчиняется набору требований совместимости для гарантии непротиворечивых и совместимых реализаций. Реализации, выполняющие требования совместимости, могут приобретать квалификацию заданной марки совместимости фирмы Sun. Java 2 — настоящее поколение платформы Java.

издания платформы Java (Java TM Platform Editions)
«Издание» платформы Java — это окончательная и согласованная версия платформы Java, которая обеспечивает функциональные возможности, необходимые в широком секторе рынка.

Издание составлено из двух видов API: (i) «основные пакеты», которые являются необходимыми для всех реализаций данного издания платформы; (ii) «дополнительные пакеты», которые доступны данному изданию платформы и могут поддерживаться совместимыми реализациями.

Существует три различных издания платформы Java:

Java 2 Platform, Enterprise Edition:
Издание платформы Java, используемое на предприятиях и предназначенное для разработки и развития многоуровневых приложений, управляемых центральным сервером.

Java 2 Platform, Standard Edition:
Издание платформы Java, предназначенное для разработки, развития и управления межплатформенными универсальными приложениями.

Java 2 Platform, Micro Edition:
Издание платформы Java, предназначенное для малых автономных потребителей, с целью разработки, развития и управления приложений, варьирующихся от смарт-карт до обычных вычислительных устройств.

Java TM Remote Method Invocation (RMI)
Распределенная объектная модель для Java-программы, в которой методы и удаленные объекты, написанные на языке программирования Java, могут быть вызваны другой виртуальной машиной Java, возможно, расположенной на другом компьютере.

Java TM Runtime Environment (JRE)
Подмножество комплекта разработчика Java (Java Developer Kit — JDK TM) для конечных пользователей и разработчиков, которые хотят самостоятельно настроить оперативные средства управления работой программы (run-time environment). Оперативные средства включают в себя виртуальную машину Java*, классы ядра Java и вспомогательные файлы.

JavaSafe TM
Инструмент для отслеживания и управления изменениями исходного файла, написанного на языке программирования Java.

язык сценариев JavaScript (JavaScript TM)
Язык сценариев, который используется как браузерами, так и Web-серверами. Подобно всем языкам сценариев, предназначен главным образом для интеграции компонент и пользовательского ввода.

Java Server Pages TM (JSP) Расширяемая Web-технология, использующая данные шаблона, заказные элементы, языки сценариев и серверные объекты Java для предоставления клиенту динамического содержания. Обычно, данные шаблона — это HTML или XML элементы, а клиент — это Web-браузер.

JAX
JAX относится к набору интерфейсов прикладного программирования (APIs), который предназначен для управления различными операциями, включающими данные, определенные посредством XML. Сюда входят такие операции как синтаксический анализ XML, регистрация в репозиториях ebXML или UDDI, обмен сообщениями между приложениями, привязка данных и удаленный вызов процедур.

действие Java Server Pages TM (JSP) (JSP action)
JSP элемент, который может действовать на неявные объекты и другие серверные объекты или определять новые переменные создания сценария. Действия придерживаются синтаксиса XML для элементов с начальным тэгом, телом и конечным тэгом; если тело пусто, может использоваться синтаксис пустого тэга. Тэг должен использовать префикс.

стандартное действие Java Server Pages TM (JSP action, standard)
Действие, которое определено спецификацией JSP и всегда доступно JSP-файлу без импортирования.

специальное действие Java Server Pages TM (JSP action, custom)
Действие, описанное с помощью тэгов и набора классов Java, включенных в страницу JSP с помощью тэговых дескрипторов.

приложение JSP (JSP application)
Автономное Web- приложение, написанное с использованием технологии Java Server Pages и включающее JSP файлы, сервлеты, HTML файлы, изображения, апплеты и компоненты JavaBeans.

контейнер JSP (JSP container)
Контейнер, предоставляющий те же услуги, что и сервлет-контейнер, а также механизм интерпретации и переработки JSP страниц в сервлеты.

распределенный контейнер JSP (JSP container, distributed)
JSP контейнер, который может запускать Web-приложения, помеченные как распределенные и выполняемые одновременно на нескольких виртуальных машинах Java. При этом виртуальные машины могут быть запущены, как на одном, так и на разных компьютерах.

объявление JSP (JSP declaration)
Элемент сценариев JSP, который объявляет методы и переменные в JSP файле.

директива JSP (JSP directive)
Элемент JSP, который дает команды JSP контейнеру и интерпретируется во время трансляции.

элемент JSP (JSP element)
Часть JSP страницы, которая распознается JSP транслятором. Элемент JSP может быть директивой, действием или элементом сценария.

выражение JSP (JSP expression)
Элемент сценария, который содержит допустимое выражение языка сценариев, вычисленное, преобразованное в строку и помещенное в неявный выходной объект.

файл JSP (JSP file)
Файл с расширением.jsp, который создается разработчиком при помощи стандартных тэгов HTML, основных JSP тэгов и инструкций языка сценариев, для отображения динамических страниц в Web-браузере.

страница JSP (JSP page)
Текстовый документ, использующий фиксированные шаблонные данные и элементы JSP. Описывает, как обработать запрос.

элемент сценария JSP
Объявление JSP, скриптлет или выражение, синтаксис которого определен спецификацией JSP и содержимое которого написано согласно языку сценариев, используемому в странице JSP. Спецификация JSP описывает синтаксис и семантику для того случая, когда атрибут языка страницы — java.

скриптлет JSP (JSP scriptlet)
Элемент сценария JSP, содержащий любой фрагмент кода, допустимый в том языке сценариев, который используется на JSP странице. Спецификация JSP определяет, что является допустимым скриптлетом для того случая, когда атрибут языка страницы — java.

тэг JSP (JSP tag)
Текст между левой и правой угловыми скобками, который используется в файлах JSP, как часть элемента JSP. В отличие от данных, тэг является элементом разметки документа, т.к. он выделен угловыми скобками.

библиотека тэгов JSP (JSP tag library)
Совокупность тэгов, описанных посредством библиотечных дескрипторов и классов Java. Библиотека тэгов JSP может импортироваться в любой JSP файл и использоваться с различными языками сценариев.

Java Studio TM
Инструментальный комплекс для построения Java-программ из готовых компонент, основанный на визуальном стиле проектирования и предназначенный для непрограммистов.

технологии Java (Java TM Technologies)
Ряд технологий по созданию и безопасной работе программного обеспечения, как в автономных, так и в сетевых средах.

Java TM Transaction API (JTA)
API, позволяющий приложениям и сервлетам J2EE иметь доступ к транзакциям.

Java TM Transaction Service (JTS)
Определяет реализацию менеджера транзакций, который поддерживает JTA и осуществляет Java отображение спецификации OMG Object Transaction Service (OTS) 1.1 на уровень ниже API.

виртуальная машина Java* (Java TM virtual machine — JVM*)
Программный «механизм выполнения», который безопасно выполняет байт-коды файлов классов Java на микропроцессоре (компьютера или другого электронного устройства).

Механизм выполнения Java HotSpot — это высокоэффективный механизм для среды выполнения Java программ, который представляет собой адаптивный компилятор, динамически оптимизирующий работу приложений.

Виртуальная машина KJava — малогабаритная, высоко оптимизированная основа среды выполнения программ (runtime environment) в Java 2 Platform, Micro Edition. KJava разработана на основе виртуальной машины Java и предназначена для малых устройств связи. Ее размер составляет от 30 до 128 Кб, в зависимости от функциональных возможностей устройства.

Виртуальная машина Java Card — малогабаритная, высоко оптимизированная основа среды выполнения программ (runtime environment) в Java 2 Platform, Micro Edition. KJava разработана на основе виртуальной машины Java и предназначена для смарт-карт и других устройств с ограниченной памятью (порядка 24Кб ПЗУ, 16Кб EEPROM и 512б ОЗУ).

Web-сервер Java (Java Web Server TM)
Удобное, открытое, легко администрируемое, безопасное, платформонезависимое решение для ускорения и простоты разработки Internet/Intranet Web-страниц. Обеспечивает немедленное повышение производительности для трудоемких, полнофункциональных серверных приложений Java.

Java Workshop TM
Законченный набор инструментов, интегрированный в единую среду программирования с использованием Java технологий. Программное обеспечение Java Workshop использует модульную структуру, которая позволяет легко подключать новые инструментальные средства.

Java TM wallet
Пользовательский интерфейс, основанный на Java TM Electronic Commerce Framework, предназначенный для осуществления интерактивных покупок, передачи данных и выполнения административных функций.

JavaSpaces TM
Технология, содержащая механизмы распределенной работы и обмена данными при программировании на языке Java TM .

JavaSoft TM
Ранее филиал компании Sun Microsystems, в настоящее время известный как подразделение Sun Microsystems Java Software.

JDBC TM
См. интерфейс JDBC (Java Database Connectivity — JDBC TM).

JDK TM
См. комплект разработчика для Java (Java Development Kit — JDK TM).

JFC
См. библиотека базовых классов Java (Java TM Foundation Classes — JFC).

технология Jini (Jini TM Technology)
Набор интерфейсов прикладного программирования (APIs) Java, которые могут быть включены в дополнительный пакет к любому изданию платформы Java 2. Jini позволяет обеспечивать совместную работу в сети различных устройств и служб, а также устраняет необходимость системного или сетевого административного вмешательства пользователя.

В настоящее время технология Jini является дополнительным пакетом, доступным любой Java платформе.

Java TM Management API — JMAPI
Совокупность Java классов и интерфейсов, позволяющих разработчику создавать системные, сетевые и служебные приложения.

JMS
См. Java TM Message Service.

интерфейс JNDI
См. Java Naming and Directory Interface TM .

стандарт JPEG (Joint Photographic Experts Group — JPEG)
Стандарт сжатия файлов изображений, установленный группой экспертов по машинной обработке фотографических изображений. Сильное сжатие достигается ценой внесения искажений в изображение, которые почти всегда являются незаметными.

JRE
См. Java TM Runtime Environment.

компилятор JIT (Just-in-time (JIT) Compiler)
Компилятор, динамически («на лету») преобразующий байт-код в объектный код целевой платформы. Его применение приводит к значительному ускорению выполнения Java-программы.

JVM
См. виртуальная машина Java*.

ключевое слово (keyword)
Слово, которое зарезервировано языком программирования Java TM , и поэтому не может быть именем переменной или метода.

лексический (lexical)
Соответствующий уровню лексем (идентификаторов, чисел, изображений строк и т.д.) языка программирования. Лексический анализ — фаза компилятора, на которой последовательность символов файла исходного текста преобразуется в последовательность лексем.

компоновщик (linker)
Модуль, который формирует запускаемую, законченную программу из составных модулей машинного кода. Компоновщик Java TM создает работоспособную программу из откомпилированных классов. См. также компилятор, интерпретатор, система поддержки исполнения программ.

литерал (literal)
Основное представление любого целого, символьного значения или значения с плавающей запятой. Например, 3.0 — литерал с плавающей запятой двойной точности, «а» — символьный литерал.

локальная переменная (local variable)
Элемент данных, известный в пределах блока, но недоступный вне блока. Например, любая переменная, определенная внутри метода, является локальной и не может использоваться вне этого метода.

long
Ключевое слово языка программирования Java TM , используемое для определения переменных типа long.

элемент (member)
Поле или метод класса. Пока не оговорено обратное, член не является статическим.

метод (method)
Функция, определенная в классе. См. также метод экземпляра, метод класса. Пока не оговорено обратное, метод не является статическим.

разрешение на вызов метода (method permission)
Разрешение на вызов указанной группы методов «домашнего» или удаленного интерфейса корпоративного компонента (enterprise bean).

модуль (module)
Программный модуль, который состоит из одного или более компонентов J2EE, принадлежащих контейнеру одного типа, и из дескриптора размещения этого типа. Существует три типа модулей: EJB, Web и клиентские приложения. Модули можно использовать автономно или собирать в приложения.

Mosaic
Программа c несложным графическим интерфейсом (GUI), предназначенная для простого доступа к данным, хранящимся в Internet. Данные могут быть обычными файлами или гипертекстовыми документами. Mosaic была разработана в NCSA.

многопоточный (multithreaded)
Описывает программу, спроектированную и реализованную в виде совокупности параллельных потоков управления (threads), синхронизированных между собой по общим ресурсам и событиям. См. также поток.

взаимная аутентификация (mutual authentication)
Процесс, при котором клиент использует сертификат с открытым ключом для установления своей идентичности и поддерживает защиту своего контекста.

native
Ключевое слово языка программирования Java TM , используемое в объявлении метода для указания на то, что метод реализован не в файле Java, а на другом языке.

Национальный центр по приложениям для суперкомпьютеров (National Center for Supercomputer Applications — NCSA)
Исследовательский центр, в котором была разработана программа Mosaic.

new
Ключевое слово языка программирования Java TM , используемое для создания нового экземпляра класса.

null
Тип null имеет единственное значение — «пустую» ссылку, представленную литералом null, который сформирован из символов ASCII. Литерал null всегда имеет тип null.

объект (object)
Основной компоновочный блок объектно-ориентированных программ. Каждый объект программного модуля состоит из данных (переменные экземпляра) и функциональных возможностей (методы экземпляра). См. также класс.

объектно-ориентированное проектирование (object-oriented design)
Метод проектирования программного обеспечения, позволяющий моделировать абстрактные или реальные объекты при помощи классов и объектов.

восьмеричный (octal)
Система счисления с основанием 8. Знаки 0-7 представляют цифры. В программе, написанной на языке Java TM , восьмеричные числа должны начинаться с символа 0. См. также шестнадцатеричный.

открытое сетевое окружение (Open Net Environment — ONE)
Сетевая среда, которая была разработана компанией Sun Microsystems и поддержана многими ведущими производителями. Описывает всестороннюю архитектуру для создания, сборки и использования сетевых услуг. ONE платформонезависима и полностью основана на открытых стандартах. Sun ONE — конкретная реализация данной архитектуры, разработанная компаниями Sun и iPlanet.

дополнительный пакет (Optional Package)
Набор API в издании платформы Java, который может быть доступным или поддерживаться в совместимой реализации.

По мере необходимости, дополнительные пакеты могут становиться необходимыми в издании.

посредник запросов к объектам (Object Request Broker — ORB)
Библиотека, позволяющая объектам CORBA определять местонахождение и устанавливать связь друг с другом.

принцип (OS principal)
Свойство (principal), присущее той операционной системе, на которой запущена платформа J2EE.

Object Transaction Service (OTS)
Интерфейсы, позволяющие объектам CORBA участвовать в транзакциях.


Использование одного идентификатора для ссылки на разные элементы в одной области действия. В языке программирования Java TM можно перегружать методы, однако, нельзя перегружать переменные или операторы.

замещение (overriding)
Означает другую реализацию метода в подклассе класса, первоначально определившего метод.

пакет (package)
Группа типов. Пакеты объявляются при помощи ключевого слова package.

пассивация (passivation)
Процесс передачи корпоративного компонента (enterprise bean) из памяти во вторичное устройство хранения данных. См. также активация.

одноранговые (peer)
В организации сетей любые функциональные единицы, находящиеся на одном уровне.

persistence
Протокол передачи состояния сущности (entity bean) между переменными ее экземпляра и базой данных.

PersonalJava TM
Среда выполнения Java для сетевых приложений на персональных устройствах потребителя (домашнего, мобильного или офисного использования).

пиксель (pixel)
Элемент площади изображения, например, экрана монитора или напечатанной страницы. Каждый пиксель является индивидуально доступным.

Portable Object Adapter — POA
Стандарт CORBA для создания серверных приложений, которые переносимы между различными посредниками запросов к объектам (ORBs).

интерфейс переносимой операционной системы (Portable Operating System Interface — POSIX)
Стандарт, который определяет языковой интерфейс между операционной системой UNIX и прикладными программами посредством минимального набора поддерживаемых функций.

первичный ключ (primary key)
Объект, уникально идентифицирующий сущность (entity bean).

принцип (principal)
Отличительная черта, присвоенная сущности в результате аутентификации.

private
Ключевое слово языка программирования Java TM , используемое при объявлении метода или переменной. Указывает на то, что к методу или переменной класса не могут обращаться элементы других классов.

привилегия (privilege)
Атрибут защиты, который не имеет свойства уникальности и который может быть использован несколькими principals. Пример привилегии — группа.

процесс (process)
Виртуальное адресное пространство, содержащее один или более потоков.

свойство (property)
Характеристика объекта, которую может устанавливать пользователь. Например, цвет окна.

профили (Profiles)
Наборы Java API, которые служат дополнением к изданиям платформ Java и обеспечивают дополнительные возможности. Профили также могут включать другие определенные профили. Реализация профиля нуждается в издании Java Platform для создания законченной разработки и среды ее использования на целевом вертикальном рынке. Каждый профиль подчиняется связанному набору требований совместимости.

Профили могут использоваться одним или несколькими изданиями.

Примеры профилей в Java 2 Platform, Micro Edition: PersonalJava TM , Java Card TM .

protected
Ключевое слово языка программирования Java TM , используемое при объявлении метода или переменной. Указывает на то, что к методу или переменной класса могут обращаться другие элементы данного класса, его подклассов или классов из того же пакета.

private
Ключевое слово языка программирования Java TM , используемое при объявлении метода или переменной. Указывает на то, что к методу или переменной класса могут обращаться элементы других классов.

растр (raster)
Двумерная прямоугольная сетка пикселей.

область (realm)
См. область политики безопасности. Строка, проходящая базовую аутентификацию, как часть HTTP-запроса, которая определяет пространство защиты. Защищенные ресурсы на сервере могут находиться в разных пространствах защиты, каждое со своей схемой аутентификации и/или базой данных авторизации.

реентерабельный корпоративный компонент (re-entrant enterprise bean)
Корпоративный компонент, который может обрабатывать несколько одновременных или вложенных вызовов, не пересекающихся друг с другом.

ссылочная реализация (Reference Implementation — RI)
Прототип реализации спецификации Java-технологии. Является неотъемлемой частью любой Java-технологии и служит доказательством того, что данная Java-технология может быть реализована на практике.

удаленный интерфейс (remote interface)
Один из двух интерфейсов корпоративной компоненты (enterprise bean). Удаленный интерфейс определяет бизнес-методы, вызываемые клиентом.

метод удаления (remove method)
Метод, определенный в «домашнем» интерфейсе и вызываемый клиентом для уничтожения корпоративной компоненты (enterprise bean).

адаптер ресурсов (resource adapter)
Программный драйвер системного уровня, используемый EJB-контейнером или клиентским приложением для связи с EIS. Адаптер ресурсов специфичен для каждой EIS. Он представляет собой библиотеку, и используется в пределах адресного пространства сервера или клиента, которые используют адаптер. Адаптер ресурсов подключается к контейнеру. Прикладные компоненты, содержащиеся в контейнере, используют API (представленный адаптером) или инструментально созданные высокоуровневые абстракции для доступа к низкоуровневой EIS. Адаптер ресурса и EJB-контейнер взаимодействуют для того, чтобы обеспечить низкоуровневые механизмы — транзакции, безопасность, организация связного пула — для связи с EIS.

менеджер ресурсов (resource manager)
Обеспечивает клиенту доступ к набору общедоступных ресурсов. Менеджер ресурсов участвует в транзакциях, которые управляются и координируются менеджером транзакций. Менеджер ресурсов обычно находится в другом адресном пространстве или на другой машине. Замечание: к EIS обращаются, как к менеджеру ресурсов, когда она упомянута в контексте управления ресурсами и транзакциями.

соединение с менеджером ресурсов (resource manager connection)
Объект, представляющий собой сеанс связи с менеджером ресурсов.

мастер соединения с менеджером ресурсов (resource manager connection factory)
Объект, используемый для создания сеанса связи с менеджером ресурсов.

return
Ключевое слово языка программирования Java TM , используемое для окончания выполнения метода. За ним может следовать значение, возвращаемое методом.

запрос на улучшение (Request for Enhancement — RFE)

RMI
См. Java TM Remote Method Invocation.

роль разработки (role (development))
Функция, выполняемая человеком в стадии развития приложения, разрабатываемого с помощью технологии J2EE. Примеры ролей: поставщик программных компонент (Application Component Provider), компоновщик приложения (application assembler), «разместитель» (deployer), поставщик платформы J2EE (J2EE Platform Provider), поставщик EJB-контейнера (EJB Container Provider), поставщик EJB-сервера (EJB Server Provider), поставщик Web-контейнера (Web Container Provider), поставщик Web-сервера (Web Server Provider), поставщик инструментов (Tool Provider), системный администратор (System Administrator).

роль безопасности (role (security))
Абстрактная логическая группировка пользователей, осуществляемая компоновщиком приложения. Когда приложение установлено, роли ставятся в соответствие идентичностям безопасности, таким как principals или группы.

распределение ролей (role mapping)
Процесс объединения групп, распознанных контейнером, в роли безопасности, которые определены в дескрипторе размещения. Роли безопасности должны быть составлены «разместителем» перед установкой контейнера на сервер.

откат (rollback)
Момент транзакции, когда все изменения, вносимые в базу данных, отменяются.

корень (root)
Элемент иерархии, из которого происходят все элементы. Ни один элемент не может находиться в иерархии выше «корня». См. также иерархия, класс, пакет.

вызов удаленной процедуры (Remote Procedure Call — RPC)
Протокол, позволяющий приложениям вызывать процедуры, физически расположенные в другой части сети.

система поддержки исполнения программ (runtime system)
Программная среда, в которой могут работать программы, откомпилированные для виртуальной машины Java TM *. Система поддержки исполнения включает весь код, необходимый для того, чтобы загружать программы, написанные на Java, динамически связывать «родные» методы, управлять памятью, обрабатывать исключительные ситуации, а также реализацию виртуальной машины Java.

простой API для XML (Simple API for XML — SAX)
Управляемый событиями, последовательный механизм доступа к XML документам.

Sandbox
Содержит множество взаимодействующих системных компонент, начиная от менеджеров безопасности, которые выполняются как часть приложения, и заканчивая мерами безопасности, встроенными непосредственно в виртуальную машину Java* и язык Java. Sandbox гарантирует, что ненадежные и, возможно, злонамеренные приложения не смогут получить доступ к системным ресурсам.

область действия (scope)
Характеристика идентификатора, определяющая, где может использоваться данный идентификатор. Большинство идентификаторов в языке программирования Java имеют либо локальную область действия, либо область действия — класс. Для переменных экземпляров и классов, а также методов областью действия является класс; они могут использоваться вне класса и его подклассов, только если перед ними ставится имя экземпляра класса или (в случае переменных и методов класса) имя самого класса. Все другие переменные объявляются внутри методов и имеют локальную область действия; они могут использоваться только внутри блока.

протокол безопасных соединений (Secure Socket Layer — SSL)
Протокол, который позволяет шифровать сообщения, передаваемые между Web-браузером и сервером в целях безопасности.

атрибуты безопасности (security attributes)
Набор свойств, связанных с principal. Атрибуты безопасности могут быть связаны с principal посредством протокола аутентификации и/или поставщиком продуктов J2EE (J2EE Product Provider).

ограничения безопасности (security constraint)
Декларативный способ аннотирования необходимой защиты содержимого сети. Ограничение безопасности состоит из совокупности Web-ресурсов, ограничения авторизации, ограничения пользовательских данных.

контекст безопасности (security context)
Объект, включающий разделяемые свойства для описания безопасности сущностей.

право безопасности (security permission)
Механизм, определенный J2SE и используемый платформой J2EE для определения программных ограничений, наложенных на поставщиков программных компонент (Application Component Providers).

набор прав безопасности (security permission set)
Минимальный набор прав безопасности, обеспечиваемый поставщиком программных компонент (Application Component Provider) для выполнения каждого типа компонент.

область политики безопасности (security policy domain)
Область, в переделах которой определена и приведена в исполнение администратором политика безопасности. Область политики безопасности имеет следующие характеристики:

  • обладает набором пользователей (или principals);
  • использует хорошо определенный протокол аутентификации пользователей (или principals);
  • может иметь группы для упрощения настройки политики безопасности.

security role
См. роль безопасности (role(security)).

область технологии безопасности (security technology domain)
Область, в пределах которой для осуществления политики безопасности используется один и тот же механизм. В пределах единой области технологии безопасности может существовать несколько областей политики безопасности.

server principal
Принцип ОС, в соответствии с которым работает сервер.

сервлет (servlet)
Java программа, которая расширяет функциональные возможности Web-сервера, динамически генерируя содержание и взаимодействуя с Web-клиентами при помощи принципа запрос-ответ.

контейнер сервлета (servlet container)
Контейнер, обеспечивающий сетевые службы, при помощи которых посылаются запросы и ответы, декодируются запросы и форматируются ответы. Все контейнеры сервлетов должны поддерживать HTTP-протокол, но могут также поддерживать дополнительные протоколы, например, HTTPS.

распределенный контейнер сервлета (servlet container, distributed)
Контейнер сервлета, запускающий Web-приложения, которые помечены как распределенные и выполняются на нескольких виртуальных машинах Java. При этом виртуальные машины могут быть запущены, как на одном, так и на разных компьютерах.

контекст сервлета (servlet context)
Объект, содержащий представление (вид) Web-приложения, в котором запущен сервлет. Используя контекст, сервлет может вести журнал событий, получать URL-ссылки на ресурсы, а также устанавливать и хранить атрибуты, которые могут использоваться другими сервлетами в приложении.

отображение сервлета (servlet mapping)
Определяет связь между структурой URL и сервлетом. Используется для отображения запросов в сервлеты. Если контейнер, обрабатывающий запрос, является JSP-контейнером, то неявно отображается URL, содержащий расширение.jsp.

сессия (session)
Объект, используемый сервлетом, для прослеживания взаимодействий пользователя с Web-приложением при помощи множества HTTP-запросов.

сессионный компонент (session bean)
Корпоративный компонент (enterprise bean), который создается клиентом и обычно существует только в течение одной клиент-серверной сессии. Сессионный компонент выполняет для клиента вычислительные операции и организует доступ к базе данных. В случае сбоя системы сессионный компонент не восстанавливается. Объекты сессионных компонент могут не менять своего состояния или поддерживать диалоговое состояние в процессе выполнения методов и транзакций. Если объект поддерживает состояние, то EJB-контейнер управляет этим состоянием, если объект должен быть удален из памяти. Однако объекты сессионного компонента должны управлять собственными хранимыми данными.

short
Ключевое слово языка программирования Java TM , используемое для определения переменных типа short.

одинарная точность (single precision)
В спецификации языка Java описывает число с плавающей запятой, занимающее 32 бита данных. См. также двойная точность.

стандартный язык обобщенной разметки (Standardized Generalized Markup Language — SGML)
Стандарт ISO/ANSI/ECMA для определения структуры и управления содержимым любого электронного документа.

Smart Web Services
Расширяют основную концепцию сетевых услуг, добавляя пользовательский контекст, и способны модифицировать свои действия, чтобы следить за изменениями текущего состояния клиента. Сюда входят классические дескрипторы «кто, что, когда, где, почему», которые объединяются для определения пользовательского контекста в данный момент.

The Simple Object Access Protocol — SOAP
Использует основанное на XML структурирование данных и HTTP для того, чтобы определить стандартизованные методы для вызова методов объектов, распределенных в различных средах по всей Internet.

язык структурированных запросов (Structured Query Language — SQL)
Стандартизованный язык реляционных баз данных, предназначенный для определения объектов баз данных и манипулирования данными.

сессионный компонент с диалоговым состоянием (stateful session bean)
Сессионный компонент с диалоговым состоянием.

сессионный компонент, не имеющий состояния (stateless session bean)
Сессионный компонент, не имеющий состояния. Все экземпляры такого компонента идентичны.

static
Ключевое слово языка программирования Java TM , используемое для определения переменной класса (типа). Классы обеспечивают только одну копию таких переменных, не зависимо от того, сколько экземпляров класса было создано. Слово static также может использоваться при определении метода класса. Такие статические методы вызываются от имени не экземпляра объекта, а его типа (класса), и могут, в свою очередь, оперировать только статическими переменными.

статическое поле (static field)
Другое название переменной класса.

статический метод (static method)
Другое название метода класса.

поток (stream)
Последовательность байтов данных, пересылаемых от отправителя к получателю. Существует две основные категории потоков, поэтому пакет java.io включает два абстрактных класса (InputStream и OutputStream).

подмассив (subarray)
Массив, содержащийся в другом массиве.

подкласс (subclass)
Класс, который «произведен» из другого класса. См. также суперкласс, супертип.

подтип (subtype)
Если тип X «расширяет» или реализует тип Y, то X — подтип типа Y. См. также супертип.

суперкласс (superclass)
Класс, из которого «произведены» другие классы. См. также подкласс, подтип.

super
Ключевое слово языка программирования Java TM , используемое для доступа к членам класса, наследуемого классом, из которого производится вызов.

супертип (supertype)
Все интерфейсы или классы, расширяемые или реализуемые данным типом. См. также подтип, суперкласс.

switch
Ключевое слово языка программирования Java TM , используемое для определения переменной, которая в дальнейшем может быть использована ключевым словом case для выполнения блока инструкций.

Swing
Кодовое название совокупности графических компонентов, которые выполняются на любой платформе, поддерживающей виртуальную машину Java TM . Данные компоненты могут обеспечивать большие функциональные возможности, вследствие того, что они целиком написаны на языке Java TM . См. также AWT.

synchronized
Ключевое слово языка программирования Java TM , которое при применении к методу или блоку кода, гарантирует, что данный код будет выполняться не более чем одним потоком одновременно.

системный администратор (System Administrator)
Человек, ответственный за конфигурирование и администрирование компьютеров компании, сетей и систем программного обеспечения.

TCP/IP (TCP/IP)
Протокол управления передачей данных, основанный на IP. Internet-протокол, который обеспечивает надежную транспортировку потоков данных между компьютерами. См. также IP.

Испытатель Совместимости Технологии (TCK) (Technology Compatibility Kit — TCK)
Набор тестов, инструментов, сопутствующих утилит и документации, которые позволяют реализатору Спецификации той или иной технологии определить, соответствует ли его реализация заданной Спецификации. Любая Java-технология состоит из Спецификации, ТСК и ссылочной реализации (reference implementation).

«тонкий» клиент (Thin Client)
Система, использующая очень упрощенную операционную систему, не требующая локального системного администрирования и выполняющая приложения, загруженные из сети.

this
Ключевое слово языка Java TM , которое может использоваться для ссылки на экземпляр класса, в котором используется эта ссылка. Слово this может использоваться для доступа, как к полям, так и к методам класса.

процесс (поток) (thread)
Основная единица выполнения программы. Процесс может иметь несколько потоков, работающих одновременно и выполняющих различные задачи, такие как, ожидание события или исполнение трудоемкой по времени работы, окончание которой не требуется для дальнейшего выполнения программы. После выполнения потоком своей работы он приостанавливается или уничтожается. См. также процесс.

throw
Ключевое слово языка Java TM , которое позволяет пользователю сгенерировать исключительную ситуацию или любой класс, реализующий «throwable» интерфейс (т.е. интерфейс, позволяющий классу генерировать прерывания).

throws
Ключевое слово языка Java TM , используемое в описании метода и определяющее, какие исключительные ситуации не обрабатываются внутри метода, а передаются на следующий, более высокий уровень программы.

поставщик инструментов (Tool Provider)
Организация или поставщик программного обеспечения, предоставляющий инструменты, используемые для разработки, компоновки и внедрения J2EE приложений.

транзакция (transaction)
Минимальная единица работы по изменению данных. Транзакция включает в себя одну или несколько программных инструкций, которые могут выполниться только все вместе. Если хотя бы одна из инструкций не выполняется, происходит возврат в исходное состояние (откат). Транзакции разрешают одновременный доступ нескольким пользователям к одним и тем же данным.

атрибут транзакции (transaction attribute)
Значение, определяемое в дескрипторе внедряемой корпоративной компоненты (enterprise bean), которое используется в контейнере EJB для управления областью действия транзакции при вызове методов компоненты. Атрибут транзакции может принимать следующие значения: Required, RequiresNew, Supports, NotSupported, Mandatory, Never («требуется», «требуется для новых», «поддерживается», «не поддерживается», «принудительно», «никогда»).

уровень изоляции транзакции (transaction isolation level)
Степень видимости промежуточного состояния модифицируемых транзакцией данных для других параллельных транзакций и данных, модифицируемых другими транзакциями, для данной транзакции.

менеджер транзакции (transaction manager)
Обеспечивает сервисы и управляющие функции, требуемые для поддержки разграничения транзакции, управления ресурсами транзакции, синхронизации и прохождения содержания транзакции.

transient
Ключевое слово языка Java TM , которое определяет, что поле не является частью сериализуемой формы объекта. Когда объект сериализуется, значения его transient полей не включаются в представление сериализации, в то время как значения не transient полей включаются.

try
Ключевое слово языка Java(TM), определяющее блок операторов, которые могут генерировать исключительные ситуации Java. При возникновении исключительной ситуации необязательный catch блок может обработать определенные исключительные ситуации, сгенерированные внутри блока try. Также необязательный блок finally будет выполнен независимо от того, генерировалась исключительная ситуация или нет.

type
Класс или интерфейс.

UDDI
Проект «Универсальное обнаружение и интеграция описаний» (The Universal Description Discovery and Integration — UDDI) обеспечивает глобальный, публичный, основанный на XML, онлайновый бизнес-регистр, в котором пользователи регистрируют и представляют свои web службы. UDDI представляет собой Internet-версию желтых страниц в справочнике телефонов.

уникод (Unicode)
16-битная кодовая таблица, определенная ISO 10646. См. также ASCII. Все исходные коды программной среды Java(TM) написаны в Unicode.

унифицированный идентификатор ресурсов (Uniform Resource Identifier — URI)
Компактная строка символов для идентификации абстрактного или физического ресурса. URI может быть или URL или URN. URL и URN представляют собой конкретные сущности, которые действительно существуют; URI является абстрактным суперклассом.

унифицированный указатель информационного ресурса (Uniform Resource Locator — URL)
Стандарт для записи текстовой ссылки на произвольные данные в WWW. URL выглядит следующим образом: «протокол://хост/локальная_информация», где протокол определяет конкретный протокол, используемый для доступа к объекту (например HTTP или FTP), хост определяет Internet-имя хоста, на котором объект находится, и локальная_информация — строка (часто имя файла), передаваемая обработчику протокола на удаленном хосте.

URL path
URL, передаваемый запросом HTTP для вызова сервлета. URL состоит из Context Path + Servlet Path + PathInfo, где Context Path является префиксом пути, ассоциируемым с контекстом сервлета. Этот сервлет является частью контекста. Если этот контекст является контекстом по умолчанию, находящимся в основном пространстве имен URL Web-сервера, префикс пути является пустой строкой. В противном случае префикс пути начинается с символа /, но не заканчивается символом /. Servlet Path — это участок пути, который прямо соответствует отображению, активизировавшему данный запрос. Этот путь начинается с символа /. PathInfo — это часть пути запроса, не являющаяся частью Context Path или Servlet Path.

унифицированное имя ресурса (URN)
Уникальный идентификатор, который идентифицирует сущность, но не показывает, где она расположена. Система может использовать URN для локального поиска сущности перед попыткой найти ее в Web. Этот идентификатор также позволяет изменение Web-ссылки при сохранении возможности нахождения сущности.

ограничитель данных пользователя (user data constraint)
Определяет, как должны быть защищены данные между клиентом и контейнером. Защита может быть предотвращением несанкционированного изменения данных либо предотвращением перехвата данных.

переменная (variable)
Элемент данных, имеющий идентифицирующее его имя. Каждая переменная имеет тип (например, int или Object) и область видимости. См. также переменная класса, переменная экземпляра, локальная переменная.

виртуальная машина (virtual machine)
Абстрактная спецификация для вычислительного устройства, которое может быть реализовано различным образом — программно или аппаратно. Вы компилируете последовательность команд виртуальной машины точно так же, как будто вы компилируете последовательность команд микропроцессора. Виртуальная машина Java TM состоит из байтовых команд, набора регистров, стека, «кучи» со сборкой «мусора» и областью для хранения методов.

словарь (vocabulary)
Обычно компьютерные программы пишутся и компилируются в машинные коды, которые прямо зависят от операционной системы, управляющей микропроцессором в компьютере. Java-платформа смягчает эту зависимость, обеспечивая модель, по которой программы пишутся, компилируются и могут быть переданы по сети и выполнены в любом месте, где присутствует полностью совместимая виртуальная машина.

Эта модель обеспечивает дополнительное преимущество в повышении безопасности. Во-первых, потому что программы могут быть проверены виртуальной машиной после того, как они были переданы по сети. И, во-вторых, потому что виртуальная машина может запустить программу в защищенном пространстве, которое предотвратит определенные разрушающие действия.

Разработчики программного обеспечения выбирают платформу Java потому, что это уменьшает стоимость и время написания и поддержки программного кода. Им больше не требуется переписывать программы для функционирования на различных компьютерах с различными операционными системами и микропроцессорами. Внедрение приложений Java технологии в компаниях и организациях выгодно, потому что это минимизирует стоимость покупки и модификации различных версий приложений для различных типов компьютеров и серверов внутри их сетей.

void
Ключевое слово языка Java TM , используемое в описании метода для указания на то, что метод не возвращает никакого значения. void может также использоваться как нефункциональный оператор.

volatile
Ключевое слово языка Java TM , используемое в описания переменной для указания на то, что переменная модифицируется асинхронно несколькими совместно выполняющимися потоками.

wait
Команда UNIX, которая будет ожидать завершения всех фоновых процессов и отчета об их статусе завершения.

Web-приложение, распределенное(Web application, distributable)
Web-приложение, использующее технологию J2EE и написанное таким образом, что оно может быть внедрено в Web контейнер, распределенный по нескольким виртуальным машинам Java, работающих на одном хосте или на различных хостах. Дескриптор «размещения» для такого приложения использует распределенный элемент.

Web-компонент (Web component)
Компонент, обеспечивающий сервисы в ответ на запросы, сервлеты или JSP страницы.

Web-контейнер (Web container)
Контейнер, обеспечивающий исполнение Web компонентов, удовлетворяющих правилам J2EE архитектуры. Эти правила определяют среду времени выполнения (runtime environment) для Web-компонентов, включая безопасность, совместную работу, управление жизненным циклом, транзакции, внедрение и другие службы. Контейнер, обеспечивающий такие же службы как JSP контейнер и интегрированный взгляд на API платформы J2EE. Web контейнер обеспечивается Web или J2EE сервером.

Web-контейнер, распределенный (Web container, distributed)
Web-контейнер, который может запускать Web-приложение, помеченное как распределенное, которое выполняется на нескольких виртуальных машинах Java, работающих на одном или на различных хостах.

Web-сервер (Web server)
Программа, обеспечивающая службы для доступа в Internet, Intranet, или Extranet. Web-сервер содержит Web-сайты, обеспечивая поддержку HTTP и других протоколов и выполняет серверные программы (такие как CGI-скрипты или сервлеты), которые выполняют определенные функции. Например, Web-контейнер обычно основан на Web-сервере для обеспечения обработки сообщений HTTP. Архитектура J2EE предполагает, что Web-контейнер предоставляется Web-сервером от одного и того же поставщика, т.е. не определяя правила между этими двумя сущностями. Web-сервер может предоставлять один или много Web-контейнеров.

Web-службы (Web Services)
Свободно собранные программные компоненты, способные взаимодействовать между собой по многочисленным сетям для предоставления определенного результата конечному пользователю. Во время работы они используют развивающуюся группу стандартов, которые определяют их (служб) описание и взаимодействие, таких как SOAP (простой протокол доступа к объектам), UDDI (универсальное обнаружение и интеграция описаний), XML (открытый язык меток), WSDL (язык описания Web-служб).

while
Ключевое слово языка Java TM , используемое для определения цикла, который повторяет блок инструкций. Условие продолжения цикла указывается как часть оператора while.

общедоступные для чтения файлы (world readable files)
Файлы в файловой системе, которые могут быть просмотрены (прочтены) любым пользователем. Например: файлы, расположенные на Web-серверах могут быть просмотрены пользователями Internet, если права файлов были установлены как «доступные для чтения».

wrapper
Объект, который инкапсулирует и уполномочивает другой объект на изменение своего интерфейса или поведения определенным образом.

язык описания Web-сервисов (Web Services Description Language — WSDL)
XML язык, который используется для описания Web-сервиса и для определения способа общения с Web-сервисом.

World Wide Web — WWW
«Всемирная паутина». Сеть систем и данных в них, т.е. часть Internet. См. также Internet.

расширяемый язык меток (Extensible Markup Language — XML)
Расширяемый язык разметки текстов (или текстовых документов). Дескрипторы размещения J2EE выражены при помощи XML.

*в данном словаре, термин «виртуальная машина Java» или «JVM» означает виртуальную машину для платформы Java.

Java предоставляет богатый набор операторов для управления переменными. Все операторы Java можно разделить на следующие группы:

  • арифметические операторы;
  • операторы сравнения;
  • побитовые операторы;
  • логические операторы;
  • операторы присваивания;
  • прочие операторы.

Арифметические операторы

Арифметические операторы - используются в математических выражениях таким же образом, как они используются в алгебре. Предположим, целая переменная A равна 10, а переменная B равна 20. В следующей таблице перечислены арифметические операторы в Java:

Пример

Следующий простой пример показывает программно арифметические операторы. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

Public class Test { public static void main(String args) { int a = 10; int b = 20; int c = 25; int d = 25; System.out.println("a + b = " + (a + b)); System.out.println("a - b = " + (a - b)); System.out.println("a * b = " + (a * b)); System.out.println("b / a = " + (b / a)); System.out.println("b % a = " + (b % a)); System.out.println("c % a = " + (c % a)); System.out.println("a++ = " + (a++)); System.out.println("b-- = " + (a--)); // Проверьте разницу в d++ и ++d System.out.println("d++ = " + (d++)); System.out.println("++d = " + (++d)); } }

A + b = 30 a - b = -10 a * b = 200 b / a = 2 b % a = 0 c % a = 5 a++ = 10 b-- = 11 d++ = 25 ++d = 27

Операторы сравнения

Есть следующие операторы сравнения, поддерживаемые на языке Java. Предположим, переменная A равна 10, а переменная B равна 20. В следующей таблице перечислены реляционные операторы или операторы сравнения в Java:

Оператор Описание Пример
== Проверяет, равны или нет значения двух операндов, если да, то условие становится истинным (A == B) - не верны
!= Проверяет, равны или нет значения двух операндов, если значения не равны, то условие становится истинным (A != B) - значение истинна
> Проверяет, является ли значение левого операнда больше, чем значение правого операнда, если да, то условие становится истинным (A > B) - не верны
Проверяет, является ли значение левого операнда меньше, чем значение правого операнда, если да, то условие становится истинным (A
>= Проверяет, является ли значение левого операнда больше или равно значению правого операнда, если да, то условие становится истинным (A >= B) - значение не верны
Проверяет, если значение левого операнда меньше или равно значению правого операнда, если да, то условие становится истинным (A

Пример

Следующий простой пример показывает, программно операторы сравнения в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

Public class Test { public static void main(String args) { int a = 10; int b = 20; System.out.println("a == b = " + (a == b)); System.out.println("a != b = " + (a != b)); System.out.println("a > b = " + (a > b)); System.out.println("a = a = " + (b >= a)); System.out.println("b

A == b = false a != b = true a > b = false a = a = true b

Побитовые операторы

Java определяет несколько побитовых операторов, которые могут быть применены для целочисленных типов: int, long, short, char и byte. В Java побитовый оператор работает над битами и выполняет операцию бит за битом. Предположим, если a = 60; и b = 13; то в двоичном формате они будут следующие:

a = 0011 1100
b = 0000 1101
-----------------
a&b = 0000 1100
a|b = 0011 1101
a^b = 0011 0001
~a = 1100 0011

Предположим целочисленные переменная A равна 60, а переменная B равна 13. В следующей таблице перечислены побитовые операторы в Java:

Оператор Описание Пример
& (побитовое и) Бинарный оператор AND копирует бит в результат, если он существует в обоих операндах. (A & B) даст 12, который является 0000 1100
| (побитовое или) Бинарный оператор OR копирует бит, если он существует в любом из операндов. (A | B) даст 61 который равен 0011 1101
^ (побитовое логическое или) Бинарный оператор XOR копирует бит, если он установлен в одном операнде, но не в обоих. (A ^ B) даст 49, которая является 0011 0001
~ (побитовое дополнение) Бинарный оператор дополнения и имеет эффект «отражения» бит. (~ A) даст -61, которая является формой дополнением 1100 0011 в двоичной записи
Бинарный оператор сдвига влево. Значение левых операндов перемещается влево на количество бит, заданных правым операндом. A
>> (сдвиг вправо) Бинарный оператор сдвига вправо. Значение правых операндов перемещается вправо на количество бит, заданных левых операндом. A >> 2 даст 15, который является 1111
>>> (нулевой сдвиг вправо) Нулевой оператор сдвига вправо. Значение левых операндов перемещается вправо на количество бит, заданных правым операндом, а сдвинутые значения заполняются нулями. A >>> 2 даст 15, который является 0000 1111

Пример

Следующий простой пример показывает, программно побитовые операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

Public class Test { public static void main(String args) { int a = 60; /* 60 = 0011 1100 */ int b = 13; /* 13 = 0000 1101 */ int c = 0; c = a & b; /* 12 = 0000 1100 */ System.out.println("a & b = " + c); c = a | b; /* 61 = 0011 1101 */ System.out.println("a | b = " + c); c = a ^ b; /* 49 = 0011 0001 */ System.out.println("a ^ b = " + c); c = ~a; /*-61 = 1100 0011 */ System.out.println("~a = " + c); c = a > 2; /* 215 = 1111 */ System.out.println("a >> 2 = " + c); c = a >>> 2; /* 215 = 0000 1111 */ System.out.println("a >>> 2 = " + c); } }

Будет получен следующий результат:

A & b = 12 a | b = 61 a ^ b = 49 ~a = -61 a > 15 a >>> 15

Логические операторы

Предположим, логическая переменная A имеет значение true, а переменная B хранит false. В следующей таблице перечислены логические операторы в Java:

Пример

Public class Test { public static void main(String args) { boolean a = true; boolean b = false; System.out.println("a && b = " + (a&&b)); System.out.println("a || b = " + (a||b)); System.out.println("!(a && b) = " + !(a && b)); } }

Это произведет следующий результат:

A && b = false a || b = true !(a && b) = true

Операторы присваивания

Существуют следующие операторы присваивания, поддерживаемые языком Java:

Оператор Описание Пример
= Простой оператор присваивания, присваивает значения из правой стороны операндов к левому операнду C = A + B, присвоит значение A + B в C
+= Оператор присваивания «Добавления», он присваивает левому операнду значения правого C += A, эквивалентно C = C + A
-= Оператор присваивания «Вычитания», он вычитает из правого операнда левый операнд C -= A, эквивалентно C = C - A
*= Оператор присваивания «Умножение», он умножает правый операнд на левый операнд C * = A эквивалентно C = C * A
/= Оператор присваивания «Деление», он делит левый операнд на правый операнд C /= A эквивалентно C = C / A
%= Оператор присваивания «Модуль», он принимает модуль, с помощью двух операндов и присваивает его результат левому операнду C %= A, эквивалентно C = C % A
Оператор присваивания «Сдвиг влево» C
>>= Оператор присваивания «Сдвиг вправо» C >>= 2, это как C = C >> 2
&= Оператор присваивания побитового «И» («AND») C &= 2, это как C = C & 2
^= Оператор присваивания побитового исключающего «ИЛИ» («XOR») C ^= 2, это как C = C ^ 2
|= Оператор присваивания побитового «ИЛИ» («OR») C |= 2, это как C = C | 2

Пример

Следующий простой пример показывает, программно логические операторы в Java. Скопируйте и вставьте следующий java-код в файл test.java, скомпилируйте и запустить эту программу:

Public class Test { public static void main(String args) { int a = 10; int b = 20; int c = 0; c = a + b; System.out.println("c = a + b = " + c); c += a ; System.out.println("c += a = " + c); c -= a ; System.out.println("c -= a = " + c); c *= a ; System.out.println("c *= a = " + c); a = 10; c = 15; c /= a ; System.out.println("c /= a = " + c); a = 10; c = 15; c %= a ; System.out.println("c %= a = " + c); c >= 2 ; System.out.println("c >>= 2 = " + c); c >>= 2 ; System.out.println("c >>= a = " + c); c &= a ; System.out.println("c &= 2 = " + c); c ^= a ; System.out.println("c ^= a = " + c); c |= a ; System.out.println("c |= a = " + c); } }

Будет получен следующий результат:

C = a + b = 30 c += a = 40 c -= a = 30 c *= a = 300 c /= a = 1 c %= a = 5 c >= 2 = 5 c >>= 2 = 1 c &= a = 0 c ^= a = 10 c |= a = 10

Прочие операторы

Есть несколько других операторов, поддерживаемых языком Java.

Тернарный оператор или условный оператор (?:)

Тернарный оператор - оператор, который состоит из трех операндов и используется для оценки выражений типа boolean. Тернарный оператор в Java также известен как условный оператор. Этот. Цель тернарного оператора или условного оператора заключается в том, чтобы решить, какое значение должно быть присвоено переменной. Оператор записывается в виде:

Переменная x = (выражение) ? значение if true: значение if false

Пример

Ниже приведен пример:

Public class Test { public static void main(String args){ int a , b; a = 10; b = (a == 1) ? 20: 30; System.out.println("Значение b: " + b); b = (a == 10) ? 20: 30; System.out.println("Значение b: " + b); } }

Будет получен следующий результат:

Значение b: 30 Значение b: 20

Оператор instanceof

Оператор instanceof - проверяет, является ли объект определенного типа (типа класса или типа интерфейса) и используется только для переменных ссылочного объекта. Оператор instanceof записывается в виде:

(Переменная ссылочного объекта) instanceof (класс/тип интерфейса)

Примеры

Если переменная ссылочного объекта в левой части оператора проходит проверку для класса/типа интерфейса на правой стороне, результатом будет значение true. Ниже приведен пример и описание оператора instanceof:

Public class Test { public static void main(String args){ String name = "Олег"; // Следующее вернётся верно, поскольку тип String boolean result = name instanceof String; System.out.println(result); } }

Будет получен следующий результат:

Этот оператор по-прежнему будет возвращать значение true, если сравниваемый объект является совместимым с типом на право назначения. Ниже приводится еще один пример:

Class Vehicle {} public class Car extends Vehicle { public static void main(String args){ Vehicle a = new Car(); boolean result = a instanceof Car; System.out.println(result); } }

Будет получен следующий результат:

Приоритет операторов в Java

Приоритет операторов определяет группирование терминов в выражении. Это влияет как вычисляется выражение. Некоторые операторы имеют более высокий приоритет, чем другие; например оператор умножения имеет более высокий приоритет, чем оператор сложения:

Например, x = 7 + 3 * 2. Здесь x присваивается значение 13, не 20, потому что оператор «*» имеет более высокий приоритет, чем «+», так что сначала перемножается «3 * 2», а затем добавляется «7».

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

Категория Оператор Ассоциативность
Постфикс () . (точка) Слева направо
Унарный ++ - - ! ~ Справа налево
Мультипликативный * / % Слева направо
Аддитивный + - Слева направо
Сдвиг >> >>> Слева направо
Реляционный > >= Слева направо
Равенство == != Слева направо
Побитовое «И» («AND») & Слева направо
Побитовое исключающее «ИЛИ» («XOR») ^ Слева направо
Побитовое «ИЛИ» («OR») | Слева направо
Логическое «И» («AND») && Слева направо
Логическое «ИЛИ» («OR») || Слева направо
Условный ?: Справа налево
Присваивание = += -= *= /= %= >>= Справа налево
Запятая , Слева направо

В следующем уроке поговорим об управлении циклом в программировании на Java. В этом уроке будут описаны различные типы циклов, как циклы могут быть использованы в разработке программ, и для каких целей они используются.