Обновить
171.38

Java *

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

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

Какие бывают типы OutOfMemoryError или из каких частей состоит память java процесса

Время на прочтение3 мин
Количество просмотров210K
Если вы словили OutOfMemoryError, то это вовсе не значит, что ваше приложение создает много объектов, которые не могут почиститься сборщиком мусора и заполняют всю память, выделенную вами с помощью параметра -Xmx. Я, как минимум, могу придумать два других случая, когда вы можете увидеть эту ошибку. Дело в том, что память java процесса не ограничивается областью -Xmx, где ваше приложение программно создает объекты.

image

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

JavaOne: слияние Java

Время на прочтение5 мин
Количество просмотров2.8K
Как вы все знаете, вчера прошел первый день долгожданного JavaOne. Стоить заметить, что в Москве данное мероприятие проходит впервые, чему я несказанно рад. Было много разных интересных и полезных докладов, но всех больше мне понравилась секция про слияние HotSpot и JRockit. Во-первых, я мало что знал про JRocket, во-вторых, эту новость я слышал впервые, а в докладе было довольно много подробностей. Презентации выложат на официальном сайте мероприятия только через две недели, поэтому я все таки решил пересказать услышанное в вольном исполнении. Тем более по комментариям к одному из моих предыдущих постов, я так понял, что на хабре не очень много людей знакомых с JRockit, так что, думаю, топик будет интересен хабрасообществу.
image
Читать дальше →

Расширяем возможности Java-приложения

Время на прочтение11 мин
Количество просмотров19K
Здраствуй, Хабражитель!

Вот уже несколько лет проработав над разными десктопными Java-приложениями и в очередной раз копаясь в своих залежах полезных библиотек я понял, что настал момент немного структурировать всю накопившуюся коллекцию и выкинуть лишнее. Заодно, захотелось выделить из нее наиболее редкие экземпляры и дописать небольшие пояснения к ним (что, где и как работает), чтобы при необходимости быстро и легко использовать нужную часть. Собственно информацией о некоторых особо выделяющихся библиотеках из коллекции мне и захотелось поделиться с Вами — вдруг кому-то это окажется интересным или даже полезным.

Итак, сегодня я приведу здесь библиотеки, которые могут Вам помочь решить часто возникающие вопросы вроде «Как сделать это на Java?» по разным узким направлениям разработки.

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

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

Новый синхронизатор Phaser

Время на прочтение5 мин
Количество просмотров59K
Phaser (Этапщик) — мощная и гибкая реализация паттерна синхронизации Барьер. Включен в JDK 7 в составе пакета java.util.concurrent.

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

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

True Java Elastic Cloud @ JavaOne — закрытый beta-test

Время на прочтение3 мин
Количество просмотров1.1K
Java Elastic Cloud Как и все русскоязычные разработчики на языке Java, мы с интересом ждем конференцию JavaOne, которая будет проходить 12 апреля в Москве. Для нас это мероприятие будет знаковым, т.к. к этому дню мы подготовили beta-версию Jelastic — эластичного облачного решения для Java.
Для кого предназначен Jelatic на данном этапе тестирования: для Java разработчиков использующих Tomcat и MySQL, желающих в один клик деплоить свои приложения в эластичное облачное окружение.

Важными отличительными особенностями Jelastic относительно конкурентов является наличие вертикального масштабирования.
Читать дальше →

Использование BitTorrent в Java: jBitTorrent API

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

Введение



Доброго дня всем читателям!

Недавно в одном проекте мне потребовалось программно скачивать и раздавать торренты, а также впоследствие создавать новые торрент-файлы к уже скачанным данным. Естественно, изобретать велосипед очень не хотелось, и я решил посмотреть в поисковике, что же есть в нише BitTorrent-библиотек для Java.
Хочу сказать, что выдача меня очень расстроила. Всего упоминалось лишь несколько реализаций, да и те были уже давно не обновляемые. Stackoverflow подсказал следующие:



Теперь пройдемся по каждому из них.
Читать дальше →

Как бороться с паузами GC

Время на прочтение6 мин
Количество просмотров38K
В данном топике речь пойдет о причинах, вызывающих длинные паузы сборщика мусора и о способах борьбы с ними. Рассказывать я буду о CMS (low pause), так как на данный момент это наиболее часто используемый алгоритм для приложений с большой памятью и требованием малой задержки (low latency). Описание дается в предположении, что у вас приложение крутится на боксе с большим объемом памяти и большим количеством процессоров.

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

Многопоточность в Java: ExecutorService

Время на прочтение2 мин
Количество просмотров250K
В Java 5 было добавлено много вещей для организации многопоточности и особенно касаемо организации параллельного доступа. В этой и последующих статьях мы пройдемся по некоторыми из них.
ExecutorService и ScheduledExecutorService будут рассмотрены в этой статье

JBFD: декомпилятор из Brainfuck в Java

Время на прочтение2 мин
Количество просмотров4.1K
Кто-то когда-то сказал: «Возьмите несколько произвольных латинских букв, допишите перед ними J, и вы получите очередную Java-технологию». В этой статье речь пойдет о технологии JBFD, что означает Java BrainFuck Decompiler. Технология еще достаточно молодая (от силы 3 часа), так что не судите строго.

Идея создания декомпилятора возникла не случайно. Всему виной большое количество статей по BrainFuck в Интернете вообще и на Хабре в частности. Интерпретаторов этого замечательного языка существует огромное множество, но вот средств для отладки BF кода мне удалось найти крайне мало.

А что если преобразовать код с BF на свой «родной» язык и воспользоваться всеми преимуществами своей любимой IDE для обнаружения трудноуловимых ошибок, покрытия кода тестами, оптимизации и т.д.? Все это и много другое становится возможным с JBFD.
Читаем, скачиваем, пользуемся...

Архитектура и платформа проекта Одноклассники

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

Архитектура и платформа проекта Одноклассники


В этом посте расскажем о накопленном за 5 лет опыте по поддержанию высоконагруженного проекта. Надеемся, что коллегам-разработчикам будет интересно узнать, что и как мы делаем, какие проблемы и трудности у нас возникают и как мы справляемся с ними.

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

Презентация Liferay на JavaOne 2011

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

Кому интересно — на предстоящей JavaOne в Москве проведу презентацию Liferay (ИМХО лучший портал на Java) — что он умеет, что дает пользователям и как помогает программистам.
Презентация состоится 13 апреля в 18:30 в «Синем Зале».
Читать дальше →

Сбор хабровчан — кто едет на JavaOne и/или App Developer Days (2011)?

Время на прочтение1 мин
Количество просмотров670
Предлагаю в этой теме отписываться тем, кто едет на какую-то (или обе) из двух указанных конференций, чтобы можно был при желании как-то скооперироваться тем, кто едет из одного города, планирует жить в определенном отеле и пр.

Первая — JavaOne (http://www.oracle.com/ru/javaonedevelop/index.html), 12-13 апреля 2011, в Москве.
Вторая — Application Developer Days (http://addconf.ru/), 29-30 апреля 2011, в Питере.

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.8K
В продолжении темы маленьких скриптов на 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 какой нибудь).

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

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