Обновить
256K+

Java *

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

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

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

Время на прочтение5 мин
Охват и читатели21K
Привет, %username%.

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

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

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

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

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

Сегодня я опять постараюсь привлечь Ваше внимание к некоторым сторонам и тонкостям работы с графикой в 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.5K
В новой версии библиотеки, кроме обычных исправлений ошибок, содержится большое количество изменений, связанных с парсингом и обработкой файлов 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.8K
Часто мне приходилось слышать, что кто-то послушал лекцию или прочитал статью про юнит-тесты, вроде как всё понял; решил сам попробовать — и ничего не получилось.

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

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

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

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

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

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

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

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

image

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Запускалка


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

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

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

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

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

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

Не используйте Java7 ни для чего

Время на прочтение1 мин
Охват и читатели11K
Java 7 вышла не так давно, но за 5 дней до её релиза было обнаружено несколько ужасных ошибок в горячей оптимизации циклов, которая включена по умолчанию и приводит Java Virtual Machine к краху (в лучшем случае).

Эти ошибки ([1],[2],[3]) заметили пользователи и разработчики Apache Lucene/Solr ([4],[5]). Их обещали устранить в Java 7 Update 2 ([6]).
Замечание: эти ошибки также могут проявляться в Java 6, если включён один из флагов оптимизации: -XX:+OptimizeStringConcat или -XX:+AggressiveOpts у JVM.

Итог: не используйте Java 7 ни для чего, за исключением тех случаев, когда ваша программа не содержит циклов.



Upd thx: OLS, WebSpider.

the Da Vinci Machine Project в Java 7 и борьба с велосипедами

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

   Совсем недавно вышла ожидаемая многими Java 7. К сожалению, многих разочаровал состав нововведий, так как в него не попали различные очень ожидаемые вкусности вроде Project Lambda. Однако нововведений всё же много и сегодня я хотел бы немного остановиться на одном из важнейших — the Da Vinci Machine Project, который позволяет пользоваться динамическими языками на JVM более эффективно. Если говорит точнее, то рассматривать мы будем одну из частей the Da Vinci Machine Project — method handle. До конца проникнуться концепциями этой части языка я ещё не успел, но большинство людей вообще не понимают, зачем оно надо :) В статье я рассмотрю один use case, который Java-программистам знаком не по наслышке и родил, думаю, наибольшее число велосипедов ever. Он, конечно, касается перегрузки методов и передачи параметров по интерфейсу.
Читать дальше →