Обновить
512K+

Java *

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

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

Улучшаем интерфейс Java-приложения

Время на прочтение27 мин
Охват и читатели102K
Добрый день, Хабражитель!

Достаточно много различной раздробленной информации существует на тему работы со Swing и графикой в просторах интернета, а также на тему интерфейсов Java-приложений. Кто-то твердит о том, что Java морально устарела и десктоп-приложения на Java не имеет смысла писать, кто-то с пеной у рта доказывает обратное. В то же время работа идет, приложения пишутся и встают очередные проблемы. В предыдущей статье я уже привел небольшой список полезных библиотек для исключительных случаев, но нередко бывает так, что никакая сторонняя библиотека не позволяет сделать то, что Вам нужно. Именно в такой момент стоит задуматься о возможной необходимости написания своих компонентов.

Итак, в данном посте я постарался изложить самые важные и значимые на мой взгляд моменты по работе со Swing и графикой — как создавать компоненты, как стилизовать интерфейс, чего делать не стоит и многое другое…

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

Как Ларри Пейдж изучал Java

Время на прочтение2 мин
Охват и читатели3.8K
Нынешний руководитель Google Ларри Пейдж во времена студенческой юности не был выдающимся программистом. Стивен Леви рассказывает об истории создания программ Backrub и PageRank в своей книге "In the Plex" (цитаты: 1, 2, там же ссылка на первую часть книги, которая лежит в открытом доступе).

Пейдж никак не мог добиться нормальной работы краулера и индексатора из-за большого количества багов в коде и ещё по причине использования нового и нестабильного языка Java. Система всё время падала и не годилась для реальной работы. В архивах ньюс-группы comp.lang.java за 1996 год сохранились вопросы Пейджа. Он пытается выяснить у знающих людей, как назначить User-Agent для заголовка HTTP.
Читать дальше →

jBitTorrent API 1.0, исправленный и дополненный

Время на прочтение1 мин
Охват и читатели3.3K
Недавно я описывал библиотеку jBitTorrent для Java, с помощью которой можно работать с файлами по протоколу BitTorrent.
В той же статье был блок описания проблем, встречанных при использовании этой библиотеки, ведь она не обновлялась еще с 2009 года.
Пользователь sadyjka предложил мне самому пофиксить эти баги, и вот я нашел немного времени для этого. Исправлены следующие проблемы:

  • Недочет при добавлении множественных файлов в генерируемый торрент-файл
  • Ошибка при закачке файлов


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

Признаюсь честно, с этим кодом мне пришлось несколько суток разбираться, поэтому я мог немножко наговнокодить.
Проблему в printData я не стал убирать, ибо метод также не критичен, а просмотрев исходник, увидел, что идет доступ к списочным элементам, которые в том классе не использовались.
Извиняюсь, что не на SourceForge лежат мои фиксы, ибо автор оказался весьма занятым.

Исходники
JAR

UPD
По просьбе debacle сделал репозиторий на GitHub.

JavaOne / Oracle Develop: общие впечатления

Время на прочтение3 мин
Охват и читатели2.9K
12-13 апреля в Российской Академии Наук, впервые в Москве, проходила известная конференция Java и Oracle разработчиков — JavaOne / Oracle Develop. Побывал на обоих днях и хотел бы поделиться своим мнение о докладах, на которых удалось поприсутствовать, общих впечатлениях и различных бытовых мелочах
Читать дальше →

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

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

image

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

JavaOne: слияние Java

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

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

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

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

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

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

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

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

Время на прочтение5 мин
Охват и читатели61K
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 мин
Охват и читатели39K
В данном топике речь пойдет о причинах, вызывающих длинные паузы сборщика мусора и о способах борьбы с ними. Рассказывать я буду о CMS (low pause), так как на данный момент это наиболее часто используемый алгоритм для приложений с большой памятью и требованием малой задержки (low latency). Описание дается в предположении, что у вас приложение крутится на боксе с большим объемом памяти и большим количеством процессоров.

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

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

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

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

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

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

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

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

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

Время на прочтение10 мин
Охват и читатели122K

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


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

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

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

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

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

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

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

Первая — 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.2K

Проблема


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

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

Время на прочтение6 мин
Охват и читатели71K
Добрый день!

Про утилиту сборки для 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);

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