POJO
בשפת התכנות ג'אווה, POJO (פּוֹג'וֹ) הם ראשי תיבות של Plain Old Java Object (בתרגום חופשי: אובייקט ג'אווה פשוט, "ישן וטוב"). המושג משמש כדי להדגיש שאובייקט מסוים הוא אובייקט רגיל של ג'אווה, ולא סוג מיוחד כלשהו של אובייקט.
המושג POJO משמש בעיקר כדי לתאר אובייקט ג'אווה שאינו מוגדר בהתבסס על שום מודל אובייקטים, קונבנציה, או תשתית תוכנה גדולה. ככל הנראה, השימוש במושג הפך מקובל בגלל הצורך במושג נפוץ וקל להבנה, כדי להבחין בין אובייקטים רגילים לאובייקטים מורכבים של תשתיות תוכנה.
JavaBean הוא מקרה פרטי של POJO, העונה על שלושת הכללים הבאים: האובייקט ניתן לסריאליזציה, יש לו קונסטרקטור שלא מקבל ארגומנטים, והוא מאפשר גישה למשתני המחלקה באמצעות מתודות get ו-set הנקראות על פי קונבנציה פשוטה למתן שמות.
הגדרה
[עריכת קוד מקור | עריכה]באופן אידיאלי, POJO הוא אובייקט ג'אווה שאינו מוגבל על ידי שום כלל חוץ מאלה הנאכפים על ידי המפרט של שפת ג'אווה עצמה. POJO לא אמור להיות מחויב לאף אחד מהבאים:
- לרשת (extend) ממחלקה כלשהי שהוגדרה מראש.
- לממש (implement) ממשק כלשהו שהוגדר מראש.
- להכיל אנוטציה (Java annotation) כלשהי שהוגדרה מראש.
עם זאת, בגלל קשיים טכניים ומסיבות אחרות, תשתיות ומוצרי תוכנה רבים המתוארים כמותאמים לעבודה עם POJOs, בכל זאת דורשים שימוש באנוטציות שהוגדרו מראש, על מנת שאפשרויות כמו persistence יעבדו כנדרש.
מקור המושג
[עריכת קוד מקור | עריכה]את המושג טבעו מרטין פאולר, רבקה פרסונס וג'וש מקנזי בספטמבר 2000:
תהינו מדוע אנשים כל כך התנגדו להשתמש באובייקטים רגילים במערכות שלהם, והגענו למסקנה שהסיבה לכך היא שלאובייקטים פשוטים היה חסר שם מהודר. אז נתנּו להם אחד, והוא תפס יפה מאוד.
POJO ממשיך את התבנית של מושגים ישנים יותר לתיאור טכנולוגיות שאינן משתמשות במאפיינים חדשים ומיוחדים, כגון:
- בטלפוניה, המושג POTS עבור Plain Old Telephone Service.
- ב- C, המושג PODS עבור Plain Old Data Structure, מתאר מבני נתונים המשתמשים רק במאפיינים של שפת C.
- ב-Perl, המושג POD עבור Plain Old Documentation.
- בדוט נט, המקבילה ל-POJO היא POCO עבור Plain Old CLR Oject. ב-PHP, המושג הוא POPO עבור Plain Old PHP Object.
Java (פלטפורמת תוכנה) | ||
---|---|---|
פלטפורמה | Java (שפת תכנות) • Java Card • Java ME • Java EE • Java SE • Java Virtual Machine | |
טכנולוגיות | Java applet • Java Web Start • Java Servlet • JavaServer Pages • JavaFX • JavaServer Faces | |
מושגים | איסוף זבל • Cross-platform • Java Bytecode • Java Development Kit • Javadoc • Java Classloader • Java Class Library JIT Compiler • HotSpot • JavaBeans • Enterprise JavaBeans • JNI • JAR • POJO • Web container • Java annotation | |
ממשקי תכנות יישומים | Swing • AWT • SWT • Java 3D • Java 2D • JMS • JDBC • JAXP • JPA • RMI • JNDI | |
שפות ל-JVM | Scala • Clojure • Groovy • JRuby • Jython | |
תשתיות תוכנה וכלים של חברות צד שלישי |
אפאצ'י טומקט • Apache Maven • Apache Ant • Apache Struts JUnit • Hibernate • Spring Framework • JBoss • Google Web Toolkit • BEA WebLogic • IBM WebSphere | |
סביבות פיתוח משולבות | Eclipse • NetBeans • IntelliJ | |
חברות | סאן מיקרוסיסטמס • אורקל | |
אישים | ג'יימס גוסלינג • ביל ג'וי • אריק שמידט |