Рубрики
Без рубрики

Java Reporting Tools: сравнение

Существует несколько решений для создания отчетов для Java. В этой статье мы сравним самые популярные.

Автор оригинала: Benjamin Caure.

1. Обзор

Когда мы говорим о Инструментах отчетности , многие программы охватывают эту область. Однако большинство из них являются полноценными платформами бизнес-аналитики или облачными сервисами .

Но что произойдет, если мы просто захотим добавить некоторые функции отчетности в наше приложение в качестве библиотеки? Мы рассмотрим здесь некоторые Java reporting tools хорошо подходящие для этой цели.

В основном мы сосредоточимся на этих инструментах с открытым исходным кодом:

Кроме того, мы кратко проанализируем следующие коммерческие инструменты:

2. Разработка Отчетов

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

2.1. Визуальные редакторы

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

BIRT Report Designer и Jaspersoft Studio – это инструменты, построенные на Eclipse RCP . Это хороший момент для большинства из нас, разработчиков Java, поскольку мы, возможно, знакомы со средой Eclipse. В отличие от них, Pentaho Report Designer постарел визуально плохо .

Кроме того, есть еще одна интересная особенность Jaspersoft Studio : мы можем публиковать наши отчеты непосредственно на их сервере Jasper Reports Server (система управления отчетами).

2.2. Наборы данных

Как и во всех инструментах отчетности, мы можем получить наборы данных, запросив источник данных (см. Ниже). Затем мы можем преобразовать их в поля отчета, создать вычисляемые поля или использовать формулы агрегации.

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

  • BIRT предлагает самое простое решение, так как мы можем иметь несколько наборов данных в одном отчете
  • С помощью JasperReports и Pentaho нам нужно каждый раз создавать отдельный вложенный отчет , что может быть довольно сложно

2.3. Диаграммы и визуальные элементы

Все инструменты предоставляют простые элементы, такие как формы и изображения, а также каждый вкус диаграммы: линии , области , пироги , радар , кольцо и т. Д. Все они также поддерживают кросс-вкладки.

Однако Jasper Reports предоставляет самую богатую коллекцию визуальных элементов . Он добавляет к приведенному выше списку карты , спарклайны , пирамиды и диаграммы Ганта .

2.4. Отчеты о Стилизации

Теперь давайте сравним расположение и размер элементов на странице:

  • Все инструменты обеспечивают позиционирование пикселей
  • BIRT и Pentaho также обеспечивают HTML-подобное позиционирование (таблица, блок, встроенный)
  • Ни один из них не поддерживает CSS-like flexbox или grid system для управления размером элементов

Кроме того, когда нам приходится управлять несколькими отчетами, мы можем захотеть использовать одну и ту же визуальную тему:

  • Jasper Reports предоставляет файлы тем с синтаксисом XML-CSS
  • BIRTH может импортировать таблицы стилей CSS в систему проектирования
  • С помощью Pentaho мы можем добавлять только таблицы стилей CSS в заголовок страницы. Поэтому их трудно смешать с внутренней системой проектирования

3. Рендеринг Отчетов

Теперь, когда мы увидели, как создавать отчеты, давайте сравним, как мы можем визуализировать их программно.

3.1. Установка

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

Чтобы начать работу, вы можете ознакомиться с нашими специальными статьями о BIRT и JasperReports . Для Pentaho есть страница справки и бесплатные примеры кода .

Далее для каждого из этих инструментов мы подключим механизм отчетов к данным нашего приложения.

3.2. Источник данных

Первый вопрос, который мы должны задать: как мы можем подключить механизм отчетов к нашему источнику данных проекта?

  • Jasper Reports : мы просто добавляем его в качестве параметра метода fillReport
  • BIRTH решение для этого немного сложнее: мы должны изменить наш отчет, чтобы установить атрибуты источника данных в качестве параметров
  • У Pentaho есть большой недостаток здесь: если мы не покупаем их PDI коммерческое программное обеспечение, мы должны использовать источник данных JNDI , который сложнее настроить

Говоря об источниках данных, какие типы поддерживаются?

  • Все три инструмента поддерживают наиболее распространенные типы: JDBC , JNDI , POJOs , CSV , XML и MongoDB
  • REST API это требование для современных проектов, однако ни один из них не поддерживает его изначально
    • с помощью BIRTH мы должны закодировать Groovy скрипт
    • Jasper Reports требуется дополнительный бесплатный плагин
    • с помощью Pentaho мы должны закодировать Groovy script или приобрести PDI коммерческое программное обеспечение
  • Файлы JSON изначально поддерживаются JasperReports и Pentaho , но BIRTH потребует внешней библиотеки парсера Java
  • Полный список сравнений мы можем найти в этой матрице

3.3. Параметры и настройка времени выполнения

Поскольку мы подключили наш отчет к источнику данных, давайте визуализируем некоторые данные!

Теперь важно, как получить наши данные конечного пользователя. Для этого мы можем передать параметры методу рендеринга. Эти параметры должны были быть определены при разработке отчета, а не во время выполнения. Но что мы можем сделать, если, например, наш набор данных основан на различных запросах в зависимости от контекста конечного пользователя?

С помощью Pentaho и JasperReports это просто невозможно сделать , так как файл отчета является двоичным и нет Java SDK для их изменения. Для сравнения, отчеты BIRT представляют собой простые XML-файлы . Более того, мы можем использовать Java API для их модификации, поэтому очень легко настроить все во время выполнения.

3.4. Выходные форматы и Javascript-клиенты

К счастью, большинство распространенных форматов поддерживаются всеми инструментами: HTML, PDF, Excel, CSV, plain text, и RTF . В настоящее время мы также можем спросить, как мы можем интегрировать результат отчета непосредственно на наши веб – страницы. Однако мы не будем упоминать о грубом включении PDF-визуализатора.

  • Лучшее решение-использовать Javascript клиенты для визуализации отчетов непосредственно в HTML-элемент. Для РОЖДЕНИЯ клиент Javascript-это | Actuate JSAPI и для JasperReports мы должны использовать JRIO.js Pentaho
  • не обеспечивает ничего, кроме интеграции iFrame. Это решение работает, но может иметь серьезные недостатки

3.5. Автономные Инструменты Рендеринга

Помимо интеграции нашего отчета в веб-страницу, мы также можем быть заинтересованы в наличии готового сервера рендеринга. Каждый инструмент предоставляет свое собственное решение:

  • BIRT Viewer – это легкое веб-приложение образец для выполнения BIRT отчетов по требованию. Он имеет открытый исходный код, но не включает в себя функции управления отчетами
  • для Пентахо и Отчет Джаспера , существуют только коммерческие программные пакеты

4. Состояние и деятельность проектов

Сначала несколько слов о лицензиях. ПТИЦА находится под EPL , JasperReports под LGPLv3 и Pentaho под LGPLv2.1 . Таким образом, мы можем встроить все эти библиотеки в наши собственные продукты, даже если они являются коммерческими.

Затем мы можем спросить себя, как эти проекты с открытым исходным кодом поддерживаются, и если сообщество все еще активно:

  • Джаспер Докладывает имеет ухоженный хранилище, со стабильной средой деятельность его редактором TIBCO Software
  • BIRT repository остается сохраненным, но его активность очень низкая с 2015 года, когда OpenText приобрел свой редактор Actuate
  • Аналогично, Pentaho repository активность очень низкая с момента приобретения Hitachi-Vantara в 2015 году

Мы можем подтвердить это с помощью трендов Stackoverflow. Самая низкая популярность-у BIRT и Pentaho , но умеренная-у Jasper Reports .

Все три Java reporting tools снизили свою популярность за последние 5 лет хотя и остаются стабильными на данный момент. Мы можем объяснить это появлением облачных и Javascript-предложений.

5. Коммерческие Инструменты Отчетности Java

Помимо решений с открытым исходным кодом, есть также некоторые коммерческие варианты, которые стоит упомянуть.

5.1. Точный отчет

Fine Report изначально был разработан для выполнения в качестве автономного сервера. К счастью, мы можем включить его в наш проект, если захотим. Мы должны вручную скопировать все банки и ресурсы в нашу ВОЙНУ, как описано в их процедуре .

После этого мы можем увидеть инструмент Платформа принятия решений , доступный в качестве URL-адреса в нашем проекте. С этого URL-адреса мы можем выполнять отчеты непосредственно в предоставленном веб-представлении, iFrame или с помощью их Javascript-клиента. Однако мы не можем генерировать отчеты программно.

Еще одним огромным ограничением является целевая среда выполнения. Версия 10 поддерживает только Java 8 и Tomcat 8.x.

5.2. Отчет Logi (ранее JReport)

Как и Fine Report, Login Report был разработан для выполнения в качестве автономного сервера, но мы можем интегрировать его как часть нашего существующего военного проекта. Таким образом, мы столкнемся с тем же ограничением, что и с Fine Report : мы не можем генерировать отчеты программно .

В Отличие От Прекрасного Отчета. однако Logi Report поддерживает почти все контейнеры сервлетов и Java 8-13.

5.3. Отчетная Мельничная отчетность

Наконец, , ReportMill стоит упомянуть, потому что мы можем плавно встроить его в каждое Java-приложение . Кроме того, как и BIRTH , он очень гибкий: мы можем настраивать отчеты во время выполнения, поскольку они представляют собой простые XML-файлы .

Однако мы сразу видим, что ReportMill постарел, а также имеет плохой набор функций по сравнению с другими решениями.

6. Заключение

В этой статье мы рассмотрели некоторые из наиболее известных инструментов отчетности Java и сравнили их функции.

В заключение мы можем выбрать один из этих инструментов отчетности Java в зависимости от ваших требований:

Мы выберем РОЖДЕНИЕ :

  • Для простой библиотеки, чтобы заменить существующее самодельное решение
  • За его наибольшую гибкость и высокий потенциал кастомизации

Мы выберем отчеты Джаспера :

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