Alat Pelaporan Java: Perbandingan

1. Gambaran keseluruhan

Apabila kita bercakap mengenai alat Pelaporan , banyak perisian merangkumi bidang ini. Walau bagaimanapun, kebanyakannya adalah platform Perisikan Perniagaan atau perkhidmatan Cloud yang lengkap .

Tetapi, apa yang berlaku jika kita hanya ingin menambahkan beberapa ciri pelaporan ke aplikasi kita sebagai perpustakaan? Kami akan mengkaji di sini beberapa alat pelaporan Java yang sangat sesuai untuk tujuan ini.

Kami akan memberi tumpuan terutamanya pada alat sumber terbuka ini:

  • BURUNG
  • Laporan Jasper
  • Pentaho

Sebagai tambahan, kami akan menganalisis secara ringkas alat komersial berikut:

  • Laporan Baik
  • Laporan Logi (sebelumnya JReport )
  • Lapor Kilang

2. Merangka Laporan

Melalui bahagian ini, kami akan mengkaji bagaimana kami dapat merancang laporan dan bermain dengan data kami secara visual. Perhatikan bahawa kami hanya merujuk kepada alat sumber terbuka di bahagian ini.

2.1. Penyunting Visual

Ketiga-tiga alat tersebut merangkumi penyunting WYSIWIG dengan kemampuan pratonton laporan.

Pereka Laporan BIRT dan Jaspersoft Studio adalah alat yang dibina di atas Eclipse RCP. Ini adalah titik yang baik bagi sebagian besar dari kita pengembang Java, kerana kita mungkin biasa dengan lingkungan Eclipse. Tidak seperti itu, Pentaho Report Designer telah berumur kurang sihat .

Terdapat juga ciri menarik tambahan mengenai Jaspersoft Studio : kami dapat menerbitkan laporan kami secara langsung di Pelayan Laporan Jasper mereka (sistem pengurusan laporan).

2.2. Set data

Seperti semua alat pelaporan, kita dapat mengambil set data dengan meminta sumber data (lihat di bawah). Kemudian, kita dapat mengubahnya menjadi medan laporan, membuat medan yang dihitung, atau menggunakan formula pengagregatan.

Selain itu, sangat menarik untuk membandingkan bagaimana kita dapat menguruskan banyak set data kerana kita mungkin memerlukan beberapa daripadanya jika data kita berasal dari pertanyaan yang berbeza atau bahkan sumber data yang berbeza :

  • BIRT menawarkan penyelesaian termudah kerana kami dapat mempunyai banyak set data dalam laporan yang sama
  • Dengan Laporan Jasper dan Pentaho , kita perlu membuat sub laporan yang terpisah setiap kali, yang agak sukar

2.3. Carta dan Unsur Visual

Semua alat menyediakan elemen sederhana seperti bentuk dan gambar, dan juga citarasa setiap carta: garis , kawasan , pai , radar , cincin , dan lain-lain. Semuanya juga menyokong silang.

Walau bagaimanapun, Laporan Jasper menyediakan koleksi elemen visual terkaya . Ia menambah kepada senarai di atas maps , sparklines , piramid , dan gambar rajah Gantt .

2.4. Laporan Gaya

Sekarang, mari kita bandingkan kedudukan dan ukuran elemen di halaman:

  • Semua alat menyediakan kedudukan piksel
  • BIRT dan Pentaho juga menyediakan kedudukan seperti HTML (jadual, blok, sebaris)
  • Tidak ada satupun yang menyokong sistem flexbox atau grid seperti CSS untuk mengawal ukuran elemen

Juga, apabila kita harus menguruskan banyak laporan, kita mungkin ingin berkongsi tema visual yang sama:

  • Laporan Jasper menyediakan fail tema dengan sintaks XML-CSS
  • BIRT dapat mengimport lembaran gaya CSS ke dalam sistem reka bentuk
  • Dengan Pentaho , kita hanya dapat menambahkan helaian gaya CSS di tajuk halaman. Oleh itu, sukar untuk mencampurkannya dengan sistem reka bentuk dalaman

3. Membuat Laporan

Sekarang, setelah kita melihat bagaimana merancang laporan, mari kita bandingkan bagaimana kita dapat membuatnya secara terprogram.

3.1. Pemasangan

Pertama, perhatikan bahawa semua alat telah dirancang agar mudah disisipkan dalam projek Java .

Untuk memulakan, anda boleh melihat artikel khusus kami mengenai Laporan BIRT dan Jasper. Untuk Pentaho, ada halaman bantuan dan contoh kod percuma.

Seterusnya, untuk setiap alat ini, kami akan menyambungkan mesin laporan ke data aplikasi kami.

3.2. Sumber data

Soalan pertama yang harus kita tanyakan adalah: bagaimana kita dapat menghubungkan mesin laporan ke sumber data projek kita?

  • Laporan Jasper : kami hanya menambahkannya sebagai parameter kaedah fillReport
  • Penyelesaian BIRT untuk ini sedikit lebih kompleks: kita harus mengubah laporan kita untuk menetapkan atribut sumber data sebagai parameter
  • Pentaho mempunyai kelemahan besar di sini: melainkan jika kita membeli perisian komersial PDI mereka , kita harus menggunakan sumber data JNDI , yang lebih sukar untuk disiapkan

Bercakap mengenai sumber data, jenis mana yang disokong?

  • Ketiga-tiga alat menyokong jenis yang paling biasa: JDBC , JNDI , POJOs , CSV , XML dan MongoDB
  • REST API adalah syarat untuk projek moden, namun tidak satupun dari mereka menyokongnya secara asli
    • dengan BIRT , kita harus membuat kod skrip Groovy
    • Laporan Jasper memerlukan pemalam percuma tambahan
    • dengan Pentaho , kita harus membuat kod skrip Groovy atau memperoleh perisian komersial PDI
  • Fail JSON disokong secara asli oleh Laporan Jasper dan Pentaho , tetapi BIRT akan memerlukan perpustakaan penghurai Java luaran
  • Kita dapat mencari senarai perbandingan yang lengkap dalam matriks ini

3.3. Parameter dan Penyesuaian Masa Jalan

Oleh kerana kami telah menghubungkan laporan kami ke sumber data kami, mari berikan beberapa data!

Yang penting sekarang adalah bagaimana mendapatkan data pengguna akhir kita. Untuk melakukan ini, kita dapat meneruskan parameter ke kaedah rendering. Parameter ini seharusnya telah ditentukan ketika kami merancang laporan, bukan pada waktu proses. Tetapi apa yang dapat kita lakukan jika, misalnya, set data kami berdasarkan pertanyaan yang berbeza bergantung pada konteks pengguna akhir?

Dengan Pentaho dan Laporan Jasper , tidak mustahil untuk melakukannya , kerana fail laporan adalah binari dan tidak ada Java SDK untuk mengubahnya. Sebagai perbandingan, laporan BIRT adalah fail XML biasa . Lebih-lebih lagi, kita dapat menggunakan API Java untuk mengubahnya, jadi sangat mudah untuk menyesuaikan semuanya pada waktu proses.

3.4. Format Output dan Pelanggan Javascript

Syukurlah, kebanyakan format biasa disokong oleh semua alat: HTML, PDF, Excel, CSV, teks biasa, dan RTF . Pada masa kini, kami mungkin juga bertanya bagaimana kami dapat mengintegrasikan hasil laporan secara langsung ke laman web kami. Kami tidak akan menyebut penyertaan visualizer PDF secara kasar.

  • Penyelesaian terbaik adalah menggunakan klien Javascript untuk membuat laporan secara langsung ke dalam elemen HTML. Untuk BIRT, pelanggan Javascript adalah Actuate JSAPI dan untuk Laporan Jasper , kita harus menggunakan JRIO.js
  • Pentaho tidak memberikan apa-apa kecuali integrasi iFrame. Penyelesaian ini berfungsi tetapi mungkin mempunyai kelemahan yang serius

3.5. Alat Rendering Berdiri

Selain mengintegrasikan laporan kami ke halaman web, kami mungkin juga berminat memiliki pelayan rendering di luar kotak. Setiap alat menyediakan penyelesaiannya sendiri:

  • BIRT Viewer adalah contoh aplikasi web ringan untuk melaksanakanlaporan BIRT berdasarkan permintaan. Ini sumber terbuka tetapi tidak termasuk ciri pengurusan laporan
  • untuk Pentaho dan Jasper Report , hanya ada pakej perisian komersial

4. Status dan Aktiviti Projek

Pertama, perkataan mengenai lesen. BIRT berada di bawah EPL , Laporan Jasper di bawah LGPLv3 , dan Pentaho di bawah LGPLv2.1 . Oleh itu, kita dapat memasukkan semua perpustakaan ini ke dalam produk kita sendiri, walaupun ia bersifat komersial.

Kemudian, kita boleh bertanya kepada diri sendiri bagaimana projek sumber terbuka ini dikekalkan, dan jika komuniti masih aktif:

  • Laporan Jasper mempunyai repositori yang terpelihara dengan baik, dengan aktiviti medium yang stabil oleh penyuntingnya TIBCO Software
  • Repositori BIRT tetap dikekalkan, tetapi aktivitinya sangat rendah sejak 2015 ketika OpenText memperoleh editornya Actuate
  • Begitu juga, aktiviti repositori Pentaho sangat rendah sejak pemerolehan Hitachi-Vantara pada tahun 2015

Kami boleh mengesahkan ini menggunakan aliran Stackoverflow. Populariti terendah adalah untuk BIRT dan Pentaho, tetapi sederhana untuk Jasper Reports .

Ketiga-tiga alat pelaporan Java telah menurun popularitinya dalam 5 tahun terakhir walaupun tetap stabil untuk saat ini. Kami dapat menerangkannya dengan munculnya tawaran Cloud dan Javascript.

5. Alat Pelaporan Java Komersial

Selain penyelesaian sumber terbuka, terdapat juga beberapa pilihan komersial yang perlu disebutkan.

5.1. Laporan Baik

Fine Report pada mulanya dirancang untuk dijalankan sebagai pelayan yang berdiri sendiri. Nasib baik, kami dapat memasukkannya sebagai sebahagian daripada projek kami jika kami ingin menggunakannya. Kita harus menyalin semua JAR dan sumber secara manual ke dalam PERANG kita, seperti yang dijelaskan dalam prosedur mereka.

Setelah melakukan ini, kita dapat melihat alat Platform Membuat Keputusan tersedia sebagai URL dalam projek kami. Dari URL ini, kita dapat melaksanakan laporan secara langsung dalam tampilan web yang disediakan, iFrame , atau menggunakan klien Javascript mereka. Namun, kami tidak dapat menghasilkan laporan secara terprogram.

Batasan besar lain adalah jangka masa sasaran. Versi 10 hanya menyokong Java 8 dan Tomcat 8.x.

5.2. Laporan Logi (sebelumnya JReport)

Seperti Fine Report, Logi Report telah dirancang untuk dijalankan sebagai pelayan yang berdiri sendiri, tetapi kami dapat mengintegrasikannya sebagai bagian dari projek WAR kami yang ada. Oleh itu, kita akan menghadapi batasan yang sama dengan Laporan Baik : kita tidak dapat menghasilkan laporan secara program .

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

5.3. Pelaporan ReportMill

Akhirnya , ReportMill patut disebut kerana kita dapat memasukkannya dengan lancar ke dalam setiap aplikasi Java . Juga, seperti BIRT , sangat fleksibel: kita dapat menyesuaikan laporan pada waktu berjalan kerana ia adalah fail XML biasa .

Walau bagaimanapun, kita dapat melihat dengan segera bahawa ReportMill telah berumur, dan juga mempunyai sekumpulan ciri yang buruk berbanding dengan penyelesaian lain.

6. Kesimpulannya

Dalam artikel ini, kami meneliti beberapa alat pelaporan Java yang paling terkenal dan membandingkan ciri-cirinya.

Sebagai kesimpulan, kita dapat memilih salah satu Alat Pelaporan Java ini bergantung pada keperluan kita:

Kami akan memilih BIRT :

  • Untuk perpustakaan sederhana untuk menggantikan penyelesaian buatan rumah yang ada
  • Untuk fleksibiliti dan potensi penyesuaian yang tinggi

Kami akan memilih Laporan Jasper :

  • Sekiranya kita memerlukan perpustakaan pelaporan yang serasi dengan sistem pengurusan laporan yang lengkap
  • Sekiranya kita mahu bertaruh pada evolusi dan sokongan jangka panjang terbaik