DynamicReports против DynamicJasper
Фон
Разработка приложения Java EE с DynamicReports, и пока это достаточно для меня. Недавно я нашел DynamicJasper, и я хотел бы знать, может ли это быть лучшим выбором.
Я вижу, что DynamicReports может иметь лучшую поддержку и сообщество.
Вопросы
- Каковы были ваши опыты с обеими библиотеками?
- Что предлагает более функциональные возможности?
- Каковы сильные и слабые стороны друг друга?
Спасибо!
Ответы
Ответ 1
Этот вопрос затрагивает несколько способов создания отчетов с использованием JasperReports API (прямо или косвенно):
DynamicReports (DR) и DynamicJasper (DJ) - это два бесплатных инструментальных средства с открытым исходным кодом, которые абстрагируют (и упрощают) общие задачи с API JasperReports. Если вы планируете разрабатывать отчеты программно, эти инструменты могут сократить время разработки.
Пакеты DR и DJ API имеют следующие общие черты:
- Динамический дизайн
- Динамические ширины столбцов
- Стабильный
- Смешать шаблоны iReport с кодом
иРепорт
iReport - это пользовательский интерфейс, который скрывает сложность прямого вызова методов JasperReports. Другими словами, iReport - это причудливый и более дружелюбный способ разработки отчетов, чем кодирование Java-вызовов вручную. Конечный результат тот же: скомпилированный отчет (.jasper).
API JasperReports
API JasperReports предоставляет программистам набор классов Java для создания отчетов на основе бизнес-потребностей. API позволяет, например, создать веб-сайт, который позволяет пользователям выбирать столбцы, которые они хотят в отчете, а затем создавать шаблон отчета "на лету". После того, как шаблон готов, пользователь может запустить отчет, чтобы увидеть результаты.
Одна функция, которой не хватает iReport, - это возможность динамического изменения ширины столбцов. Используя API JasperReports напрямую, программисты могут создать шаблон отчета с оптимальной шириной столбца для набора результатов отчета.
Проблема заключается в том, что API JasperReports чрезвычайно сложный, и его части могут использовать дополнительную документацию.
DynamicJasper
Веб-сайт DynamicJasper отмечает следующие преимущества над API JasperReports:
- Автоматическая компоновка
- штрихкоды
- Чистая поддержка Excel.
- Поддержка Struts и Grails
Примеры API демонстрируют хорошую работу объектно-ориентированных принципов. Веб-сайт предлагает множество примеров, и Javadocs редко комментируются. Форум более активен, чем DynamicReports.
Обновление: Проект теперь находится на GitHub. Больше нет форума, но вы можете запросить Профессиональная поддержка
DynamicReports
Веб-сайт DynamicReports отмечает следующие преимущества по API JasperReports:
Веб-сайт предлагает множество примеров, но, к сожалению, Javadocs не имеет большого количества комментариев. Кроме того, forum выглядит менее активным, чем JasperReports или DynamicJasper.
Резюме
Если вы довольны DynamicReports, я бы сказал, придерживайтесь его, иначе попробуйте DynamicJasper.
Ответ 2
Я потратил несколько дней на использование и оценку различных параметров отчетности выше, и подумал, что добавлю 2 цента в микс.
Я создал тот же отчет (прибыль и убыток) в JRXML, Dynamic Jasper и Dynamic Reports.
Мне было необходимо решение, которое бы хорошо отображалось как в форматах PDF, так и в формате excel и имело возможность обрабатывать динамические столбцы.
Вот что я нашел:
JRXML
Было очень утомительно использовать с iReport и без него. Раньше у меня был опыт использования JRXML, и я до сих пор считал, что это настоящая битва, чтобы отчет корректно отображался в PDF и Excel. Мне пришлось использовать много обходных решений, скрывая и отображая некоторые поля на основе, если это будет PDF или Excel. Динамические столбцы плохо обрабатываются.
Динамическая яшма
Сначала я находил Dynamic Jasper очень хорошим для работы, но имел некоторые проблемы с абсолютным контролем над макетом и добавлением дополнительных элементов управления в отчет. Кажется, что если ваш отчет основан на столбце, он отлично работает. Я не мог понять, как добавить подчиненный раздел в подробный раздел и добавить его в заголовок или нижний колонтитул.
Динамические отчеты
По моему мнению, Dynamic Reports - самый гибкий и простой способ создания динамических отчетов о яшме. Синтаксис прост и интуитивно понятен, и я очень быстро встал и работал. Вы делаете отчет, основанный на столбцах, как Dynamic Jasper, но также имеете возможность отбрасывать компоненты в заголовке, детали или в других областях отчета. Он использует раскладку потока, поэтому вы просто отбрасываете компоненты в отчет и на дисплей в указанном порядке. Экспорт в PDF и Excel был согласован.
Последнее и самое значительное преимущество Dynamic Reports - это поддержка и обновление. DynamicJasper не имеет активности или поддержки на форуме уже более полугода, а DynamicReports не только активно обновляется, но и разработчик (Ricardo Mariaca) активно отслеживает форум и быстро отвечает на вопросы.
Ответ 3
Примерно год назад я встретил ди-джея. Мой опыт работы с диджеем был лучшим, так как было несколько незначительных сбоев, которые нуждались в обходных решениях. Тем не менее, я нашел эти проблемы, когда проект был почти завершен, и поскольку эти обходные пути уже существовали, я продолжал использовать DJ.
Через несколько месяцев я нашел DR и узнал, что DR имеет лучшую структуру, чем DJ. Мой следующий проект определенно будет использовать DR.
Чтобы быть откровенным, я использую серии DJ 3.1.x и не пытаюсь использовать более новую версию. Я также еще не использовал DR еще.
Ответ 4
Я большой поклонник DynamicJasper, но недавно я переключился на DynamicReports 4.0.1 (в то время последняя версия DynamicJasper 5.0.3).
Благодаря значительно лучшему API с точки зрения удобочитаемости и удобства использования DynamicReports обеспечивает гораздо большую гибкость при разработке отчетов "на лету". На его веб-сайте также имеется множество образцов, которые способствуют новым идеям и некоторым учебным пособиям, которые помогут вам начать быстро. Эта ссылка является хорошей отправной точкой.
Единственная проблема, с которой я начал использовать DynamicReports, заключалась в том, что с JasperReports и DynamicJasper я был использован для создания JasperReport сначала (дизайн), а затем передал объект JasperReport вместе с источником данных для метода JasperFillManager.fillReport(...) для создания объекта JasperPrint.
С помощью JasperPrint единственное, что нужно сделать, - установить источник данных до создания метода JasperPrint методом report() toJasperPrint().
Вы можете найти способы использования компоновщика компонентов или любой утилиты в своем исходном коде, чтобы узнать, как использовать специальную функцию.