В очередном выпуске правильного подкаста главного зачинателя заменил другой популярный подкастер!Читать полностью »
Метка «java» - 45
«Разбор полетов» — Episode 23 — И ты, Брут?
2012-07-17 в 16:42, admin, рубрики: Google, interview, java, leveldb, подкасты, разбор-полетов, метки: Google, interview, java, leveldb, разбор-полетовОбзор зарплат программистов Java/C++/C#/Delphi
2012-07-16 в 8:07, admin, рубрики: Delphi, java, salary, survey, Блог компании IT-Доминанта, вакансии, зарплаты, исследование, кадры, обзор, С++, метки: c++, Delphi, java, salary, survey, вакансии, зарплаты, исследование, кадры, обзор, С++ А мы (мы — это рекрутинговая компания IT-Доминанта), продолжаем публиковать результаты нашего исследования рынка заработных плат в IT индустрии.
Очередной пост мы решили посвятить:
- Java программистам
- С++ программистам
- C# программист
- Delphi программистам
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).
Если интересны подробности и небольшой пример реализации прошу под кат.
Logy — логгер с человеческим лицом
2012-06-29 в 9:30, admin, рубрики: java, library, log4j, logger, logging, open source, метки: java, library, log4j, logger, logging, open sourceНекоторое время назад мне пришла в голову идея сделать логирование в Java более дружелюбным, простым и в тоже время достаточно гибким в настройке. Такие требования справедливы пожалуй, в средних и малых проекта, где можно обойтись без громоздкого log4j. Буквально за неделю, идея переросла в простенькую Java библиотеку с ни менее простым названием — logy.
Использование:
import static logy.Logy.*;
public class Test {
public void test() {
String s[] = {"a", "b"};
warn("Can't find", quote(upper("c")), "in", group(quote(upper(scalar(s)))));
}
}
Вывод:
29.06.2012 1:19:25 Test.test [WARN] :: Can't find "C" in ["A", "B"]
Как по мне, выглядит очень читабельно, благодаря синтаксическому сахару, DSL-like API и динамическому определению параметров логирования в момент вызова (читай без дополнительных полей public static final Logger logger = ...
в классе).
Читать полностью »