 |
 |
 |
 |
 |
 |
Теория и практика Java: Динамическая компиляция и измерение производительности Проведение и интерпретация испытаний производительности для динамически компилируемых языков программирования, таких как Java, является намного более трудной задачей, чем для статически компилируемых языков, например C или C++. В данной статье серии "Теория и практика Java" Brian Goetz объясняет несколько из множества причин, по которым динамическая компиляция может усложнить тест производительности. Поделитесь своими мыслями по данной статье с автором и другими читателями в соответствующем форуме.
|
|
|
|
21.12.2004 |
|
| |
Теория и практика Java: Загадки родовых типов (generics) Родовые типы, добавленные в JDK 5.0, являются значительным улучшением независимости от типа в языке Java. Однако, для новичков некоторые аспекты родовых типов могут показаться странными или даже совершенно ненормальными. В статье этого месяца "Теория и практика Java" Брайан Гец исследует ловушки, в которые могут попасть новички при изучении родовых типов. |
|
|
|
25.01.2005 |
|
| |
Теория и практика Java: Оптимизации синхронизаций в Mustang В этом месяце Брайан представляет некоторые из оптимизаций синхронизации, которые будут включены в Mustang. Обсуждаемые здесь специальные функциональные возможности могут быть или не быть включены в Java SE 6 ("Mustang"). |
|
|
|
25.01.2006 |
|
| |
Теория и практика Java: Введение в неблокирующие алгоритмы Версия Java 5.0 впервые сделала возможной разработку неблокирующих алгоритмов на языке программирования Java, и эта возможность широко используется в пакете . Неблокирующие алгоритмы представляют собой параллельные алгоритмы, потокозащищенность которых обеспечивается не блокировками, а низкоуровневыми атомарными аппаратными примитивами, такими как сравнение-и-замена. Разработка и реализация неблокирующих алгоритмов может быть чрезвычайно сложной задачей, но они могут предложить лучшую производительность и большую стойкость к проблемам живучести, таким как взаимоблокировки и инверсия приоритетов. В этой очередной статье серии Теория и практика Java гуру параллельности Брайан Гец рассматривает работу некоторых неблокирующих алгоритмов. |
|
|
|
18.04.2006 |
|
| |
Теория и практика Java: оснащение приложений средствами JMX C встраиваемыми в платформу Java SE для управления Java (JMX -- Java Management Extensions) и средством просмотра jconsole использование JMX для контроля за приложением стало легче и эффективнее. |
|
|
|
19.09.2006 |
|
| |
Теория и практика Java: Методы безопасного конструирования В этом выпуске по теории и практике Java Брайан Гетц рассматривает распространенную опасность, связанную с поточностью: допущение ситуации, при которой указатель this исчезает во время конструирования. Эта безвредная на вид практика может вызвать непредсказуемые и нежелательные результаты в работе ваших Java-программ. |
|
|
|
12.01.2007 |
|
| |
Теория и практика Java: Повышение эффективности тестирования, Часть 1 Еще в июне 2004 г, опытный истребитель ошибок Брайан Гетц предоставил инструментарий статического анализа кода FindBugs, который может обнаружить ошибки даже в тщательно протестированном программном обеспечении. В этом месяце он вновь возвращается к этой теме и рассматривает, каким образом инструментарии статического анализа могут изменить способ управления качеством программного обеспечения. |
|
|
|
12.01.2007 |
|
| |
Теория и практика Java: Антишаблон pseudo-typedef Добавление обобщений к языку Java усложнило систему типов и повысило словесное наполнение многих объявлений переменных и методов. В "Теории и практике Java" за этот месяц Java-эксперт Брайан Гетц объясняет ограничения "антишаблона "typedef " ."
|
|
|
|
17.01.2007 |
|
| |
Теория и практика Java: Повышение эффективности тестирования, часть 3 В первых двух статьях данной серии описано, каким образом инструментальные средства статического анализа, например, FindBugs, могут усилить управление качеством ПО, нацелив ресурсы разработки не на отдельные случаи, а на целые классы ошибок. В данной статье, посвященной тестированию, Брайан Гетц исследует еще одну технологию устранения ошибок, нарушающих правила проектирования: аспекты. |
|
|
|
18.01.2007 |
|
| |
Теория и практика Java: Избавьтесь от ошибок FindBugs - это мощное инструментальное средство для проверки кода на соответствие принятым нормам проектирования, которое является огромным шагом вперед в современном состоянии развития инструментариев для практического анализа кода. |
|
|
|
23.01.2007 |
|
| |
Теория и Практика Java: О параллелизме простыми словами (почти) Как и многие другие сервисы инфраструктуры приложений, вспомогательные классы для поддержания параллелизма, такие как рабочие очереди и пулы потоков часто без необходимости переписываются с нуля для каждого проекта. В этом месяце Брайан Гетц знакомит с пакетом util.concurrent Дага Ли, высококачественным, широко используемым пакетом утилит с открытым кодом для поддержки параллелизма. |
|
|
|
24.01.2007 |
|
| |
Теория и практика Java: Устранение В данном выпуске серии "Теория и практика Java", Java-разработчик Брайан Гетц приводит правила и подсказки, которыми Вы можете руководствоваться при создании классов языка Java для эффективного и корректного описания методов hashCode() и equals(). |
|
|
|
26.01.2007 |
|
| |
Теория и практика Java: Анатомия некорректных микротестов оценки производительности В выпуске "Теория и практика Java" за этот месяц ведущий рубрики Брайан Гетц
проводит исследование вопроса, почему выполнить оценку производительности конструкций
языка Java на самом деле гораздо сложнее, чем кажется на первый взгляд. |
|
|
|
29.01.2007 |
|
| |
Теория и практика Java : Это ваш окончательный ответ? Зачастую ключевое слово final используется некорректно - слишком
часто при декларировании классов и методов, и слишком редко при
декларировании полей экземпляров (instance fields). В этом
месяце практикующий специалист в области Java-технологий Брайан
Гетц проводит исследование различных руководств по эффективному
применению final. |
|
|
|
29.01.2007 |
|
| |
Теория и практика Java: Включение атомарной инициализации В текущем месяце наш автор Брайан Гетц рассматривает приемы разработки API, идиому самовозврата (self-return idiom), которая значительно облегчит жизнь пользователям вашего API. |
|
|
|
30.01.2007 |
|
| |
Теория и практика Java: Извлечение J2EE из контейнера Большинство проектов относятся строго либо к категории
J2EE-приложений, либо J2SE-приложений. Однако, существует ряд
J2EE-технологий, которые могут быть вне J2EE-контейнера, а
некоторые J2SE-приложения могут получить от этого пользу. В этом
месяце Брайан Гетц рассматривает, как некоторые J2EE-сервисы
могут быть использованы в J2SE-приложениях. Поделитесь своими
мыслями по поводу данной статьи с автором и другими читателями
на соответствующем дискуссионном форуме. |
|
|
|
30.01.2007 |
|
| |
Теория и практика Java: Репликация состояния на уровне Web В данной статье приведен анализ некоторых вариантов репликации HttpSession и описание наиболее эффективного использования HttpSession, которое гарантирует хорошую масштабируемость и производительность. |
|
|
|
08.02.2007 |
|
| |
Теория и практика Java: Еще раз о городских легендах о производительности В этой статье серии Теория и практика Java Брайан Гетц развенчивает некоторые часто повторяемые мифы о производительности, касающийся медленной аллокации в JVM. |
|
|
|
08.02.2007 |
|
| |
Теория и практика Java: Изменять или не изменять? В этой статье Брайан Гетц объясняет некоторые преимущества неизменяемости и дает некоторые рекомендации по построению неизменяемых классов. |
|
|
|
08.02.2007 |
|
| |
Теория и практика Java: Есть ли необходимость в использовании JMS в новом корпоративном приложении? Добро пожаловать в серию "Теория и практика Java" - новую ежемесячную колонку профессионального разработчика на языке Java, Брайана Гетца. В этом месяце Брайан будет рассматривать технологию организации очередей сообщений для предприятий. |
|
|
|
08.02.2007 |
|
| |
Теория и практика Java: Переход к атомарности Изучите проблематику параллельной обработки вместе с ведущим специалистом Брайаном Гетцем, и он расскажет вам, как эти новые классы создали возможность разрабатывать высокомасштабируемые безблокировочные алгоритмы на языке Java. |
|
|
|
08.02.2007 |
|
| |
Теория и практика Java: Дебаты об исключениях Когда нужно использовать отмеченные и неотмеченные исключения в классах Java? Основополагающий принцип заключается в том, чтобы пользоваться отмеченными исключениями во всех случаях, однако некоторые специалисты в области Java начали думать по-другому. Обозреватель Брайан Гетц изучает вопрос исключений и предлагает руководство, как и когда использовать неотмеченные исключения. |
|
|
|
08.02.2007 |
|
| |
Теория и практика Java: Дебаты об исключениях Когда нужно использовать отмеченные и неотмеченные исключения в классах Java? Основополагающий принцип заключается в том, чтобы пользоваться отмеченными исключениями во всех случаях, однако некоторые специалисты в области Java начали думать по-другому. Обозреватель Брайан Гетц изучает вопрос исключений и предлагает руководство, как и когда использовать неотмеченные исключения. |
|
|
|
08.02.2007 |
|
| |
Теория и практика Java: Городские легенды о производительности Многие ссылки и рекомендации по настройкам производительности Java во многом похожи городские легенды - кто-то где-то дает какую-то подсказку, которая имеет (или имела) под собой некое основание, но за время ее нескончаемого пересказа давно потеряла всякий смысл, который в ней был. Брайан Гетц разбирает некоторые из этих городских легенд о производительности и очищает их от заблуждений. |
|
|
|
08.02.2007 |
|
| |
Теория и практика Java: Хорошие практические приемы по ведению домашнего хозяйства Сборка мусора - любимая функция платформы Java почти у каждого; она упрощает разработку и устраняет все категории возможных ошибок в коде. Но в то время как сборка мусора, как правило, позволяет вам пренебрегать управлением ресурсами, иногда приходится вести хозяйство самостоятельно. В выпуске "Теории и практики Java" за этот месяц Брайан Гетц обсуждает ограничения сборки мусора и определяет ситуации, когда вам придется выполнять уборку самостоятельно. |
|
|
|
08.02.2007 |
|
| |
Теория и практика Java : Декорирование при помощи динамического прокси Средство динамического прокси, являющееся частью пакета java.lang.reflect и добавленное в JDK версии 1.3, позволяет программам создавать прокси-объекты, которые могут выполнять один или несколько известных интерфейсов и посылать запросы методам интерфейса программным путём, используя отражение вместо отправки встроенного виртуального метода. Данный процесс позволяет осуществить "перехват" запросов метода и перенаправить их или динамически добавить функциональность. В этом месяце Брайан Гетц расскажет вам о нескольких приложениях для динамических прокси. |
|
|
|
08.02.2007 |
|
| |
Теория и практика Java: Мне нужно задокументировать ЭТО? В данной статье Брайан разражается тирадой о текущем состоянии работы с документацией Java и дает рекомендации по написанию более практичной Javadoc. |
|
|
|
09.02.2007 |
|
| |
Теория и практика Java: Понимание JTS - Достижение равновесия между безопасностью и производительностью В заключительной статье серии, посвященной JTS, Брайан Гетц рассмотрит средства J2EE,
предлагаемые для управления демаркацией и изолированностью транзакций, и некоторые правила их
эффективного использования. |
|
|
|
20.02.2007 |
|
| |
Теория и практика Java: Понимание JTS - Введение в транзакции Сервис транзакций Java (JTS) является ключевым элементом архитектуры J2EE.
Совместно с интерфейсом Java API для транзакций (JTA), он позволяет создавать
распределенные приложения, устойчивые к различным системным и сетевым неполадкам. Первая
из трех статей данной серии содержит сведения о том, что такое транзакции и почему они
так важны для создания надежного распределенного приложения. |
|
|
|
20.02.2007 |
|
| |
Теория и практика Java: Будьте хорошим подписчиком (событий) В этом очередном выпуске "Теории и практики Java" Брайан Гетц предлагает несколько полезных советов, как быть хорошим подписчиком и как самому быть хорошим для своих подписчиков. |
|
|
|
26.02.2007 |
|
| |
Теория и практика Java: Построение лучшей HashMap Брайан Гетц проникает в код ConcurrentHashMap и рассматривает, как достигается отличная пропускная способность и параллелизм без ущерба для безопасности потоков. |
|
|
|
26.02.2007 |
|
| |
Теория и практика Java : Параллельные классы коллекций В дополнение к множеству других полезных строительных блоков для реализации параллелизма пакет util.concurrent Дага Ли (Doug Lea) содержит высокопроизводительные, потокобезопасные реализации для рабочих типов коллекций List и Map. В этом месяце Брайан Гетц покажет вам, насколько выиграют многие параллельные программы, если просто поменять Hashtable или synchronizedMap на ConcurrentHashMap. |
|
|
|
26.02.2007 |
|
| |
Теория и практика Java: Характеристика безопасности потока В июльской статье наш эксперт по параллельной обработке Брайан Гетц описывал классы Hashtable и Vector как условно поточнобезопасные. Должен ли класс быть поточнобезопасным или нет? К сожалению, безопасноcть потока не является понятием типа "все-или-ничего", и ее удивительно трудно определить. Но, как объясняет Брайан в этой новой статье для раздела Теории и практики Java, исключительно важно попытаться систематизировать безопасность потока ваших классов в их Javadoc. |
|
|
|
26.02.2007 |
|
| |
Теория и практика Java: Анализ экранных данных с помощью XQuery XQuery является стандартом W3C по извлечению информации из XML-документов, охватывающим 14 рабочих проектов. Хотя в большинстве случаев XQuery нацелен на осуществление запросов к слабоструктурированным данным обширных баз данных документов, он может быть также эффективен и для решения более повседневных задач. В этом месяце Брайан Гетц, ведущий рубрики "Теория и практика Java", покажет Вам эффективные способы использования XQuery в качестве механизма анализа экранных данных HTML. |
|
|
|
27.02.2007 |
|
| |
Теория и практика Java: Где ваша точка? В данной статье Брайан Гетц рассматривает некоторые ловушки и сбои, зачастую встречающиеся при использовании дробных числовых типов в программах Java. |
|
|
|
27.02.2007 |
|
| |
Теория и практика Java: Работа с InterruptedException Многие методы языка Java, такие как Thread.sleep() и Object.wait(), выдают исключение InterruptedException. На него нельзя не обратить внимания, потому что это отмеченное исключение, но что же с ним делать? В этом месяце в очередной статье серии Теория и практика Java эксперт по параллельности Брайан Гетц объясняет, что означает InterruptedException, почему оно генерируется, и что с ним делать.
|
|
|
|
27.02.2007 |
|
| |
Теория и практика Java: Исправление модели памяти Java, Часть 1 В этом выпуске Теории и практики Java Брайан Гетц покажет, как семантика volatile и final будет усилена для внесения исправлений в модель памяти JMM. Некоторые из этих изменений были уже интегрированы в пакет JDK 1.4; остальные ждут своей очереди, чтобы быть включёнными в JDK 1.5. |
|
|
|
01.03.2007 |
|
| |
Теория и практика Java: Понимание JTS - Волшебство за кулисами В первой части данной серии, посвященной транзакциям, мы узнали, что такое транзакции, и почему они важны при построении надежного распределенного приложения. В данной части мы изучим, как приложения J2EE конструируются при помощи транзакций, и как JTS и контейнер J2EE управляют сервисами транзакций, включая демаркацию транзакций, внесение ресурсов в список, и прохождение транзакций, в режиме, практически скрытом от разработчика компонентов. |
|
|
|
01.03.2007 |
|
| |
Теория и практика Java: Создание запросов к базе данных без самой базы данных Когда у Вас есть молоток, все кажется гвоздем (так гласит старая поговорка). А что, если молотка нет? Ну, иногда, молоток можно и одолжить. И тогда, с молотком в руках, Вы можете забить виртуальные гвозди заимствованным молотком и вернуть его, и не надо быть семи пядей во лбу. В этом месяце в Теории и практике Java Брайан Гетц демонстрирует, как такие молотки манипулирования данными, как SQL или XQuery, можно применить к узкоспециализированным данным. |
|
|
|
01.03.2007 |
|
| |
Теория и практика Java: Краткая история развития технологии утилизации памяти "Сборка мусора" (популярное название технологии утилизации памяти) является неотъемлемой частью многих языков программирования и применяется с начала 1960-х годов. В этой статье Брайан Гетц описывает самые распространенные методы сборки мусора. |
|
|
|
02.03.2007 |
|
| |
Теория и практика Java: Исправление модели памяти Java, часть 2 В первой части этой серии автор Брайан Гетц рассказал подробно о некоторых серьезных изъянах, которые были найдены в оригинальной модели памяти JMM, что привело к невероятному усложнению семантики для концептов, которые должны были быть простыми. В этом месяце он покажет, как семантика volatile и final изменится под новой моделью памяти JMM, какие изменения приведут их семантику в соответствие с интуицией большинства разработчиков. Некоторые из этих изменений уже присутствуют в JDK 1.4; другие будут ждать до выхода JDK 1.5. Поделитесь своими мыслями об этой статье с автором и другими читателями в соответствующем форуме. |
|
|
|
02.03.2007 |
|
| |
Теория и практика Java: Устранение утечек памяти посредством гибких ссылок В предыдущем выпуске Теории и практики Java специалист по отладке программ Java Брайан Гетц рассмотрел слабые ссылки, позволяющие сообщать сборщику мусора, что вы устанавливаете такие связи с объектом, которые не препятствуют его обработке программой по очистке памяти. В этом месяце он рассмотрит другой вид объектов Reference, гибкие ссылки, которые также позволяют расширить список средств программы очистки памяти по управлению использованием памяти и устранению возможных утечек памяти. |
|
|
|
02.03.2007 |
|
| |
Теория и практика Java: Устранение утечек памяти посредством слабых ссылок Несмотря на то, что теоретически программы, написанные на языке программирования Java, устойчивы к "утечкам памяти (memory leaks)", случаются ситуации, когда при очистке памяти не удаляются объекты, даже если они не являются больше частью логического состояния программы. В этом месяце специалист по отладке ПО Брайан Гетц рассмотрит наиболее распространенную причину случайного удержания в памяти объекта и покажет, как устранить утечку при помощи слабых ссылок. |
|
|
|
02.03.2007 |
|
| |
Теория и практика Java: Чей это объект? Сборка мусора означает, что разработчикам Java не нужно беспокоиться (сильно) об утечках памяти, но иногда все-таки стоит подумать о владельце объекта для предотвращения "состязания" данных и нежелательных побочных эффектов. В данной статье Брайан Гетц описывает некоторые ситуации, в которых разработчики Java должны обращать внимание на владельца объекта. |
|
|
|
02.03.2007 |
|
| |
Теория и практика Java: Управление производительностью - есть ли у вас план? Брайан Гетц обсуждает некоторые из наиболее частых ошибок, связанных с производительностью, с которыми он сталкивался в проектах с использованием языка Java. Хотя существует множество различных моментов при написании программ, которые могут привести к проблемам с производительностью, часто в них виноваты ошибки в управлении и выборе подхода. |
|
|
|
05.03.2007 |
|
| |
Теория и практика Java: Сборка мусора и производительность Два последних выпуска Теории и практики Java обсуждали различные методы сборки мусора и основы работы сборщиков мусора в JDK 1.4.1. В этом месяце ведущий рубрики Брайан Гетц рассмотрит влияние выбора сборщика мусора на производительность, на то, как различные методы кодирования взаимодействуют со сборщиком мусора, и как распределение, а также другие связанные с этим затраты в виртуальных машинах Java изменились за последние несколько лет. |
|
|
|
06.03.2007 |
|
| |
Теория и практика Java: Более гибкая, масштабируемая блокировка в JDK 5.0 JDK 5.0 предлагает разработчикам некоторые интересные новые возможности для разработки высокоэффективных совместимых приложений, например, класс reentrantLock в java.util.compatible.lock предлагается как замена для средства synchronized языка Java - он имеет ту же семантику памяти, ту же семантику блокировки, более высокую производительность в условиях конкуренции, а также возможности, не предлагаемые synchronized. Значит ли это, что мы должны забыть о synchronized и вместо этого использовать исключительно reentrantLock? Эксперт по параллелизму Брайан Гетц возвращается после летнего перерыва и дает ответ на этот вопрос. |
|
|
|
14.03.2007 |
|
| |
Теория и практика Java: Сборка мусора в HotSpot JVM Брайан Гетц анализирует, каким образом 1.4.1 JVM выполняет сборку мусора, и рассказывает о некоторых новых возможностях сборки мусора для многопроцессорных систем. |
|
|
|
14.03.2007 |
|
| |
Теория и практика Java: Эй, а куда подевался мой поток? Если вы неосторожны, потоки могут исчезать из серверных приложений без следа (в стеке). В этой статье специалист по потокам Брайан Гетц предложит некоторые способы как для предотвращения, так и для выявления случаев, когда поток "уходит в самоволку". |
|
|
|
14.03.2007 |
|
| |
Теория и практика Java: Пулы потоков и очередь действий Один из наиболее часто встречающихся вопросов, присылаемых на наш форум обсуждения многопоточного Java-программирования – как создать пул потоков? Почти в каждом серверном приложении возникает вопрос о пулах потоков и очереди действий. В данной статье Брайан Гетц исследует движущие силы пулов потоков, основные случаи их использования и технологию настройки, а также некоторые опасные моменты, которых следует избегать. |
|
|
|
14.03.2007 |
|
| |
Теория и практика Java: Повышение эффективности тестирования, Часть 2 В выпуске этого месяца опытный истребитель ошибок Брайан Гетц приводит детальное описание процесса создания и настройки детектора шаблонов нестандартных ошибок. |
|
|
|
15.03.2007 |
|
| |
Теория и практика Java: Использование возможностей языка Java 5 в предыдущих версиях JDK В Java 5 в язык было добавлено много значительных возможностей. Но многие проекты до сих пор привязаны к JDK 1.4. Однако эти разработчики все-таки могут использовать эти полезные возможности. Брайан Гетц в этой статье покажет, как этого добиться. |
|
|
|
28.11.2007 |
|
| |
Теория и практика Java: Часть 1. Разветвляемся Одно из дополнений к java.util.concurrent, ожидаемое в Java 7, - это модель распараллеливания в стиле fork-join.Идея fork-join обспечивает естественный механизм разложения многих алгоритмов для эффективного использования аппаратного параллелизма. |
|
|
|
27.10.2008 |
|
| |
Теория и практика Java: Разветвляемся. Часть 2 Во второй части данной серии статей автор Брайан Гетц рассматривает классы ParallelArray, упрощающие операции параллельной сортировки и поиска в структурах данных, находящихся в памяти. |
|
|
|
01.10.2009 |
|
| |