Обновить
156.61

Java *

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

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

AspectJ, Spring, Maven

Время на прочтение6 мин
Охват и читатели37K
Меня в нашей группе попросили настроить среду и показать использование аспектов AspectJ и интеграция его со Spring.
Мне показалось, что хабросообществу это тоже может быть интересно.

Не буду рассказывать тут о том, что такое AspectJ, кто знает — тому будет полезно, замечу лишь, что аспекты — это возможность добавить на этапе компиляции или рантайма в классы некую функциональность, которой раньше там не было. Или изменить существующую.

Далее: конфигурация проекта и 3 примера аспектов.

Читать дальше →

Система управления документами Alfresco

Время на прочтение7 мин
Охват и читатели157K
logoПоиск по Хабру не нашел подробных статей по системе Alfresco. В данной статье попробую убить сразу двух зайцев: рассказать что представляет из себя система Alfresco и как мы используем ее в нашей работе.

Как хранятся документы в небольшой организации? Самое простое — на локальном диске. А если необходима совместная работа — пересылаются по почте, либо, самый популярный вариант, на сетевом диске. Еще прекрасный вариант — Google Docs, но не уверен что он широко используется в Российской практике.

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

При мысли о системе электронного документооборота первыми на ум приходят дорогие решения от известных вендоров, таких как Microsoft, EMC, 1С и т.д. Но есть и альтернатива закрытым решениям — система управления документами с открытым исходным кодом Alfresco. Или, если по-английски, то Open Source Enterprise Content Management System (ECM, CMS).

Конкуренты Alfresco — это закрытое ПО, такое как EMC Documentum, Open Text, Sharepoint. Сами разработчики Alfresco пишут о своих конкурентах, как о наследии 90-х годов, которое:
  • слишком дорого стоит
  • слишком сложно использовать, разворачивать, масштабировать
  • слишком сложно модифицировать под свои нужды
  • слишком “проприетарно”

Попробую рассказать о системе, а вы уже решайте правы ли были разработчики.
Читать дальше →

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

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

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

Читать дальше →

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

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

Читать дальше →

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

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

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

Надоело такое терпеть в коде?
Читать дальше →

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

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

Java Bytecode Fundamentals

Время на прочтение6 мин
Охват и читатели66K
Разработчики приложений на Java обычно не нуждаются в знании о байт-коде, выполняющемся в виртуальной машине, однако тем, кто занимается разработкой современных фреймворков, компиляторов или даже инструментов Java может понадобиться понимание байт-кода и, возможно, даже понимание того, как его использовать в своих целях. Несмотря на то, что специальные библиотеки типа ASM, cglib, Javassist помогают в использовании байт-кода, необходимо понимание основ для того, чтобы использовать эти библиотеки эффективно.
В статье описаны самые основы, от которых можно отталкиваться в дальнейшем раскапывании данной темы (прим. пер.).
Читать дальше →

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

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

Время на прочтение13 мин
Охват и читатели51K

Введение


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

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

Помимо прочего я опишу процесс тестирования Веб Сервисов с помощью SoapUI.
Читать дальше →

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

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

(Часть 1)
Читать дальше →

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

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

Читать дальше →

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

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

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

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

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

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

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

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

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

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

Читать дальше →

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

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

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

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


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

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


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

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


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

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

Читать дальше →

Groovy inspiration — Feel the difference

Время на прочтение6 мин
Охват и читатели5.2K
image

Почему Groovy


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

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

Время на прочтение4 мин
Охват и читатели26K
Давным-давно я работал в одной большой компании, мы писали 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 модулей, у каждого проекта есть несколько бранчей и тэгов. Было очень трудно создавать и переключаться между воркспейсами. Другим программистам тоже было трудно, они тоже тратили много времени на создание и настройку воркспейса. Было ощущение, что программисты совсем не тем занимались.
Читать дальше →

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

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

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

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

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

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

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