Я — Jdev, автор робота Tomcat, который в ноябре/декабре 2011 года был Королём Премьер Лиги общего зачёта Robocode (пруф) без единого поражения, сейчас занимает 3-е место из 911 в процентном зачёте и является героем моего повествования. Эту статью я решил написать для привлечения к этой игре внимания соотечественников, потому как одному защищать честь Российского флага становится уже тяжело (не считая двух моих роботов, лучший русский робот занимет 142-ое место). Рассказ я решил построить в виде журнала.
Читать полностью »
Рубрика «java» - 282
Как я стал чемпионом Robocode
2012-07-13 в 10:52, admin, рубрики: game development, java, Robocode, истории успеха, метки: RobocodeТонны мусора и минимум полезной работы или скроллинг в Idea
2012-07-12 в 15:27, admin, рубрики: idea, java, метки: ideaСовсем недавно, перейдя на новый проект, я решил для разнообразия также перейти с Eclipse на Idea. С идеей у меня уже был опыт еще с 6-й версии, она мне нравилась, но проблем у нее было достаточно много. Тогда я отказался от нее в виду периодических глюков при долгой работе. Увидев, что уже на дворе 11-я версия я обрадовался и решил опять попытать счастья, так как по интерфейсу идея для меня гораздо приятней…
Около месяца назад заметил, что при активной разработке, когда выделенные под кучу 768мб памяти заполнены под 80%, любое действие, вроде движения мышкой, переключения фокуса, просто прокрутка колесом мышки или непосредственно скроллом в окне вызывает большое потребление памяти и оставшиеся 20% памяти съедаются за несколько секунд работы. После чего, естественно, про комфортную работу можно забыть и приходится перегружать среду в виду постоянного срабатывания сборщика. Сегодня эта ситуация меня окончательно достала и я решил узнать — в чем же собственно проблема?
Интуитивно я понимал, что вероятней всего каждое движение мышки и любое действие вроде прокрутки генерирует определенные события, которые потом обрабатываются, но ТАК МНОГО этих событий я не ожидал. Для затравки — 2 скриншота потребления памяти при движении мыши в окне редактора и скроллинге внутри открытого класса на 1000 строк:
Движение:
Скроллинг:
Обычная прокрутка в окне редактирования кода в пике съедает почти 100мб памяти за несколько секунд… Любое движение мыши генерирует объектов на десятки мегабайт… Единственный позитивный момент во всем этом, что все эти объекты потом собираются.
OSGi in banking environment. Ciklum Speakers’ Corner в Киеве
2012-07-10 в 17:15, admin, рубрики: ciklum, IT-стандарты, java, osgi, speakers corner, Блог компании Ciklum, киев, спецификации, метки: ciklum, osgi, speakers corner, киев, спецификации 17 Июля город Киев. Speakers' Corner: «OSGI in banking environment»
Приглашаем неравнодушных 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 независимому комитету
2012-07-06 в 13:42, admin, рубрики: Google, Google Web Toolkit, GWT, java, javascript, метки: Google, google web toolkit, GWT, java, javascriptПохоже, что тяга Google к оптимизации затрат и закрытию непрофильных сервисов добралась и до GWT. Компания, занимавшаяся развитием тулкита с 2006 года, передала проект в руки некоего «управляющего комитета», состоящего из разработчиков, заинтересованных в дальнейшем развитии проекта.
В список компаний, помимо неназванных разработчиков из сообщества, входят представители Sencha, Red Hat, Vaadin и некоторые другие. К слову, разработчики Google в этом списке пока тоже присутствуют.
Сохранение контактной информации в Google Contacts
2012-07-05 в 8:07, admin, рубрики: Google API, google app engine, google contacts, java, метки: google api, google app engine, google contacts, javaДобрый день, коллеги!
Как я и обещал в своей предыдущей статье, хочу поделится с вами информацией касательно использования Google Contacts API. Кому интересно узнать, как вызывать Google Contacts API из Java на Google Apps Engine — добро пожаловать под кат.
Читать полностью »
«Разбор полетов» — Episode 22 — Независимо от зависимостей
2012-07-04 в 21:21, admin, рубрики: cloud, eclipse, gradle, grails, GWT, idea, java, maven, oracle, play, подкасты, разбор-полетов, метки: cloud, Eclipse, gradle, grails, GWT, idea, java, maven, oracle, play, разбор-полетов
- Особый гость
- Главное одной строкойЧитать полностью »
Интеграционные тесты с Maven, JUnit и Spring
2012-07-02 в 20:12, admin, рубрики: integration testing, java, junit, maven, spring, spring framework, метки: integration testing, java, junit, maven, spring, spring frameworkЮнит тесты это штука хорошая, но, на мой взгляд, полагаться лишь на них нельзя. Иногда очень важно проверить как работают несколько классов, а иногда и слоёв приложения вместе.
У нас приложение активно использует Спринг, а значит и такие интеграционные тесты должны работать с контекстом спринга.
Часто подобные тесты могут занимать много времени, даже если использовать in-memory базу данных (я, кстати проверял почему — у нас много JPA entities с множеством свойств в каждом и инициализация Hibernate, имено она, занимает десятки секунд!)
Значит нам надо сделать так, чтобы по умолчанию эти тесты, в отличие от обычных юнит тестов, не исполнялись во время билда.
Так что план такой:
1. Пишем сервисы, разбитые на два слоя приложения
2. Соединим их Спрингом
3. Напишем тест пользуясь JUnit для взаимодействия этих сервисов (настоящих, без всяких mock)
4. Делаем так, чтобы этот тест не бежал по умолчанию во время билда
5. Profit!
Читать полностью »
Java 8 Lambda vs LambdaJ vs Guava vs Iterative approach
2012-07-02 в 5:45, admin, рубрики: guava, java, java 8, jdk8, lambda, метки: guava, java, java 8, jdk8, lambdaВ середине 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 |
Java Interceptors
2012-07-01 в 7:58, admin, рубрики: ejb, ejb3, java, jee, Программирование, метки: ejb, ejb3, java, jee Представьте себе, что вы уже написали немалую часть кода приложения, и тут выясняется, что вам необходимо добавить логирование на вызов большого числа методов, или необходимо на некоторые схожие методы добавить дополнительную валидацию входных данных.
Вы можете просто переписать нужные участки кода, а можете воспользоваться появившемся в EJB 3.0 механизмом интерсепторов (interceptors).
Если интересны подробности и небольшой пример реализации прошу под кат.
Java Interceptors (в EJB 3.0)
2012-07-01 в 7:58, admin, рубрики: ejb, ejb3, java, jee, Программирование, метки: ejb, ejb3, java, jee Представьте себе, что вы уже написали немалую часть кода приложения, и тут выясняется, что вам необходимо добавить логирование на вызов большого числа методов, или необходимо на некоторые схожие методы добавить дополнительную валидацию входных данных.
Вы можете просто переписать нужные участки кода, а можете воспользоваться появившемся в EJB 3.0 механизмом интерсепторов (interceptors).
Если интересны подробности и небольшой пример реализации прошу под кат.