Обновить
191.91

Java *

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

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

Как бороться с паузами java приложения, не трогая GC

Время на прочтение2 мин
Просмотры4.1K
Сколько раз мне приходилось настраивать GC, чтобы вылечить приложение, у которого время от времени случается приступ, и оно перестает временно выполнять свои функции. Работа, скажу, не самая занимательная и требует хорошего знания матчасти. В данном топике я опишу какие еще есть способы решения данной проблемы.
Читать дальше →

Делаем релизы с помощью Maven в Java

Время на прочтение8 мин
Просмотры54K

О чем эта статья?


Эта статья о том:
  1. Что такое релиз?
  2. Как нумеруются релизы?
  3. Зачем при релизе нужен бранч?
  4. Почему релиз это больше, чем просто jar (war, ear, zip, etc)?
  5. Что такое maven-release-plugin?
  6. Делаем бранч c помощью release:branch.
  7. Подготовка к релизу с помощью release:prepare.
  8. Выпускаем релиз с помощью release:perform.

Для чтения и понимания этой статьи я рекомендую освежить свои знания по Maven. Многие термины могут быть непонятны без понимания этой технологии.
Читать дальше →

Фашизм в коде. Часть вторая

Время на прочтение4 мин
Просмотры4.1K
imageВ своем предыдущем посте мой коллега попытался расскрыть идею положительного влияния "фашизма" в коде на примере одного из проверочных модулей (чеков). Вместе с примером была предоставлена наша сборка плагина с некоторым расширением. Наша команда разработала ряд новых чеков и упростила установку в Eclipse.
Читать дальше →

Пишем простой UDP BitTorrent-трекер на Netty + MongoDB

Время на прочтение5 мин
Просмотры13K

Введение


В это статье освещается работа UDP Tracker Protocol. Все примеры, приведенные в статье, будут на Java с использованием NIO-фреймворка Netty. В качестве БД взята MongoDB.

Обычно торрент-трекеры работают через протокол HTTP, передавая данные посредством GET-запросов. Работа трекера по протоколу UDP позволяет существенно сократить траффик (более чем в 2 раза), а так же избавиться от ограничения на количество одновременных соединений, которое накладывает протокол TCP.

Ссылка на UDP-трекер в клиенте может выглядеть так: udp://tracker.openbittorrent.com:80/announce, где на месте announce может быть что угодно (либо вообще ничего). А вот указание порта обязательно, в отличие от HTTP трекера.
Читать дальше →

Реализация графического интерфейса как Конечного Автомата

Время на прочтение11 мин
Просмотры10K
Придя в большой проект, использующий в качествe графического интерфейса Swing, я понял, что разобраться в логике и связах между компонентами JDialog или JFrame довольно таки не просто. И всё то время, что я разбирался с этим кодом я пытался найти какое-то универсальное решение, которое бы позволило избежать сложности связей между элементами интерфейса.

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

Выполнение кода по расписанию в Spring Framework

Время на прочтение2 мин
Просмотры28K
Тут приспичило мне периодически запускать некоторый код в небольшом проектике написанном на Spring Framework. Я уж было приготовился по старой памяти (еще со спринга 2.x) к долгому прикручиванию quartz-а и написании кучи конфигов на xml, как оказалось все значительно проще
Читать дальше →

Логирование в Java / quick start

Время на прочтение7 мин
Просмотры252K
В ходе моей работы в компании DataArt я, в числе прочего, занимаюсь менторской деятельностью. В частности это включает в себя проверку учебных заданий сделанных практикантами. В последнее время в заданиях наметилась тенденция «странного» использования логеров. Мы с коллегами решили включить в текст задания ссылку на статью с описанием java logging best practices, но оказалось, что такой статьи в которой бы просто и без лишних деталей на практике объяснялось бы как надо писать в лог на Java, вот так вот с ходу не находится.

Данная статья не содержит каких-то откровений, в ней не рассматриваются тонкости какого либо из многочисленных java logging frameworks. Здесь рассказываю как записать в лог так, чтобы это не вызвало удивления у Ваших коллег, основная цель написания включить ее в список обязательного чтения для практикантов. Если все еще интересно, читайте дальше
Читать дальше →

Создание простейшего сервера с помощью Apache MINA

Время на прочтение4 мин
Просмотры11K
Apache MINAApache MINA — библиотека с открытым исходным кодом для написания клиент-серверных приложений на Java. Последняя на текущий момент версия — 2.0.4 — вышла 14 июня 2011 г.

В этой статье я опишу процесс создания простейшего сервера с использованием этой библиотеки.

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

Структуры данных в картинках. HashMap

Время на прочтение6 мин
Просмотры1.3M
Приветствую вас, хабрачитатели!

Продолжаю попытки визуализировать структуры данных в Java. В предыдущих сериях мы уже ознакомились с ArrayList и LinkedList, сегодня же рассмотрим HashMap.



HashMap — основан на хэш-таблицах, реализует интерфейс Map (что подразумевает хранение данных в виде пар ключ/значение). Ключи и значения могут быть любых типов, в том числе и null. Данная реализация не дает гарантий относительно порядка элементов с течением времени. Разрешение коллизий осуществляется с помощью метода цепочек.

А почему бы и нет?

JavaOne 2011

Время на прочтение1 мин
Просмотры500
Сегодня в Сан-Франциско стартовала JavaOne 2011. Он-лайн трансляция доступна на странице http://www.oracle.com/javaone/live/index.html, есть субтитры на английском.

image

Всего запланировано более 400 выступлений разделённых на 7 треков:
Читать дальше →

Планировщик задач и отправка почты в Grails

Время на прочтение3 мин
Просмотры5.2K
Эта статья расчитана на тех кто уже имеет првое знакомсво с Grails, если же пока этого не случилось, то можете ознакомиться здесь. Теперь к делу. Отправка почты довольно простая и нужная задача, чуть более сложнее реализовать периодическую проверку какого-либо собыитя. А если соеденить эти две задачи получается нормальная задача которая требует определенных временных затрат. Grails — созданный чтобы облегчить нам жизнь освобождает нас от рутинной работы. Для того чтобы реализовать периодическую проверку на события мы будем использовать Quartz (а точнее его плагин под Grails), а для удобной отправки почты плагин Mail Plugin будет в самый раз.
Читать дальше →

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

Использование Facebook Graph API в Java

Время на прочтение6 мин
Просмотры14K
Добрый день, Хаброжители!

Сегодня я расскажу Вам историю собственного велосипеда.
Передо мной стала задача работы с Facebook Graph API в Java, меня интересовали 3 функции: логин, получение информации о пользователе, публикация сообщения на стене.
Работающей библиотеки на Java я не нашёл (или плохо искал), поэтому пришлось изобретать собственный велосипед.
Прочитав о Graph API я начал искать библиотеки, которые мне помогут в укрощении данной API,
пару минут помучив Google я нашёл open-source библиотеку HtmlUnit.

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

Правильный Singleton в Java

Время на прочтение4 мин
Просмотры439K
Уверен, каждый из читателей, знает что такое шаблон проектирования “Singleton”, но не каждый знает как его программировать эффективно и правильно. Данная статья является попыткой агрегирования существующих знаний по этому вопросу.

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

Конфигурирование J2SE и J2EE приложений: стандартные способы и их альтернативы

Время на прочтение8 мин
Просмотры14K
В наше время существует множество вариантов построения Java-приложений и задачи их конфигурирования решаются по разному.
В статье будут рассмотрены техники и особенности конфигурирования J2SE и J2EE приложений с применением стандартных средств JDK, а также альтернативы этим способам.
Читать дальше →

Jython-консоль вашего приложения

Время на прочтение12 мин
Просмотры18K
Расскажу вам как я использую интерактивную консоль Jython для ускорения разработки Bean'ов в поддерживаемом мной приложении.

Суть вопроса


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

По долгу службы пришлось поддерживаю очень древнее приложение с громадной кодовой базой. Хуже всего то, что оно собирается оно от минуты до семи и ещё минуты три стартует. Опять же каждому программисту не сложно представить себе какой ад написать энное количество кода, а затем ловить NullPointerException'ы от внешних сервисов с таким длинным циклом Implement->Compile->Start Deploy->Wait->Smoke->Wait->Test.

Возможен также другой вариант. Есть энное количество кода в классе, который нужно адаптировать под выполнение задачи, близкой уже им выполняемой. А теперь представьте, что этот класс реализован в рамках Java 1.4. Он не работает с Generic'ами, потому что они были добавлены только в Java 1.5. Кроме того программисты, ранее занимавшиеся поддержкой системы, этим активно пользуются и суют в коллекции возвращаемые методами других классов, что не попадя вплоть до анонимных реализаций java.lang.Object.

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

Open Source RIA на Spring Framework'e

Время на прочтение3 мин
Просмотры3.2K

RIA — Rich Internet Application.
Spring Framework — каркас приложения.
Open Source — открытый исходный код. Бери и пользуйся.
О том какое RIA приложение разработано, где можно его посмотреть и взять исходники под хабракатом.

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

Создаём свой Look and Feel — Часть I

Время на прочтение25 мин
Просмотры22K
Добрый день, Хабражитель!

Уже достаточно много было рассказано о Swing и графике, также немного было упомянуто о различных незаурядных возможностях, предоставляемых сторонними библиотеками.

Сегодня же я представлю на Ваш суд «последний рубеж» погружения во все те возможности, которые предлагает нам Swing – создание своего Look and Feel класса, а также всего того, что потребуется по ходу дела.

Сразу скажу — если Вы хотите взяться за написание своего примера, а не просто «подсмотреть» пару интересных моментов — будьте готовы угробить потратить на это дело много времени, если Вы конечно собираетесь выпустить что-то более-менее живое и юзабельное в любых приложениях в качестве «обёртки», а также собираетесь в дальнейшем поддерживать созданный вами LaF.

Но даже если Вы не собираетесь делать свой LaF – советую всё же ознакомиться с содержанием. Уверен Вы найдёте много нового и интересного. И даже, возможно, поймёте в чём был корень той или иной интерфейсной проблемы, которая, вероятно, мучала Вас долгие месяцы и годы.

Tip: Если Вы не ещё не знакомы с графикой и Swing в Java более-менее тесно — советую сперва перечитать несколько статей на тему (к примеру оффициальный туториал, статью по Swing от Skipy или же мои предыдущие вводные статьи).

Итак, подробнее под катом...

Структуры данных в картинках. LinkedList

Время на прочтение4 мин
Просмотры566K
Приветствую вас, хабражители!

Продолжаю начатое, а именно, пытаюсь рассказать (с применением визуальных образов) о том как реализованы некоторые структуры данных в Java.



В прошлый раз мы говорили об ArrayList, сегодня присматриваемся к LinkedList.

LinkedList — реализует интерфейс List. Является представителем двунаправленного списка, где каждый элемент структуры содержит указатели на предыдущий и следующий элементы. Итератор поддерживает обход в обе стороны. Реализует методы получения, удаления и вставки в начало, середину и конец списка. Позволяет добавлять любые элементы в том числе и null.

Прочитать чуть больше

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