Рубрика Java для опытных

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

Ключевое слово synchronized Java

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

Использование диагностических утверждений Java

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

Вы уверены, что число…

Анализ элементов трассировки стека Java

Трассировка стека - это список вызовов методов для данной точкой программы. Вы наверняка неоднократно видели эту информацию, она отображается каждый раз, когда при выполнении Java-программы возникает неконтролируемые исключение. В версиях, предшествующих Java SE 1.4, для получения текстового описания трассировки стека…

JNLP API Java

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

Ограничение переменных типов Java

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

Но здесь есть проблема. Взгляните на код метода min(). Переменная smallest имеет тип Т, а это означает, что она может…

Симметричные шрифты в языке Java

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

В JDK для всех шифров используется поставщик SunJCE. Если имя поставщика не указано явно, то…

Использование аннотаций в языке Java

Аннотациями(annotations) называются дескрипторы, которые разработчики вставляют в свой исходный код для того, чтобы та или иная утилита могла обрабатывать их. Эти утилиты могут работать как на уровне исходного кода, так и на уровне файлов классов, в которые компилятор помещает аннотации.…

Написание сценариев для платформы Java

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

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

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

Класс Executors в Java

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