כלי הדיווח של Java: השוואה

1. סקירה כללית

כשאנחנו מדברים על כלי דיווח, הרבה תוכנות מכסות את התחום הזה. עם זאת, רובם מן המניין פלטפורמות מודיעין עסקי אוֹ שירותי ענן.

אבל, מה קורה אם אנחנו רק רוצים להוסיף כמה תכונות דיווח ליישום שלנו כספרייה? נסקור כאן כמה כלי דיווח של Java מתאים היטב למטרה זו.

אנו נתמקד בעיקר בכלים קוד פתוח:

  • BIRT
  • ג'ספר מדווח
  • פנטהו

בנוסף ננתח בקצרה את הכלים המסחריים הבאים:

  • FineReport
  • דוח לוגי (לשעבר JReport)
  • דווח על מיל

2. תכנון דוחות

באמצעות סעיף זה נסקור כיצד אנו יכולים לעצב דוחות חזותית ולשחק עם הנתונים שלנו. שים לב שנתייחס רק לכלי קוד פתוח בחלק זה.

2.1. עורכים חזותיים

כל שלושת הכלים כוללים עורך WYSIWIG עם יכולות תצוגה מקדימה של דוחות.

מעצב דוחות BIRT ו סטודיו ג'ספרסופט הם כלים שנבנו ב- Eclipse RCP. זו נקודה טובה עבור רובנו מפתחי Java, מכיוון שאולי אנו מכירים את סביבת Eclipse. שלא כמו אלה, מעצב דוחות פנטהו התיישן מבחינה חזותית בצורה גרועה.

כמו כן, יש תכונה מעניינת נוספת אודות סטודיו ג'ספרסופט: אנו יכולים לפרסם את הדוחות שלנו ישירות על הדוחות שלהם שרת דוחות ג'ספר (מערכת ניהול הדוחות).

2.2. מערכי נתונים

כמו בכל כלי הדיווח, אנו יכולים לאחזר מערכי נתונים על ידי שאילתת a מקור מידע (ראה למטה). לאחר מכן נוכל להפוך אותם לשדות דוחות, ליצור שדות מחושבים או להשתמש בנוסחאות צבירה.

מלבד זאת, מעניין להשוות כיצד אנו יכולים לנהל מערכי נתונים מרובים מכיוון שאנו עשויים להזדקק לכמה מהם אם הנתונים שלנו מגיעים משאילתות שונות או אפילו שונים מקורות מידע:

  • BIRT מציעה את הפיתרון הקל ביותר מכיוון שיכולנו להחזיק מערכי נתונים באותו דוח
  • עם ג'ספר מדווח ו פנטהועלינו ליצור דו"ח משנה מופרד בכל פעם, שיכול להיות די מסובך

2.3. תרשימים ואלמנטים חזותיים

כל הכלים מספקים אלמנטים פשוטים כמו צורות ותמונות, וגם כל טעם תרשים: שורות, אזורים, פשטידות, מכ"ם, טַבַּעַתוכו '. כולם תומכים גם בכרטיסיות צולבות.

למרות זאת, ג'ספר מדווח מספק את אוסף האלמנטים החזותיים העשירים ביותר. זה מוסיף לרשימה שלעיל מפות, נוצצים, פירמידות, ו דיאגרמות גאנט.

2.4. דוחות סטיילינג

עכשיו, בואו נשווה את המיקום והגודל של האלמנטים בדף:

  • כל הכלים מספקים מיקום פיקסל
  • BIRT ו פנטהו מספק גם מיקום דמוי HTML (טבלה, חסום, מוטבע)
  • אף אחד מהם לא תומך ב- Flexbox או מערכת רשת כמו CSS כדי לשלוט בגודל האלמנטים

כמו כן, כאשר עלינו לנהל דוחות מרובים, ייתכן שנרצה לשתף את אותו נושא חזותי:

  • ג'ספר מדווח מספק לקבצי נושא תחביר XML-CSS
  • BIRT יכול לייבא גיליונות סגנון CSS למערכת העיצוב
  • עם פנטהו, אנו יכולים להוסיף גיליונות סגנון CSS רק בכותרת הדף. לכן קשה לערבב אותם עם מערכת העיצוב הפנימית

3. דוחות טיוח

כעת, כשראינו כיצד לעצב דוחות, נשווה כיצד אנו יכולים לעבד אותם באופן פרוגרמטי.

3.1. הַתקָנָה

ראשית, נציין זאת כל הכלים תוכננו להטמעה בקלות בפרויקט Java.

כדי להתחיל, תוכלו להציץ במאמרים הייעודיים שלנו על BIRT ו- Jasper Reports. לפנטהו יש דף עזרה ודוגמאות קוד בחינם.

לאחר מכן, עבור כל אחד מהכלים הללו, נחבר את מנוע הדוחות לנתוני היישום שלנו.

3.2. מקור מידע

השאלה הראשונה שעלינו לשאול היא: כיצד נוכל לחבר את מנוע הדו"ח למקור הנתונים של הפרויקט שלנו?

  • ג'ספר מדווח: אנחנו פשוט מוסיפים אותו כפרמטר של ה- fillReport שיטה
  • BIRT הפיתרון לכך מורכב מעט יותר: עלינו לשנות את הדוח שלנו כדי להגדיר את תכונות מקורות הנתונים כפרמטרים
  • לפנטהו יש חסרון גדול כאן: אלא אם כן נקנה את שלהם PDI תוכנה מסחרית, עלינו להשתמש במקור נתונים של JNDI, שקשה יותר להגדיר אותו

אם כבר מדברים על מקורות נתונים, אילו סוגים נתמכים?

  • כל שלושת הכלים תומכים בסוגים הנפוצים ביותר: JDBC, JNDI, POJOs, CSV, XML ו MongoDB
  • ממשק API של REST היא דרישה לפרויקטים מודרניים, אולם אף אחד מהם אינו תומך בכך באופן מקורי
    • עם BIRT, עלינו לקודד א תסריט גרובי
    • ג'ספר מדווח דורש תוסף נוסף בחינם
    • עם פנטהו, עלינו לקודד א תסריט גרובי או לרכוש את PDI תוכנה מסחרית
  • קבצי JSON נתמכים באופן מקורי על ידי ג'ספר מדווח ו פנטהו, אבל BIRT ידרוש ספריית מנתח Java חיצונית
  • אנו יכולים למצוא את רשימת ההשוואה המלאה במטריקס זה

3.3. פרמטרים והתאמה אישית של זמן ריצה

מכיוון שחיברנו את הדוח שלנו למקור הנתונים שלנו, בואו נציג נתונים!

הדבר החשוב כעת הוא כיצד לאחזר את נתוני משתמשי הקצה שלנו. לשם כך נוכל להעביר פרמטרים לשיטת העיבוד. פרמטרים אלה היו צריכים להיות מוגדרים כאשר עיצבנו את הדוח, ולא בזמן הריצה. אך מה נוכל לעשות אם, למשל, מערך הנתונים שלנו מבוסס על שאילתות שונות בהתאם להקשר של משתמשי הקצה?

עם פנטהו ו ג'ספר מדווח, פשוט אי אפשר לעשות את זה, מכיוון שקובץ הדוח הוא בינארי ואין Java SDK שישנה אותם. בהשוואה, BIRT דוחות הם קבצי XML רגילים. יתר על כן, אנו יכולים להשתמש ב- Java API כדי לשנות אותם, כך קל מאוד להתאים אישית הכל בזמן הריצה.

3.4. תבניות פלט ולקוחות Javascript

למרבה המזל, רוב הפורמטים הנפוצים נתמכים בכל הכלים: HTML, PDF, Excel, CSV, טקסט רגיל, ו RTF. כיום, אנו עשויים לשאול כיצד נוכל לשלב את תוצאת הדוח ישירות בדפי האינטרנט שלנו. לא נזכיר הכללה גסה של מדמיין PDF.

  • הפיתרון הטוב ביותר הוא להשתמש Javascript לקוחות להעביר דוחות ישירות לאלמנט HTML. ל BIRT, לקוח Javascript הוא הפעילו את JSAPI ו ל ג'ספר מדווחעלינו להשתמש JRIO.js
  • פנטהו אינו מספק דבר מלבד שילוב iFrame. פתרון זה עובד אך עשוי להיות לו חסרונות חמורים

3.5. כלים לעיבוד עצמאי

מלבד שילוב הדוח שלנו בדף אינטרנט, אנו עשויים גם להיות מעוניינים שיהיה שרת עיבוד מחוץ לקופסה. כל כלי מספק פיתרון משלו:

  • מציג BIRTהוא יישום אינטרנט קל משקל מדגם לביצוע BIRT מדווח על פי דרישה. זהו קוד פתוח אך אינו כולל תכונות לניהול דוחות
  • ל פנטהו ו דוח ג'ספר, יש רק חבילות תוכנה מסחריות

4. מצב ופעילות פרויקטים

ראשית, מילה על רישיונות. BIRT הוא תחת EPL, ג'ספר מדווח תַחַת LGPLv3, ו פנטהו תַחַת LGPLv2.1. לפיכך, אנו יכולים להטמיע את כל הספריות הללו במוצרים שלנו, גם אם הם מסחריים.

לאחר מכן, אנו יכולים לשאול את עצמנו כיצד נשמרים פרויקטים של קוד פתוח, ואם הקהילה עדיין פעילה:

  • ג'ספר מדווח יש מאגר מטופח, עם פעילות בינונית יציבה על ידי עורך תוכנת TIBCO
  • BIRT מאגר נשאר מתוחזק, אבל שלו הפעילות נמוכה מאוד מאז 2015 כאשר OpenText רכשה את העורך שלה Actuate
  • בדומה לכך, פנטהו פעילות המאגר נמוכה מאוד מאז רכישת היטאצ'י-ונטארה בשנת 2015

אנו יכולים לאשר זאת באמצעות מגמות Stackoverflow. הפופולריות הנמוכה ביותר היא עבור BIRT ו פנטהו, אבל הוא מתון ל ג'ספר מדווח.

כל השלושה כלי הדיווח של Java ירדו בפופולריות שלהם בחמש השנים האחרונות אם כי נשארים יציבים לעת עתה. אנו יכולים להסביר זאת על ידי הופעתם של ענני ה- Cloud ו- Javascript.

5. כלי דיווח מסחריים של Java

מלבד פתרונות הקוד הפתוח, יש גם כמה אפשרויות מסחריות שכדאי להזכיר.

5.1. דיווח נאה

דיווח נאה תוכנן בתחילה להורג כשרת עצמאי. למרבה המזל, אנו מסוגלים לכלול אותו כחלק מהפרויקט שלנו אם אנו רוצים להשתמש בו. עלינו להעתיק ידנית את כל ה- JAR והמשאבים למלחמה שלנו, כמתואר בנוהל שלהם.

לאחר שעשינו זאת, אנו יכולים לראות את פלטפורמת קבלת החלטות הכלי הזמין ככתובת אתר בפרויקט שלנו. מכתובת אתר זו, אנו יכולים לבצע דוחות ישירות בתצוגת האינטרנט המסופקת, iFrame, או באמצעות לקוח Javascript שלהם. עם זאת, איננו יכולים ליצור דוחות באופן תכנותי.

מגבלה ענקית נוספת היא זמן הריצה היעד. גרסה 10 תומכת רק ב- Java 8 ו- Tomcat 8.x.

5.2. דוח לוגי (לשעבר JReport)

כמו Fine Report, Logi Report תוכנן להתבצע כשרת עצמאי, אך אנו יכולים לשלב אותו כחלק מפרויקט ה- WAR הקיים שלנו. לפיכך, אנו נתמודד עם אותה מגבלה כמו עם דיווח נאה: איננו יכולים ליצור דוחות באופן תכנותי.

בניגוד לדיווח פיין. עם זאת, דוח לוגי תומך כמעט בכל מכולות ה- servlet וב- Java 8 עד 13.

5.3. דיווח על ReportMill

סוף כל סוף, שווה להזכיר את ReportMill כי אנו יכולים להטמיע אותו בצורה חלקה בכל יישום Java. כמו כן, כמו BIRT, זה מאוד גמיש: אנו יכולים להתאים אישית דוחות בזמן הריצה מכיוון שהם קבצי XML רגילים.

עם זאת, אנו יכולים לראות מיד ש- ReportMill התיישן, ויש לו גם סט תכונות גרוע בהשוואה לפתרונות האחרים.

6. מסקנה

במאמר זה עברנו כמה מכלי הדיווח הידועים ביותר של Java והשווינו את התכונות שלהם.

לסיכום, אנו יכולים לבחור באחד מכלי הדיווח הבאים של Java, בהתאם לדרישותינו:

אנחנו נבחר BIRT:

  • לספרייה פשוטה החלף פתרון ביתי קיים
  • בשבילה הגמישות הגדולה ביותר ופוטנציאל ההתאמה האישית הגבוה

אנו נבחר בדוחות ג'ספר:

  • אם אנו זקוקים לספריית דיווחים התואמת ל- מערכת ניהול דוחות מן המניין
  • אם אנחנו רוצים להמר על האבולוציה והתמיכה הטובה ביותר לטווח הארוך