בשפת התכנות ג'אווה, POJO (פּוֹג'וֹ) הם ראשי תיבות של Plain Old Java Objectתרגום חופשי: אובייקט ג'אווה פשוט, "ישן וטוב"). המושג משמש כדי להדגיש שאובייקט מסוים הוא אובייקט רגיל של ג'אווה, ולא סוג מיוחד כלשהו של אובייקט.

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

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

הגדרה

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

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

מקור המושג

את המושג טבעו מרטין פאולר, רבקה פרסונס וג'וש מקנזי בספטמבר 2000:

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

POJO ממשיך את התבנית של מושגים ישנים יותר לתיאור טכנולוגיות שאינן משתמשות במאפיינים חדשים ומיוחדים, כגון: