Перейти к основному содержимому

Инструменты отчетности Java: сравнение

· 8 мин. чтения

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 :

  • Если нам нужна библиотека отчетов, совместимая с полноценной системой управления отчетами
  • Если мы хотим сделать ставку на лучшую долгосрочную эволюцию и поддержку