Java EE - מה זה?
Java EE היא פלטפורמה הבנויה על גבי Java SE המספקת API וסביבת זמן ריצה לפיתוח והרצה של יישומי רשת בקנה מידה גדול, רב-שכבתי, ניתנים להרחבה, אמינים ומאובטחים. יישומים כאלה נקראים יישומים ארגוניים מכיוון שהם פותרים בעיות עמן מתמודדים עסקים גדולים. עם זאת, לא רק תאגידים גדולים וסוכנויות ממשלתיות יכולים ליהנות מאפליקציות מסוג זה ומהיתרונות ש-Java EE מספקת. הפתרונות שפלטפורמת Java EE מציעה שימושיים, ולפעמים פשוט הכרחיים, עבור מפתחים בודדים וארגונים קטנים.פיתוח Java EE
Java EE פותח באמצעות תהליך הקהילה של Java (JCP), שהוקם ב-1998. זה מאפשר למעוניינים להשתתף בעיצוב גרסאות עתידיות של מפרטי פלטפורמת השפות Java. הבסיס לתהליך זה הוא JSR (Java Specification Request), מסמכים פורמליים המתארים את המפרטים והטכנולוגיות המוצעים להתווסף לפלטפורמת Java. בקשות כאלה נעשות על ידי חברי הקהילה - מפתחים וחברות רגילות. האחרונים כוללים את Oracle, Red Hat, IBM, Apache ועוד רבים אחרים. הָהֵן. החבר'ה מציעים תכונות חדשות ודברים טובים שהם רוצים לכלול ב-Java. ואז הם עורכים הצבעה, שעל בסיסה מתקבלת החלטה מה לכלול בגרסה הבאה. היסטוריית הגרסאות של Java EE נראית כך:- J2EE 1.2 (דצמבר 1999)
- J2EE 1.3 (ספטמבר 2001)
- J2EE 1.4 (נובמבר 2003)
- Java EE 5 (מאי 2006)
- Java EE 6 (דצמבר 2009)
- Java EE 7 (מאי)
- Java EE 8 (אוגוסט 2017)
- Jakarta EE 8 (ספטמבר 2019)
ארכיטקטורת יישומים של Java EE
הקדמה קצרה. כדי להקל על ההבנה, בואו נדבר על המבנה של יישומי Java EE וכמה מהמונחים שבהם נשתמש בהמשך. ליישומי Java EE יש מבנה בעל שתי איכויות מפתח:- ראשית, רב רמות. יישומי Java EE הם רב-שכבתיים, ואנו נדבר על כך ביתר פירוט;
- שנית, קינון. יש שרת Java EE (או שרת יישומים), עם מיכלי רכיבים שנמצאים בתוכו. מיכלים אלו מכילים רכיבים (בינגו!).
רמות יישום
יישומים מרובי שכבות הם יישומים המחולקים לפי עקרונות פונקציונליים למודולים מבודדים (רמות, שכבות). בדרך כלל (כולל בהקשר של פיתוח Java EE), יישומים ארגוניים מחולקים לשלוש רמות:- לָקוּחַ;
- רמה ממוצעת;
- רמת גישה לנתונים.
-
שכבת הלקוח היא אפליקציה המבקשת נתונים משרת Java EE (השכבה האמצעית). השרת, בתורו, מעבד את בקשת הלקוח ומחזיר לה תגובה. אפליקציית הלקוח יכולה להיות דפדפן, אפליקציה עצמאית (נייד או שולחני), או יישומי שרת אחרים ללא ממשק גרפי.
-
רמת הביניים מחולקת, בתורה, לרמת האינטרנט ולרמת ההיגיון העסקי.
-
שכבת האינטרנט מורכבת מכמה רכיבים המספקים אינטראקציה בין לקוחות לשכבת ההיגיון העסקי.
נעשה שימוש בטכנולוגיות Java EE הבאות ברמת האינטרנט:
- טכנולוגיית JavaServer Faces (JSF);
- Java Server Pages (JSP);
- שפת ביטוי (EL);
- סרבלים;
- הקשרים והזרקת תלות עבור Java EE (CDI).
-
שכבת ההיגיון העסקי מורכבת ממרכיבים המיישמים את כל ההיגיון העסקי של האפליקציה. לוגיקה עסקית היא קוד המספק פונקציונליות המכסה את הצרכים של תחום עסקי מסוים (תעשייה פיננסית, בנקאות, מסחר אלקטרוני). רמה זו יכולה להיחשב הליבה של המערכת כולה.
טכנולוגיות המעורבות ברמה זו:
- Enterprise JavaBeans (EJB);
- שירותי אינטרנט של JAX-RS RESTful;
- ישויות Java Persistence API;
- שירות הודעות Java.
-
-
רמת גישה לנתונים. רמה זו נקראת לעיתים רמת מערכות המידע הארגוניות (EIS). EIS מורכב משרתי מסדי נתונים שונים, ERP (Enterprise Resource Planning) מערכות תכנון משאבים ארגוניים ומקורות נתונים אחרים. שכבת הלוגיקה העסקית ניגשת לשכבה זו לצורך נתונים.
ברמה זו ניתן למצוא טכנולוגיות כגון:
- Java Database Connectivity API (JDBC);
- Java Persistence API;
- ארכיטקטורת מחברים של Java EE;
- Java Transaction API (JTA).
שרתי יישומים, קונטיינרים, רכיבים
בואו נסתכל על ההגדרה של Java EE מוויקיפדיה. Java EE הוא סט של מפרטים ותיעוד קשור לשפת Java, המתאר את הארכיטקטורה של פלטפורמת השרת למשימות של ארגונים בינוניים וגדולים. כדי להבין טוב יותר מה המשמעות של "סט מפרטים" בהקשר זה, הבה נצייר אנלוגיה עם ממשק Java. ממשק Java עצמו נטול פונקציונליות. זה פשוט מגדיר חוזה כלשהו שלפיו מיושמת פונקציונליות כלשהי. אבל מחלקות אחרות מיישמות את הממשק. יתרה מכך, לממשק אחד יכולים להיות מספר יישומים, שכל אחד מהם עשוי להיות שונה זה מזה בחלק מהפרטים. עם המפרט הכל בדיוק אותו דבר. Naked Java EE הוא רק סט של מפרטים. מפרטים אלה מיושמים על ידי שרתי Java EE שונים. שרת Java EE הוא יישום שרת המיישם את ממשקי API של פלטפורמת Java EE ומספק שירותי Java EE סטנדרטיים. שרתי Java EE נקראים לפעמים שרתי יישומים. נתוני שרת יכולים להכיל רכיבי יישומים, שכל אחד מהם מתאים לרמה שלו בהיררכיה מרובת רמות. שרת Java EE מספק שירותים שונים לרכיבים אלו בצורה של קונטיינר. קונטיינרים הם הממשק בין הרכיבים שהם מארחים לבין הפונקציונליות הבלתי תלויה בפלטפורמה ברמה נמוכה התומכת ברכיב. קונטיינרים מספקים שירותים ספציפיים לרכיבים שהם מארחים. לדוגמה, ניהול מחזור החיים של הפיתוח, הזרקת תלות, במקביל וכו'. קונטיינרים מסתירים מורכבות טכנית ומגבירים את הניידות. ישנם ארבעה סוגים שונים של מיכלים ב-Java EE :-
מיכלי יישומונים מיושמים על ידי רוב הדפדפנים. בעת פיתוח יישומונים, ניתן להתרכז בצד הוויזואלי של האפליקציה, בעוד שהמיכל מספק סביבה מאובטחת.
-
ה- Application Client Container (ACC) מכיל קבוצה של מחלקות Java, ספריות וקבצים אחרים הדרושים ליישום תכונות כגון הזרקה, ניהול אבטחה ושירותי שמות ביישומי Java SE.
-
קונטיינר האינטרנט מספק את שירותי הליבה לניהול וביצוע רכיבי אינטרנט (servlets, רכיבי EJB Lite, דפי JSP, מסננים, מאזינים, דפי JSF ושירותי אינטרנט). הוא אחראי על מופע, אתחול והפעלת servlets, ותמיכה בפרוטוקולי HTTP ו-HTTPS. מיכל זה משמש לשרת דפי אינטרנט לדפדפני לקוחות.
-
מיכל EJB (Enterprise Java Bean) אחראי על ניהול וביצוע רכיבי מודל ה-EJB המכילים את שכבת הלוגיקה העסקית של האפליקציה. היא יוצרת ישויות שעועית EJB חדשות, מנהלת את מחזור החיים שלהן, ומספקת שירותים כמו עסקאות, אבטחה, במקביל, הפצה, מתן שמות או יכולות הפעלה אסינכרונית.
-
יישומונים הם יישומי ממשק משתמש גרפי (GUI) הפועלים בדפדפן. הם ממנפים את ה-API העשיר של Swing כדי לייצר ממשקי משתמש רבי עוצמה.
-
אפליקציות הן תוכנות הפועלות בצד הלקוח. בדרך כלל הם ממשק משתמש גרפי (GUI) ומשמשים לעיבוד אצווה.
-
יישומי אינטרנט (המורכבים משרתים ומסננים שלהם, מאזינים לאירועי אינטרנט, דפי JSP ו-JSF) - פועלים בקונטיינר אינטרנט ומגיבים לבקשות HTTP של לקוחות אינטרנט. Servlets תומכים גם בנקודות קצה של שירות אינטרנט של SOAP ו-RESTful.
-
יישומים ארגוניים (הבנויים עם Enterprise Java Beans, Java Message Service, Java Transaction API, שיחות א-סינכרוניות, שירותי זמן) פועלים במיכל EJB. EJBs המנוהלים במכולות מטפלים בלוגיקה עסקית עסקית. ניתן לגשת אליהם באופן מקומי או מרחוק באמצעות RMI (או HTTP עבור שירותי אינטרנט SOAP ו-RESTful).
טכנולוגיות
אז, סידרנו את הארכיטקטורה. המבנה הכללי צריך להיות ברור. בתהליך תיאור הרכיבים הארכיטקטוניים נגענו בכמה טכנולוגיות Java EE כמו EJB, JSP וכו'. בואו נסתכל עליהם מקרוב. הטבלה שלהלן מציגה את הטכנולוגיות המשמשות בעיקר ברמת הלקוח:טֶכנוֹלוֹגִיָה | מַטָרָה |
---|---|
סרבלים | מחלקות Java המעבדות באופן דינמי בקשות של לקוחות ומייצרות תגובות (בדרך כלל דפי HTML). |
Java Server Faces (JSF) | מסגרת לבניית אפליקציות אינטרנט עם ממשק משתמש. מאפשר לך לכלול רכיבי ממשק משתמש (לדוגמה, שדות וכפתורים) בדף, להפוך ולאמת רכיבים אלה, ולאחסן נתונים אלה באחסון בצד השרת. |
טכנולוגיית Java Server Faces Facelets | זהו תת-סוג של יישום JSF המשתמש בדפי XHTML במקום בדפי JSP |
Java Server Pages (JSP) | מסמכי טקסט המורכבים לתוך servlets. מאפשר לך להוסיף תוכן דינמי לדפים סטטיים (כגון דפי HTML) |
Java Server Pages Standard Tag Library (JSTL) | ספריית תגים המכילה פונקציונליות ליבה בהקשר של דפי JSP. |
שפת ביטוי | קבוצה של תגים סטנדרטיים המשמשים בדפי JSP ו-Facelets כדי לגשת לרכיבי Java EE. |
הקשרים והזרקת תלות עבור Java EE (CDI) | מייצג סט שירותים הניתנים על ידי מיכלי Java EE לניהול מחזור החיים של רכיבים, כמו גם הזרקת רכיבים לאובייקטי לקוח בצורה מאובטחת. |
רכיבי Java Beans | אובייקטים הפועלים כאחסון נתונים זמני עבור דפי יישומים. |
טֶכנוֹלוֹגִיָה | מַטָרָה |
---|---|
Enterprise Java Beans (שעועית ארגונית). | EJBs הם שעועית מנוהלת המכילה את פונקציונליות הליבה של יישום. |
שירותי אינטרנט של JAX-RS RESTful | זהו API לפיתוח שירותי אינטרנט התואמים את הסגנון האדריכלי של REST. |
נקודות קצה של שירות האינטרנט של JAX-WS | API ליצירה וצריכה של שירותי אינטרנט של SOAP. |
ישויות Java Persistence API (JPA). | API לגישה לנתונים במאגרי נתונים והמרת נתונים אלה לאובייקטים בשפת תכנות Java ולהיפך. |
שעועית מנוהלת ב-Java EE | שעועית מנוהלת המספקת את ההיגיון העסקי של האפליקציה אך אינה דורשת את תכונות העסקאות או האבטחה של ה-EJB. |
שירות הודעות Java | ה-API של Java Message Service (JMS) הוא תקן הודעות המאפשר לרכיבי יישומי Java EE ליצור, לשלוח, לקבל ולקרוא הודעות. זה מבטיח תקשורת מבוזרת, אמינה וא-סינכרונית בין רכיבים. |
טֶכנוֹלוֹגִיָה | מַטָרָה |
---|---|
ה-Java Database Connectivity API (JDBC) | API ברמה נמוכה לגישה ואחזור נתונים ממאגרי נתונים. שימוש טיפוסי ב-JDBC הוא כתיבת שאילתות SQL כנגד מסד נתונים ספציפי. |
ה-API של Java Persistence | API לגישה לנתונים במאגרי נתונים והמרת נתונים אלה לאובייקטים בשפת תכנות Java ולהיפך. API ברמה הרבה יותר גבוהה בהשוואה ל-JDBC. מסתיר את כל המורכבות של JDBC מהמפתח מתחת למכסה המנוע. |
ארכיטקטורת מחברי Java EE | API לחיבור משאבים ארגוניים אחרים, כגון:
|
ה-Java Transaction API (JTA) | API להגדרה וניהול של עסקאות, כולל עסקאות ועסקאות מבוזרות על פני מספר מאגרי נתונים. |
GO TO FULL VERSION