Обновить
256K+

Java *

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

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

Jelastic плагин для Eclipse

Время на прочтение2 мин
Охват и читатели6.8K
imageВсем привет!
Хотим поделиться с хабрасообществом последними новостями: теперь облачная платформа Jelastic интегрирована с Eclipse IDE. Cпециальный плагин для Eclipse делает разработку Java EE веб-приложений на платформе Jelastic гораздо удобнее: сейчас можно развернуть приложение в облако прямо из Eclipse и не переключаться постоянно между IDE и браузером. Известно, что Eclipse лежит в основе деятельности многих Java-разработчиков, так что надеемся, что они по достоинству оценят это нововведение. Также доступны такие полезные функции, как управление (запуск, остановка и т.д.) пользовательской средой и доступ к серверным логам.

Давайте вкратце рассмотрим, как установить плагин и как использовать его основной функционал.
Читать дальше →

Визуализируем геоинформацию из логов на web-карте в реальном времени

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


Дабы не было двусмысленностей, обозначу суть. При приёме на новую работу мне дали тестовое задание, которое кратко можно описать так: «Написать аналог Glow для геовизуализации событий входа пользователей в кастомерку интернет-магазина». Проще говоря, необходимо мониторить лог системы на предмет возникновения определенных событий и в случае оных выполнять (в данном случае) отображение точки на карте, которая будет определяться IP-адресом пользователя. Цель реализации: создать приятную на вид «игрушку» для презентационных целей, способную погрузить смотрящего в нирвану гармонии и эстетического наслаждения. Основным условием было использование в процессе разработки стека Java-технологий, чем обусловлено принятие многих решений. Кроме этого, было решено реализовать это в виде одностраничного сайта. А поскольку с Java и web я был знаком крайне поверхностно (писал в основном на C/C++), пришлось многому научиться. Что ж, будем разбираться вместе.
Статья рассчитана на интересующихся и начинающих, однако не «разжевывает» простые вещи, с которыми можно ознакомиться с помощью документации или специализированных статей. Наиболее полезные ресурсы, ссылка на исходники (распространяются по лицензии BSD) и ссылка на рабочую версию приведены в конце статьи.

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

Использование CompositeUserType для связи сущностей в Hibernate

Время на прочтение3 мин
Охват и читатели5K
Пост будет кратким и весьма техническим.

Задача

Есть Java-приложение, имеющее внутри большое количество ORM-сущностей (Entity).
Необходимо реализовать сущность ExtendedAttributes, которую можно прикрепить к любой другой сущности без дополнительной доработки.

Решение

На помощь к нам приходит CompositeUserType, который содержит внутри себя class и id той сущности, которую мы хотим привязать. Вот и всё решение. А дальше — код.
Читать дальше →

Разработка сервера мобильных клиентов

Время на прочтение5 мин
Охват и читатели57K
Обратная сторона мобильных клиентов — сервер.

Введение

Не открою секрета, что разработка мобильных приложений в тренде – этому способствует стремительное техническое развитие: мобильные устройства с каждым годом улучшаются по всем характеристикам и становятся доступнее для широкого круга людей. Почти каждый, кто имеет на руках мобильный гаджет (будь то смартфон, коммуникатор или планшет) пользуется приложениями: браузером, клиентом электронной почты и мгновенных сообщений, играми, бизнес или финансовыми программами. И зачастую от пользователей скрыто то, что многие из приложений взаимодействуют с удаленным сервером: обмениваются с ним данными через Интернет.
По роду деятельности (Java разработчик серверных приложений) мне в команде приходится разрабатывать сервера для мобильных клиентов (за последние 2 года участвовал в реализации 3-х таких проектов для зарубежных компаний). Определился набор Java-технологий для решения задач такого рода, который варьируется в зависимости от требований и целесообразности (другими словами — желания), благо свобода при выборе технологий позволяет экспериментировать. Сформировавшейся точкой зрения и опытом хотел бы поделиться с сообществом.
Читать дальше →

Text Mining Framework (Java)

Время на прочтение5 мин
Охват и читатели31K
Что это и для кого (вместо вступления)

В данной статье я бы хотел рассказать о небольших результатах своей научной деятельности в сфере Text Mining. Этими самыми «результатами» стал небольшой FrameWork, который, пока еще, и до либы то не очень дотягивает, но мы растем =). Данный проект — реализация на практике некоторых, разработанных мною, теоретических положений. Как следствие этого я представляю возможности, которыми он может потенциально обладать в конце внедрения всех идей. Названо сее творение: «Text Mining FrameWork»(TextMF). Давайте в кратце рассмотрим, что именно будет позволять TextMF в своей первой финальной версии и что работает уже сейчас.
Читать дальше →

Пример использования fluent interface в java для описания объектов предметной области

Время на прочтение2 мин
Охват и читатели15K
Disclaimer: нашел статью у себя в черновиках. Писал года полтора-два назад, почему не опубликовал — не помню. Просмотрел, вроде, не совсем бесполезная, пусть будет в открытом доступе.

В последнее время стало достаточно актуальным использование domain specific languages (DSL) — языков «заточенных» под конкретную предметную область. Слово «язык» в данном контексте не обязательно подразумевает именно новый язык программирования, зачастую можно обойтись и старым добрым.

На хабре не замечено ни одной статьи про fluent interface в контексте джавы, так что хотел бы поделиться своим опытом применения.
Читать дальше →

Подготовка к OCEJPAD 6

Время на прочтение3 мин
Охват и читатели8.9K
Хочу поделиться опытом прохождения Java EE 6 Java Persistence API Developer Certified Expert Exam (OCEJPAD 6).

Немного о OCEJPAD 6


OCEJPAD 6 один из новых(относительно новых) сертификатов, который охватывает Java Persistence API. Ранее Java Persistence API входил в состав SCBCD, но с добавлением Criteria API в JPA 2.0, было создано 2 экзамена вместо одного:
  • Java EE 6 Java Persistence API Developer Certified Expert Exam 1Z0-898(EE6 JPA or OCEJPAD 6)
  • Java EE 6 Enterprise JavaBeans Developer Certified Expert Exam 1Z0-895(EE6 EJB or OCEEJB 6)

Для кого предназначен этот сертификат? На мой взгляд, для всех Java Developer’ов, так как редкий проект обходится без использования доступа к базам данных, а пользоваться только JDBC уже давно не по фэн шую. Так что крепкие знания JPA будут как нельзя кстати. Одна из наиболее часто используемых имплементаций JPA — Hibernate.

Где взять mock тесты?


Единственные существующие mock тесты по этой сертификации (во всяком случае известные мне) — epractizelabs, но они платные, и говорят, что содержат много ошибок. Я не могу ничего сказать об этом ресурсе, так как не пользовалась ими.
Но, так как просто читая книгу достаточно тяжело подготовиться к экзамену, я составила для себя вопросы/ответы содержащие все важные моменты из книги Pro JPA 2: Mastering the Java™ Persistence API. Отвечая на них, я достаточно хорошо подготовилась к сертификации — сдала с 87%. Эти вопросы/ответы выложены здесь — http://www.examclouds.com/ для бесплатного пользования.

Что читать?


Я использовала для подготовки книгу Pro JPA 2: Mastering the Java™ Persistence API (ее можно скачать бесплатно в интернете), а также спецификацию JPA 2.0. На мой взгляд спецификацию нужно читать после тщательного изучения Pro JPA 2: Mastering the Java™ Persistence API или обращаться за разъяснением наиболее непонятных моментов. Следующие главы из этой книги содержат всю необходимую информацию для сдачи экзамена (все остальное можно смело пропустить):
Читать дальше →

Эффективность автоматического тестирования приложений

Время на прочтение3 мин
Охват и читатели12K
Атака клонов.
Эпизод: покер.


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

Это не эпизод легендарной саги «Звёздные войны» и не превью фантастической повести. Это описание нагрузочного тестирования сервера (построенного на технологиях Java), проведенного в ходе разработки игрового приложения «Покер» для социальных сетей.

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

Maven: Доступ к репозиториям с кастомной структурой каталогов

Время на прочтение4 мин
Охват и читатели6K
Приветствую всех.

Хочу поделиться с сообществом небольшим велосипедом — расширением для мавена позволяющим получать доступ к репозиториям с кастомной структурой.
Для начала расскажу как я до такого докатился. В процессе работы над проектом пришла мысль о том зависимости JavaScript типа JQuery ничем не управляются, и при обновлении приходится качать библиотеки вручную, что совершенно не впечатляет. И вот так появилось дикое желание найти какой-нибудь менеджер зависимостей но для javascript. В первую очередь в своих поисках я наткнулся на Bower но необходимость введения дополнительного шага в процессе сборки отпугивало как node.js в зависимостях. Тут я вспомнил про CDN с коих можно невозбранно тянуть js-библиотеки (например jquery на Google CDN: http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js). Поскольку в проекте используется maven для сборки то логичной мыслью было натравить его на эти залежи библиотек… Но все оказалось не так просто. Дело в том что структура файловой системы CDN отличается от стандартной для для maven. После 2 часов поиска решения на просторах интернетов найдено не было, и решил я написать свой велосипед. Если я еще не утомил вас то прошу под кат.
Читать дальше →

Все, что хотели знать о сдаче экзамена Java Programmer I (1Z0-803) в Киеве, но боялись спросить

Время на прочтение6 мин
Охват и читатели64K
Предисловие

imageКак бывший программист на С++, который перешел на православную Java, я решил постепенно подкрепить свои знания сертификатами. Просто для себя (не совсем так просто, но о мотивации чуть далее). Получение подобной «бумаги» стало для меня новым квестом и о том, как его пройти я и буду рассказывать, параллельно сдав все явки и пароли в Киеве. Само собой, не считая конкретного центра сертификации, все сказанное актуально и для не киевлян.
Читать дальше →

Простая поддержка окружений в Spring 3.1+

Время на прочтение2 мин
Охват и читатели17K
Многие знают что для подстановки значений в конфигурационные файлы Spring можно использовать context:property-placeholder.

<context:property-placeholder location="classpath*:/prop/*.properties"/> <!-- здесь будут искаться property файлы -->

<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    <constructor-arg ref="mongo"/>
    <constructor-arg name="databaseName" value="${mongo.db}"/> <!-- здесь будет подставлено значение из найденных property -->
</bean>

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

Когда передо мной встала задача, в зависимости от окружения (dev, prod, load-test), изменить логику развертывания — я искренне попытался использовать старый проверенный способ через property.
И я сделал следующее:

Начинаем использовать Tarantool в Java проекте

Время на прочтение8 мин
Охват и читатели20K
    В статье ниже я попытаюсь кратко рассказать о том, что такое Tarantool и как начать его использовать в уже существующем проекте если вы программируете на Java. Если же вы программируете на другом языке, то вам могут быть интересны некоторые инструменты доступные в коннекторе, такие как возможность редактирование xlog файлов и создание snap файлов из любых данных. Если вы не знаете, что такое Tarantool, то лучше прочитать этот пост.
Читать дальше →

Программный дебаг Java-приложений посредством JDI

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

В процессе отладки приложений работающих на JVM посредством дебаггера в Eclipse меня всегда впечатляло то, сколько доступа можно получить к данным приложения — потокам, значениям переменных и т.п. И в то же время периодически возникало желание «заскриптовать» некоторые действия или получить больше контроля над ними.

Например, иногда для того чтоб «мониторить» состояние какой-то переменной, меняющейся в цикле, я использовал условный брейкпойнт, условием к которому был код вроде «System.out.println(theVariable); return false». Этот хак позволял получить лог значений переменной практически не прерывая работы приложения (она, естественно, всё-таки прерывалась на время выполнения кода условия, но не более). Плюс, нередко при просмотре каких-нибудь данных через вид Display порядком раздражало то, что результат евалюейшна кода в Display введённого добавлялся тут же после него.

В общем хотелось получить возможность делать всё то же самое например через Bean Shell или Groovy Shell, что в принципе аналогично программному дебагу. По логике это не должно было быть сложно — ведь делает же это как-то сам Eclipse, верно?

Проведя некоторый рисёрч я смог получить доступ к отладочной информации JVM программно, и спешу поделится примером.

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

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

Подготовка к сдаче экзамена Oracle certified JAVA associate

Время на прочтение3 мин
Охват и читатели66K
Поиск русского гайда по сдаче на OCAJP 7 не увеньчался успехом, так что я решил написать свой.

Что это за сертификат рассказывают в этом видео. Сдавать или нет каждый решает для себя сам, но этот сертификат является базовым в иерархии Oracle для интересующихся Java.

Для себя я решил сдавать на OCP чтобы во-первых систематизировать знания, а во-вторых поднять привлекательность для работодателей.

Началось как обычно с чтения CodeRanch. Когда я начинал готовиться книг посвященных OCA 7 еще не было в природе. Сейчас уже появился официальный гайд. Но учитывая ценник (30$), я все же воздержался бы от покупки. Сейчас расскажу почему.
Читать дальше →

Кодируем на лету в base64 и стреляем в MongoDB из JMeter с помощью BeanShell

Время на прочтение5 мин
Охват и читатели5.7K
Я работаю в нагрузочном тестировании относительно недолго, и одним из моих основных инструментов является Apache Jmeter. Тем не менее, большинство моих коллег не использовали Beanshell в JMeter, и в этой статье я хочу показать пару способов как он может упростить и сократить время подготовку к самим тестам. А покажу это на примере конвертации текста в base64-кодировку и простых стрельб в MongoDB.
Читать дальше →

JSR 335 или lambda-выражения в JAVA 8

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

Введение


Посетил вчера семинар по lambda-выражениям в JAVA 8. Рассказали много интересного.
Читать дальше →

Как мы делали сборки

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

Введение


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

К тому же надо постоянно обновлять разработческие и тестовые системы, да еще и ничего не перепутать. Тут не обойтись без практики непрерывной интеграции.
Читать дальше →

Checkstyle и Java. Поможет ли автоматическая инспекция кодa?

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


В последнее время на Хабре заметно участились статьи об автоматизации и оптимизации код-ревью, инспекциях кода и других способах поддержания кода крупных проектов в достойном виде (например, статья 1, статья 2, статья 3).

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

Последние труды нашей команды по написанию дополнительных чеков (проверок) для Checkstyle вошли в новую сборку нашего дополнения для Eclipse Checkstyle-плагина Eclipse-cs (sevntu-checkstyle 1.5.3, 4.09.2012).

Мы продолжаем эксперименты по автоматизации поиска ошибок на этапе написания Java — кода. Мы убедились в том, что писать свои проверки для Checkstyle несложно — точнее совсем просто! Сложнее написать чек, действительно уникальный и полезный в разработке (а еще сложнее — позже договориться со всеми членами команды разработчиков о совместном использовании нового чека). В этом посте я постараюсь описать последние достижения нашей команды в направлении разработки новых чеков для Checkstyle. Также ниже я хотел бы немного осветить принцип действия, полезность и ограничения библиотеки Checkstyle, Eclipse Checkstyle-плагина и нашего к нему дополнения.

Читать далее...

GWT + Hibernate + Dispatch

Время на прочтение5 мин
Охват и читатели11K
При создании портала крайне часто основной функцией BackEnd является работа с БД. Как правило сейчас никто не использует обычные и не очень удобные для написания Statement’ы, а в место этого используют ORM фреймворки. В случае с GWT этим фреймворком скорее всего становится Hibernate, так как на сервере у нас Java. Мне далеко не первому пришла в голову мысль о том, что крайне удобно и просто было бы передавать не отдельные данные а целиком POJO(персистентные объекты) используемые Hibernate. Вот я создал свой сервис, возвращающий на клиентскую часть POJO. POJO пронаследовал от Serializable. Запускаю приложение и получаю вот такое вот исключение:

Caused by: com.google.gwt.user.client.rpc.SerializationException: Type 'org.hibernate.collection.PersistentSet' was not included in the set of types which can be serialized by this SerializationPolicy or its Class object could not be loaded. For security purposes, this type will not be serialized.
at com.google.gwt.user.server.rpc.impl.StandardSerializationPolicy.validateSerialize(StandardSerializationPolicy.java:83)
at com.google.gwt.user.server.rpc.impl.ServerSerializationStreamWriter.serialize(ServerSerializationStreamWriter.java:591


Не сразу понятно что пошло не так. Дело в том, что как только объект становится персистентным, в нем происходит ряд изменений, необходимых для работы Hibernate. Например обычные Set меняются на PersistentSet. Из-за этого браузер уже никак не может десериализовать отправленный ему объект, ни при каких условиях.
Читать дальше →

Систематизация сборщиков мусора в HotSpot, IBM J9, JRockit JVMs

Время на прочтение5 мин
Охват и читатели18K
Данная статья призвана систематезировать знания о всех современных сборщиках мусора, используемых в HotSpot, JRockit и J9 JVMs. Статья содержит краткий обзор всех режимов сборки мусора с проведенными аналогиями между всеми рассматриваемыми здесь JVM. Статья будет интересна всем, кто интересуется вопросом GC, а также будет полезна тем, кто рассматривает или планирует совершать портирование JAVA приложений на альтернативные JVM.
Читать дальше →