Рубрика «java» - 282

Я — Jdev, автор робота Tomcat, который в ноябре/декабре 2011 года был Королём Премьер Лиги общего зачёта Robocode (пруф) без единого поражения, сейчас занимает 3-е место из 911 в процентном зачёте и является героем моего повествования. Эту статью я решил написать для привлечения к этой игре внимания соотечественников, потому как одному защищать честь Российского флага становится уже тяжело (не считая двух моих роботов, лучший русский робот занимет 142-ое место). Рассказ я решил построить в виде журнала.
Читать полностью »

Совсем недавно, перейдя на новый проект, я решил для разнообразия также перейти с Eclipse на Idea. С идеей у меня уже был опыт еще с 6-й версии, она мне нравилась, но проблем у нее было достаточно много. Тогда я отказался от нее в виду периодических глюков при долгой работе. Увидев, что уже на дворе 11-я версия я обрадовался и решил опять попытать счастья, так как по интерфейсу идея для меня гораздо приятней…

Около месяца назад заметил, что при активной разработке, когда выделенные под кучу 768мб памяти заполнены под 80%, любое действие, вроде движения мышкой, переключения фокуса, просто прокрутка колесом мышки или непосредственно скроллом в окне вызывает большое потребление памяти и оставшиеся 20% памяти съедаются за несколько секунд работы. После чего, естественно, про комфортную работу можно забыть и приходится перегружать среду в виду постоянного срабатывания сборщика. Сегодня эта ситуация меня окончательно достала и я решил узнать — в чем же собственно проблема?

Интуитивно я понимал, что вероятней всего каждое движение мышки и любое действие вроде прокрутки генерирует определенные события, которые потом обрабатываются, но ТАК МНОГО этих событий я не ожидал. Для затравки — 2 скриншота потребления памяти при движении мыши в окне редактора и скроллинге внутри открытого класса на 1000 строк:

Движение: mouse move
Скроллинг: scrolling

Обычная прокрутка в окне редактирования кода в пике съедает почти 100мб памяти за несколько секунд… Любое движение мыши генерирует объектов на десятки мегабайт… Единственный позитивный момент во всем этом, что все эти объекты потом собираются.

Читать полностью »

17 Июля город Киев. Speakers' Corner: «OSGI in banking environment»
OSGi in banking environment. Ciklum Speakers Corner в Киеве

Приглашаем неравнодушных Java разработчиков обсудить возможности OSGi (Open Services Gateway Initiative) — спецификация динамической плагинной (модульной) шины для создания многофункциональных Java десктоп-приложений и энтерпрайзных систем.

Наш гость из Женевы, Java специалист с 15-летним опытом Fulco Houkes расскажет об использовании OSGi для банковской инфраструктуры. Внимание! Доклад и обсуждение будут проходить на английском языке без перевода!

Темы к обсуждению:
• Banking challenges
• An elegant solution: OSGI
• What is OSGI?
• OSGI best practices & pitfalls
Читать полностью »

Google передает управление проектом GWT независимому комитету Похоже, что тяга Google к оптимизации затрат и закрытию непрофильных сервисов добралась и до GWT. Компания, занимавшаяся развитием тулкита с 2006 года, передала проект в руки некоего «управляющего комитета», состоящего из разработчиков, заинтересованных в дальнейшем развитии проекта.

В список компаний, помимо неназванных разработчиков из сообщества, входят представители Sencha, Red Hat, Vaadin и некоторые другие. К слову, разработчики Google в этом списке пока тоже присутствуют.

Читать полностью »

Добрый день, коллеги!

Как я и обещал в своей предыдущей статье, хочу поделится с вами информацией касательно использования Google Contacts API. Кому интересно узнать, как вызывать Google Contacts API из Java на Google Apps Engine — добро пожаловать под кат.
Читать полностью »

«Разбор полетов» — Episode 22 — Независимо от зависимостей

  1. Особый гость

  2. Главное одной строкойЧитать полностью »

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

У нас приложение активно использует Спринг, а значит и такие интеграционные тесты должны работать с контекстом спринга.

Часто подобные тесты могут занимать много времени, даже если использовать in-memory базу данных (я, кстати проверял почему — у нас много JPA entities с множеством свойств в каждом и инициализация Hibernate, имено она, занимает десятки секунд!)

Значит нам надо сделать так, чтобы по умолчанию эти тесты, в отличие от обычных юнит тестов, не исполнялись во время билда.

Так что план такой:
1. Пишем сервисы, разбитые на два слоя приложения
2. Соединим их Спрингом
3. Напишем тест пользуясь JUnit для взаимодействия этих сервисов (настоящих, без всяких mock)
4. Делаем так, чтобы этот тест не бежал по умолчанию во время билда
5. Profit!
Читать полностью »

В середине 2013 года выходит Java 8 с реализацией лямбда-выражений. Лямбда-выражения предоставляют широкие возможности для применения функционального стиля программирования. Правда функциональный стиль можно использовать уже сегодня в JDK 7, 6 или 5 с помощью библиотек LambdaJ и Guava.

Iterative Lambdaj JDK 8 lambda Guava
Print all brands 79 472* 113 79
Select all sales of a Ferrari 25 146 44 31
Find buys of youngest person 1,209 1,775 1,242 1,218
Find most costly sale 8 123 55 72
Sum costs where both are males 23 973* 40 45
Age of youngest who bought for > 50,000 1,521 2,576* 1,560 1,511
Sort sales by cost 350 1,187 473 453
Extract cars original cost 29 61 31 31
Index cars by brand 57 70 89 415
Group sales by buyers and sellers 2,586 3,748* 2,862 1,601
Find most bought car 744 1,023* CRASH 1,435

Читать полностью »

в 7:58, , рубрики: ejb, ejb3, java, jee, Программирование, метки: , , ,

Представьте себе, что вы уже написали немалую часть кода приложения, и тут выясняется, что вам необходимо добавить логирование на вызов большого числа методов, или необходимо на некоторые схожие методы добавить дополнительную валидацию входных данных.
Вы можете просто переписать нужные участки кода, а можете воспользоваться появившемся в EJB 3.0 механизмом интерсепторов (interceptors).

Если интересны подробности и небольшой пример реализации прошу под кат.

Читать полностью »

Представьте себе, что вы уже написали немалую часть кода приложения, и тут выясняется, что вам необходимо добавить логирование на вызов большого числа методов, или необходимо на некоторые схожие методы добавить дополнительную валидацию входных данных.
Вы можете просто переписать нужные участки кода, а можете воспользоваться появившемся в EJB 3.0 механизмом интерсепторов (interceptors).

Если интересны подробности и небольшой пример реализации прошу под кат.

Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js