Как стать автором
Обновить
209.84

Java *

Объектно-ориентированный язык программирования

Сначала показывать
Порог рейтинга
Уровень сложности

Hibernate: использование lazy initialization в разработке клиент-серверного приложения

Время на прочтение3 мин
Количество просмотров51K
При проектировании доменов приложения, разрабатываемого с использованием Hibernate, разработчику необходимо сделать выбор: инициализировать ли свойства домена, соответствующие коллекциям связанных доменов, сразу (FetchType=EAGER) или же делать это только при обращении к ним (FetchType=LAZY). На самом деле в случае, когда предметная область имеет сколь-либо сложную структуру связей между объектами, выбор уже сделан – загружать полбазы ради одного объекта, как это было бы при FetchType=EAGER, мягко говоря, неразумно. Поэтому ленивая инициализация в случае коллекций есть наиболее предпочтительная стратегия инициализации связанных объектов.

Однако, не всё так просто. Ленивая инициализация реализуется за счёт создания прокси-объекта с помощью JDK Dynamic Proxy или библиотеки CGLIB. В обоих случаях проксирование соответствующих get-методов сводится к обращению к сессии Hibernate для получения необходимых данных. Последнее же в свою очередь означает, что обращение к ленивым свойствам объекта может быть осуществлено только при наличии сессии Hibernate. В противном случае, попытка получить свойство объекта приведёт к незабвенному исключению «LazyInitializationException: could not initialize proxy — the owning Session was closed».

Читать дальше →
Всего голосов 24: ↑19 и ↓5+14
Комментарии46

REST через Spring: Строгое отображение URL в ресурс

Время на прочтение3 мин
Количество просмотров9.6K
Как вы знаете Spring MVC использует новую модель конфигурации на основе аннотаций начиная с версии 2.5. Чтобы получить эти плюшки, нужно использовать тег <mvc:annotation-driven /> в файле конфигурации. Этот тег регистрирует DefaultAnnotationHandlerMapping и AnnotationMethodHandlerAdaptor в контексте приложения.

Читать дальше →
Всего голосов 5: ↑4 и ↓1+3
Комментарии0

Автоматический контроль структуры класса

Время на прочтение4 мин
Количество просмотров4.9K
imageУ каждой компании есть свой стандарт оформления кода и важно придерживаться его. Встроенные в IDE форматеры кода решают это задачу частично, так как они в основном позволяют лишь добиться простого выравнивая кода. Помимо этого хочется еще и порядка в последовательности объявления как полей, методов, так и вложенных классов. Причин, по которым код-стандарт не соблюдается масса: программист перед отправкой кода в репозиторий может не заметить отклонение от стандарта; новый разработчик недостаточно внимательно прочитал документ; в погоне за хот фиксом о формате забыли; либо из-за банальной усталости или лени программиста; автоматического рефакторинга и так далее. Регулярный код-ревью не решает суть проблемы, так как занимает слишком много времени и тормозит разработку — нужна автоматизация проверки соответствия кода в момент его написания!

Частые проблемы:
  • конструктор неожиданно появляется в середине класса;
  • внутренний класс объявлен где-то в середине внешнего класса;
  • абстрактный метод объявлен где-то в середине большого абстрактного класса;
  • @Autowired метод тоже расположен где угодно но только не на самом видном месте;
  • статические билдер методы разбросаны по коду класса;
  • поле класса затерялось где-то между внутренним классом и методами.

Надоело такое терпеть в коде?
Читать дальше →
Всего голосов 28: ↑23 и ↓5+18
Комментарии29

Реализация потокобезопастного алгоритма round-robin на Java

Время на прочтение2 мин
Количество просмотров8K
Доброго времени суток, уважаемый хабрачитатель.
В один прекрасный рабочий день начальство поставило задачу добавить в разрабатываемую нами систему возможность использовать несколько серверов для повышения производительности. Разворачивать кластер и осуществлять балансировку за счет специализированных средств возможности не было. Поэтому пришлось придумывать свою реализацию, используя алгоритм round-robin.
Читать дальше →
Всего голосов 8: ↑4 и ↓40
Комментарии16

Истории

Java Bytecode Fundamentals

Время на прочтение6 мин
Количество просмотров63K
Разработчики приложений на Java обычно не нуждаются в знании о байт-коде, выполняющемся в виртуальной машине, однако тем, кто занимается разработкой современных фреймворков, компиляторов или даже инструментов Java может понадобиться понимание байт-кода и, возможно, даже понимание того, как его использовать в своих целях. Несмотря на то, что специальные библиотеки типа ASM, cglib, Javassist помогают в использовании байт-кода, необходимо понимание основ для того, чтобы использовать эти библиотеки эффективно.
В статье описаны самые основы, от которых можно отталкиваться в дальнейшем раскапывании данной темы (прим. пер.).
Читать дальше →
Всего голосов 57: ↑55 и ↓2+53
Комментарии9

SCEA сертификация — обсудим?

Время на прочтение1 мин
Количество просмотров2K
Некоторое время назад я описал свой опыт и свои ощущение от сдачи двух сановских сертификатов SCJP и SCBCD — habrahabr.ru/blogs/java/84405. В этом топике не будет ни слова о моем опыте сдачи SCEA — en.wikipedia.org/wiki/Sun_Certified_Enterprise_Architect — экзамена на Java-архитектора, так как я только еще собираюсь его сдавать.

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

Это по сути мой эксперимент для топиков такого формата. Можно ли устроить в топике обсуждение такого вида, и сделать его полезным? Если мы соберем здесь какой-то полезный опыт, я его обобщу в теле топика в назидание потомкам .

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

en.wikipedia.org/wiki/Sun_Certified_Enterprise_Architect
in.sun.com/training/certification/java/scea.xml
www.ibm.com/developerworks/ru/edu/j-scea/index.html
www.whizlabs.com/scea/scea.html
Всего голосов 37: ↑29 и ↓8+21
Комментарии31

Создаем Веб Сервисы на платформе Oracle WebLogic Server, тестируем с SoapUI

Время на прочтение13 мин
Количество просмотров49K

Введение


В этой заметке я расскажу и покажу как создать два небольших приложения использующих SOAP Веб Сервисы для сервера приложений Oracle WebLogic Server 11g. Это непосредственно сервис и взаимодействующий с ним клиент.

Oracle WebLogic Server 11g реализует платформу J2EE 5, которая в свою очередь включает в себя описание ряда технологий, в том числе и Java API для разработки Веб Сервисов, ипользующих XML (JAX-WS).

Помимо прочего я опишу процесс тестирования Веб Сервисов с помощью SoapUI.
Читать дальше →
Всего голосов 7: ↑6 и ↓1+5
Комментарии7

‘Hello World’ tutorial — Ваше первое приложение на Play framework (Часть 2)

Время на прочтение5 мин
Количество просмотров14K
Это очень поверхностное руководство, которое только познакомит с базовым функционалом Play framework на примере создания приложения ‘Hello World’.

(Часть 1)
Читать дальше →
Всего голосов 24: ↑20 и ↓4+16
Комментарии26

‘Hello World’ tutorial — Ваше первое приложение на Play framework (Часть 1)

Время на прочтение5 мин
Количество просмотров21K
Это очень поверхностное руководство, которое только познакомит с базовым функционалом Play framework на примере создания приложения ‘Hello World’.

Читать дальше →
Всего голосов 20: ↑16 и ↓4+12
Комментарии8

Создание своих архетипов и каталогов в Maven

Время на прочтение8 мин
Количество просмотров35K
Уже довольно продолжительное время (около года набежит) активно пользуюсь системой сборки Apache Maven и вполне ею доволен. Несмотря на свои очевидные и не очень недостатки, неоспоримым преимуществом является автоматическое управление зависимостями, хорошая структурированность проектов и отсутствие скриптов сборки как таковых, а следовательно проблем с ними.

Многим может не нравится, что мавен в самом деле отбирает у разработчика свободу выбора структуры проекта и прямо таки диктует ее, но в самом ли деле эта свобода настолько важна, чтобы делать изза нее жирный аргумент против? Не думаю. Есть другие, более серьезные, на мой взгляд, недостатки, в первую очередь — трудность диагностики проблем при сборке и недостаточная документированность мавена и плагинов.
Читать дальше →
Всего голосов 37: ↑33 и ↓4+29
Комментарии17

Знаешь ли ты JAVA, %username%?

Время на прочтение11 мин
Количество просмотров149K
JAVA Evil EditionНедавно я сдавал экзамен Oracle Certified Professional Java Programmer (бывший Sun Certified), и за время подготовки прорешал огромное количество различных задачек. Отдельные задачки по джаве иногда появляются на хабре и вызывают немалый интерес, поэтому я решил поделиться накопленным и сделать небольшую подборку.

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

К слову, сложность экзамена Oracle Certified Professional Java Programmer гораздо ниже чем сложность данного теста, поэтому все, кто правильно ответит хотя бы на половину этих вопросов, может смело сдавать этот экзамен без всякой подготовки.

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

ВНИМАНИЕ: во второй половине статьи — ответы и подробные пояснения по соответствующим нюансам JAVA.

Читать дальше →
Всего голосов 136: ↑124 и ↓12+112
Комментарии85

Учимся готовить: Spring 3 MVC + Spring Security + Hibernate

Время на прочтение12 мин
Количество просмотров355K
Добрый день! Меня зовут Антон Щастный.

Это моя очередная статья, посвящённая разработке веб приложений на Java. Хочу предложить вам сделать небольшую систему учёта клиентов, написанную с использованием фреймворка Spring и библиотеки Hibernate.

Что будет в приложении:


Будет простой менеджер контактов, позволяющий добавлять в базу новые записи, просматривать имеющиеся, удалять ненужные. Сведения будут храниться в базе данных. Доступ к приложению – через веб, с аутентификацией и авторизацией пользователей.

Что будем использовать:


  • веб фреймворк Spring MVC,
  • фреймворк Spring Security,
  • ORM библиотеку Hibernate,
  • MySQL в качестве СУБД.

Инфраструктура:
  • редактор SpringSource Tool Suite,
  • сборщик проектов Maven,
  • система логгирования Log4j,
  • постоянное подключение к интернету.


В моей предыдущей статье о Spring MVC был упущен ряд моментов по использованию аннотаций в Java-коде и применению Maven для сборки проекта. В данной статье я попытался исправить упущение.

Цель статьи – показать начинающим веб разработчикам совместное использование различных технологий платформы Java.

Читать дальше →
Всего голосов 43: ↑41 и ↓2+39
Комментарии52

Ближайшие события

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

Groovy inspiration — Feel the difference

Время на прочтение6 мин
Количество просмотров4.9K
image

Почему Groovy


Будучи Java разработчиком, некоторое время назад я начал посматривать в сторону других языков программирования, и, думаю об этом размышлял далеко не только я. Некоторые мои знакомые, в свое время имеющие отнюдь не малый опыт в разработке под Java — платформу, решительно начали двигаться по рельсам (Rails), соответственно используя Ruby, кто-то еще подумывает приручить Питона с приложением к нему в виде Django. Появляется достаточно книг о том, как Java — программисту мигрировать в мир динамических языков. Может ли что-то нас остановить?
Читать дальше →
Всего голосов 48: ↑39 и ↓9+30
Комментарии86

Создаем воркспейс для IntelliJ IDEA из мавен проекта

Время на прочтение4 мин
Количество просмотров25K
Давным-давно я работал в одной большой компании, мы писали JEE приложения. Тогда еще была IntelliJ IDEA 4.0. Один из проектов состоял примерно из 30 модулей. Создание воркспейса с нуля занимало кучу времени, поэтому воркспейс хранился в svn. Кто-то сидел на IDEA 4.0, кто-то на IDEA 5.0, и когда кто-то комитил свои iml'ки и ipr'ки в svn, то другие жутко сердились из-за того, что слетали их личные настройки, поэтому у всех был свой личный воркспейс, а новые программисты мучались с уже нерабочим из svn.

Потом появился мавен и maven-idea-plugin, стало возможно создавать воркспейс из мавен проекта. Потом появился плагин «Maven Integration»: интеграция мавена и IDEA, стало возможно открывать сразу мавен проект.

В начале 2010 года у меня была пара проектов примерно с 20 модулями каждый, и я тратил немного времени на их настройку. Сейчас у меня 20 проектов, в каждом около 50 модулей, у каждого проекта есть несколько бранчей и тэгов. Было очень трудно создавать и переключаться между воркспейсами. Другим программистам тоже было трудно, они тоже тратили много времени на создание и настройку воркспейса. Было ощущение, что программисты совсем не тем занимались.
Читать дальше →
Всего голосов 8: ↑5 и ↓3+2
Комментарии8

Java 7 для Mac OS X: будущее за OpenJDK

Время на прочтение2 мин
Количество просмотров3.6K
Oracle и Apple только что выпустили следующий пресс-релиз:

Редвуд Шорс, Купертино, Калифорния, 12 ноября 2010

Сегодня Oracle и Apple объявили об открытии проекта по разработке OpenJDK для Mac OS X. Apple будет создавать большинство ключевых компонентов, инструментов и технологий, которые необходимы для реализации Java SE 7 на Mac OS X, включая 32-битную и 64-битную виртуальную мащину на основе HotSpot, библиотеки классов, сетевой стек и основу для нового графического клиента. OpenJDK будет доступна разработчикам свободного программного обеспечения, так что они смогут получить доступ к проекту и участвовать в нем.
Читать дальше →
Всего голосов 26: ↑22 и ↓4+18
Комментарии17

IDEA: обмен опытом в jabber-конференции

Время на прочтение1 мин
Количество просмотров807
Ура! Вышла IDEA 10. Прекрасный инструмент. Спасибо команде разработчиков, делающих его еще более … (впишите сами). Но одновременно, IDEA — сложный инструмент. Для некоторых ­— еще и непривычный. Для обмена опытом работы в IDEA, поддержки новичков создана русскоязычная jabber-конференция intellij-idea@conference.jabber.ru
Приглашаю всех, имеющих опыт разработки под Intellij IDEA. Надеюсь, русскоязычные разработчики когда-нибудь тоже присоединяться :)
Всего голосов 6: ↑3 и ↓30
Комментарии2

IntelliJ IDEA 10

Время на прочтение1 мин
Количество просмотров9.9K


Сегодня состоялся релиз новой версии IntelliJ IDEA 10 — самой умной среды разработки для Java. Основной акцент при разработке «десятки» был сделан на удобстве использования и производительности продукта. Из конкретных улучшений в этой области — новый автоматический code completion, возможность выносить окна редактора на второй монитор, вдвое ускоренное построение индексов и многое другое.

Конечно же, прибавилось и более крупных фич — таких как поддержка Mercurial, AspectJ, новых технологий Spring, редактор таблиц баз данных и т.д.

IntelliJ IDEA выпускается в двух версиях — коммерческая Ultimate и опен-сорсная Community Edition. В «десятке» из коммерческой версии в бесплатную переехали два больших плагина — поддержка Android, а также менеджмент задач и интеграция с issue trackers.

Ознакомиться с полным списком нововведений и скачать IntelliJ IDEA 10 можно на сайте jetbrains.com.
Всего голосов 72: ↑69 и ↓3+66
Комментарии97

Генерация кода с jamon

Время на прочтение8 мин
Количество просмотров3.1K
Генерация кода

В нескольких проектах на разных местах работы я использовал генерацию кода. Зачем?
Чаще всего этим достигается сохранение правильности кода при изменениях. Например при добавлении еще одного типа данных в модель предметной области надо добавить класс на Яве, класс на С ++, код преобразования между ними и значение в Enum. Без генерации кода и работы ручками много, и всегда есть шанс что то из этого забыть.
Иногда reflection может быть заменой генерации кода, но даже тогда такой код будет менее читабельный чем шаблон для генерации.
Исходная информация для генерации кода может выглядеть очень по разному — это может быть Ява класс, у которого через reflection считываем свойства и генерим класс на C++, или csv файл, или XML, или еще что нибудь.

Попробую рассказать как я генерирую код в maven проектах с помощью фреймворка jamon.

Читать дальше →
Всего голосов 5: ↑4 и ↓1+3
Комментарии0

Как обновить статус в Facebook, LinkedIn & Twitter при помощи spring-social

Время на прочтение9 мин
Количество просмотров6.7K
Не так давно я уже писал о новом проекте SpringSource: spring-social. Сегодня я хочу рассказать (вернее показать на примере) как можно данную библиотеку использовать. В качестве примера используется простейшее приложение, которое позволяет залогиниться во все три сервиса и обновлять статус одновременно во всех трех (осторожно — под катом много букв и кода и совсем нет картинок).
imageimageimageimage
Читать дальше →
Всего голосов 11: ↑6 и ↓5+1
Комментарии7

Вклад авторов

Работа

Java разработчик
373 вакансии