1. 概要

レポートツールについて話すとき、多くのソフトウェアがこの領域をカバーしています。 ただし、それらのほとんどは、本格的なビジネスインテリジェンスプラットフォームまたはクラウドサービスです。

しかし、ライブラリとしてアプリケーションにレポート機能を追加したいだけの場合はどうなりますか? ここでは、この目的に適したJavaレポートツールをいくつか確認します。

主にこれらのオープンソースツールに焦点を当てます。

さらに、次の商用ツールを簡単に分析します。

2. レポートのデザイン

このセクションでは、レポートを視覚的にデザインし、データを操作する方法を確認します。 このパートでは、オープンソースツールのみを参照することに注意してください。

2.1. ビジュアルエディタ

3つのツールすべてに、レポートプレビュー機能を備えたWYSIWIGエディターが含まれています。

BIRT ReportDesignerおよびJaspersoftStudio は、 EclipseRCP上に構築されたツールです。 これは、Eclipse環境に精通している可能性があるため、ほとんどのJava開発者にとって良い点です。 それらとは異なり、 Pentaho Report Designerは視覚的に劣化していません

また、 Jaspersoft Studio には、追加の興味深い機能があります。レポートは、 Jasper Reports Server (レポート管理システム)に直接公開できます。

2.2. データセット

すべてのレポートツールと同様に、 datasource をクエリすることでデータセットを取得できます(以下を参照)。 次に、それらをレポートフィールドに変換したり、計算フィールドを作成したり、集計式を使用したりできます。

これに加えて、複数のデータセットを管理する方法を比較するのは興味深いことです。データが異なるクエリまたは異なるデータソースからのものである場合、それらのいくつかが必要になる可能性があるためです。

  • BIRT は、同じレポートに複数のデータセットを含めることができるため、最も簡単なソリューションを提供します
  • JasperReportsPentahoでは、毎回個別のサブレポートを作成する必要がありますが、これは非常に難しい場合があります。

2.3. チャートと視覚要素

すべてのツールは、形状や画像などの単純な要素と、すべてのグラフフレーバーを提供します: lines area pies radar 、[ X154X]リングなど。 それらはすべてクロスタブもサポートしています。

ただし、 Jasper Reportsは、最も豊富な視覚要素コレクションを提供します。 上記のリストにマップスパークラインピラミッド、およびガントチャートが追加されます。

2.4. スタイリングレポート

次に、ページ内の要素の配置とサイズを比較してみましょう。

  • すべてのツールはピクセルポジショニングを提供します
  • BIRTとPentahoは、HTMLのようなポジショニング(テーブル、ブロック、インライン)も提供します
  • 要素のサイズを制御するためのCSSのようなフレックスボックスまたはグリッドシステムをサポートしているものはありません

また、複数のレポートを管理する必要がある場合は、同じビジュアルテーマを共有したい場合があります。

  • Jasper Reports は、XML-CSS構文を使用してテーマファイルを提供します
  • BIRT は、CSSスタイルシートをデザインシステムにインポートできます
  • Pentaho では、ページヘッダーにCSSスタイルシートのみを追加できます。 したがって、それらを内部設計システムと混合することは困難です

3. レポートのレンダリング

これで、レポートの設計方法を確認したので、プログラムでレポートをレンダリングする方法を比較してみましょう。

3.1. インストール

まず、すべてのツールがJavaプロジェクトに簡単に埋め込まれるように設計されていることに注意してください。

開始するには、BIRTおよびJasperReportsに関する専用の記事をご覧ください。 Pentahoには、ヘルプページと無料のコードサンプルがあります。

次に、これらのツールごとに、レポートエンジンをアプリケーションデータに接続します。

3.2. 情報源

最初に質問する必要があるのは、レポートエンジンをプロジェクトデータソースに接続するにはどうすればよいかということです。

  • Jasper Reports fillReportメソッドのパラメーターとして追加するだけです。
  • このためのBIRTソリューションは、もう少し複雑です。レポートを変更して、データソース属性をパラメーターとして設定する必要があります。
  • Pentahoには大きな欠点がありますPDI商用ソフトウェアを購入しない限り、セットアップがより難しいJNDIデータソースを使用する必要があります。

データソースと言えば、どのタイプがサポートされていますか?

  • 3つのツールはすべて、 JDBC JNDI POJOs CSV XML 、[ X124X] MongoDB
  • REST API は最新のプロジェクトの要件ですが、ネイティブでサポートしているものはありません。
    • BIRT を使用して、Groovyスクリプトをコーディングする必要があります
    • Jasper Reports には、追加の無料プラグインが必要です
    • Pentaho を使用する場合は、 Groovyスクリプトをコーディングするか、PDI商用ソフトウェアを入手する必要があります。
  • JSONファイルはJasperReportsとPentahoによってネイティブにサポートされていますが、BIRTには外部Javaパーサーライブラリが必要です
  • 完全な比較リストは、このマトリックスにあります。

3.3. パラメータとランタイムのカスタマイズ

レポートをデータソースに接続したので、いくつかのデータをレンダリングしましょう!

ここで重要なのは、エンドユーザーデータを取得する方法です。 これを行うには、レンダリングメソッドにパラメータを渡すことができます。 これらのパラメーターは、実行時ではなく、レポートの設計時に定義されている必要があります。 しかし、たとえば、データセットがエンドユーザーのコンテキストに応じて異なるクエリに基づいている場合はどうすればよいでしょうか。

PentahoおよびJasperReportsでは、レポートファイルがバイナリであり、それらを変更するJava SDKがないため、を実行することはできません。 比較すると、BIRTレポートはプレーンXMLファイルです。 さらに、Java APIを使用してそれらを変更できるため、実行時にすべてを非常に簡単にカスタマイズできます。

3.4. 出力フォーマットとJavascriptクライアント

ありがたいことに、ほとんどの一般的な形式は、 HTML、PDF、Excel、CSV、プレーンテキスト、およびRTFのすべてのツールでサポートされています。 最近では、レポートの結果をWebページに直接統合する方法についても質問される場合があります。 ただし、PDFビジュアライザーの大まかな包含については触れません。

  • 最善の解決策は、 Javascript クライアントを使用して、レポートをHTML要素に直接レンダリングすることです。 BIRTの場合、Javascriptクライアントは Actuate JSAPI およびです。JasperReportsの場合、 JRIO.jsを使用する必要があります。
  • Pentaho は、iFrame統合以外は何も提供しません。 このソリューションは機能しますが、深刻な欠点がある可能性があります

3.5. スタンドアロンのレンダリングツール

レポートをWebページに統合するだけでなく、すぐに使用できるレンダリングサーバーを使用することもできます。 各ツールは独自のソリューションを提供します。

  • BIRT Viewer は、BIRTレポートをオンデマンドで実行するための軽量Webアプリケーションサンプルです。 オープンソースですが、レポート管理機能は含まれていません
  • PentahoおよびJasperReport の場合、商用ソフトウェアパッケージのみがあります

4. プロジェクトのステータスとアクティビティ

まず、ライセンスについて一言。 BIRTEPLの下にあり、 JasperReportsLGPLv3の下にあり、PentahoはLGPLv2.1[の下にありますX123X]。 したがって、これらのライブラリはすべて、商用製品であっても、自社の製品に組み込むことができます。

次に、これらのオープンソースプロジェクトがどのように維持されているか、そしてコミュニティがまだアクティブであるかどうかを自問することができます。

  • Jasper Reports には、よく管理されたリポジトリがあり、は、編集者TIBCOSoftwareによる安定したメディアアクティビティを備えています。
  • BIRTリポジトリは維持されていますが、OpenTextがエディターActuateを買収した2015年以降、そのアクティビティは非常に低くなっています
  • 同様に、Pentahoリポジトリのアクティビティは2015年のHitachi-Vantara買収以来非常に低い

Stackoverflowのトレンドを使用してこれを確認できます。 最も人気が低いのはBIRTPentaho、ですが、 JasperReportsでは中程度です。

3つのJavaレポートツールはすべて、過去5年間で人気が低下していますが、現時点では安定しています。 これは、クラウドとJavascriptのオファーの出現によって説明できます。

5. 商用Javaレポートツール

オープンソースソリューションに加えて、言及する価値のあるいくつかの商用オプションも利用可能です。

5.1. ファインレポート

Fine Report は当初、スタンドアロンサーバーとして実行されるように設計されています。 幸い、それを使用したい場合は、プロジェクトの一部として含めることができます。 それらの手順で説明されているように、すべてのJARとリソースを手動でWARにコピーする必要があります。

これを実行すると、意思決定プラットフォームツールがプロジェクトのURLとして利用できるようになります。 このURLから、提供されたWebビュー、 iFrame で直接レポートを実行するか、Javascriptクライアントを使用してレポートを実行できます。 ただし、プログラムでレポートを生成することはできません。

もう1つの大きな制限は、ターゲットランタイムです。 バージョン10 Java8とTomcat8.xのみをサポートします。

5.2. Logi Report(以前のJReport)

Fine Reportと同様に、Logi Reportはスタンドアロンサーバーとして実行されるように設計されていますが、既存のWARプロジェクトの一部として統合できます。 したがって、 FineReportと同じ制限に直面します。プログラムでレポートを生成することはできません

ファインレポートとは異なります。 ただし、Logi Reportは、ほぼすべてのサーブレットコンテナとJava 8〜13をサポートしています。

5.3. ReportMillレポート

最後に、 ReportMillは、すべてのJavaアプリケーションにスムーズに埋め込むことができるため、言及する価値があります。 また、BIRT と同様に、は非常に柔軟性があります。レポートはプレーンなXMLファイルであるため、実行時にカスタマイズできます

ただし、ReportMillが古くなり、他のソリューションと比較して機能のセットが不十分であることがすぐにわかります。

6. 結論

この記事では、最もよく知られているJavaレポートツールのいくつかを調べ、それらの機能を比較しました。

結論として、要件に応じて、これらのJavaレポートツールのいずれかを選択できます。

BIRT を選択します:

  • 既存の自家製ソリューションを置き換える簡単なライブラリの場合
  • その最高の柔軟性と高いカスタマイズの可能性

Jasper Reports を選択します:

  • 本格的なレポート管理システムと互換性のあるレポートライブラリが必要な場合
  • 最高の長期的な進化とサポートに賭けたい場合