1. Обзор
Когда мы говорим об инструментах отчетности
, многие программы охватывают эту область. Однако большинство из них представляют собой полноценные платформы Business Intelligence
или облачные сервисы
.
Но что произойдет, если мы просто хотим добавить некоторые функции отчетности в наше приложение в виде библиотеки? Здесь мы рассмотрим некоторые инструменты отчетности Java,
хорошо подходящие для этой цели.
В основном мы сосредоточимся на этих инструментах с открытым исходным кодом:
РОЖДЕНИЕ
Отчеты Джаспера
Пентахо
Кроме того, мы кратко разберем следующие коммерческие инструменты:
FineReport
Отчет Logi
(ранееJReport
)Сообщить о мельнице
2. Разработка отчетов
В этом разделе мы рассмотрим, как мы можем визуально создавать отчеты и играть с нашими данными. Обратите внимание, что в этой части мы будем ссылаться только на инструменты с открытым исходным кодом.
2.1. Визуальные редакторы
Все три инструмента включают редактор WYSIWIG с возможностью предварительного просмотра отчетов.
BIRT Report Designer
и Jaspersoft Studio
— это инструменты, созданные на основе Eclipse RCP . Это хороший момент для большинства из нас, разработчиков Java, поскольку мы, возможно, знакомы со средой Eclipse. В отличие от них, Pentaho Report Designer
визуально плохо состарился .
Кроме того, в Jaspersoft Studio
есть дополнительная интересная особенность : мы можем публиковать наши отчеты непосредственно на их сервере отчетов Jasper
(системе управления отчетами).
2.2. Наборы данных
Как и во всех инструментах отчетности, мы можем получать наборы данных, запрашивая источник данных
(см. ниже). Затем мы можем преобразовать их в поля отчета, создать вычисляемые поля или использовать формулы агрегирования.
Кроме того, интересно сравнить , как мы можем управлять несколькими наборами данных , поскольку нам может понадобиться несколько из них, если наши данные поступают из разных запросов или даже из разных источников данных
:
BIRT
предлагает самое простое решение, поскольку мы можем иметь несколько наборов данных в одном отчете.- С
Jasper Reports
иPentaho
нам нужно каждый раз создавать отдельный подотчет, что может быть довольно сложно.
2.3. Диаграммы и визуальные элементы
Все инструменты предоставляют простые элементы, такие как фигуры и изображения, а также все виды диаграмм: линии
, области
, круговые
диаграммы , радар
, кольцо
и т. д. Все они также поддерживают кросс-таблицы.
Однако Jasper Reports
предоставляет самую богатую коллекцию визуальных элементов . Он добавляет к приведенному выше списку карты
, спарклайны
, пирамиды
и диаграммы Ганта
.
2.4. Отчеты по стилю
Теперь давайте сравним расположение и размер элементов на странице:
- Все инструменты обеспечивают позиционирование пикселей
BIRT
иPentaho
также обеспечивают позиционирование, подобное HTML (табличное, блочное, встроенное).- Ни один из них не поддерживает CSS-подобные flexbox или систему сетки для управления размером элементов .
Кроме того, когда нам нужно управлять несколькими отчетами, мы можем захотеть использовать одну и ту же визуальную тему:
Jasper Reports
предоставляет файлы тем с синтаксисом XML-CSS.BIRT
может импортировать таблицы стилей CSS в систему дизайна.- С
Pentaho
мы можем добавлять таблицы стилей CSS только в заголовок страницы. Поэтому их сложно смешать с внутренней системой дизайна.
3. Рендеринг отчетов
Теперь, когда мы увидели, как создавать отчеты, давайте сравним, как мы можем визуализировать их программно.
3.1. Монтаж
Во-первых, отметим, что все инструменты спроектированы таким образом, чтобы их можно было легко встроить в проект Java .
Для начала вы можете ознакомиться с нашими специальными статьями о BIRT и Jasper Reports . Для Pentaho есть страница справки и бесплатные примеры кода .
Далее для каждого из этих инструментов мы подключим механизм отчетов к данным нашего приложения.
3.2. Источник данных
Первый вопрос, который мы должны задать: как мы можем подключить механизм отчетов к нашему источнику данных проекта?
Jasper Reports
: мы просто добавляем его как параметр методаfillReport
Решение BIRT
для этого немного сложнее: мы должны изменить наш отчет, чтобы установить атрибуты источника данных в качестве параметров.- У Pentaho здесь есть большой недостаток : если мы не купим их коммерческое программное обеспечение
PDI ,
нам придется использовать источник данных JNDI , который сложнее настроить .
Говоря об источниках данных, какие типы поддерживаются?
Все три инструмента поддерживают наиболее распространенные типы:
JDBC
,JNDI
,POJO
,CSV
,XML
иMongoDB .
REST API
является обязательным требованием для современных проектов, однако ни один из них не поддерживает его изначально.с
BIRT
мы должнынаписать сценарий Groovy
Для Jasper Reports
требуется дополнительный бесплатный плагинс
Pentaho
мы должнынаписать сценарий Groovy
или приобрести коммерческое программное обеспечениеPDI .
Файлы JSON изначально поддерживаются
Jasper Reports
иPentaho
, но дляBIRT
потребуется внешняя библиотека парсера Java.Мы можем найти полный список сравнения в этой матрице
3.3. Параметры и настройка среды выполнения
Поскольку мы подключили наш отчет к нашему источнику данных, давайте отобразим некоторые данные!
Теперь важно, как получить наши данные о конечном пользователе. Для этого мы можем передать параметры методу рендеринга. Эти параметры должны были быть определены при разработке отчета, а не во время выполнения. Но что мы можем сделать, если, например, наш набор данных основан на разных запросах в зависимости от контекста конечного пользователя?
С Pentaho
и Jasper Reports
сделать это просто невозможно , так как файл отчета бинарный и нет Java SDK для их модификации. Для сравнения, отчеты BIRT
представляют собой обычные XML-файлы . Более того, мы можем использовать Java API для их изменения, поэтому очень легко настроить все во время выполнения.
3.4. Форматы вывода и клиенты Javascript
К счастью, большинство распространенных форматов поддерживаются всеми инструментами: HTML, PDF, Excel, CSV, обычный текст
и RTF
. В настоящее время мы также можем спросить, как мы можем интегрировать результат отчета непосредственно в наши веб-страницы. Однако мы не будем упоминать грубое включение визуализатора PDF.
- Лучшее решение — использовать клиенты
Javascript
для визуализации отчетов непосредственно в HTML-элементе. Для BIRT клиентом Javascript являетсяActuate JSAPI ,
а
дляJasper Reports
мы должны использоватьJRIO.js.
Pentaho
не предоставляет ничего, кроме интеграции с iFrame. Это решение работает, но может иметь серьезные недостатки
3.5. Автономные инструменты рендеринга
Помимо интеграции нашего отчета в веб-страницу, нас также может заинтересовать готовый сервер рендеринга. Каждый инструмент предлагает свое решение:
BIRT Viewer
— это упрощенный образец веб-приложения для выполнения отчетовBIRT
по запросу. Он с открытым исходным кодом, но не включает функции управления отчетами.- для
Pentaho
иJasper Report
существуют только коммерческие программные пакеты
4. Статус и активность проектов
Сначала несколько слов о лицензиях. BIRT
находится под лицензией EPL
, Jasper Reports
— под LGPLv3
, а Pentaho
— под LGPLv2.1
. Таким образом, мы можем встраивать все эти библиотеки в наши собственные продукты, даже если они коммерческие.
Затем мы можем спросить себя, как эти проекты с открытым исходным кодом поддерживаются и активно ли сообщество:
Jasper Reports
имеет хорошо поддерживаемый репозиторий со стабильной средней активностью его редактора TIBCO Software.- `` Репозиторий
BIRT
продолжает поддерживаться, но его активность очень низкая с 2015 года, когда OpenText приобрела свой редактор Actuate. - Точно так же активность репозиториев
Pentaho
очень низкая с момента приобретения Hitachi-Vantara в 2015 году.
Мы можем подтвердить это, используя тренды Stackoverflow. Самая низкая популярность у BIRT
и Pentaho ,
но умеренная у Jasper Reports
.
Популярность всех трех инструментов отчетности Java за последние 5 лет снизилась, хотя на данный момент они остаются стабильными. Мы можем объяснить это появлением предложений Cloud и Javascript.
5. Коммерческие инструменты отчетности Java
Помимо решений с открытым исходным кодом, есть также некоторые коммерческие варианты, о которых стоит упомянуть.
5.1. Прекрасный отчет
Fine Report
изначально был разработан для работы в качестве автономного сервера. К счастью, мы можем включить его как часть нашего проекта, если захотим его использовать. Мы должны вручную скопировать все файлы JAR и ресурсы в нашу WAR, как описано в их процедуре .
После этого мы можем увидеть инструмент Платформа принятия решений , доступный в виде URL-адреса в нашем проекте.
По этому URL-адресу мы можем выполнять отчеты непосредственно в предоставленном веб-представлении, iFrame
или с помощью их клиента Javascript. Однако мы не можем генерировать отчеты программно.
Еще одним огромным ограничением является целевое время выполнения. Версия 10 поддерживает только Java 8 и Tomcat 8.x.
5.2. Отчет Logi (ранее JReport)
Как и Fine Report, Logi Report был разработан для работы в качестве автономного сервера, но мы можем интегрировать его как часть нашего существующего проекта WAR. Таким образом, мы столкнемся с тем же ограничением, что и с Fine Report
: мы не можем генерировать отчеты программно .
В отличие от FineReport. однако Logi Report поддерживает почти все контейнеры сервлетов и Java 8–13.
5.3. ReportMill Reporting
Наконец ,
стоит упомянуть ReportMill, потому что мы можем легко встроить его в каждое Java-приложение . Кроме того, как и BIRT ,
он очень гибкий: мы можем настраивать отчеты во время выполнения, поскольку они представляют собой простые файлы XML .
Однако сразу видно, что ReportMill устарел, а также имеет плохой набор функций по сравнению с другими решениями.
6. Заключение
В этой статье мы рассмотрели некоторые из наиболее известных инструментов отчетности Java и сравнили их функции.
В заключение мы можем выбрать один из этих инструментов создания отчетов Java в зависимости от наших требований:
Мы выберем BIRT :
- Для простой библиотеки для замены существующего самодельного решения
- За наибольшую гибкость и высокий потенциал настройки
Мы выберем Jasper Reports :
- Если нам нужна библиотека отчетов, совместимая с полноценной системой управления отчетами
- Если мы хотим сделать ставку на лучшую долгосрочную эволюцию и поддержку