Alat Pelaporan Java: Perbandingan

1. Ikhtisar

Saat kita berbicara tentang alat Pelaporan , banyak perangkat lunak yang mencakup area ini. Namun, kebanyakan dari mereka adalah platform Business Intelligence atau layanan Cloud yang lengkap .

Tetapi, apa yang terjadi jika kita hanya ingin menambahkan beberapa fitur pelaporan ke aplikasi kita sebagai perpustakaan? Kami akan meninjau di sini beberapa alat pelaporan Java yang cocok untuk tujuan ini.

Kami terutama akan fokus pada alat sumber terbuka ini:

  • BURUNG
  • Laporan Jasper
  • Pentaho

Selain itu, kami akan menganalisis secara singkat alat komersial berikut:

  • FineReport
  • Laporan Logi (sebelumnya JReport )
  • Laporkan Pabrik

2. Merancang Laporan

Melalui bagian ini, kami akan meninjau bagaimana kami dapat merancang laporan secara visual dan bermain dengan data kami. Perhatikan bahwa kami hanya akan merujuk ke alat sumber terbuka di bagian ini.

2.1. Editor Visual

Ketiga alat tersebut menyertakan editor WYSIWIG dengan kemampuan pratinjau laporan.

BIRT Report Designer dan Jaspersoft Studio adalah alat yang dibangun di atas Eclipse RCP. Ini adalah poin yang bagus untuk sebagian besar dari kita pengembang Java, karena kita mungkin sudah familiar dengan lingkungan Eclipse. Tidak seperti itu, Desainer Laporan Pentaho telah menua secara visual dengan buruk .

Selain itu, ada fitur tambahan yang menarik dari Jaspersoft Studio : kita bisa mempublikasikan laporan kita langsung di Jasper Reports Server (sistem manajemen laporan).

2.2. Set data

Seperti pada semua alat pelaporan, kita dapat mengambil set data dengan menanyakan sumber data (lihat di bawah). Kemudian, kita dapat mengubahnya menjadi kolom laporan, membuat kolom yang dihitung, atau menggunakan rumus agregasi.

Selain itu, menarik untuk membandingkan bagaimana kita dapat mengelola banyak dataset karena kita mungkin memerlukan beberapa di antaranya jika data kita berasal dari query yang berbeda atau bahkan sumber data yang berbeda :

  • BIRT menawarkan solusi termudah karena kami dapat memiliki beberapa set data dalam laporan yang sama
  • Dengan Jasper Reports dan Pentaho , kita perlu membuat sublaporan terpisah setiap kali, yang bisa sangat rumit

2.3. Grafik dan Elemen Visual

Semua alat menyediakan elemen sederhana seperti bentuk dan gambar, dan juga setiap rasa bagan: garis , area , pie , radar , cincin , dll. Semuanya juga mendukung tab silang.

Namun, Jasper Reports menyediakan koleksi elemen visual terkaya . Ini menambah daftar di atas peta , sparklines , piramida , dan diagram Gantt .

2.4. Laporan Styling

Sekarang, mari bandingkan pemosisian dan ukuran elemen di halaman:

  • Semua alat menyediakan pemosisian piksel
  • BIRT dan Pentaho juga menyediakan pemosisian seperti HTML (tabel, blok, sebaris)
  • Tak satu pun dari mereka mendukung sistem flexbox atau grid seperti CSS untuk mengontrol ukuran elemen

Selain itu, saat kami harus mengelola banyak laporan, kami mungkin ingin berbagi tema visual yang sama:

  • Laporan Jasper menyediakan file tema dengan sintaks XML-CSS
  • BIRT dapat mengimpor lembar gaya CSS ke dalam sistem desain
  • Dengan Pentaho , kita hanya dapat menambahkan stylesheet CSS di header halaman. Jadi sulit untuk memadukannya dengan sistem desain internal

3. Membuat Laporan

Sekarang, setelah kita melihat bagaimana mendesain laporan, mari bandingkan bagaimana kita dapat merendernya secara terprogram.

3.1. Instalasi

Pertama, perhatikan bahwa semua alat telah dirancang agar mudah disematkan dalam proyek Java .

Untuk memulai, Anda dapat melihat artikel khusus kami tentang Laporan BIRT dan Jasper. Untuk Pentaho, ada halaman bantuan dan contoh kode gratis.

Selanjutnya, untuk masing-masing alat ini, kami akan menghubungkan mesin laporan ke data aplikasi kami.

3.2. Sumber data

Pertanyaan pertama yang harus kita tanyakan adalah: bagaimana kita menghubungkan mesin laporan ke sumber data proyek kita?

  • Laporan Jasper : kita cukup menambahkannya sebagai parameter metode fillReport
  • Solusi BIRT untuk ini sedikit lebih kompleks: kita harus memodifikasi laporan kita untuk menyetel atribut sumber data sebagai parameter
  • Pentaho memiliki kelemahan besar di sini: kecuali kita membeli perangkat lunak komersial PDI , kita harus menggunakan sumber data JNDI , yang lebih sulit untuk disiapkan

Berbicara tentang sumber data, jenis apa yang didukung?

  • Ketiga alat ini mendukung jenis yang paling umum: JDBC , JNDI , POJOs , CSV , XML dan MongoDB
  • REST API adalah persyaratan untuk proyek modern, namun tidak ada yang mendukungnya secara asli
    • dengan BIRT , kita harus membuat kode skrip Groovy
    • Laporan Jasper membutuhkan plugin gratis tambahan
    • dengan Pentaho , kita harus membuat kode skrip Groovy atau memperoleh perangkat lunak komersial PDI
  • File JSON didukung secara native oleh Jasper Reports dan Pentaho , tetapi BIRT akan memerlukan pustaka pengurai Java eksternal
  • Daftar perbandingan lengkap dapat kita temukan dalam matriks ini

3.3. Parameter dan Kustomisasi Runtime

Karena kita telah menghubungkan laporan kita ke sumber data kita, mari kita render beberapa data!

Yang penting sekarang adalah bagaimana mengambil data pengguna akhir kita. Untuk melakukan ini, kita dapat mengirimkan parameter ke metode rendering. Parameter ini harus ditentukan saat kami mendesain laporan, bukan saat runtime. Tetapi apa yang dapat kita lakukan jika, misalnya, kumpulan data kita didasarkan pada kueri yang berbeda bergantung pada konteks pengguna akhir?

Dengan Pentaho dan Jasper Reports , hal itu tidak mungkin dilakukan , karena file laporan adalah biner dan tidak ada Java SDK untuk memodifikasinya. Sebagai perbandingan, laporan BIRT adalah file XML biasa . Selain itu, kita dapat menggunakan Java API untuk memodifikasinya, jadi sangat mudah untuk menyesuaikan semuanya saat runtime.

3.4. Format Output dan Klien Javascript

Untungnya, sebagian besar format umum didukung oleh semua alat: HTML, PDF, Excel, CSV, teks biasa, dan RTF . Saat ini, kami mungkin juga bertanya bagaimana kami dapat mengintegrasikan hasil laporan langsung ke halaman web kami. Kami tidak akan menyebutkan penyertaan kasar dari visualisator PDF.

  • Solusi terbaik adalah menggunakan klien Javascript untuk membuat laporan langsung ke dalam elemen HTML. Untuk BIRT, klien Javascriptnya adalah Actuate JSAPI dan untuk Jasper Reports , kita harus menggunakan JRIO.js
  • Pentaho tidak menyediakan apa pun kecuali integrasi iFrame. Solusi ini berfungsi, tetapi mungkin memiliki kekurangan yang serius

3.5. Alat Rendering Mandiri

Selain mengintegrasikan laporan kami ke dalam halaman web, kami mungkin juga tertarik untuk memiliki server rendering yang out-of-the-box. Setiap alat memberikan solusinya sendiri:

  • BIRT Viewer adalah contoh aplikasi web ringan untuk menjalankanlaporan BIRT on-demand. Ini open-source tetapi tidak menyertakan fitur manajemen laporan
  • untuk Pentaho dan Jasper Report , hanya ada paket software komersial

4. Status dan Kegiatan Proyek

Pertama, sepatah kata pun tentang lisensi. BIRT di bawah EPL , Jasper Reports di bawah LGPLv3 , dan Pentaho di bawah LGPLv2.1 . Jadi, kami dapat menyematkan semua pustaka ini ke dalam produk kami sendiri, bahkan jika itu komersial.

Kemudian, kita bisa bertanya pada diri kita sendiri bagaimana proyek open source ini dipertahankan, dan apakah komunitasnya masih aktif:

  • Jasper Reports memiliki repositori yang terawat dengan baik, dengan aktivitas media yang stabil oleh editornya TIBCO Software
  • Repositori BIRT tetap dipertahankan, tetapi aktivitasnya sangat rendah sejak 2015 ketika OpenText memperoleh editornya, Actuate
  • Demikian pula, aktivitas repositori Pentaho sangat rendah sejak akuisisi Hitachi-Vantara pada 2015

Kami dapat mengonfirmasi ini menggunakan tren Stackoverflow. Popularitas terendah adalah untuk BIRT dan Pentaho, tetapi sedang untuk Laporan Jasper .

Ketiga alat pelaporan Java telah menurun popularitasnya dalam 5 tahun terakhir meskipun tetap stabil untuk saat ini. Kami dapat menjelaskan ini dengan munculnya penawaran Cloud dan Javascript.

5. Alat Pelaporan Java Komersial

Selain solusi sumber terbuka, ada juga beberapa opsi komersial yang tersedia yang patut disebutkan.

5.1. Laporan Baik

Fine Report pada awalnya dirancang untuk dijalankan sebagai server mandiri. Untungnya, kami dapat memasukkannya sebagai bagian dari proyek kami jika kami ingin menggunakannya. Kami harus menyalin semua JAR dan sumber daya ke dalam WAR kami secara manual, seperti yang dijelaskan dalam prosedurnya.

Setelah melakukan ini, kita dapat melihat alat Platform Pengambilan Keputusan tersedia sebagai URL dalam proyek kita. Dari URL ini, kita dapat menjalankan laporan secara langsung di tampilan web yang disediakan, iFrame , atau menggunakan klien Javascript mereka. Namun, kami tidak dapat membuat laporan secara terprogram.

Batasan besar lainnya adalah runtime target. Versi 10 hanya mendukung Java 8 dan Tomcat 8.x.

5.2. Laporan Logi (sebelumnya JReport)

Seperti Fine Report, Logi Report telah dirancang untuk dijalankan sebagai server mandiri, tetapi kami dapat mengintegrasikannya sebagai bagian dari proyek WAR yang ada. Jadi, kita akan menghadapi batasan yang sama seperti pada Fine Report : kita tidak dapat menghasilkan laporan secara terprogram .

Tidak seperti Laporan Baik. namun, Logi Report mendukung hampir semua kontainer servlet dan Java 8 hingga 13.

5.3. ReportMill Reporting

Terakhir , ReportMill layak disebutkan karena kami dapat menyematkannya dengan lancar ke setiap aplikasi Java . Selain itu, seperti BIRT , ini sangat fleksibel: kita dapat menyesuaikan laporan pada waktu proses karena merupakan file XML biasa .

Namun, kami dapat langsung melihat bahwa ReportMill telah berumur, dan juga memiliki serangkaian fitur yang buruk dibandingkan dengan solusi lainnya.

6. Kesimpulan

Dalam artikel ini, kami membahas beberapa alat pelaporan Java yang paling terkenal dan membandingkan fitur-fiturnya.

Sebagai kesimpulan, kami dapat memilih salah satu Alat Pelaporan Java ini tergantung pada kebutuhan kami:

Kami akan memilih BIRT :

  • Untuk perpustakaan sederhana untuk menggantikan solusi buatan rumah yang ada
  • Untuk fleksibilitas terbesar dan potensi penyesuaian tinggi

Kami akan memilih Jasper Reports :

  • Jika kita membutuhkan pustaka pelaporan yang kompatibel dengan sistem manajemen laporan yang lengkap
  • Jika kami ingin bertaruh pada evolusi dan dukungan jangka panjang terbaik