Использование загрузчиков классов в качестве прстранств имен Java

Использование загрузчиков классов в качестве прстранств имен JavaКаждый Java-программист знает, что для исключения вероятности возникновения конфликтов между именами применяются имена пакетов. Например, в стандартной библиотеке Java есть два класса с именем Date, но полностью их имена, конечно же, выглядят как java.util.Date и java.sql.Date.

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

Как ни странно, но в рамках одной и той же виртуальной машины могут существовать два разных класса, имеющих одинаковое имя класса и пакета. Дело в том, что класс определяется по его полному имени u загрузчику класса. Такая технология для каждой Web-страницы используются отдельные экземпляры загрузчика классов апплетов. Читать

Строковые редакторы свойств Java

Строковые редакторы свойств JavaПростые редакторы свойств работают с текстовыми строками за счет переопределения методов setAsText() и getAsText(). Например, у рассматриваемого здесь компонента ChartBean есть свойство, которое позволяет выбирать один из следующих вариантов для размещения заголовка: слева, справа или по центру. Реализуются эти варианты с помощью такого перечисления:

Конечно, отображаться так как есть, то есть в виде строк с заглавными буквами — LEFT, CENTER, RIGHT — они, во избежание лишних проблем с пользовательским интерфейсом, не должны. Поэтому и определяется редактор свойств, метод getAsText() которого подбирает для отображения строку более приглядного с точки зрения разработчика вида: Читать

Создание редакторов свойств Java

Создание редакторов свойств JavaПрежде чем углубляться в детали создания редакторов свойств, следует обратить внимание на то, что каждый такой редактор находится под управлением интегрированной среды разработки, а не bean-компонента. В частности, при отображении инспектора свойств, среда разработки выполняет для каждого свойства bean-компонента следующие действия:

  1. Инициализирует редактор свойств.
  2. Просит bean-компонент сообщить ей текущее значение свойств.
  3. Затем просит редактор свойств отобразить это значение.

Редактор свойств должен иметь конструктор по умолчанию, а также обязательно реализовать интерфейс PropertyEditor. Обычно предпочтение отдается расширению такого полезного класса, как PropertyEditorSupport, который предоставляет версии методов, умеющие делать это по умолчанию. Читать

Иерархия загрузчиков классов Java

Иерархия загрузчиков классов JavaЗагрузчики классов связаны отношениями родитель/потомок. У каждого загрузчика классов, за исключением первичного, имеется родительский загрузчик классов. Предполагается, что загрузчик классов дает шанс своему родителю загружать любой нужный класс и загружает его сам только в том случае, если этого не может сделать родитель. Например, если системный загрузчик классов запрашивает загрузку системного класса(например, java.util.arrayList), то прежде он предлагает загрузить его расширенному загрузчику классов.

Расширенный загрузчик классов, в свою очередь, предлагает сделать это первичному загрузчику классов. Наконец, первичный загрузчик классов находит и загружает класс из файла rt.jar при этом все другие загрузчики классов прекращают дальнейший поиск.

Некоторые программы имеют основанную на подключаемых модулях архитектуру, в которой определенные части кода упаковываются в виде дополнительных необязательных модулей. Если подключаемые модули упаковываются в виде файлов JAR, классы этих модулей могут загружаться просто с помощью экземпляра URLClassLoader: Читать

Кодирование символов в файлах исходного кода Java

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

Предположим, что для создания исходных файлов Java-программы используется стандартная программа Notepad в китайской версии Windows. Полученный в результате этого исходный код не является переносимым(то есть независимым от платформы) из-за использования локальной кодировки символов(GB или BIG5, в зависимости от типа региональных настроек операционной системы).

Классы становятся переносимыми только после компиляции. В этом случае идентификаторы и текстовые сообщения представляются с помощью модифицированной кодировки UTF-8. Сказанное означает, что при компиляции и выполнении программы предполагается использование трех кодировок символов. Читать

Синтаксис перехода в SQL Java

Синтаксис перехода в SQL JavaСинтаксис «перехода»(escape syntax) поддерживает средства, которые обычно поддерживаются базами данных, но в разных вариантах, в зависимости от конкретного синтаксиса базы данных. Драйвер JDBC отвечает ща преобразование синтаксиса перехода в синтаксис конкретной базы данных.

Переходы предусмотрены для следующих средств:

  • литералы времени и даты;
  • вызов скалярных функций;
  • вызов хранимых процедур;
  • внешние соединения;
  • символ перехода в операциях LIKE. Читать

Управление соединениями, командами и результирующими наборами Java

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

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

Не следует, однако, забывать, что, по крайней мере одна широко используемая база данных(Microsoft SQL Server) взаимодействует с JDBC-драйвером, который допускает работу только с одним объектом Statement. Количество объектов Statement, одновременно поддерживаемых JDBC-драйвером, можно узнать, вызвав метод getMaxStatements() класса DatabaseMetaData. Читать

Класс GregorianCalendar из библиотеки Java

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

Хотя при использовании класса Date нам необязательно знать о формате даты, отметим, что время представляется количеством миллисекунд(положительным или отрицательным), отсчитанными от фиксированного момента времени, так называемого начала эпохи, то есть от 00:00:00 UTC, 1 января 1970 г. Аббревиатура UTC означает Universal Coordinated Time(универсальное скоординированное время) — научный стандарт времени. UTC применяется наряду с более известным GMT(Greenwich Mean Time — среднее время по Гринвичу). Читать