<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=JavaBeans</id>
	<title>JavaBeans - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=JavaBeans"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=JavaBeans&amp;action=history"/>
	<updated>2026-05-16T11:47:43Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=JavaBeans&amp;diff=211058&amp;oldid=prev</id>
		<title>imported&gt;Raubsaurier: /* Weblinks */ Auf der Seite taucht das Wort JavaBeans nicht auf.</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=JavaBeans&amp;diff=211058&amp;oldid=prev"/>
		<updated>2023-10-09T12:13:39Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Weblinks: &lt;/span&gt; Auf der Seite taucht das Wort JavaBeans nicht auf.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;JavaBeans&amp;#039;&amp;#039;&amp;#039; sind [[Komponente (Software)|Software-Komponenten]] für die Programmiersprache [[Java (Programmiersprache)|Java]]. JavaBeans entwickelten sich aus der Notwendigkeit heraus, [[Graphical User Interface|GUI]]-Klassen ([[Abstract Window Toolkit|AWT]], [[Swing (Java)|Swing]]) einfach zu [[Objekt (Programmierung)#Instanziierung|instanziieren]] und mittels [[Remote Method Invocation|RMI]] zu übertragen. JavaBeans werden auch als Container zur Datenübertragung verwendet. Daher zeichnen sich alle JavaBeans durch folgende Eigenschaften aus:&lt;br /&gt;
&lt;br /&gt;
* Öffentlicher parameterloser [[Konstruktor]]&lt;br /&gt;
* [[Serialisierung|Serialisierbarkeit]] (Serializable)&lt;br /&gt;
* Öffentliche [[Zugriffsfunktion#JavaBeans|Zugriffsmethoden]] (Public Getters/Setters)&lt;br /&gt;
&lt;br /&gt;
Auf Grund dieser Eigenschaften eignen sich JavaBeans auch als Datenobjekte für [[Persistenz (Informatik)|Persistenzframeworks]] &amp;#039;&amp;#039;(siehe [[Enterprise JavaBeans]])&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Überblick ==&lt;br /&gt;
Eine JavaBean ist eine Java-[[Klasse (Programmierung)|Klasse]], die einem [[Komponentenmodell]] entspricht, um automatisierten Zugriff auf ihre Eigenschaften ([[Membervariable]]n) und Operationen ([[Methode (Programmierung)|Methoden]]) zu erlauben. Das Java-[[Software Development Kit|SDK]] stellt Anwendungsentwicklern die Bean-[[Application Programming Interface|API]] (das Paket &amp;lt;code&amp;gt;java.beans&amp;lt;/code&amp;gt;) zur Verfügung, um beispielsweise eine Kurzbeschreibung einer Bean anzuzeigen. Das JavaBean-Komponentenmodell wurde vor allem entwickelt, um eine einheitliche API zur einfacheren Entwicklung von GUI-Buildern bereitzustellen. Beans realisieren eine verbesserte Serialisierung und damit Netzwerkfähigkeit, [[Wiederverwendbarkeit]], [[Plattformunabhängigkeit|Portabilität]] und [[Interoperabilität]].&lt;br /&gt;
&lt;br /&gt;
Eine Komponente ist nur dann eine JavaBean, wenn sie der &amp;#039;&amp;#039;JavaBeans API Specification&amp;#039;&amp;#039; entspricht, die von der &amp;#039;&amp;#039;JavaBeans Component Architecture&amp;#039;&amp;#039; spezifiziert wird.&lt;br /&gt;
&lt;br /&gt;
== Instanziierung ==&lt;br /&gt;
Eine JavaBean besitzt immer einen [[Konstruktor]] ohne Parameter (Standardkonstruktor). Dies ermöglicht eine standardisierte Instanziierung, beispielsweise einer [[Schaltfläche]]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JButton button = (JButton) Class.forName(&amp;quot;javax.swing.JButton&amp;quot;).newInstance();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Eine Alternative dieser Instanziierung ist:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
JButton button = new JButton();&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zugriffsoperationen ==&lt;br /&gt;
Alle &amp;#039;&amp;#039;Eigenschaften&amp;#039;&amp;#039; einer Bean wahren das [[Datenkapselung (Programmierung)|Geheimnisprinzip]] &amp;#039;&amp;#039;(information hiding)&amp;#039;&amp;#039;. Der Zugriff ist über spezielle Operationen möglich, die bestimmten Konventionen entsprechen müssen.&lt;br /&gt;
&lt;br /&gt;
Für eine Eigenschaft &amp;lt;code&amp;gt;foo&amp;lt;/code&amp;gt; heißt die lesende Operation &amp;#039;&amp;#039;(Getter)&amp;#039;&amp;#039; &amp;lt;code&amp;gt;getFoo&amp;lt;/code&amp;gt;. Bei booleschen Variablen ist alternativ auch &amp;lt;code&amp;gt;isFoo&amp;lt;/code&amp;gt; möglich, was allgemein vorgezogen wird. Die schreibende Operation &amp;#039;&amp;#039;(Setter)&amp;#039;&amp;#039; heißt &amp;lt;code&amp;gt;setFoo&amp;lt;/code&amp;gt;. Indizierte Eigenschaften besitzen jeweils zwei Getter und Setter: Einen für die Gesamtheit, einen für einen bestimmten Index. Eine schreibgeschützte Eigenschaft besitzt keinen (öffentlichen) Setter.&lt;br /&gt;
&lt;br /&gt;
== Introspektion ==&lt;br /&gt;
[[Reflexion (Programmierung)|Introspektion]] ist der Mechanismus, eine Bean auf ihre Eigenschaften, [[Ereignis (Programmierung)|Ereignisse]] &amp;#039;&amp;#039;(Events)&amp;#039;&amp;#039; und Operationen zu analysieren. Die API bietet dabei Möglichkeiten, die eine zusätzliche Unterstützung zur Introspektion von Seiten des Bean-Entwicklers unnötig machen. Beans können per [[Reflexion (Programmierung)|Reflexion]] untersucht werden, wenn sie sich an die in der [[Java Specification Request|Spezifikation]] definierten Konventionen halten.&lt;br /&gt;
&lt;br /&gt;
Ferner gibt es die Möglichkeit, für jede Bean eine BeanInfo-Klasse zu schreiben, die Informationen über die Bean, ihre Eigenschaften und Operationen enthält. Die Klasse &amp;lt;code&amp;gt;java.beans.Introspector&amp;lt;/code&amp;gt; sucht erst nach expliziten Informationen und vervollständigt diese durch Reflexion.&lt;br /&gt;
&lt;br /&gt;
== Weiteres ==&lt;br /&gt;
Bei der Änderung einer &amp;#039;&amp;#039;Bound Property&amp;#039;&amp;#039; (gebundene Eigenschaft) müssen Objekte über die Änderung informiert werden. Bei &amp;#039;&amp;#039;Constrained Properties&amp;#039;&amp;#039; können diese zudem ein &amp;#039;&amp;#039;Veto&amp;#039;&amp;#039; einlegen. Die Bean-API stellt hierfür ein &amp;#039;&amp;#039;Event Delegation Model&amp;#039;&amp;#039; bereit.&lt;br /&gt;
&lt;br /&gt;
Es können grafische &amp;#039;&amp;#039;Editoren&amp;#039;&amp;#039; und &amp;#039;&amp;#039;Customizer&amp;#039;&amp;#039; für bestimmte [[Datentyp]]en und Beans erstellt und durch sie Eigenschaften bequem angepasst werden.&lt;br /&gt;
&lt;br /&gt;
Es gibt einen Persistenzmechanismus für Beans. So können Beans beispielsweise als [[Extensible Markup Language|XML]]-Dokument gespeichert werden.&lt;br /&gt;
&lt;br /&gt;
== Literatur ==&lt;br /&gt;
* Olaf Zwintzscher: &amp;#039;&amp;#039;Software-Komponenten im Überblick.&amp;#039;&amp;#039; W3L, 2004, ISBN 3-937137-60-2&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [http://www.oracle.com/technetwork/java/javase/documentation/spec-136004.html &amp;#039;&amp;#039;JavaBeans API Specification&amp;#039;&amp;#039;]&lt;br /&gt;
* [http://www.intermitto.net/entwicklung/jinbean/ Diplomarbeit &amp;#039;&amp;#039;JinBean Java GUI Builder – Konzepte und Realisierung&amp;#039;&amp;#039;] Viele der genannten Informationen sind dieser Arbeit entnommen&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Java (Programmiersprache)]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Raubsaurier</name></author>
	</entry>
</feed>