Обновить
171.01

Java *

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

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

XPath: ускоряем итерацию по NodeList

Время на прочтение5 мин
Количество просмотров16K
При попытке обработки не очень маленького регулярного XML-файла (на самом деле всего лишь около тысячи записей) обнаружил, что итерирование по NodeList вместе с извлечением с помощью XPath начинает существенно тормозить (занимая порядка 2 минут на моём файле), причем тормоза увеличиваются с обработкой каждого следующего узла (node). Эта проблема поднимается также

blog.astradele.com/2006/02/24/slow-xpath-evaluation-for-large-xml-documents-in-java-15

jbwhammie.blogspot.com/2011/02/make-java-xpath-work-on-large-files.html

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

Звук в Java

Время на прочтение2 мин
Количество просмотров14K
Часто в приложениях желательно использовать какие-то вспомогательные звуковые эффекты, например пикнуть динамиком при ошибке или проиграть мелодию на новое письмо.
Не все знают что в любом компьютере имеющем звуковую карту встроена большая библиотека звуков. Все звуковые платы поддерживают воспроизведение звука по стандарту MIDI (см. ru.wikipedia.org/wiki/MIDI) а это 128 обычных и 40 ударных инструментов.

Что такое MIDI — это стандарт на команды управления синтезатором или другими устройствами воспроизведения звука. Т.е. в .mp3, например, хранится оцифрованный звук а в файлах .mid только ноты которые воспроизводит звуковая карта.

Я опубликовал библиотеку для простого доступа к воспроизведению MIDI-звука:

image

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

Правильная проверка XML данных в java-проектах

Время на прочтение5 мин
Количество просмотров20K
Привет, %username%.

В ряде проектов мне потребовалось сравнивать XML данные в тестах.

Действительно, бывает, что результат работы твоего модуля — XML данные. Если это так, то как они генерятся нужно проверять в соответствии с принципами TDD. Я же в свою очередь стараюсь их придерживаться при разработке.

Под катом я постараюсь рассказать о том, как лучше всего, по моему мнению, тестировать генерацию XML в коде. В качестве инструмента сравнения XML я использовал XmlUnit.
Читать дальше →

Углубляясь в Graphics2D

Время на прочтение32 мин
Количество просмотров80K
Добрый день, Хабражители!

Сегодня я опять постараюсь привлечь Ваше внимание к некоторым сторонам и тонкостям работы с графикой в Java. Я уже кратко описал в предыдущей статье некоторые доступные средства и способы создания компонентов и UI, но это лишь вершина айсберга. Именно поэтому я хочу уделить отдельное внимание (и статью) именно работе с графикой. Естественно имеется в виду Graphics2D – Java 3D это большая отдельная тема (возможно о ней еще пойдет речь в дальнейшем, но не сегодня).

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

Начнем с того, что если рассматривать любой компонент с точки зрения MVC – он состоит из 3ех частей:
Model – модель, которая хранит в себе данные о состоянии компонента и на основе которой строится внешний вид
View – непосредственно визуальное отображения компонента
Controller – отвечает за управление компонентом (события от клавиатуры, мыши и прочих устройств ввода)

Фактически, все стандартные компоненты Swing построены по паттерну MVC. К примеру в JButton — ButtonModel отвечает за поведение и состояние кнопки (Controller и Model), а ButtonUI в свою очередь за внешнее её представление (View). В итоге на долю самого класс JButton практически ничего не остаётся. Речь пойдет по большей части о реализации внешнего представления компонентов (View), и если уточнять — о Graphics2D, на основе которого, фактически, рисуется весь интерфейс.

Не буду спорить, что на данную тему есть множество различного материала, но он настолько раздроблен и раскидан по просторам сети, что мне кажется не лишним собрать всё в одном месте и последовательно изложить.

Читать далее...

Вышла новая версия Apache POI 3.8beta4

Время на прочтение2 мин
Количество просмотров3.4K
В новой версии библиотеки, кроме обычных исправлений ошибок, содержится большое количество изменений, связанных с парсингом и обработкой файлов MS Word.
Читать дальше →

Layout без layout'ов

Время на прочтение4 мин
Количество просмотров26K
Библиотека Swing появилась примерно 15 лет назад и все эти 15 лет КАЖДЫЙ кто начинает программировать на Java задаёт один и тот же вопрос:
— Почему я не могу просто добавить кнопки с полями на форму без изучения всех этих LayoutManager'ов?

В стандарной JRE содержится больше десятка классов для компоновки элементов (FlowLayout, GroupLayout и т.п.), постоянно появляются новые компоновщики типа MigLayout но ситуация не улучшается.

Рассмотрим варианты создания форм типа этой:

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

Окна «неправильной» формы, Java 6 & 7 ed

Время на прочтение7 мин
Количество просмотров12K
Симпотичная?

По следам бременских музыкантов


Как, наверное, многие помнят, в прошлом веке (еще во времена Windows 2000), было модно создавать всяческие splash-экраны и миниаппликации в окнах непрямоугольной формы (как и необычные элементы управления).
Писались эти понты на С\С++ с применением WinAPI с использованием т.н. регионов. Дело это было не таким простым, поскольку приходилось не только спотыкаться о косяки и Windows и языка, но и просчет полигонов для отрисовки тоже отпугивал. Поэтому, «нарисовав» одно-два округлых окошка, я отложил эту тему в долгий ящик.
И вот в этот понедельник промелькнула статья «Окна «неправильной» формы», снова обратившая моё внимание к этой теме. Ожидая узнать, что в .NET для этих целей реализованы функции-обёртки WinAPI, был разочарован, увидев описания внешних функций. И тут я, как программист в основном на Java, вспомнил, что, тогда ещё Sun, обещал ввести функции для отрисовки окна произвольной формы.
Читать дальше →

Real-life unit tests

Время на прочтение1 мин
Количество просмотров6.7K
Часто мне приходилось слышать, что кто-то послушал лекцию или прочитал статью про юнит-тесты, вроде как всё понял; решил сам попробовать — и ничего не получилось.

Почему так получается?

По-видимому, причина в том, что юнит-тесты обычно демонстрируют на простых примерах. А в жизни код сложнее. В реальных проектах код использует базы данных, веб-сервисы, код, написанный другими компандами и т.д.

В этом видео на живом примере показано, как писать юнит-тесты для кода с внешними зависимостями.

www.devclub.eu/2011/06/06/asolntsev-real-life-unit-tests

Слайды и пояснения:

Функциональное программирование в Java

Время на прочтение3 мин
Количество просмотров4.6K
Сейчас появляются новые модные языки использующие парадигму функционального программирования. Тем не менее, в обычной Java
можно использовать функции для описания поведения объектов. Причём делать это можно полностью в рамках синтаксиса Java.

Я опубликовал Java-библиотеку позволяющую связывать (binding) объекты через функции (см. https://code.google.com/p/tee-binding/ )

image

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

Первые шаги с Netbeans и Wicket

Время на прочтение4 мин
Количество просмотров7.3K
Доброго времени суток. Недавно пришлось поюзать Java фреймворк по имени Wicket. На великом Хабре искал инфу про нее, но ее оказалось слишком мало и вот решил поделиться. Итак, пошли:
Читать дальше →

Вторая жизнь вместе с Maven

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

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

Здесь я хочу рассказать о том, как в конкретном случае я постарался оттянуть неизбежное и оживить разработку применив для этого сборщик проектов Maven.

Главным достоинством разработанной мною системы, пожалуй, можно назвать то, что небольшим количеством трудозатрат, можно при помощи Maven научить проект, реализованный на любом языке, собираться из отдельных Пакетов, соблюдающих свою версионность и автоматически обновляющихся при сборке проекта. Все что для этого нужно, это утилита командной строки, которая может скомпилировать исходник, а в случае скриптовых языков была бы полезна утилита валидации.

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

Рекурсивно вложенные классы

Время на прочтение1 мин
Количество просмотров4.7K
Только что наткнулся на интересную особенность вложенных классов в Java — их можно вкладывать друг в друга рекурсивно и бесконечно!

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

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

JUnit 4.9 зарелизило

Время на прочтение3 мин
Количество просмотров4.1K
Несколько часов назад на github-е популярного TDD-фреймворка JUnit появилась финальная версия JUnit 4.9. Что же вошло в долгожданный релиз?
Читать дальше →

По следам поста «Быстрая разработка веб-приложений на Java»

Время на прочтение2 мин
Количество просмотров8.5K
image
Мотивом написания данной статьи послужило прочтение поста «Быстрая разработка веб-приложений на Java» и небольшой когнитивный диссонанс, возникший после прочтения и вопрос, который продолжает попрежднему мучать меня — Зачем такие сложности? Если есть WTP!

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

Библиотека рефлексивной генерации Swing-форм

Время на прочтение5 мин
Количество просмотров3.8K
Некоторое время назад мне в голову пришла мысль создать библиотеку для быстрой генерации форм на Java Swing. Расскажу, как я к этому пришел.
Читать дальше →

Знакомство с Netbeans Platform

Время на прочтение4 мин
Количество просмотров24K
Netbeans Platform — это фреймворк основанный на Swing, с помощью которого возможно создание больших десктоп приложений. Одноименное Netbeans IDE созданно, как раз, на базе Netbeans Platform. В нём содержится множество API для более легкой работы с окнами, действиями, файлами и т.п.
Читать дальше →

Быстрая разработка веб-приложений на Java

Время на прочтение7 мин
Количество просмотров132K
Как вы разрабатываете веб-приложение на Java?
После каждого изменения, как вы его запускаете и проверяете? Сколько времени занимает редеплой приложения и рестарт контейнера?

Мне довелось видеть разные варианты: от полной пересборки WAR-файла до использования плагинов для IDE типа MyEclipse, WTP и «коннекторов» для сервлет-контерйнеров. У некоторых из них есть явные недостатки, другие вполне работают — но есть способ проще!

Запускалка


Этот способ разработки позволяет максимально просто и гибко настроить приложение с минимальным временем редеплоя. Вам надо всего лишь написать один простенький Java-класс с main-методом, который запустит сервер Jetty сразу с нужными приложениями (т.н. Embedded Mode).

под катом - примеры кода и обзор альтернативных решений

Вызов Lua скриптов из Java и наоборот

Время на прочтение6 мин
Количество просмотров16K
image
Недавно столкнулся с такой проблемой и был крайне удивлен, что в сети материалов по ней очень мало, учитывая популярность Lua. Как выяснилось, существует довольно много библиотек для работы с Lua-скриптами из java, но все они имеют свои нюансы. Лучше всего, как выяснилось, использовать библиотеку LuaJava от тех же разработчиков, что написали Lua.
Читать дальше →

Akka для Java разработчика (часть 1)

Время на прочтение5 мин
Количество просмотров80K
В последнее время появилось довольно много языков программирования, которые используют для JVM как платформу для выполнения. Одним из наиболее «горячих» тем для обсуждения в последнее время является Scala. В этой статье я не буду рассматривать заслуженно это или нет, просто хочу рассказать как можно использовать средства этого языка используя Java и не написав ни одной строчки на Scala.
Итак, что такое actor и почему akka?

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