Как стать автором
Поиск
Написать публикацию
Обновить
182.46

Java *

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

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

java.util.concurrent. Часть первая: Зачем и почему?

Время на прочтение4 мин
Количество просмотров29K
Часть первая, в которой множеством слов раскрывается смысл существования этого API
Эта статья, хоть и не является прямым переводом, основана на статье Брайана Гетца Concurrency in JDK 5.0

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

Обновление веб приложения на удаленном сервере после сборки Maven'ом через SSH

Время на прочтение2 мин
Количество просмотров2.1K

Проблема


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

Настройка репозитория Sonatype Nexus для проксирования артефактов Maven

Время на прочтение6 мин
Количество просмотров67K
Добрый день!

Про утилиту сборки для Java-проектов Maven и про возможность создания локального сервера для Maven-репозитория с помощью Sonatype Nexus на Хабре уже упоминали (тут и тут). Однако, никакого рецепта по этому поводу представлено не было. Это неудивительно при наличии достаточно полной грамотной документации. По долгу службы мне пришлось настраивать его на нашей фирме, и оказалось, что советы из официальной документации не совсем подходят. Возникшей проблемой и способом ее решения я и хочу поделиться с сообществом. Но обо всем по порядку.

Зачем это нужно?


Локальный сервер для Maven-репозитория (как, например, Sonatype Nexus) может быть использован для хранения локальных артефактов Maven, и действительно пригодится командам, которые разрабатывают модульные приложения, но не собираются публиковать модули в общий доступ.

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

История одной оптимизации

Время на прочтение5 мин
Количество просмотров19K


Аннотация


Статья раскрывает особенности высокоуровневых оптимизаций вычислительных алгоритмов на Java на примере кубического алгоритма перемножения матриц.

Шаг 0. Установи точку отсчета!


Определимся с окружением:
  • Hardware: 1-socket/2-cores Intel Core 2 Duo T7300 2GHz, 2Gb ram;
  • Java: HotSpot(TM) Client VM (build 17.0-b17, mixed mode, sharing);

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

JVM падает (2 истории про вызов native library)

Время на прочтение2 мин
Количество просмотров2.3K
Хочу поделиться двумя историями с одинаковым сюжетом, но разными развязками.
Может быть кому то, у кого тоже падает JVM будет полезно

1. Native code вызывается из Явы через JNI. Юнит тест — проходит на ура, приложение (GUI, Swing) крэшится.
Подключаемся через дебагер ddd (это такая оболочка над gdb, ежели кто из яваистов не знает :) ) — видим что падает с длинющим стеком. Выясняем с автором нативной библиотеки, что там они десериализуют через boost (такая библиотека для C++) дерево большой глибины. И там рекурсия.

Возникает идея (не сразу, 3 дня споров и гугления), что при вызове из приложения стек больше и он переполняется. Находим параметер для JVM: -XX:ThreadStackSize=

Работает!

2. Native code вызывается через JNA. Присутствую колбеки обратно в Явы, так как я описывал. Юнит тест бежит, приложение падает!

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

Metawidget — инструмент, генерирующий Java формы

Время на прочтение3 мин
Количество просмотров3K
Привет читатель.
Хочу рассказать про инструмент для Java на который я недавно наткнулся и не нашел на хабре ни одного упоминания о нем. Называется он Metawidget и его предназначение — генерировать формы в Java.
Читать дальше →

NetBeans IDE 7.0 Beta 2

Время на прочтение1 мин
Количество просмотров1.5K
image
На мой взгляд, в этой версии следующие изменения являются основными:
1) Перенос строк. То что долго многие ждали.
2) Поддержка Git 1.7.x
3) Поддержка HTML5
4) Улучшено определение изменений файлов другими программами.
5) PHP рефакторинг.

Полный список новшевств.
Все фичи 7 версии
Скачать NetBeans IDE 7.0 Beta 2

ЖЖ в БД (скрипт на Groovy)

Время на прочтение3 мин
Количество просмотров2.7K
В продолжении темы маленьких скриптов на groovy — еще один.
Предыдущие: Большие письма в Gmail, Упражнение на сложение (LATEX)

Новый скрипт показывает основы работы с XML и базой данных в Groovy. В качестве задачи выберем сохранение нашей уютной ЖЖшки из XML в базу данных.
Зачем это делать? — SQL нам расскажет всё о нашем (или чужом) ЖЖ — темы, комменты, таги — насколько фантазии хватит собирать статистику

Сначало нам надо скачать ЖЖ в XML.
Это сделает чужая утилита — ljdump
Придется установить Питон, открыть IDLE (Python GUI), загрузить туда утилиту и запустить. Всё спросит она сама.

После её пробега у вас будет директория с файлами LXXX — посты и CXXX — комменты.

А на эти XMLи мы и запустим мой скрипт.
В этом виде он использует pure Java, embedded базу данных Hypersonic (HSQLDB), но можно подключиться к любой, конечно же. Только убедитесь, что JDBC driver у вас в classpath.

Парсинг и работа с БД такого типа годятся только для скриптов и небольших программ. В энтерпрайзе никто не будет загружать весь XML в память (а будут использовать SAX), и никто не будет напрямую слать SQL (а будет Connection Pool, prepared statement, batch, Hibernate какой нибудь).

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

Кеширование в Spring Framework 3.1

Время на прочтение3 мин
Количество просмотров30K
Я могу ошибаться, но мне кажется что всем хорошо известный Spring Framework достиг своей вершины к версии 2.5 (когда внедрили активное использование аннотаций) и дальше идет по сути дела «полировка» — даже major-релиз 3.0 не сильно отличается от 2.5. Тоже самое можно сказать и про грядущий 3.1 — небольшие улучшения, фишечки — но не более того. Однако одна «фишечка» в 3.1 показалась мне особенно интересной — это кеширование.
image
Читать дальше →

Программирование по контракту в Java, с использованием библиотеки COFOJA от Google

Время на прочтение9 мин
Количество просмотров7.5K
image

Для чего используется



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

Как и любая другая проверка, она позволяет повысить надежность программы, гарантируя корректность данных на входе и выходе. Либо, понизить (при некорректном использовании).

В отличие от assert’ов, проверки выполняются в runtime, т.е., непосредственно во время выполнения программы и присутствуют в релизной версии.

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

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

«Hello World» BPMN2.0 или введение в Activiti

Время на прочтение12 мин
Количество просмотров35K
В данной статье я хочу рассмотреть пример создания простого приложения с использованием движка Activiti.

Activiti” — это легковесная платформа (framework) для работы с бизнес-процессами (Business Process Managment), адаптированная для деловых людей, разработчиков и системных администраторов. Платформа основана на быстром и надёжном java-движке BPMN2-процессов. Проект OpenSource’ный и распространяется под лицензией Apache. Activiti может запускаться либо как часть вашего java-приложения, либо самостоятельно на сервере, кластере или облаке. Кроме того, она прекрасно интегрируется со Spring’ом.
Читать дальше →

JNA: callbacks to Java

Время на прочтение2 мин
Количество просмотров25K
Мне понадобилось подключить наш проект на Яве к старой библиотеке на C. Одной из проблем было, что эта библиотека требует регистрации колбеков (callbacks), которые вызывает по ходу работы, и которые, я хотел бы имплементировать на стороне Явы.

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

Этот пример и хочу показать — может кому то приходится.

Начинаем со стороны C:

my.h
typedef  void (*callback)(char *, char*);

int myfunc(char *);

void registerCallback(callback myc);


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

Google упрощает контрактное программирование

Время на прочтение1 мин
Количество просмотров2.6K
Google выпустил открытую библиотеку Contracts for Java, которая упрощает реализацию методов контрактного программирования в Java. С помощью библиотеки Contracts for Java предусловия, постусловия и инварианты можно добавлять в Java как булевые выражения внутри аннотаций.

Как сказано в официальном анонсе, библиотека разработана двумя программистами Google в свободное от основной работы время (20% на личные проекты) и основана на Modern Jass и сделана под впечатлением от языка Эйфель, в котором впервые был реализован метод контрактного программирования.
Читать дальше →

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

Java Logging: история кошмара

Время на прочтение13 мин
Количество просмотров132K

Вступление


Тернист и извилист путь Java-платформы к правильному способу записи строчек в лог-файлы. История logging в Java довольно познавательна в плане изучения особенностей Open Source, в том числе его взаимодействия с корпорациями и единичными программистами. Я собираюсь рассказать столько, сколько возможно, об истории развития Java logging, а также о том, к чему все пришло и как жить дальше.
Вперед и с песней!

18 февраля, СПб — Java Tech Day 2011

Время на прочтение2 мин
Количество просмотров1K
imageВот сидишь так за компом, пересматриваешь фотки с конфы и вдруг понимаешь, что следующая конференция SUN (Oracle/Java) Tech days должна быть совсем не за горами, где-нибудь в апреле или может быть марте. Судя по прошлогоднему опыту, зарегистрироваться можно было еще в январе. Решил испытать судьбу и поискать какую-нибудь информацию. Вообщем вот она, теперь перед вами (скопировано с сайта):

«18 февраля 2011 года в Санкт-Петербурге состоится специализированная конференция для Java разработчиков JavaTechDay 2011. Конференция проходит под патронажем корпорации Oracle, которая продолжает добрую традицию конференций SunTechDays в Петербурге. JavaTechDay 2011 пройдет в конферец зале гостиницы Холидей Инн Московский Ворота по адресу Санкт-Петербург, Московский проспект, 97а. В конференции примут участие ведущие инженеры компании Oracle из США, Англии и Санкт-Петербурга, а также Java разработчики из других компаний.

Приняв участие в мероприятии, вы узнаете о планах компании Oracle по развитию технологий JavaSE, JVM, JavaEE, JavaME, Embedded Java, JavaFX, об улучшении прозводительности Java, решении часто возникающих сложностей и конечно сможете пообщаться с коллегами по цеху.

Участие в конференции бесплатное, требуется предварительная регистрация.
До встречи на JavaTechDay 2011!»

Это не все! :)
Читать дальше →

Garbage Collection наглядно

Время на прочтение10 мин
Количество просмотров288K
В последнее время я работаю с клиентами над вопросами настроек JVM. Смахивает ситуация на то, что далеко не все из разработчиков и администраторов знают о том, как работает garbage collection и о том, как JVM использует память. Поэтому я решил дать вводную в эту тему с наглядным примером. Пост не претендует на то, чтобы покрыть весь объем знаний о garbage collection или настройке JVM (он огромен), ну и, в конце концов, об этом много чего хорошего написано уже в Сети.
Читать дальше →

Знаешь ли ты JAVA, %username%? Часть вторая

Время на прочтение5 мин
Количество просмотров51K
JAVA Evil EditionВ начале января я написал пост с интересными тестовыми задачками по Java. Он вызвал достаточно большой интерес, интересные задачки еще остались, поэтому продолжим.

Сразу отвечу на некоторые вопросы, ответы на которые могли затеряться в комментах.
Во-первых, спрашивали, что почитать по теме. Очень рекомендую эту книжку. На русском не встречал, но читается она почему-то гораздо легче большинства книг по программированию, так что для большинства это не должно стать проблемой. Во-вторых, спрашивали где взять таких задачек. Тут что-то конкретное не посоветую, задачи из разных источников, в том числе некоторых нефришных наборов тестов, поэтому как вариант можно обратить внимание на источники, ссылки на которые есть в комментах к первой части статьи.

Так получилось, что в данную часть попали более легкие задачи, так что результаты должны быть лучше. Итак, очередной тест под хабракатом (Осторожно, во второй половине ответы и пояснения).
Читать дальше →

Способ проксирования JPA сущностей для клиента (борьба с lazy initialization)

Время на прочтение2 мин
Количество просмотров5.9K
Недавно, увидев на Хабре пост про борьбу с lazy initialization в Hibernate, я заинтересовался – прочитал сам пост и ждал пока наберется побольше комментариев – не предложит ли кто-нибудь способ, которым данную проблему решили мы. Ничего похожего я не увидел. Способ под катом.
Читать дальше →

Немного мыслей о будущем платформы Java

Время на прочтение3 мин
Количество просмотров11K
Захотелось попробовать развить здесь одну любопытную дискуссию, которая была начала тема в комментах к будущему подкасту Радио-Т (кстати сами подкасты бывают иногда интересны), но тут же заглохла из-за отсутствия кворума.

Дискуссия о, собственно, будущем Java как языка, и как платформы.
Если вкратце — что могут сделать те, кто направляет развитие Java, чтобы удержать ее на плаву в течении долгого времени. По ссылке выше обсуждение пошло было в сторону того, почему в лабораториях Microsoft Research более или менее активно разрабатываются альтернативные языки для платформы .NET (такие, например, как F#), а вот Sun/Oracle с такой поддержкой альтернативным языкам отстают.
Читать дальше →

Spring Framework без XML… совсем!

Время на прочтение15 мин
Количество просмотров53K
В свете нынешней эпохи определения всего и вся аннотациями предлагаю вам статью о Spring Framework и возможностях аннотирования проектов. Прим. перев.
В начале был EJB 2.1, с его огромным количеством XML-файлов везде где только можно. Не будет особым преувеличением, если сказать, что на одну строку кода для бизнес-логики нужно было написать по крайней мере 10 строк кода от фреймворка и две страницы XML. Локальные и удалённые интерфейсы, ручной JNDI-lookup, многоуровневые try-catch, проверки на RemoteException… enterprise, в-общем. Даже инструменты соответствующие были для автоматической генерации всей этой «кухни».
Читать дальше →

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