אין לבלבל עם אין לבלבל ערך זה עם הערך "Enterprise JavaBeans".
בשפת התכנות ג'אווה, **JavaBeans** (**ג'אווה בינז**) הם רכיבי תוכנה הניתנים לשימוש חוזר (באנגלית bean: פול קפה או שעועית). אלו הן מחלקות הנכתבות בשפת ג'אווה ומשמשות כדי לכמס הרבה אובייקטים בתוך אובייקט אחד (ה-bean), כך שניתן יהיה להעביר אותם ממקום למקום כאובייקט bean אחד, במקום הרבה אובייקטים בודדים.

קונבנציות של JavaBeans
----------------------

על מנת לתפקד כ-JavaBean, המחלקה חייבת להיבנות לפי מספר קונבנציות (מוסכמות) הנוגעות למתן השמות למתודות, יצירת מופעים והתנהגות. קונבנציות אלו מאפשרות יצירת כלים אשר יכולים להשתמש ב-JavaBeans, להחליף ביניהם, לחבר ביניהם וכדומה.

JavaBean היא מחלקת ג'אווה העונה על שלוש הדרישות הבאות:

* **האובייקט ניתן לסריאליזציה (המחלקה מממשת את הממשק `Serializable`)**. זה מאפשר ליישומים חיצוניים ולתשתיות תוכנה (frameworks) לשמור, לאחסן ולשחזר את המצב של ה-bean בצורה אמינה, ללא תלות במכונה הווירטואלית והפלטפורמה.
* **למחלקה יש קונסטרקטור שאינו מקבל ארגומנטים (no arguments constructor)**. דבר זה מאפשר יצירה והפעלה פשוטים של מופעים של המחלקה באמצעות תשתיות תוכנה.
* **קיימת גישה למשתני המחלקה (properties) באמצעות מתודות get ו-set (מתודות mutator)**. למתודות אלה ניתנים שמות העונים על קונבנציה סטנדרטית למתן שמות. לדוגמה, עבור משתנה מחלקה בשם `name` ייווצרו המתודות `getName` ו-`setName`. למשתני מחלקה מטיפוס `boolean`, מתודת ה-`get` מוחלפת במתודה המתחילה ב-`is`. לדוגמה, עבור משתנה מחלקה בשם `empty` מטיפוס `boolean` תהיה קיימת המתודה `isEmpty`. השמות עבור מתודות `set` אינם משתנים עבור משתנים בוליאניים. מתודות `set` חייבות לקבל רק ארגומנט אחד. כללים אלה מאפשרים בדיקה ועדכון אוטומטיים פשוטים של מצב ה-bean באמצעות תשתיות תוכנה, שרבות מהן כוללות מנגנונים משלהן לעדכון משתני מחלקה מטיפוסים שונים.

דוגמה ל-JavaBean
----------------

**`PersonBean.java`**:

```
package beans;

import java.io.\*;

/\*\*
 \* Class <code>PersonBean</code>.
 \*/
public class PersonBean implements Serializable {

 private String name;

 private boolean deceased;

 /\*\* No-arg constructor (takes no arguments). \*/
 public PersonBean() {
 }

 /\*\*
 \* Property <code>name</code> (note capitalization) readable/writable.
 \*/
 public String getName() {
 return this.name;
 }

 /\*\*
 \* Setter for property <code>name</code>.
 \* @param name
 \*/
 public void setName(final String name) {
 this.name = name;
 }

 /\*\*
 \* Getter for property "deceased"
 \* Different syntax for a boolean field (is vs. get)
 \*/
 public boolean isDeceased() {
 return this.deceased;
 }

 /\*\*
 \* Setter for property <code>deceased</code>.
 \* @param deceased
 \*/
 public void setDeceased(final boolean deceased) {
 this.deceased = deceased;
 }
}

```

**`TestPersonBean.java`**:

```
import beans.PersonBean;

/\*\*
 \* Class <code>TestPersonBean</code>.
 \*/
public class TestPersonBean {
 /\*\*
 \* Tester method <code>main</code> for class <code>PersonBean</code>.
 \* @param args
 \*/
 public static void main(String[] args) {
 PersonBean person = new PersonBean();
 person.setName("Bob");
 person.setDeceased(false);

 // Output: "Bob [alive]"
 System.out.print(person.getName());
 System.out.println(person.isDeceased() ? "[deceased]" : "[alive]");
 }
}

```

**`testPersonBean.jsp`**:

```
<% // Use of PersonBean in a JSP. %>
<jsp:useBean id="person" class="beans.PersonBean" scope="page"/>
<jsp:setProperty name="person" property="*"/>

<html>
    <body>
        Name: <jsp:getProperty name="person" property="name"/><br/>
        Deceased? <jsp:getProperty name="person" property="deceased"/><br/>
        <br/>
        <form name="beanTest" method="POST" action="testPersonBean.jsp">
            Enter a name: <input type="text" name="name" size="50"><br/>
            Choose an option:
            <select name="deceased">
                <option value="false">Alive</option>
                <option value="true">Dead</option>
            </select>
            <input type="submit" value="Test the Bean">
        </form>
    </body>
</html>
```

קישורים חיצוניים
----------------

* 

* אתר האינטרנט הרשמי של JavaBeans
* המדריך הרשמי ל-JavaBeans באתר של Oracle (באנגלית)

| 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 
Java package • Java Class File |
| ממשקי תכנות יישומים | 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 |
| חברות | סאן מיקרוסיסטמס • אורקל |
| אישים | ג'יימס גוסלינג • ביל ג'וי • אריק שמידט |