<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Andreas Bauer, Autor bei LernJAVA.de</title>
	<atom:link href="https://lernjava.de/author/andreas-bauer/feed/" rel="self" type="application/rss+xml" />
	<link>https://lernjava.de/author/andreas-bauer/</link>
	<description>Lust JAVA zu lernen?</description>
	<lastBuildDate>Thu, 14 May 2026 10:11:46 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.5</generator>

<image>
	<url>https://lernjava.de/wp-content/uploads/2022/05/cropped-Logo-Lern-Java-2022-32x32.png</url>
	<title>Andreas Bauer, Autor bei LernJAVA.de</title>
	<link>https://lernjava.de/author/andreas-bauer/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Instanzvariablen in Java einfach erklärt</title>
		<link>https://lernjava.de/instanzvariablen-in-java/</link>
					<comments>https://lernjava.de/instanzvariablen-in-java/#respond</comments>
		
		<dc:creator><![CDATA[Andreas Bauer]]></dc:creator>
		<pubDate>Thu, 14 May 2026 10:11:44 +0000</pubDate>
				<category><![CDATA[Basics]]></category>
		<category><![CDATA[Grundlagen]]></category>
		<category><![CDATA[Intermediate]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Klassen und Objekte]]></category>
		<guid isPermaLink="false">https://lernjava.de/?p=773</guid>

					<description><![CDATA[<p>Instanzvariablen in Java einfach erklärt. Verstehe, wo sie stehen, wie sie funktionieren und wie sie sich von anderen Variablen unterscheiden.</p>
<p>Der Beitrag <a href="https://lernjava.de/instanzvariablen-in-java/">Instanzvariablen in Java einfach erklärt</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Einordnung</h3>



<p class="wp-block-paragraph">Instanzvariablen sind ein zentrales Thema in der objektorientierten Programmierung mit <a href="https://lernjava.de/category/java/" type="category" id="2">Java</a>. Sobald du mit Klassen und Objekten arbeitest, kommst du an ihnen nicht vorbei.</p>



<p class="wp-block-paragraph">Viele Anfänger kennen zwar den Begriff, können aber oft nicht sauber unterscheiden, was eine Instanzv<a href="https://lernjava.de/tag/variable/" type="post_tag" id="74">ariable</a> ist und was eine lokale Variable oder Klassenvariable. Genau das klären wir hier sauber und ohne unnötiges Theorie-Gelaber.</p>



<h3 class="wp-block-heading">Was sind Instanzvariablen?</h3>



<p class="wp-block-paragraph">Instanzvariablen sind Variablen, die zu einem <strong>konkreten Objekt</strong> gehören.</p>



<p class="wp-block-paragraph">Das heißt:</p>



<ul class="wp-block-list">
<li>sie werden in einer <a href="https://lernjava.de/tag/klasse/" type="post_tag" id="63">Klasse</a> definiert</li>



<li>aber ihr Wert gehört immer zu einer einzelnen Instanz</li>



<li>jedes Objekt hat seine eigenen Werte für diese Variablen</li>
</ul>



<p class="wp-block-paragraph">Einfach gesagt: Instanzvariablen speichern den Zustand eines <a href="https://lernjava.de/tag/objekt/" type="post_tag" id="64">Objekts</a>.</p>



<h3 class="wp-block-heading">Einfaches Beispiel</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">public class Auto {
    String marke;
    int baujahr;
}</pre>



<p class="wp-block-paragraph">Hier sind <code>marke</code> und <code>baujahr</code> Instanzvariablen.</p>



<p class="wp-block-paragraph">Wenn du jetzt Objekte erzeugst, bekommt jedes Objekt eigene Werte:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Auto auto1 = new Auto();
auto1.marke = "BMW";
auto1.baujahr = 2020;

Auto auto2 = new Auto();
auto2.marke = "Audi";
auto2.baujahr = 2023;</pre>



<p class="wp-block-paragraph">Obwohl beide Objekte aus derselben Klasse stammen, haben sie unterschiedliche Zustände.</p>



<h3 class="wp-block-heading">Warum heißen sie Instanzvariablen?</h3>



<p class="wp-block-paragraph">Der Name kommt daher, dass sie zu einer <strong>Instanz</strong> einer Klasse gehören.</p>



<ul class="wp-block-list">
<li>Die Klasse ist der Bauplan</li>



<li>das Objekt ist die konkrete Instanz</li>



<li>die Instanzvariable speichert die Daten dieser Instanz</li>
</ul>



<p class="wp-block-paragraph">Ohne Instanzvariablen wären Objekte kaum interessant, weil sie dann keinen eigenen Zustand hätten.</p>



<h3 class="wp-block-heading">Wo stehen Instanzvariablen im Code?</h3>



<p class="wp-block-paragraph">Instanzvariablen stehen direkt in der Klasse, aber außerhalb von Methoden und Konstruktoren.</p>



<p class="wp-block-paragraph">Beispiel:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">public class Person {
    String name;
    int alter;

    public void vorstellen() {
        System.out.println("Ich heiße " + name);
    }
}</pre>



<p class="wp-block-paragraph"><code>name</code> und <code>alter</code> stehen im Klassenkörper. Genau daran erkennst du, dass es keine lokalen Variablen sind.</p>



<h3 class="wp-block-heading">Unterschied zu lokalen Variablen</h3>



<p class="wp-block-paragraph">Lokale Variablen entstehen innerhalb einer Methode oder eines Blocks.</p>



<p class="wp-block-paragraph">Beispiel:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">public void ausgabe() {
    int zahl = 10;
    System.out.println(zahl);
}</pre>



<p class="wp-block-paragraph">Hier ist <code>zahl</code> eine lokale Variable.</p>



<p class="wp-block-paragraph">Der Unterschied:</p>



<ul class="wp-block-list">
<li><strong>Instanzvariable</strong> gehört zum Objekt</li>



<li><strong>lokale Variable</strong> gehört nur zur Methode und lebt nur dort kurzzeitig</li>
</ul>



<p class="wp-block-paragraph">Instanzvariablen bleiben also Teil des Objektzustands. Lokale Variablen nicht.</p>



<h3 class="wp-block-heading">Unterschied zu Klassenvariablen</h3>



<p class="wp-block-paragraph">Klassenvariablen gehören nicht zu einem einzelnen Objekt, sondern zur Klasse insgesamt. Sie werden mit <code>static</code> markiert.</p>



<p class="wp-block-paragraph">Beispiel:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">public class Auto {
    static int anzahlAutos;
    String marke;
}</pre>



<p class="wp-block-paragraph">Hier ist:</p>



<ul class="wp-block-list">
<li><code>anzahlAutos</code> eine Klassenvariable</li>



<li><code>marke</code> eine Instanzvariable</li>
</ul>



<p class="wp-block-paragraph">Der Unterschied ist wichtig:</p>



<ul class="wp-block-list">
<li>Instanzvariablen haben pro Objekt eigene Werte</li>



<li>Klassenvariablen werden von allen Objekten gemeinsam geteilt</li>
</ul>



<h3 class="wp-block-heading">Standardwerte von Instanzvariablen</h3>



<p class="wp-block-paragraph">Ein Vorteil in Java ist: Instanzvariablen bekommen automatisch Standardwerte, wenn du nichts setzt.</p>



<p class="wp-block-paragraph">Zum Beispiel:</p>



<ul class="wp-block-list">
<li><code>int</code> wird <code>0</code></li>



<li><code>double</code> wird <code>0.0</code></li>



<li><code>boolean</code> wird <code>false</code></li>



<li>Referenztypen wie <code>String</code> werden <code>null</code></li>
</ul>



<p class="wp-block-paragraph">Beispiel:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">public class Test {
    int zahl;
    boolean aktiv;
    String text;
}</pre>



<p class="wp-block-paragraph">Wenn du ein Objekt erzeugst, haben diese Variablen automatisch Startwerte.</p>



<p class="wp-block-paragraph">Das gilt <strong>nicht</strong> für lokale Variablen. Die musst du vor der Nutzung selbst initialisieren.</p>



<h3 class="wp-block-heading">Instanzvariablen und Konstruktoren</h3>



<p class="wp-block-paragraph">Instanzvariablen werden oft über Konstruktoren gesetzt.</p>



<p class="wp-block-paragraph">Beispiel:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">public class Auto {
    String marke;
    int baujahr;

    public Auto(String marke, int baujahr) {
        this.marke = marke;
        this.baujahr = baujahr;
    }
}</pre>



<p class="wp-block-paragraph">Der <a href="https://lernjava.de/tag/konstruktor/" type="post_tag" id="69">Konstruktor</a> sorgt hier dafür, dass ein neues <code>Auto</code> direkt sinnvolle Werte bekommt.</p>



<p class="wp-block-paragraph">Gerade deshalb hängen die Themen Konstruktoren und Instanzvariablen eng zusammen.</p>



<h3 class="wp-block-heading">Praxisbezug</h3>



<p class="wp-block-paragraph">In echten Java-Programmen beschreiben Instanzvariablen fast immer Eigenschaften eines Objekts.</p>



<p class="wp-block-paragraph">Ein paar typische Beispiele:</p>



<ul class="wp-block-list">
<li><code>name</code>, <code>alter</code> bei einer Person</li>



<li><code>preis</code>, <code>titel</code> bei einem Produkt</li>



<li><code>kontostand</code> bei einem Konto</li>



<li><code>farbe</code>, <code>baujahr</code> bei einem Auto</li>
</ul>



<p class="wp-block-paragraph">Du kannst dir also merken: Instanzvariablen beschreiben, <strong>wie ein Objekt gerade aussieht oder in welchem Zustand es ist</strong>.</p>



<h3 class="wp-block-heading">Typische Fehler</h3>



<p class="wp-block-paragraph">Gerade am Anfang passieren oft diese Verwechslungen:</p>



<ul class="wp-block-list">
<li>Instanzvariablen mit lokalen Variablen verwechseln</li>



<li>denken, alle Objekte teilen denselben Wert</li>



<li><code>static</code> und nicht-<code>static</code> durcheinanderbringen</li>



<li>nicht verstehen, warum <code>this</code> auf eine Instanzvariable zeigt</li>
</ul>



<p class="wp-block-paragraph">Ein klassischer Denkfehler ist: &#8222;Wenn die Variable in der Klasse steht, dann ist sie doch für alle gleich.&#8220; Das stimmt eben nur bei <code>static</code>.</p>



<h3 class="wp-block-heading">Ein kleines Gesamtbeispiel</h3>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">public class Person {
    String name;
    int alter;

    public Person(String name, int alter) {
        this.name = name;
        this.alter = alter;
    }

    public void vorstellen() {
        System.out.println(name + " ist " + alter + " Jahre alt.");
    }
}</pre>



<p class="wp-block-paragraph">Verwendung:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="generic" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">Person p1 = new Person("Anna", 22);
Person p2 = new Person("Ben", 30);

p1.vorstellen();
p2.vorstellen();</pre>



<p class="wp-block-paragraph">Hier haben beide Objekte dieselben Instanzvariablen, aber unterschiedliche Werte.</p>



<h3 class="wp-block-heading">Fazit</h3>



<p class="wp-block-paragraph">Instanzvariablen in Java gehören zu einem konkreten Objekt und speichern dessen Zustand. Genau dadurch werden Objekte überhaupt erst nützlich.</p>



<p class="wp-block-paragraph">Wichtig ist vor allem:</p>



<ul class="wp-block-list">
<li>sie stehen in der Klasse</li>



<li>sie gehören zu einer Instanz</li>



<li>jedes Objekt hat eigene Werte</li>



<li>sie sind nicht dasselbe wie lokale Variablen oder Klassenvariablen</li>
</ul>



<p class="wp-block-paragraph">Wenn du diesen Unterschied sauber verstanden hast, bist du beim OOP-Einstieg schon ein gutes Stück weiter.</p>



<h3 class="wp-block-heading">Nächster Schritt</h3>



<p class="wp-block-paragraph">Als Nächstes passen besonders gut:</p>



<ul class="wp-block-list">
<li>Klassenvariablen vs Instanzvariablen</li>



<li>Konstruktoren in Java</li>



<li>Objekte und Instanzen in Java</li>
</ul>
<p>Der Beitrag <a href="https://lernjava.de/instanzvariablen-in-java/">Instanzvariablen in Java einfach erklärt</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lernjava.de/instanzvariablen-in-java/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Git Branching Strategie einfach erklärt</title>
		<link>https://lernjava.de/branching-strategie-einfach-erklaert/</link>
		
		<dc:creator><![CDATA[Andreas Bauer]]></dc:creator>
		<pubDate>Thu, 30 Apr 2026 20:33:52 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<guid isPermaLink="false">https://lernjava.de/?p=755</guid>

					<description><![CDATA[<p>Was ist eine Branching-Strategie? Hier erfährst du einfach und verständlich, wie du mit main, dev, feature-, bugfix- und release-Branches sauber arbeitest.</p>
<p>Der Beitrag <a href="https://lernjava.de/branching-strategie-einfach-erklaert/">Git Branching Strategie einfach erklärt</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Warum braucht man überhaupt eine Branching Strategie?</h3>



<p class="wp-block-paragraph">Viele Einsteiger arbeiten anfangs einfach direkt auf <code>main</code>. Für ganz kleine Experimente geht das vielleicht noch. Sobald ein Projekt aber etwas größer wird oder mehrere Änderungen parallel laufen, wird das ohne eine Git Branching Strategie schnell unübersichtlich.</p>



<figure class="wp-block-image size-large is-resized"><img fetchpriority="high" decoding="async" width="768" height="1024" src="https://lernjava.de/wp-content/uploads/2026/04/pexels-anshu-31024789-768x1024.jpg" alt="" class="wp-image-760" style="width:695px;height:auto" srcset="https://lernjava.de/wp-content/uploads/2026/04/pexels-anshu-31024789-768x1024.jpg 768w, https://lernjava.de/wp-content/uploads/2026/04/pexels-anshu-31024789-225x300.jpg 225w, https://lernjava.de/wp-content/uploads/2026/04/pexels-anshu-31024789-1152x1536.jpg 1152w, https://lernjava.de/wp-content/uploads/2026/04/pexels-anshu-31024789-1536x2048.jpg 1536w, https://lernjava.de/wp-content/uploads/2026/04/pexels-anshu-31024789-scaled.jpg 1920w" sizes="(max-width: 768px) 100vw, 768px" /></figure>



<h3 class="wp-block-heading">Eine Branching-Strategie hilft dir dabei:</h3>



<ul class="wp-block-list">
<li>Änderungen sauber zu trennen</li>



<li>neue Features kontrolliert zu entwickeln</li>



<li>Bugs gezielt zu beheben</li>



<li>Releases vorzubereiten</li>



<li>den stabilen Stand deines Projekts zu schützen</li>
</ul>



<h3 class="wp-block-heading">Was ist ein Branch überhaupt?</h3>



<p class="wp-block-paragraph">Ein Branch ist ein Entwicklungszweig in <a href="https://lernjava.de/tag/git/" type="post_tag" id="270">Git</a>. Damit kannst du an etwas arbeiten, ohne den Hauptstand direkt kaputtzumachen.</p>



<p class="wp-block-paragraph">Zum Beispiel:</p>



<ul class="wp-block-list">
<li>neues Feature bauen</li>



<li>Fehler beheben</li>



<li>Release vorbereiten</li>
</ul>



<p class="wp-block-paragraph">Wenn du Branches noch nicht sauber eingeordnet hast, passt zuerst oder parallel der Artikel <a href="https://lernjava.de/git-und-github-einfach-erklaert/">Git und GitHub einfach erklärt</a>.</p>



<h3 class="wp-block-heading">Warum nicht einfach immer auf main arbeiten?</h3>



<p class="wp-block-paragraph">Direkt auf <code>main</code> zu arbeiten ist riskant. Typische Probleme:</p>



<ul class="wp-block-list">
<li>unfertige Änderungen landen im Hauptstand</li>



<li>Bugs und neue Features vermischen sich</li>



<li>Releases sind schwerer nachvollziehbar</li>



<li>parallele Arbeit wird chaotisch</li>
</ul>



<p class="wp-block-paragraph"><code>main</code> sollte im Idealfall immer ein stabiler Branch sein.</p>



<h3 class="wp-block-heading">Ein einfaches Modell für kleine bis mittlere Projekte</h3>



<p class="wp-block-paragraph">Ein sehr brauchbares Modell ist dieses:</p>



<ul class="wp-block-list">
<li><code>main</code></li>



<li><code>dev</code></li>



<li><code>feature/...</code></li>



<li><code>bugfix/...</code></li>



<li><code>release/vx.y.z</code></li>
</ul>



<p class="wp-block-paragraph">Das lehnt sich an <a href="https://www.atlassian.com/de/git/tutorials/comparing-workflows/gitflow-workflow">Gitflow</a> an, bleibt aber verständlich genug für Einsteiger.</p>



<h3 class="wp-block-heading">Was macht main?</h3>



<p class="wp-block-paragraph"><code>main</code> ist dein stabiler Hauptbranch.</p>



<p class="wp-block-paragraph">Auf <code>main</code> sollte nur landen, was wirklich in einem brauchbaren, releasefähigen Zustand ist.</p>



<p class="wp-block-paragraph">Man kann sagen:</p>



<ul class="wp-block-list">
<li><code>main</code> zeigt den sauberen Hauptstand</li>



<li><code>main</code> ist nicht der Ort für unfertige Zwischenarbeit</li>
</ul>



<h3 class="wp-block-heading">Was macht dev?</h3>



<p class="wp-block-paragraph"><code>dev</code> ist dein Integrations-Branch für laufende Entwicklung. Dort laufen neue Änderungen zusammen, bevor sie später in <code>main</code> übernommen werden.</p>



<p class="wp-block-paragraph">Das ist praktisch, weil:</p>



<ul class="wp-block-list">
<li><code>main</code> stabil bleibt</li>



<li>neue Features nicht direkt auf den Hauptstand knallen</li>



<li>mehrere Änderungen besser koordiniert werden können</li>
</ul>



<h3 class="wp-block-heading">Was sind feature-Branches?</h3>



<p class="wp-block-paragraph">Ein <code>feature</code>-Branch ist für neue Funktionen da.</p>



<p class="wp-block-paragraph">Beispiele:</p>



<ul class="wp-block-list">
<li><code>feature/login-form</code></li>



<li><code>feature/user-profile</code></li>



<li><code>feature/rest-client</code></li>
</ul>



<p class="wp-block-paragraph">Ein typischer Ablauf: 1. von <code>dev</code> abzweigen 2. Feature bauen 3. testen 4. zurück in <code>dev</code> mergen</p>



<p class="wp-block-paragraph">Beispiel:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">git checkout dev
git checkout -b feature/login-form</pre>



<h3 class="wp-block-heading">Was sind bugfix-Branches?</h3>



<p class="wp-block-paragraph">Ein <code>bugfix</code>-Branch ist für Fehlerbehebungen da.</p>



<p class="wp-block-paragraph">Beispiele:</p>



<ul class="wp-block-list">
<li><code>bugfix/nullpointer-login</code></li>



<li><code>bugfix/maven-build-fehler</code></li>
</ul>



<p class="wp-block-paragraph">Auch diese Branches gehen in diesem Modell meistens von <code>dev</code> aus und später zurück nach <code>dev</code>.</p>



<p class="wp-block-paragraph">Beispiel:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">git checkout dev
git checkout -b bugfix/nullpointer-login</pre>



<h3 class="wp-block-heading">Was sind release-Branches?</h3>



<p class="wp-block-paragraph">Ein <code>release</code>-Branch ist dafür da, eine neue Version gezielt vorzubereiten.</p>



<p class="wp-block-paragraph">Beispiele:</p>



<ul class="wp-block-list">
<li><code>release/v1.0.0</code></li>



<li><code>release/v1.1.0</code></li>
</ul>



<p class="wp-block-paragraph">Ein Release-Branch ist nützlich, wenn du:</p>



<ul class="wp-block-list">
<li>letzte Tests machst</li>



<li>kleine letzte Fixes einbaust</li>



<li>eine Version klar abgrenzen willst</li>



<li>einen nachvollziehbaren Weg Richtung produktivem Stand brauchst</li>
</ul>



<p class="wp-block-paragraph">Typischer Ablauf:</p>



<ul class="wp-block-list">
<li><code>release/v1.0.0</code> von <code>dev</code> erstellen</li>



<li>letzte Korrekturen dort machen</li>



<li>danach nach <code>main</code> mergen</li>



<li>und meist auch zurück nach <code>dev</code></li>
</ul>



<h3 class="wp-block-heading">Wie hängt das mit <a href="https://www.atlassian.com/de/git/tutorials/comparing-workflows/gitflow-workflow">Semantic Versioning</a> zusammen?</h3>



<p class="wp-block-paragraph">Semantic Versioning bedeutet normalerweise ein Versionsschema wie:</p>



<ul class="wp-block-list">
<li><code>1.0.0</code></li>



<li><code>1.1.0</code></li>



<li><code>1.1.1</code></li>
</ul>



<p class="wp-block-paragraph">Die Logik dahinter ist grob:</p>



<ul class="wp-block-list">
<li><strong>Major</strong>: große Änderungen oder Brüche</li>



<li><strong>Minor</strong>: neue Funktionen ohne großen Bruch</li>



<li><strong>Patch</strong>: kleine Fehlerbehebungen</li>
</ul>



<p class="wp-block-paragraph">Beispiele:</p>



<ul class="wp-block-list">
<li><code>1.0.0</code> -> erste stabile Version</li>



<li><code>1.1.0</code> -> neues Feature dazu</li>



<li><code>1.1.1</code> -> Bugfix-Release</li>
</ul>



<p class="wp-block-paragraph">Darum passt ein Release-Branch wie <code>release/v1.0.0</code> gut zu diesem Modell.</p>



<h3 class="wp-block-heading">Ein realistischer Ablauf im Projekt</h3>



<p class="wp-block-paragraph">Stell dir vor, du baust ein Java-Projekt und willst ein Login-Feature einführen.</p>



<p class="wp-block-paragraph">Dann könnte der Ablauf so aussehen:</p>



<p class="wp-block-paragraph">1. stabiler Stand liegt auf <code>main</code> 2. laufende Entwicklung liegt auf <code>dev</code> 3. du erstellst <code>feature/login</code> 4. Feature wird fertig und in <code>dev</code> gemerged 5. weitere Änderungen kommen dazu 6. du erstellst <code>release/v1.0.0</code> 7. letzte Tests und kleine Fixes passieren dort 8. Release wird nach <code>main</code> gemerged</p>



<p class="wp-block-paragraph">Das ist deutlich sauberer, als alles direkt auf <code>main</code> zu kippen.</p>



<h3 class="wp-block-heading">Einfache Git-Befehle für diesen Workflow</h3>



<p class="wp-block-paragraph">Einen neuen Feature-Branch anlegen:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">git checkout dev
git checkout -b feature/neues-feature</pre>



<p class="wp-block-paragraph">Einen Bugfix-Branch anlegen:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">git checkout dev
git checkout -b bugfix/fehlername</pre>



<p class="wp-block-paragraph">Einen Release-Branch anlegen:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">git checkout dev
git checkout -b release/v1.0.0</pre>



<h3 class="wp-block-heading">Ist das schon Gitflow?</h3>



<p class="wp-block-paragraph">Es ist stark daran angelehnt, aber in einer vereinfachten Form. Klassisches Gitflow ist etwas formaler und teilweise für kleine Projekte schon zu schwergewichtig. Für viele Lern-, Solo- oder kleinere Teamprojekte reicht ein reduziertes Modell völlig aus:</p>



<ul class="wp-block-list">
<li><code>main</code></li>



<li><code>dev</code></li>



<li><code>feature</code></li>



<li><code>bugfix</code></li>



<li><code>release</code></li>
</ul>



<p class="wp-block-paragraph">Das ist klar, nachvollziehbar und praxistauglich.</p>



<h3 class="wp-block-heading">Typische Fehler bei Branching-Strategien</h3>



<h4 class="wp-block-heading">Zu viele Regeln für ein kleines Projekt</h4>



<p class="wp-block-paragraph">Wenn dein Projekt winzig ist, brauchst du kein Monster-Prozessmodell.</p>



<h4 class="wp-block-heading">Gar keine Regeln</h4>



<p class="wp-block-paragraph">Das andere Extrem ist genauso schlecht. Dann weiß niemand, wo was hingehört.</p>



<h4 class="wp-block-heading">Direkt auf main entwickeln</h4>



<p class="wp-block-paragraph">Das ist auf Dauer fast immer unnötig riskant.</p>



<h4 class="wp-block-heading">Branches schlecht benennen</h4>



<p class="wp-block-paragraph"><code>test123</code> oder <code>neu</code> helfen niemandem.</p>



<p class="wp-block-paragraph">Besser:</p>



<ul class="wp-block-list">
<li><code>feature/login</code></li>



<li><code>bugfix/maven-build</code></li>



<li><code>release/v1.0.0</code></li>
</ul>



<h3 class="wp-block-heading">Für wen ist dieses Modell sinnvoll?</h3>



<p class="wp-block-paragraph">Dieses Modell passt gut für:</p>



<ul class="wp-block-list">
<li>Lernprojekte mit Struktur</li>



<li>Portfolio-Projekte</li>



<li>Solo-Projekte mit etwas Disziplin</li>



<li>kleine Teams</li>



<li>Java- und Spring-Boot-Projekte mit sauberem Workflow</li>
</ul>



<h3 class="wp-block-heading">Wo kommt CI/CD ins Spiel?</h3>



<p class="wp-block-paragraph">CI/CD wird besonders spannend, wenn Branches sauber strukturiert sind.</p>



<p class="wp-block-paragraph">Dann kannst du zum Beispiel festlegen:</p>



<ul class="wp-block-list">
<li>auf <code>feature/*</code> laufen Tests</li>



<li>auf <code>dev</code> laufen Build und Integrationstests</li>



<li>auf <code>release/*</code> laufen Release-Checks</li>



<li>auf <code>main</code> läuft der produktive oder stabile Workflow</li>
</ul>



<p class="wp-block-paragraph">Darum hängt eine gute Branching-Strategie oft eng mit CI/CD zusammen.</p>



<h2 class="wp-block-heading">Fazit</h2>



<p class="wp-block-paragraph">Eine Branching-Strategie bringt Ordnung in deine Entwicklung.</p>



<p class="wp-block-paragraph">Für viele Projekte ist dieses Modell ein guter Start:</p>



<ul class="wp-block-list">
<li><code>main</code> für stabil</li>



<li><code>dev</code> für laufende Entwicklung</li>



<li><code>feature/*</code> für neue Funktionen</li>



<li><code>bugfix/*</code> für Fehlerbehebungen</li>



<li><code>release/vx.y.z</code> für Releases</li>
</ul>



<p class="wp-block-paragraph">Wenn du das mit sauber benannten Branches und Semantic Versioning kombinierst, hast du schon ein sehr brauchbares System.</p>



<h2 class="wp-block-heading">Nächster Schritt</h2>



<p class="wp-block-paragraph">Nach diesem Artikel passen diese Themen gut:</p>



<ul class="wp-block-list">
<li><a href="https://lernjava.de/git-und-github-einfach-erklaert/">Git und GitHub einfach erklärt</a></li>



<li><a href="https://lernjava.de/git-cheat-sheet-fuer-entwickler-guide-mit-den-wichtigsten-befehlen/">Git-Cheat-Sheet für Entwickler: Guide mit den wichtigsten Befehlen</a></li>



<li><a href="https://lernjava.de/ci-cd-einfach-erklaert/">CI/CD einfach erklärt</a></li>



<li>Pull Requests einfach erklärt</li>
</ul>
<p>Der Beitrag <a href="https://lernjava.de/branching-strategie-einfach-erklaert/">Git Branching Strategie einfach erklärt</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Git und GitHub einfach erklärt</title>
		<link>https://lernjava.de/git-und-github-einfach-erklaert/</link>
		
		<dc:creator><![CDATA[Andreas Bauer]]></dc:creator>
		<pubDate>Thu, 30 Apr 2026 20:28:03 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<guid isPermaLink="false">https://lernjava.de/?p=754</guid>

					<description><![CDATA[<p>Was ist der Unterschied zwischen Git und GitHub? Hier erfährst du einfach und verständlich, wie beide zusammenhängen und wie ein typischer Workflow aussieht.</p>
<p>Der Beitrag <a href="https://lernjava.de/git-und-github-einfach-erklaert/">Git und GitHub einfach erklärt</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Git und GitHub werden oft verwechselt</h3>



<p class="wp-block-paragraph">Viele Einsteiger sagen erst einmal einfach &#8222;GitHub&#8220;, obwohl sie eigentlich Git meinen. Das ist normal, aber technisch sind das zwei verschiedene Dinge.</p>



<p class="wp-block-paragraph">Kurz gesagt:</p>



<ul class="wp-block-list">
<li><strong><a href="https://git-scm.com/">Git</a></strong> ist das Werkzeug zur Versionsverwaltung</li>



<li><strong><a href="https://github.com/">GitHub</a></strong> ist eine Plattform, auf der Git-Repositories gespeichert und gemeinsam genutzt werden können</li>
</ul>



<p class="wp-block-paragraph">Wenn du moderne Entwicklung verstehen willst, solltest du diesen Unterschied sauber draufhaben.</p>



<h3 class="wp-block-heading"><a href="https://lernjava.de/git-fuer-anfaenger/" type="post" id="591">Was ist Git</a>?</h3>



<p class="wp-block-paragraph">Git ist ein <strong>Versionsverwaltungssystem</strong>. Das bedeutet:</p>



<ul class="wp-block-list">
<li>Git merkt sich Änderungen an deinem Projekt</li>



<li>du kannst nachvollziehen, was sich geändert hat</li>



<li>du kannst frühere Stände wiederherstellen</li>



<li>du kannst mit Branches arbeiten</li>



<li>du kannst Änderungen sauber in kleinen Schritten speichern</li>
</ul>



<p class="wp-block-paragraph">Git läuft erst einmal lokal auf deinem Rechner. Du kannst also auch ohne GitHub mit Git arbeiten.</p>



<h3 class="wp-block-heading">Was ist GitHub?</h3>



<p class="wp-block-paragraph">GitHub ist eine Plattform für Git-Repositories, es gibt aber auch noch weitere große bekannte Player wie GitLab oder BitBucket. Dort kannst du zum Beispiel:</p>



<ul class="wp-block-list">
<li>Repositories hosten</li>



<li>deinen Code sichern</li>



<li>mit anderen zusammenarbeiten</li>



<li>Pull Requests nutzen</li>



<li>Issues verwalten</li>



<li>Actions für CI/CD nutzen</li>
</ul>



<p class="wp-block-paragraph">GitHub ist also <strong>nicht Git selbst</strong>, sondern ein Dienst rund um Git.</p>



<h3 class="wp-block-heading">Ein einfaches Bild dazu</h3>



<p class="wp-block-paragraph">Du kannst dir das so vorstellen:</p>



<ul class="wp-block-list">
<li><strong>Git</strong> ist dein Werkzeugkasten</li>



<li><strong>GitHub</strong> ist der gemeinsame Ort, an dem du deine Arbeit ablegst oder mit anderen teilst</li>
</ul>



<p class="wp-block-paragraph">Oder noch einfacher:</p>



<ul class="wp-block-list">
<li>Git = arbeitet an der Historie deines Projekts</li>



<li>GitHub = speichert und teilt diese Historie online</li>
</ul>



<h3 class="wp-block-heading">Warum ist Git wichtig?</h3>



<p class="wp-block-paragraph">Gerade bei <a href="https://lernjava.de/category/java/" type="category" id="2">Java</a>-Projekten wird Git sehr schnell relevant.</p>



<p class="wp-block-paragraph">Zum Beispiel wenn du:</p>



<ul class="wp-block-list">
<li>an mehreren Dateien arbeitest</li>



<li>etwas kaputt machst und zurück möchtest</li>



<li>neue Features getrennt entwickeln willst</li>



<li>deinen Code auf einen anderen Rechner bringen willst</li>



<li>mit anderen zusammenarbeitest</li>
</ul>



<p class="wp-block-paragraph">Ohne Git arbeitet man schnell chaotisch.</p>



<h3 class="wp-block-heading">Warum ist GitHub wichtig?</h3>



<p class="wp-block-paragraph">GitHub wird wichtig, sobald du dein lokales Projekt nicht nur auf deiner Maschine behalten willst.</p>



<p class="wp-block-paragraph">Typische Gründe:</p>



<ul class="wp-block-list">
<li>Backup in der Cloud</li>



<li>Zusammenarbeit im Team</li>



<li>Portfolio aufbauen</li>



<li>Pull Requests nutzen</li>



<li>automatische Workflows ausführen</li>
</ul>



<h3 class="wp-block-heading">So arbeiten Git und GitHub zusammen</h3>



<p class="wp-block-paragraph">Ein typischer Ablauf sieht so aus:</p>



<ol class="wp-block-list">
<li>Du erstellst lokal ein Projekt</li>



<li>Du initialisierst Git</li>



<li>Du machst Commits</li>



<li>Du legst ein Remote-Repository bei GitHub an</li>



<li>Du pushst dein lokales Repository zu GitHub</li>
</ol>



<p class="wp-block-paragraph">Damit arbeitest du lokal mit Git und nutzt GitHub als entfernten Speicher- und Team-Ort.</p>



<h3 class="wp-block-heading">Ein einfacher Workflow in der Praxis</h3>



<p class="wp-block-paragraph">Hier ein typischer Start mit Git:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">git init
git add .
git commit -m "Initial commit"</pre>



<p class="wp-block-paragraph">Was passiert hier?</p>



<ul class="wp-block-list">
<li><code>git init</code> erstellt ein Git-Repository</li>



<li><code>git add .</code> fügt Änderungen zum Staging hinzu</li>



<li><code>git commit</code> speichert einen nachvollziehbaren Stand deines Projekts</li>
</ul>



<p class="wp-block-paragraph">Wenn du dein Projekt danach mit GitHub verbinden willst, kommt meistens so etwas dazu:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="bash" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">git remote add origin https://github.com/dein-name/dein-repo.git
git branch -M main
git push -u origin main</pre>



<p class="wp-block-paragraph">Damit verbindest du dein lokales Repository mit GitHub und lädst deinen Stand hoch.</p>



<h3 class="wp-block-heading">Bedeutet GitHub automatisch Teamarbeit?</h3>



<p class="wp-block-paragraph">Nein. Du kannst GitHub auch komplett alleine nutzen.</p>



<p class="wp-block-paragraph">Zum Beispiel für:</p>



<ul class="wp-block-list">
<li>private Projekte</li>



<li>Lernprojekte</li>



<li>Portfolio-Projekte</li>



<li>kleine Tools</li>



<li>Backup deiner Arbeit</li>
</ul>



<p class="wp-block-paragraph">Teamarbeit ist nur einer von mehreren Anwendungsfällen.</p>



<h3 class="wp-block-heading">Was ist ein Repository?</h3>



<p class="wp-block-paragraph">Ein Repository ist der Ort, an dem dein Projekt inklusive Versionshistorie gespeichert wird. Es gibt dabei oft zwei Sichtweisen:</p>



<ul class="wp-block-list">
<li><strong>lokales Repository</strong> auf deinem Rechner</li>



<li><strong>Remote-Repository</strong> auf GitHub</li>
</ul>



<p class="wp-block-paragraph">Beide gehören logisch zusammen, sind aber nicht dasselbe.</p>



<h3 class="wp-block-heading">Was ist ein Commit?</h3>



<p class="wp-block-paragraph">Ein Commit ist ein gespeicherter Stand deines Projekts.</p>



<p class="wp-block-paragraph">Wichtig ist:</p>



<ul class="wp-block-list">
<li>Ein Commit ist kein komplettes Chaos-Backup</li>



<li>Ein Commit sollte eine nachvollziehbare Änderung beschreiben</li>
</ul>



<p class="wp-block-paragraph">Gute Beispiele:</p>



<ul class="wp-block-list">
<li><code>Login validierung ergänzt</code></li>



<li><code>README ergänzt</code></li>



<li><code>Fehler beim Dateiupload behoben</code></li>
</ul>



<p class="wp-block-paragraph">Schwache Beispiele:</p>



<ul class="wp-block-list">
<li><code>test</code></li>



<li><code>update</code></li>



<li><code>asdf</code></li>
</ul>



<h3 class="wp-block-heading">Was ist ein Branch?</h3>



<p class="wp-block-paragraph">Ein Branch ist ein eigener Entwicklungszweig. Damit kannst du Änderungen getrennt vom Hauptstand entwickeln.</p>



<p class="wp-block-paragraph">Zum Beispiel:</p>



<ul class="wp-block-list">
<li>neues Feature bauen</li>



<li>Bug fixen</li>



<li>Release vorbereiten</li>
</ul>



<p class="wp-block-paragraph">Genau daraus wird später das Thema Branching-Strategie wichtig. Dafür passt als nächster Schritt der geplante Artikel <a href="https://lernjava.de/branching-strategie-einfach-erklaert/">Branching-Strategie einfach erklärt</a>.</p>



<h3 class="wp-block-heading">Was GitHub zusätzlich attraktiv macht</h3>



<p class="wp-block-paragraph">GitHub ist nicht nur ein Ablageort.</p>



<p class="wp-block-paragraph">Es bringt weitere Dinge mit:</p>



<ul class="wp-block-list">
<li>Pull Requests</li>



<li>Code Reviews</li>



<li>README-Darstellung</li>



<li>Issues</li>



<li>Release-Seiten</li>



<li>GitHub Actions</li>
</ul>



<p class="wp-block-paragraph">Für Einsteiger sind aber zuerst diese zwei Punkte am wichtigsten:</p>



<ul class="wp-block-list">
<li>Code online sichern</li>



<li>mit anderen sauber austauschen</li>
</ul>



<h3 class="wp-block-heading">Ein typisches Missverständnis</h3>



<h4 class="wp-block-heading">&#8222;Ich arbeite mit GitHub, also brauche ich Git nicht&#8220;</h4>



<p class="wp-block-paragraph">Doch. GitHub basiert auf Git.</p>



<h4 class="wp-block-heading">&#8222;Git ist nur für Teams&#8220;</h4>



<p class="wp-block-paragraph">Nein. Git ist auch für Einzelentwickler extrem nützlich.</p>



<h4 class="wp-block-heading">&#8222;GitHub speichert meinen Code automatisch&#8220;</h4>



<p class="wp-block-paragraph">Nein. Du musst Änderungen lokal committen und dann pushen.</p>



<h4 class="wp-block-heading">&#8222;Git und GitHub sind dasselbe&#8220;</h4>



<p class="wp-block-paragraph">Nein. Das ist der häufigste Fehler.</p>



<h3 class="wp-block-heading">Git und GitHub im Java-Alltag</h3>



<p class="wp-block-paragraph">Wenn du mit Java arbeitest, tauchen Git und GitHub schnell in echten Projekten auf.</p>



<p class="wp-block-paragraph">Zum Beispiel bei:</p>



<ul class="wp-block-list">
<li>Maven-Projekten</li>



<li>Spring-Boot-Projekten</li>



<li>Uni- oder Lernprojekten</li>



<li>Bewerbungsprojekten</li>



<li>Teamarbeit im Job</li>
</ul>



<p class="wp-block-paragraph">Gerade wenn du von Grundlagen Richtung reale Entwicklung willst, gehören Git und GitHub fest dazu.</p>



<h3 class="wp-block-heading">Was du als Anfänger zuerst wirklich können solltest</h3>



<p class="wp-block-paragraph">Du musst am Anfang nicht alles über Rebase, Cherry-Pick oder komplexe Merge-Strategien wissen.</p>



<p class="wp-block-paragraph">Wichtiger ist erst einmal:</p>



<ul class="wp-block-list">
<li>Repository anlegen</li>



<li>Änderungen sehen</li>



<li>Dateien stagen</li>



<li>committen</li>



<li>zu GitHub pushen</li>



<li>einen Branch anlegen</li>



<li>Branch wieder zusammenführen</li>
</ul>



<p class="wp-block-paragraph">Das reicht für einen starken Einstieg.</p>



<h2 class="wp-block-heading">Was du als Nächstes lernen solltest</h2>



<p class="wp-block-paragraph">Wenn Git und GitHub grob sitzen, dann sind diese Themen die logisch nächsten:</p>



<ul class="wp-block-list">
<li>Branches richtig benutzen</li>



<li>Pull Requests verstehen</li>



<li>einfache Branching-Strategie aufsetzen</li>



<li>CI/CD-Grundlagen verstehen</li>
</ul>



<h2 class="wp-block-heading">Fazit</h2>



<p class="wp-block-paragraph">Git und GitHub gehören zusammen, sind aber nicht dasselbe. Das solltest du dir merken:</p>



<ul class="wp-block-list">
<li>Git verwaltet Änderungen an deinem Projekt</li>



<li>GitHub speichert und teilt Git-Repositories online</li>
</ul>



<p class="wp-block-paragraph">Wer moderne Entwicklung lernen will, sollte diesen Unterschied früh sauber verstehen.</p>



<h2 class="wp-block-heading">Nächster Schritt</h2>



<p class="wp-block-paragraph">Nach diesem Artikel passen diese Themen gut:</p>



<ul class="wp-block-list">
<li><a href="https://lernjava.de/git-fuer-anfaenger/">Git für Anfänger: Dein Leitfaden, um durchzustarten</a></li>



<li><a href="https://lernjava.de/git-cheat-sheet-fuer-entwickler-guide-mit-den-wichtigsten-befehlen/">Git-Cheat-Sheet für Entwickler: Guide mit den wichtigsten Befehlen</a></li>



<li><a href="https://lernjava.de/branching-strategie-einfach-erklaert/">Branching-Strategie einfach erklärt</a></li>



<li><a href="https://lernjava.de/ci-cd-einfach-erklaert/">CI/CD einfach erklärt</a></li>
</ul>
<p>Der Beitrag <a href="https://lernjava.de/git-und-github-einfach-erklaert/">Git und GitHub einfach erklärt</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Was ist REST?</title>
		<link>https://lernjava.de/was-ist-rest/</link>
		
		<dc:creator><![CDATA[Andreas Bauer]]></dc:creator>
		<pubDate>Tue, 28 Apr 2026 20:50:14 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<guid isPermaLink="false">https://lernjava.de/?p=747</guid>

					<description><![CDATA[<p>Was ist REST? Hier erfährst du einfach und verständlich, wie REST funktioniert, was GET, POST, PUT und DELETE bedeuten und warum REST APIs so verbreitet sind.</p>
<p>Der Beitrag <a href="https://lernjava.de/was-ist-rest/">Was ist REST?</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">REST ist ein Architekturstil für Web-<a href="https://lernjava.de/tag/api/" type="post_tag" id="351">APIs</a>. REST steht für <strong><a href="https://de.wikipedia.org/wiki/Representational_State_Transfer">Representational State Transfer</a></strong>.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="683" src="https://lernjava.de/wp-content/uploads/2022/12/pexels-peter-olexa-4012966-1024x683.jpg" alt="" class="wp-image-521" srcset="https://lernjava.de/wp-content/uploads/2022/12/pexels-peter-olexa-4012966-1024x683.jpg 1024w, https://lernjava.de/wp-content/uploads/2022/12/pexels-peter-olexa-4012966-300x200.jpg 300w, https://lernjava.de/wp-content/uploads/2022/12/pexels-peter-olexa-4012966-768x512.jpg 768w, https://lernjava.de/wp-content/uploads/2022/12/pexels-peter-olexa-4012966-1536x1024.jpg 1536w, https://lernjava.de/wp-content/uploads/2022/12/pexels-peter-olexa-4012966-2048x1365.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Der Name klingt komplizierter, als das Thema am Anfang wirklich ist. Für Einsteiger reicht erst einmal dieses Verständnis:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">REST beschreibt eine Art, wie Systeme über das Web sauber und nachvollziehbar miteinander kommunizieren.</p>
</blockquote>



<p class="wp-block-paragraph">Wenn Entwickler von einer REST API sprechen, meinen sie meistens eine API, die über <a href="https://de.wikipedia.org/wiki/Hypertext_Transfer_Protocol">HTTP</a> erreichbar ist und klar definierte Regeln bei Requests und Responses nutzt.</p>



<h3 class="wp-block-heading">Warum ist REST so wichtig?</h3>



<p class="wp-block-paragraph">REST ist in der Praxis extrem verbreitet.</p>



<p class="wp-block-paragraph">Sehr viele moderne Anwendungen nutzen REST APIs, zum Beispiel:</p>



<ul class="wp-block-list">
<li>Webanwendungen</li>



<li>Mobile Apps</li>



<li>Java Backends</li>



<li>Microservices</li>



<li>Cloud-Dienste</li>



<li>Integrationen zwischen verschiedenen Systemen</li>
</ul>



<p class="wp-block-paragraph">Wenn ein Frontend Daten aus einem Backend lädt, passiert das oft über REST. Wenn ein Java-Programm mit einem externen Dienst spricht, passiert das sehr häufig ebenfalls über REST.</p>



<h3 class="wp-block-heading">API und REST, was ist der Unterschied?</h3>



<p class="wp-block-paragraph">Das ist einer der wichtigsten Punkte.</p>



<ul class="wp-block-list">
<li><strong>API</strong> ist der Oberbegriff</li>



<li><strong>REST</strong> ist eine bestimmte Art von API</li>
</ul>



<p class="wp-block-paragraph">Das bedeutet:</p>



<ul class="wp-block-list">
<li>jede REST API ist eine API</li>



<li>aber nicht jede API ist eine REST API</li>
</ul>



<p class="wp-block-paragraph">Wenn dir der API-Begriff noch nicht ganz klar ist, passt vorher oder parallel der Artikel <a href="https://lernjava.de/was-ist-eine-api/">Was ist eine API?</a>.</p>



<h3 class="wp-block-heading">Die Grundidee hinter REST</h3>



<p class="wp-block-paragraph">REST nutzt in der Regel das HTTP-Protokoll, also genau das Protokoll, das auch dein Browser beim Laden von Websites verwendet.</p>



<p class="wp-block-paragraph">Statt aber HTML-Seiten zurückzugeben, liefert eine REST API oft strukturierte Daten zurück, meistens im JSON-Format.</p>



<p class="wp-block-paragraph">Die Grundidee ist:</p>



<ul class="wp-block-list">
<li>ein Client stellt eine Anfrage</li>



<li>die Anfrage geht an eine URL</li>



<li>die URL steht für eine Ressource</li>



<li>der Server antwortet mit Daten oder einer Bestätigung</li>
</ul>



<h3 class="wp-block-heading">Was ist eine Ressource?</h3>



<p class="wp-block-paragraph">In REST dreht sich vieles um sogenannte <strong>Ressourcen</strong>.</p>



<p class="wp-block-paragraph">Eine Ressource kann zum Beispiel sein:</p>



<ul class="wp-block-list">
<li>ein Benutzer</li>



<li>ein Produkt</li>



<li>eine Bestellung</li>



<li>ein Blogbeitrag</li>



<li>ein Rezept</li>
</ul>



<p class="wp-block-paragraph">Beispiele für Ressourcen-URLs:</p>



<ul class="wp-block-list">
<li><code>/users</code></li>



<li><code>/users/5</code></li>



<li><code>/products</code></li>



<li><code>/orders/42</code></li>
</ul>



<p class="wp-block-paragraph">Die URL zeigt also oft direkt, auf welches Objekt oder welche Sammlung zugegriffen wird.</p>



<h3 class="wp-block-heading">Die wichtigsten HTTP-Methoden</h3>



<p class="wp-block-paragraph">REST APIs arbeiten oft mit bestimmten HTTP-Methoden. Die wichtigsten für Einsteiger sind:</p>



<h4 class="wp-block-heading">GET</h4>



<p class="wp-block-paragraph">Mit <code>GET</code> werden Daten gelesen.</p>



<p class="wp-block-paragraph">Beispiel:</p>



<ul class="wp-block-list">
<li><code>GET /users</code></li>



<li><code>GET /users/5</code></li>
</ul>



<p class="wp-block-paragraph">Bedeutung:</p>



<ul class="wp-block-list">
<li>gib mir alle Benutzer</li>



<li>gib mir den Benutzer mit der ID 5</li>
</ul>



<h4 class="wp-block-heading">POST</h4>



<p class="wp-block-paragraph">Mit <code>POST</code> werden meist neue Daten angelegt.</p>



<p class="wp-block-paragraph">Beispiel:</p>



<ul class="wp-block-list">
<li><code>POST /users</code></li>
</ul>



<p class="wp-block-paragraph">Bedeutung:</p>



<ul class="wp-block-list">
<li>lege einen neuen Benutzer an</li>
</ul>



<h4 class="wp-block-heading">PUT</h4>



<p class="wp-block-paragraph">Mit <code>PUT</code> werden bestehende Daten oft komplett ersetzt oder aktualisiert.</p>



<p class="wp-block-paragraph">Beispiel:</p>



<ul class="wp-block-list">
<li><code>PUT /users/5</code></li>
</ul>



<p class="wp-block-paragraph">Bedeutung:</p>



<ul class="wp-block-list">
<li>aktualisiere den Benutzer mit der ID 5</li>
</ul>



<h4 class="wp-block-heading">DELETE</h4>



<p class="wp-block-paragraph">Mit <code>DELETE</code> werden Daten gelöscht.</p>



<p class="wp-block-paragraph">Beispiel:</p>



<ul class="wp-block-list">
<li><code>DELETE /users/5</code></li>
</ul>



<p class="wp-block-paragraph">Bedeutung:</p>



<ul class="wp-block-list">
<li>lösche den Benutzer mit der ID 5</li>
</ul>



<h3 class="wp-block-heading">Ein einfaches REST-Beispiel</h3>



<p class="wp-block-paragraph">Stell dir einen kleinen Online-Shop vor.</p>



<p class="wp-block-paragraph">Dann könnten diese Aufrufe sinnvoll sein:</p>



<ul class="wp-block-list">
<li><code>GET /products</code> -> alle Produkte laden</li>



<li><code>GET /products/7</code> -> ein Produkt laden</li>



<li><code>POST /products</code> -> neues Produkt anlegen</li>



<li><code>PUT /products/7</code> -> Produkt aktualisieren</li>



<li><code>DELETE /products/7</code> -> Produkt löschen</li>
</ul>



<p class="wp-block-paragraph">Das ist das Grundmuster, das du bei sehr vielen REST APIs wiederfindest.</p>



<h3 class="wp-block-heading">Request und Response bei REST</h3>



<p class="wp-block-paragraph">REST basiert auf dem gleichen Grundprinzip wie jede andere Web-API:</p>



<ul class="wp-block-list">
<li>der Client schickt einen Request</li>



<li>der Server liefert eine Response zurück</li>
</ul>



<p class="wp-block-paragraph">Ein Request enthält oft:</p>



<ul class="wp-block-list">
<li>URL</li>



<li>HTTP-Methode</li>



<li>Header</li>



<li>optional Daten im Body</li>
</ul>



<p class="wp-block-paragraph">Eine Response enthält oft:</p>



<ul class="wp-block-list">
<li>Statuscode</li>



<li>Header</li>



<li>Daten im Body</li>
</ul>



<h3 class="wp-block-heading">Wichtige Statuscodes bei REST APIs</h3>



<p class="wp-block-paragraph">Ein paar Statuscodes solltest du früh kennen:</p>



<ul class="wp-block-list">
<li><code>200</code> -> Anfrage erfolgreich</li>



<li><code>201</code> -> neues Objekt erfolgreich erstellt</li>



<li><code>400</code> -> fehlerhafte Anfrage</li>



<li><code>401</code> -> nicht eingeloggt oder nicht autorisiert</li>



<li><code>404</code> -> Ressource nicht gefunden</li>



<li><code>500</code> -> Fehler auf dem Server</li>
</ul>



<p class="wp-block-paragraph">Diese Codes helfen dir dabei, Responses besser zu verstehen.</p>



<h3 class="wp-block-heading">REST-Beispiel in Java</h3>



<p class="wp-block-paragraph">Hier ein kleines Java-Beispiel mit <code>HttpClient</code>. Der Code ruft eine öffentliche REST API auf und lädt einen Beispiel-Post.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class RestExample {

    public static void main(String[] args) throws IOException, InterruptedException {
        HttpClient client = HttpClient.newHttpClient();

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://jsonplaceholder.typicode.com/posts/1"))
                .GET()
                .build();

        HttpResponse&lt;String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println("Statuscode: " + response.statusCode());
        System.out.println("Body: " + response.body());
    }
}</pre>



<h3 class="wp-block-heading">Was zeigt dieses Beispiel?</h3>



<p class="wp-block-paragraph">Das Beispiel zeigt:</p>



<ul class="wp-block-list">
<li>Java schickt einen <code>GET</code>-Request</li>



<li>eine REST API antwortet</li>



<li>die Antwort kommt als JSON zurück</li>



<li>der Statuscode zeigt, ob der Aufruf erfolgreich war</li>
</ul>



<p class="wp-block-paragraph">Wenn du JSON noch nicht sauber eingeordnet hast, passt dazu direkt der Folgeartikel <a href="https://lernjava.de/was-ist-json/">Was ist JSON?</a>.</p>



<h3 class="wp-block-heading">Warum ist JSON bei REST so häufig?</h3>



<p class="wp-block-paragraph">REST schreibt nicht zwingend JSON vor.</p>



<p class="wp-block-paragraph">Trotzdem ist JSON in der Praxis sehr häufig, weil es:</p>



<ul class="wp-block-list">
<li>leicht lesbar ist</li>



<li>leicht übertragbar ist</li>



<li>in vielen Programmiersprachen gut verarbeitet werden kann</li>
</ul>



<p class="wp-block-paragraph">Deshalb sieht man REST und JSON oft zusammen.</p>



<h3 class="wp-block-heading">Ist REST immer gleich aufgebaut?</h3>



<p class="wp-block-paragraph">Nein. Nicht jede REST API sieht exakt gleich aus.</p>



<p class="wp-block-paragraph">Aber viele folgen ähnlichen Mustern:</p>



<ul class="wp-block-list">
<li>klar benannte Ressourcen</li>



<li>HTTP-Methoden mit klarer Bedeutung</li>



<li>Statuscodes zur Rückmeldung</li>



<li>JSON als Datenformat</li>
</ul>



<h3 class="wp-block-heading">Typische Missverständnisse</h3>



<h4 class="wp-block-heading">&#8222;REST ist einfach nur irgendein API-Aufruf&#8220;</h4>



<p class="wp-block-paragraph">Nicht ganz. REST ist ein bestimmter Stil, wie APIs aufgebaut werden.</p>



<h4 class="wp-block-heading">&#8222;GET, POST, PUT und DELETE sind nur technische Details&#8220;</h4>



<p class="wp-block-paragraph">Nein. Diese Methoden sind zentral, weil sie die Absicht des Requests ausdrücken.</p>



<h4 class="wp-block-heading">&#8222;REST bedeutet automatisch einfache Entwicklung&#8220;</h4>



<p class="wp-block-paragraph">Nicht unbedingt. REST macht vieles strukturierter, aber gute API-Designs brauchen trotzdem saubere Planung.</p>



<h4 class="wp-block-heading">&#8222;REST und JSON sind dasselbe&#8220;</h4>



<p class="wp-block-paragraph">Nein. REST ist ein Stil für APIs. JSON ist ein Datenformat.</p>



<h3 class="wp-block-heading">REST im Alltag eines Java-Entwicklers</h3>



<p class="wp-block-paragraph">REST begegnet dir als Java-Entwickler an vielen Stellen:</p>



<ul class="wp-block-list">
<li>externe APIs aufrufen</li>



<li>eigene Backends mit Spring Boot bauen</li>



<li>Frontend und Backend verbinden</li>



<li>Daten an andere Systeme senden</li>



<li>Integrationen mit Cloud- oder Enterprise-Systemen umsetzen</li>
</ul>



<p class="wp-block-paragraph">Gerade für moderne Backend-Entwicklung ist REST ein Grundthema.</p>



<h3 class="wp-block-heading">REST, OData und andere API-Stile</h3>



<p class="wp-block-paragraph">REST ist sehr verbreitet, aber nicht die einzige Variante.</p>



<p class="wp-block-paragraph">Es gibt auch:</p>



<ul class="wp-block-list">
<li>SOAP</li>



<li>GraphQL</li>



<li>OData</li>
</ul>



<p class="wp-block-paragraph">Gerade OData ist später spannend, wenn es um SAP-nahe oder datengetriebene Systeme geht. Aber vorher solltest du REST sauber verstehen.</p>



<h3 class="wp-block-heading">Fazit</h3>



<p class="wp-block-paragraph">REST ist ein weit verbreiteter Stil für Web-APIs.</p>



<p class="wp-block-paragraph">Das Wichtigste für den Einstieg ist:</p>



<ul class="wp-block-list">
<li>Ressourcen über URLs ansprechen</li>



<li>mit HTTP-Methoden arbeiten</li>



<li>Daten per Request schicken oder per Response empfangen</li>



<li>Statuscodes richtig einordnen</li>
</ul>



<p class="wp-block-paragraph">Wenn du dieses Grundprinzip verstanden hast, kannst du moderne APIs deutlich besser lesen, nutzen und später auch selbst bauen.</p>



<h3 class="wp-block-heading">Nächster Schritt</h3>



<p class="wp-block-paragraph">Nach diesem Artikel sind diese Themen sinnvoll:</p>



<ul class="wp-block-list">
<li><a href="https://lernjava.de/was-ist-json/">Was ist JSON?</a></li>



<li><a href="https://lernjava.de/was-ist-eine-api/">Was ist eine API?</a></li>



<li>REST API mit Java nutzen</li>



<li>erste REST API mit Spring Boot</li>
</ul>
<p>Der Beitrag <a href="https://lernjava.de/was-ist-rest/">Was ist REST?</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Was ist eine API?</title>
		<link>https://lernjava.de/was-ist-eine-api/</link>
		
		<dc:creator><![CDATA[Andreas Bauer]]></dc:creator>
		<pubDate>Tue, 28 Apr 2026 20:47:06 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<guid isPermaLink="false">https://lernjava.de/?p=746</guid>

					<description><![CDATA[<p>Was ist eine API? In diesem Artikel erfährst du einfach und verständlich, wie APIs funktionieren, wofür sie gebraucht werden und wie ein konkretes Beispiel aussieht.</p>
<p>Der Beitrag <a href="https://lernjava.de/was-ist-eine-api/">Was ist eine API?</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Eine API ist eine <strong><a href="https://de.wikipedia.org/wiki/Programmierschnittstelle">Schnittstelle</a></strong>, über die Programme miteinander sprechen können. API steht für <strong>Application Programming Interface</strong>.</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="683" src="https://lernjava.de/wp-content/uploads/2026/04/pexels-cottonbro-6803542-1024x683.jpg" alt="" class="wp-image-750" srcset="https://lernjava.de/wp-content/uploads/2026/04/pexels-cottonbro-6803542-1024x683.jpg 1024w, https://lernjava.de/wp-content/uploads/2026/04/pexels-cottonbro-6803542-300x200.jpg 300w, https://lernjava.de/wp-content/uploads/2026/04/pexels-cottonbro-6803542-768x512.jpg 768w, https://lernjava.de/wp-content/uploads/2026/04/pexels-cottonbro-6803542-1536x1024.jpg 1536w, https://lernjava.de/wp-content/uploads/2026/04/pexels-cottonbro-6803542-2048x1365.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Auf Deutsch kann man vereinfacht sagen:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Eine API ist ein festgelegter Weg, wie eine Software Funktionen oder Daten für andere Software bereitstellt.</p>
</blockquote>



<p class="wp-block-paragraph">Wenn ein Programm Informationen von einem anderen Programm braucht, passiert das oft über eine API.</p>



<p class="wp-block-paragraph">Das kann zum Beispiel sein:</p>



<ul class="wp-block-list">
<li>Wetterdaten abrufen</li>



<li>Zahlungsdaten verarbeiten</li>



<li>Benutzer anmelden</li>



<li>Produkte aus einem Shop laden</li>



<li>Nachrichten an einen Dienst schicken</li>



<li>Daten aus einem ERP oder SAP-System lesen</li>
</ul>



<h3 class="wp-block-heading">Warum sind APIs wichtig?</h3>



<p class="wp-block-paragraph">In moderner Software arbeitet fast nie alles komplett für sich allein. Stattdessen greifen Systeme ständig auf andere Systeme zu.</p>



<p class="wp-block-paragraph">Ein paar typische Beispiele:</p>



<ul class="wp-block-list">
<li>ein Webshop holt Zahlungsinformationen von einem Zahlungsanbieter</li>



<li>eine App zeigt Kartendaten von einem Kartendienst an</li>



<li>ein Frontend lädt Kundendaten aus einem Backend</li>



<li>ein Java-Programm ruft eine externe AI- oder Wetter-API auf</li>



<li>ein SAP-nahes System liefert Daten an ein anderes Tool</li>
</ul>



<p class="wp-block-paragraph">Ohne APIs müsste jede Software alles selbst können. Das wäre langsam, unübersichtlich und teuer. APIs sorgen dafür, dass Programme Aufgaben aufteilen können.</p>



<h3 class="wp-block-heading">Ein einfaches Bild dazu</h3>



<p class="wp-block-paragraph">Man kann sich eine API wie einen Kellner im Restaurant vorstellen.</p>



<p class="wp-block-paragraph">Du sitzt nicht in der Küche und kochst selbst. Stattdessen sagst du dem Kellner, was du willst. Der Kellner nimmt deine Bestellung auf, bringt sie in die Küche und kommt mit dem Ergebnis zurück.</p>



<p class="wp-block-paragraph">In dieser Analogie:</p>



<ul class="wp-block-list">
<li>du bist das aufrufende Programm</li>



<li>der Kellner ist die API</li>



<li>die Küche ist das System, das etwas für dich erledigt</li>



<li>das Essen ist die Antwort</li>
</ul>



<p class="wp-block-paragraph">Wichtig ist dabei: Du musst nicht wissen, wie die Küche intern alles macht. Du musst nur wissen:</p>



<ul class="wp-block-list">
<li>was du bestellen darfst</li>



<li>wie du bestellen musst</li>



<li>was du zurückbekommst</li>
</ul>



<p class="wp-block-paragraph">Genau so funktionieren APIs auch.</p>



<h3 class="wp-block-heading">Was macht eine API konkret?</h3>



<p class="wp-block-paragraph">Eine API legt fest:</p>



<ul class="wp-block-list">
<li><strong>welche Anfragen erlaubt sind</strong></li>



<li><strong>welche Daten übergeben werden müssen</strong></li>



<li><strong>welche Antwort zurückkommt</strong></li>



<li><strong>welche Fehler auftreten können</strong></li>
</ul>



<p class="wp-block-paragraph">Eine API ist also nicht einfach nur &#8222;irgendeine Verbindung&#8220;. Sie ist ein klar definiertes Regelwerk.</p>



<h3 class="wp-block-heading">API im Alltag eines Entwicklers</h3>



<p class="wp-block-paragraph">Wenn Entwickler von APIs sprechen, meinen sie oft Web-APIs.</p>



<p class="wp-block-paragraph">Zum Beispiel:</p>



<ul class="wp-block-list">
<li><code>GET /users</code></li>



<li><code>POST /login</code></li>



<li><code>GET /products/42</code></li>
</ul>



<p class="wp-block-paragraph">So ein Aufruf bedeutet:</p>



<ul class="wp-block-list">
<li>ein Programm sendet eine Anfrage</li>



<li>ein Server verarbeitet die Anfrage</li>



<li>der Server liefert eine Antwort zurück</li>
</ul>



<p class="wp-block-paragraph">Die Antwort ist häufig im JSON-Format, aber nicht zwingend.</p>



<h3 class="wp-block-heading">Was ist der Unterschied zwischen UI und API?</h3>



<p class="wp-block-paragraph">Das wird oft verwechselt.</p>



<p class="wp-block-paragraph">Eine <strong>UI</strong> ist die Oberfläche für Menschen. Eine <strong>API</strong> ist die Schnittstelle für Programme.</p>



<p class="wp-block-paragraph">Beispiel:</p>



<ul class="wp-block-list">
<li>Auf einer Website klickst du auf &#8222;Login&#8220;. Das ist UI.</li>



<li>Im Hintergrund wird ein Request an ein Backend geschickt. Das ist API.</li>
</ul>



<p class="wp-block-paragraph">Der Nutzer sieht also meist nur die Oberfläche. Im Hintergrund arbeiten aber oft mehrere APIs zusammen.</p>



<h3 class="wp-block-heading">Ein Beispiel ohne Code</h3>



<p class="wp-block-paragraph">Stell dir vor, du nutzt eine Wetter-App.</p>



<p class="wp-block-paragraph">Die App zeigt dir:</p>



<ul class="wp-block-list">
<li>Temperatur</li>



<li>Regenwahrscheinlichkeit</li>



<li>Wind</li>
</ul>



<p class="wp-block-paragraph">Die App misst das meistens nicht selbst. Sie fragt dafür eine Wetter-API an.</p>



<p class="wp-block-paragraph">Der Ablauf ist dann ungefähr so:</p>



<ol class="wp-block-list">
<li>Die App sendet eine Anfrage an die Wetter-API.</li>



<li>Die Wetter-API verarbeitet die Anfrage.</li>



<li>Die API liefert Wetterdaten zurück.</li>



<li>Die App zeigt die Daten auf dem Bildschirm an.</li>
</ol>



<p class="wp-block-paragraph">Die App ist also der Nutzer der API.</p>



<h3 class="wp-block-heading">Request und Response einfach erklärt</h3>



<p class="wp-block-paragraph">Zwei Begriffe kommen bei APIs ständig vor:</p>



<h4 class="wp-block-heading">Request</h4>



<p class="wp-block-paragraph">Der <strong>Request</strong> ist die Anfrage.</p>



<p class="wp-block-paragraph">Ein Programm sagt damit sinngemäß:</p>



<ul class="wp-block-list">
<li>Gib mir Daten</li>



<li>Speichere diese Daten</li>



<li>Ändere etwas</li>



<li>Lösche etwas</li>
</ul>



<h4 class="wp-block-heading">Response</h4>



<p class="wp-block-paragraph">Die <strong>Response</strong> ist die Antwort.</p>



<p class="wp-block-paragraph">Die Antwort kann sein:</p>



<ul class="wp-block-list">
<li>die gewünschten Daten</li>



<li>eine Bestätigung</li>



<li>eine Fehlermeldung</li>
</ul>



<p class="wp-block-paragraph">Beispiel:</p>



<ul class="wp-block-list">
<li>Request: &#8222;Gib mir den Benutzer mit der ID 5&#8220;</li>



<li>Response: &#8222;Hier sind die Daten von Benutzer 5&#8220;</li>
</ul>



<h3 class="wp-block-heading">Ein einfaches API-Beispiel in Java</h3>



<p class="wp-block-paragraph">Damit das nicht zu theoretisch bleibt, hier ein kleines Beispiel mit Java.</p>



<p class="wp-block-paragraph">Dieses Beispiel ruft eine öffentliche Test-API auf und lädt einen Beispiel-Post.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class ApiExample {

    public static void main(String[] args) throws IOException, InterruptedException {
        HttpClient client = HttpClient.newHttpClient();

        HttpRequest request = HttpRequest.newBuilder()
                .uri(URI.create("https://jsonplaceholder.typicode.com/posts/1"))
                .GET()
                .build();

        HttpResponse&lt;String> response = client.send(request, HttpResponse.BodyHandlers.ofString());

        System.out.println("Status: " + response.statusCode());
        System.out.println("Antwort: " + response.body());
    }
}</pre>



<h3 class="wp-block-heading">Was passiert in diesem Code?</h3>



<p class="wp-block-paragraph">Der Code macht Folgendes:</p>



<ul class="wp-block-list">
<li>erstellt einen HTTP-Client</li>



<li>baut eine Anfrage an eine URL</li>



<li>sendet die Anfrage</li>



<li>speichert die Antwort</li>



<li>gibt Statuscode und Inhalt aus</li>
</ul>



<p class="wp-block-paragraph">Der wichtige Punkt ist nicht jedes Detail des Codes. Wichtiger ist das Grundprinzip:</p>



<ul class="wp-block-list">
<li>Java ist der Client</li>



<li>eine externe Schnittstelle wird aufgerufen</li>



<li>die API liefert Daten zurück</li>
</ul>



<p class="wp-block-paragraph">Genau das ist API-Nutzung in der Praxis.</p>



<h3 class="wp-block-heading">Wie sieht die Antwort aus?</h3>



<p class="wp-block-paragraph">Die Antwort könnte zum Beispiel so aussehen:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="json" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{
  "userId": 1,
  "id": 1,
  "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
  "body": "quia et suscipit suscipit recusandae consequuntur expedita et cum"
}</pre>



<p class="wp-block-paragraph">Das ist JSON.</p>



<p class="wp-block-paragraph">JSON ist ein sehr verbreitetes Format für Daten, die über APIs übertragen werden. Genau dazu passt später der Folgeartikel <a href="https://lernjava.de/was-ist-json/">Was ist JSON?</a>.</p>



<h3 class="wp-block-heading">Ist jede API eine REST API?</h3>



<p class="wp-block-paragraph">Nein.</p>



<p class="wp-block-paragraph">Das wird oft durcheinandergebracht.</p>



<p class="wp-block-paragraph"><strong>API</strong> ist der Oberbegriff. <strong>REST API</strong> ist eine bestimmte Art von API.</p>



<p class="wp-block-paragraph">Das heißt:</p>



<ul class="wp-block-list">
<li>jede REST API ist eine API</li>



<li>aber nicht jede API ist eine REST API</li>
</ul>



<p class="wp-block-paragraph">Es gibt zum Beispiel auch:</p>



<ul class="wp-block-list">
<li>Bibliotheks-APIs in Java</li>



<li>Datenbank-Schnittstellen</li>



<li>GraphQL APIs</li>



<li>SOAP APIs</li>



<li>OData APIs</li>
</ul>



<p class="wp-block-paragraph">REST ist also nur ein Teil des größeren API-Themas. Der nächste logische Schritt ist deshalb der Artikel <a href="https://lernjava.de/was-ist-rest/">Was ist REST?</a>.</p>



<h3 class="wp-block-heading">Wo begegnen dir APIs als Java-Entwickler?</h3>



<p class="wp-block-paragraph">Als Java-Entwickler hast du APIs in mehreren Formen:</p>



<h4 class="wp-block-heading">1. APIs von Java-Bibliotheken</h4>



<p class="wp-block-paragraph">Zum Beispiel Methoden aus:</p>



<ul class="wp-block-list">
<li><code>List</code></li>



<li><code>Map</code></li>



<li><code>String</code></li>



<li><code>HttpClient</code></li>
</ul>



<p class="wp-block-paragraph">Auch das sind APIs, weil sie festlegen, wie du Funktionen nutzen darfst.</p>



<h4 class="wp-block-heading">2. Web-APIs externer Dienste</h4>



<p class="wp-block-paragraph">Zum Beispiel:</p>



<ul class="wp-block-list">
<li>Zahlungsanbieter</li>



<li>Wetterdienste</li>



<li>AI-Dienste</li>



<li>Authentifizierung</li>



<li>Versanddienste</li>
</ul>



<p class="wp-block-paragraph">Wenn du sehen willst, wie man so eine API konkret aus Java nutzt, passt dazu auch <a href="https://lernjava.de/wie-man-chat-gpt-3-in-java-anwendungen-nutzen-kann/">Wie man die ChatGPT API in Java nutzen kann</a> oder der englische Beitrag <a href="https://lernjava.de/integrating-java-with-openai-chatgpt/">Integrating Java with ChatGPT API: A Step-by-Step Guide for GPT-3.5</a>.</p>



<h4 class="wp-block-heading">3. Eigene APIs im Backend</h4>



<p class="wp-block-paragraph">Wenn du mit Spring Boot arbeitest, baust du oft selbst APIs, damit Frontends oder andere Systeme Daten abrufen können.</p>



<h3 class="wp-block-heading">Typische Missverständnisse</h3>



<h4 class="wp-block-heading">&#8222;API ist nur etwas für große Systeme&#8220;</h4>



<p class="wp-block-paragraph">Nein. Schon kleine Anwendungen können APIs nutzen oder anbieten.</p>



<h4 class="wp-block-heading">&#8222;API bedeutet immer Internet&#8220;</h4>



<p class="wp-block-paragraph">Nein. Eine API kann auch lokal in einer Bibliothek existieren.</p>



<h4 class="wp-block-heading">&#8222;API und REST sind dasselbe&#8220;</h4>



<p class="wp-block-paragraph">Nein. REST ist nur eine spezielle Form.</p>



<h4 class="wp-block-heading">&#8222;Man muss die komplette Technik dahinter verstehen&#8220;</h4>



<p class="wp-block-paragraph">Nein. Für den Einstieg reicht es, das Grundprinzip aus Request und Response zu verstehen.</p>



<h3 class="wp-block-heading">Warum ist das Thema so wichtig für Anfänger?</h3>



<p class="wp-block-paragraph">Wenn du moderne Entwicklung verstehen willst, kommst du an APIs nicht vorbei.</p>



<p class="wp-block-paragraph">Denn sehr viele Dinge bauen darauf auf:</p>



<ul class="wp-block-list">
<li>Webanwendungen</li>



<li>Mobile Apps</li>



<li>Microservices</li>



<li>Cloud-Dienste</li>



<li>SAP-Integrationen</li>



<li>Frontend-Backend-Kommunikation</li>



<li>Automationen</li>
</ul>



<p class="wp-block-paragraph">Wer APIs versteht, versteht moderne Software deutlich besser.</p>



<h3 class="wp-block-heading">API, REST und OData, wie hängt das zusammen?</h3>



<p class="wp-block-paragraph">Ganz grob:</p>



<ul class="wp-block-list">
<li><strong>API</strong> ist der Oberbegriff</li>



<li><strong>REST</strong> ist ein verbreiteter Stil für Web-APIs</li>



<li><strong>OData</strong> baut auf Web- und HTTP-Konzepten auf und definiert zusätzliche Regeln für den Zugriff auf Daten</li>
</ul>



<p class="wp-block-paragraph">Wenn du also später Themen wie REST, OData, CAP oder SAP APIs verstehen willst, brauchst du zuerst ein sauberes API-Grundverständnis.</p>



<h3 class="wp-block-heading">Fazit</h3>



<p class="wp-block-paragraph">Eine API ist eine Schnittstelle, über die Programme miteinander sprechen.</p>



<p class="wp-block-paragraph">Sie legt fest:</p>



<ul class="wp-block-list">
<li>wie eine Anfrage aussieht</li>



<li>welche Daten übergeben werden</li>



<li>welche Antwort zurückkommt</li>



<li>wie Fehler behandelt werden</li>
</ul>



<p class="wp-block-paragraph">Für Einsteiger ist vor allem dieses Bild wichtig:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Eine API ist der definierte Weg, über den Software Daten oder Funktionen mit anderer Software austauscht.</p>
</blockquote>



<p class="wp-block-paragraph">Wenn du das verstanden hast, bist du schon deutlich näher an moderner Entwicklung dran.</p>



<h3 class="wp-block-heading">Nächster Schritt</h3>



<p class="wp-block-paragraph">Wenn du das Grundprinzip verstanden hast, sind diese Themen die nächsten sinnvollen Schritte:</p>



<ul class="wp-block-list">
<li><a href="https://lernjava.de/was-ist-rest/">Was ist REST?</a></li>



<li><a href="https://lernjava.de/was-ist-json/">Was ist JSON?</a></li>



<li>REST API mit Java nutzen</li>



<li>erste REST API mit Spring Boot</li>
</ul>
<p>Der Beitrag <a href="https://lernjava.de/was-ist-eine-api/">Was ist eine API?</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Was ist JSON?</title>
		<link>https://lernjava.de/was-ist-json/</link>
		
		<dc:creator><![CDATA[Andreas Bauer]]></dc:creator>
		<pubDate>Tue, 28 Apr 2026 20:43:07 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[rest]]></category>
		<guid isPermaLink="false">https://lernjava.de/?p=748</guid>

					<description><![CDATA[<p>Was ist JSON? In diesem Artikel erfährst du einfach und verständlich, wie JSON aufgebaut ist, warum es bei APIs so oft genutzt wird und wie du JSON in Java einordnest.</p>
<p>Der Beitrag <a href="https://lernjava.de/was-ist-json/">Was ist JSON?</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">JSON ist ein einfaches Format, um Daten strukturiert darzustellen. JSON  steht dabei für <strong>JavaScript Object Notation</strong>.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="683" src="https://lernjava.de/wp-content/uploads/2024/06/pexels-antonio-batinic-2573434-4164418-1024x683.jpg" alt="" class="wp-image-657" srcset="https://lernjava.de/wp-content/uploads/2024/06/pexels-antonio-batinic-2573434-4164418-1024x683.jpg 1024w, https://lernjava.de/wp-content/uploads/2024/06/pexels-antonio-batinic-2573434-4164418-300x200.jpg 300w, https://lernjava.de/wp-content/uploads/2024/06/pexels-antonio-batinic-2573434-4164418-768x512.jpg 768w, https://lernjava.de/wp-content/uploads/2024/06/pexels-antonio-batinic-2573434-4164418-1536x1024.jpg 1536w, https://lernjava.de/wp-content/uploads/2024/06/pexels-antonio-batinic-2573434-4164418-2048x1365.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">Auch wenn im Namen <a href="https://developer.mozilla.org/de/docs/Web/JavaScript">JavaScript</a> steckt, wird JSON längst nicht nur mit JavaScript verwendet. JSON ist heute in vielen Sprachen und Systemen Standard, auch in Java.</p>



<p class="wp-block-paragraph">Vereinfacht gesagt:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">JSON ist ein Textformat, mit dem Daten klar und strukturiert ausgetauscht werden können.</p>
</blockquote>



<h3 class="wp-block-heading">Warum ist JSON wichtig?</h3>



<p class="wp-block-paragraph">JSON begegnet dir in moderner Software fast überall.</p>



<p class="wp-block-paragraph">Zum Beispiel bei:</p>



<ul class="wp-block-list">
<li>REST APIs</li>



<li>Webanwendungen</li>



<li>mobilen Apps</li>



<li>Konfigurationsdateien</li>



<li>Datenaustausch zwischen Frontend und Backend</li>



<li>Cloud-Diensten</li>
</ul>



<p class="wp-block-paragraph">Wenn eine API Daten zurückliefert, ist das sehr oft JSON. Darum ist JSON für Anfänger ein wichtiges Grundthema.</p>



<h3 class="wp-block-heading">Wie sieht JSON aus?</h3>



<p class="wp-block-paragraph">Hier ein einfaches Beispiel:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="json" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{
  "id": 5,
  "name": "Andi",
  "beruf": "Entwickler",
  "aktiv": true
}</pre>



<p class="wp-block-paragraph">Dieses JSON beschreibt Daten zu einer Person.</p>



<p class="wp-block-paragraph">Es gibt hier sogenannte <strong>Schlüssel-Wert-Paare</strong>:</p>



<ul class="wp-block-list">
<li><code>id</code> -> <code>5</code></li>



<li><code>name</code> -> <code>Andi</code></li>



<li><code>beruf</code> -> <code>Entwickler</code></li>



<li><code>aktiv</code> -> <code>true</code></li>
</ul>



<h3 class="wp-block-heading">Was ist ein JSON-Objekt?</h3>



<p class="wp-block-paragraph">Ein JSON-Objekt erkennst du an geschweiften Klammern:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="json" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{
  "name": "Max",
  "alter": 28
}</pre>



<p class="wp-block-paragraph">Ein Objekt enthält Eigenschaften mit Namen und Werten.</p>



<h3 class="wp-block-heading">Was ist ein JSON-Array?</h3>



<p class="wp-block-paragraph">Ein JSON-Array erkennst du an eckigen Klammern:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="json" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">[
  "Java",
  "REST",
  "JSON"
]</pre>



<p class="wp-block-paragraph">Ein Array enthält mehrere Werte in einer Liste.</p>



<p class="wp-block-paragraph">Diese Werte können sein:</p>



<ul class="wp-block-list">
<li>Strings</li>



<li>Zahlen</li>



<li>Booleans</li>



<li>weitere Objekte</li>



<li>weitere Arrays</li>
</ul>



<h3 class="wp-block-heading">JSON-Objekt mit Array</h3>



<p class="wp-block-paragraph">In der Praxis wird JSON oft kombiniert. Zum Beispiel so:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="json" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{
  "id": 7,
  "name": "Notebook",
  "tags": ["technik", "arbeit", "java"],
  "lagernd": true
}</pre>



<p class="wp-block-paragraph">Hier siehst du:</p>



<ul class="wp-block-list">
<li>normale Werte</li>



<li>ein Array innerhalb eines Objekts</li>
</ul>



<h3 class="wp-block-heading">Welche Datentypen gibt es in JSON?</h3>



<p class="wp-block-paragraph">JSON kennt ein paar grundlegende Datentypen:</p>



<ul class="wp-block-list">
<li>String</li>



<li>Zahl</li>



<li>Boolean</li>



<li>Objekt</li>



<li>Array</li>



<li><code>null</code></li>
</ul>



<p class="wp-block-paragraph">Beispiele:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="json" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{
  "text": "Hallo",
  "zahl": 42,
  "aktiv": true,
  "details": {
    "stadt": "Regensburg"
  },
  "rollen": ["admin", "user"],
  "notiz": null
}</pre>



<h3 class="wp-block-heading">Warum wird JSON so oft für APIs verwendet?</h3>



<p class="wp-block-paragraph">JSON ist beliebt, weil es mehrere Vorteile hat:</p>



<ul class="wp-block-list">
<li>einfach zu lesen</li>



<li>leicht zu übertragen</li>



<li>kompakt</li>



<li>in vielen Programmiersprachen gut verarbeitbar</li>



<li>gut für strukturierte Daten geeignet</li>
</ul>



<p class="wp-block-paragraph">Darum sieht man bei APIs sehr häufig diese Kombination:</p>



<ul class="wp-block-list">
<li>API</li>



<li>REST</li>



<li>JSON</li>
</ul>



<p class="wp-block-paragraph">Wenn dir die Begriffe noch nicht ganz klar sind, passen dazu die Artikel <a href="https://lernjava.de/was-ist-eine-api/">Was ist eine API?</a> und <a href="https://lernjava.de/was-ist-rest/">Was ist REST?</a>.</p>



<h3 class="wp-block-heading">JSON im Alltag eines Entwicklers</h3>



<p class="wp-block-paragraph">Hier ein paar typische Situationen, in denen JSON vorkommt:</p>



<ul class="wp-block-list">
<li>ein Frontend lädt Benutzerdaten aus einem Backend</li>



<li>eine App sendet Login-Daten an einen Server</li>



<li>ein Java-Programm ruft eine externe API auf</li>



<li>eine Konfiguration wird in JSON gespeichert</li>



<li>ein externer Dienst liefert eine strukturierte Antwort zurück</li>
</ul>



<h3 class="wp-block-heading">JSON und Java, wie passt das zusammen?</h3>



<p class="wp-block-paragraph">JSON ist erst einmal nur Text.</p>



<p class="wp-block-paragraph">Ein Java-Programm kann diesen Text aber lesen, verarbeiten und in Objekte umwandeln.</p>



<p class="wp-block-paragraph">Zum Beispiel könnte eine API diese JSON-Antwort liefern:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="json" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{
  "title": "Java lernen",
  "level": "Anfänger"
}</pre>



<p class="wp-block-paragraph">In Java kannst du diese Daten später zum Beispiel in eine Klasse überführen. Das passiert oft mit Bibliotheken wie Jackson oder Gson.</p>



<h3 class="wp-block-heading">Ein kleines Java-Beispiel mit JSON als Text</h3>



<p class="wp-block-paragraph">Hier ein ganz simples Beispiel:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">public class JsonExample {

    public static void main(String[] args) {
        String json = "{\"name\":\"Andi\",\"rolle\":\"Entwickler\"}";

        System.out.println(json);
    }
}</pre>



<p class="wp-block-paragraph">Das Beispiel verarbeitet JSON noch nicht inhaltlich, zeigt aber, dass JSON am Ende zunächst eine Zeichenkette sein kann, die zwischen Systemen ausgetauscht wird.</p>



<h3 class="wp-block-heading">JSON als API-Antwort</h3>



<p class="wp-block-paragraph">Wenn du eine API aufrufst, bekommst du oft genau so eine Antwort zurück.</p>



<p class="wp-block-paragraph">Ein Beispiel aus einer REST API:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="json" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">{
  "userId": 1,
  "id": 1,
  "title": "Beispiel",
  "body": "Das ist ein Beispieltext"
}</pre>



<p class="wp-block-paragraph">Die API liefert also strukturierte Daten zurück, mit denen dein Programm weiterarbeiten kann.</p>



<h3 class="wp-block-heading">JSON ist kein Java-Objekt</h3>



<p class="wp-block-paragraph">Das ist ein wichtiger Punkt.</p>



<p class="wp-block-paragraph">JSON sieht manchmal ähnlich aus wie ein Objekt, ist aber nicht dasselbe wie ein Java-Objekt.</p>



<p class="wp-block-paragraph">JSON ist zunächst nur ein Datenformat. Ein Java-Objekt ist ein Objekt im laufenden Programm.</p>



<p class="wp-block-paragraph">Zwischen beiden gibt es oft eine Umwandlung:</p>



<ul class="wp-block-list">
<li>JSON zu Java-Objekt</li>



<li>Java-Objekt zu JSON</li>
</ul>



<h3 class="wp-block-heading">Typische Fehler bei JSON</h3>



<h4 class="wp-block-heading">Kommafehler</h4>



<p class="wp-block-paragraph">Ein zusätzliches oder fehlendes Komma macht JSON ungültig.</p>



<h4 class="wp-block-heading">Falsche Anführungszeichen</h4>



<p class="wp-block-paragraph">Schlüssel und Strings werden in JSON mit doppelten Anführungszeichen geschrieben.</p>



<h4 class="wp-block-heading">JSON mit Java verwechseln</h4>



<p class="wp-block-paragraph">JSON ist keine Java-Klasse und keine Map, auch wenn es ähnlich wirken kann.</p>



<h4 class="wp-block-heading">Arrays und Objekte durcheinanderbringen</h4>



<p class="wp-block-paragraph">Objekte nutzen <code>{ }</code>, Arrays nutzen <code>[ ]</code>.</p>



<h3 class="wp-block-heading">Warum ist JSON für Anfänger so wichtig?</h3>



<p class="wp-block-paragraph">Weil JSON an vielen anderen Themen hängt:</p>



<ul class="wp-block-list">
<li>APIs</li>



<li>REST</li>



<li>Spring Boot</li>



<li>Frontend-Backend-Kommunikation</li>



<li>externe Services</li>



<li>Konfigurationsdateien</li>
</ul>



<p class="wp-block-paragraph">Wenn du JSON verstehst, verstehst du viele Responses und Requests deutlich besser.</p>



<h3 class="wp-block-heading">JSON, REST und OData</h3>



<p class="wp-block-paragraph">Ganz grob:</p>



<ul class="wp-block-list">
<li>APIs transportieren oft Daten</li>



<li>REST APIs nutzen oft JSON</li>



<li>OData kann ebenfalls JSON nutzen, bringt aber zusätzliche Regeln und Standards mit</li>
</ul>



<p class="wp-block-paragraph">Darum ist JSON ein sehr gutes Grundthema, bevor man tiefer in REST, Spring Boot oder OData einsteigt.</p>



<h3 class="wp-block-heading">Fazit</h3>



<p class="wp-block-paragraph">JSON ist ein leicht lesbares Format für strukturierte Daten.</p>



<p class="wp-block-paragraph">Es wird sehr oft genutzt, um Daten zwischen Systemen auszutauschen, vor allem bei APIs und REST APIs.</p>



<p class="wp-block-paragraph">Für Anfänger sind diese Punkte am wichtigsten:</p>



<ul class="wp-block-list">
<li>JSON ist Text mit Struktur</li>



<li>Objekte nutzen <code>{ }</code></li>



<li>Arrays nutzen <code>[ ]</code></li>



<li>APIs liefern sehr oft JSON zurück</li>
</ul>



<p class="wp-block-paragraph">Wenn du das verstanden hast, bist du für viele moderne Entwicklungsthemen deutlich besser vorbereitet.</p>



<h3 class="wp-block-heading">Nächster Schritt</h3>



<p class="wp-block-paragraph">Nach diesem Artikel passen diese Themen gut:</p>



<ul class="wp-block-list">
<li><a href="https://lernjava.de/was-ist-eine-api/">Was ist eine API?</a></li>



<li><a href="https://lernjava.de/was-ist-rest/">Was ist REST?</a></li>



<li>JSON in Java verarbeiten</li>



<li>REST API mit Java nutzen</li>
</ul>
<p>Der Beitrag <a href="https://lernjava.de/was-ist-json/">Was ist JSON?</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Java Setup 2026: Modernes Setup für Java</title>
		<link>https://lernjava.de/java-setup-2026-modernes-setup-fuer-java/</link>
					<comments>https://lernjava.de/java-setup-2026-modernes-setup-fuer-java/#respond</comments>
		
		<dc:creator><![CDATA[Andreas Bauer]]></dc:creator>
		<pubDate>Thu, 23 Apr 2026 21:52:36 +0000</pubDate>
				<category><![CDATA[Basics]]></category>
		<category><![CDATA[Grundlagen]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[java]]></category>
		<guid isPermaLink="false">https://lernjava.de/?p=702</guid>

					<description><![CDATA[<p>Java Setup 2026: In diesem Guide zeige ich dir ein modernes Setup mit Java 21, IntelliJ IDEA, SDKMAN und Maven für produktive Java-Entwicklung.</p>
<p>Der Beitrag <a href="https://lernjava.de/java-setup-2026-modernes-setup-fuer-java/">Java Setup 2026: Modernes Setup für Java</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Java Setup 2026: Modernes Setup für produktive Java-Entwicklung</h2>
<p><strong>Java Setup 2026</strong> bedeutet heute mehr als nur ein JDK zu installieren und eine IDE zu öffnen. Wenn du sauber mit Java starten willst, brauchst du ein Setup, das produktiv, wartbar und realistisch für echte Projekte ist. In diesem Guide zeige ich dir, wie du dein Java Setup 2026 mit Java 21, IntelliJ IDEA, SDKMAN und Maven sauber aufbaust.</p>
<figure class="wp-block-image size-large"><img decoding="async" src="https://lernjava.de/wp-content/uploads/2023/08/pexels-christina-morillo-1181253-1024x684.jpg" alt="Java Setup 2026 mit IntelliJ IDEA und moderner Entwicklungsumgebung" /><figcaption>Ein modernes Java Setup 2026 beginnt mit einer sauberen Entwicklungsumgebung.</figcaption></figure>
<h3>Warum ein sauberes Java Setup 2026 so wichtig ist</h3>
<p>Viele Anfänger unterschätzen das Thema Setup komplett. Sie installieren irgendeine Java-Version, öffnen irgendeine IDE und wundern sich dann, warum Beispiele aus dem Internet nicht laufen oder warum Build-Tools Fehler werfen. Das Problem ist selten Java selbst, sondern fast immer ein unsauberes Umfeld.</p>
<p>Ein sauberes Setup hilft dir bei drei Dingen:</p>
<ul>
<li><strong>Weniger Reibung beim Lernen:</strong> Du kannst dich auf Syntax, Logik und Programmierkonzepte konzentrieren statt auf Tool-Probleme.</li>
<li><strong>Bessere Übertragbarkeit:</strong> Wenn du später mit Maven, Gradle, Spring Boot oder Docker arbeitest, musst du nicht wieder alles umbauen.</li>
<li><strong>Mehr Professionalität:</strong> Wer früh sauber arbeitet, versteht schneller, wie moderne Java-Projekte wirklich aufgebaut sind.</li>
</ul>
<p>Falls du noch ganz am Anfang stehst, lohnt es sich parallel auch meine Beiträge zu <a href="https://lernjava.de/grundlagen-methoden/">Methoden in Java</a> und <a href="https://lernjava.de/kontrollstrukturen/">Kontrollstrukturen</a> anzuschauen.</p>
<h3>1. Welche Java-Version solltest du 2026 nutzen?</h3>
<p>Meine klare Empfehlung lautet: <strong>Java 21 LTS</strong>.</p>
<p>Warum? Weil Long-Term-Support-Versionen im echten Projektalltag die wichtigste Rolle spielen. Java 21 ist modern, stabil und hat Features, die man auch außerhalb von Demo-Projekten ernsthaft nutzen kann.</p>
<ul>
<li><strong>Virtual Threads</strong> für effizientere nebenläufige Anwendungen</li>
<li><strong>Pattern Matching</strong> für saubereren und lesbareren Code</li>
<li><strong>Moderne Sprachfeatures</strong>, die Java insgesamt angenehmer machen</li>
</ul>
<p>Wenn du verstehen willst, warum Nebenläufigkeit in Java überhaupt ein Thema ist, dann lies auch meinen Beitrag zu <a href="https://lernjava.de/threads-in-java/">Threads in Java</a>.</p>
<h3>2. JDK installieren: Bitte nicht mehr manuell herumkopieren</h3>
<p>Der größte Anfängerfehler ist, das JDK irgendwie per Download-Seite und Systempfad zusammenzuklicken. Die professionelle Lösung ist ein Version Manager wie <strong>SDKMAN!</strong>.</p>
<pre><code>sdk install java 21.0.2-tem
sdk use java 21.0.2-tem
java -version</code></pre>
<p>Vorteile davon:</p>
<ul>
<li>saubere Versionsverwaltung</li>
<li>schneller Wechsel zwischen mehreren JDKs</li>
<li>kein Gefrickel mit Umgebungsvariablen</li>
<li>ideal für mehrere Java-Versionen parallel</li>
</ul>
<h3>3. Welche IDE ist die richtige?</h3>
<p>Für 2026 ist meine Empfehlung klar: <strong>IntelliJ IDEA Community Edition</strong>.</p>
<p>Eclipse ist nicht tot, aber IntelliJ ist für die meisten Entwickler das rundere Gesamtpaket. Das gilt vor allem dann, wenn du mittelfristig Richtung professionelle Projekte, Spring Boot, Maven, Gradle oder größere Codebasen gehen möchtest.</p>
<ul>
<li>sehr gute Code-Vervollständigung</li>
<li>starkes Refactoring</li>
<li>saubere Projektstruktur</li>
<li>gute Build-Tool-Integration</li>
</ul>
<h3>4. Maven oder Gradle?</h3>
<p>Für den Einstieg ist <strong>Maven</strong> meistens die bessere Wahl, für moderne Projekte ist Gradle oft flexibler. Wenn du gerade lernst, ist Maven angenehm, weil die Struktur klar ist und weil du sehr viele Beispiele und Tutorials findest.</p>
<p>Passend dazu habe ich bereits eine <a href="https://lernjava.de/einfuehrung-in-maven-in-java-mit-intellij/">Einführung in Maven in Java mit IntelliJ</a> veröffentlicht.</p>
<h3>5. Wie sollte ein erstes Java-Projekt aufgebaut sein?</h3>
<p>Ein modernes erstes Projekt sollte nicht einfach nur aus einer einzigen Datei mit einer riesigen <code>main</code>-Methode bestehen. Eine gute Basis sieht ungefähr so aus:</p>
<ul>
<li><strong>src/main/java</strong> für produktiven Code</li>
<li><strong>Pakete</strong> für sinnvolle Strukturierung</li>
<li><strong>klare Trennung von Logik und Ausgabe</strong></li>
<li><strong>Build-Datei</strong> über Maven oder Gradle</li>
</ul>
<p>Wenn du das früh sauber lernst, verstehst du später auch leichter Themen wie Klassen, Objekte und Methoden. Falls du da noch tiefer rein willst, lies auch meinen Beitrag zu <a href="https://lernjava.de/klassenmethoden-und-objektmethoden/">Klassenmethoden und Objektmethoden</a>.</p>
<h3>6. Terminal, Git und Tooling nicht ignorieren</h3>
<p>Wer professionell entwickeln will, sollte früh lernen, dass Java nicht nur aus Code, sondern auch aus Workflow besteht.</p>
<ul>
<li><strong>Terminal-Grundlagen</strong> für Build- und Startbefehle</li>
<li><strong>Git</strong> für Versionskontrolle</li>
<li><strong>Grundverständnis von Dependencies</strong></li>
<li><strong>erste Testausführung über die Kommandozeile</strong></li>
</ul>
<h3>7. Welche Fehler du beim Java Setup vermeiden solltest</h3>
<ul>
<li>zu alte Java-Version installieren</li>
<li>mehrere JDKs auf dem System, ohne zu wissen, welches aktiv ist</li>
<li>IDE-Projekt-SDK und System-Java verwechseln</li>
<li>Maven oder Gradle nutzen, ohne die Grundstruktur zu verstehen</li>
<li>alles gleichzeitig lernen wollen statt erst die Basis sauber aufzubauen</li>
</ul>
<h3>8. Mein empfohlenes Java Setup 2026 auf einen Blick</h3>
<ul>
<li><strong>Java-Version:</strong> Java 21 LTS</li>
<li><strong>JDK-Verwaltung:</strong> SDKMAN!</li>
<li><strong>IDE:</strong> IntelliJ IDEA Community Edition</li>
<li><strong>Build-Tool für Einsteiger:</strong> Maven</li>
<li><strong>Versionskontrolle:</strong> Git</li>
</ul>
<h3>Fazit</h3>
<p>Ein modernes <strong>Java Setup 2026</strong> ist kein Hexenwerk, aber du solltest es bewusst aufbauen. Wenn du direkt mit einer stabilen Java-Version, einer vernünftigen IDE und einem klaren Build-Workflow startest, sparst du dir später sehr viel Frust.</p>
<p>Wenn du als Nächstes tiefer einsteigen willst, empfehle ich dir diese Beiträge:</p>
<ul>
<li><a href="https://lernjava.de/einfuehrung-in-maven-in-java-mit-intellij/">Einführung in Maven in Java mit IntelliJ</a></li>
<li><a href="https://lernjava.de/threads-in-java/">Threads in Java</a></li>
<li><a href="https://lernjava.de/grundlagen-methoden/">Grundlagen: Methoden in Java</a></li>
<li><a href="https://lernjava.de/kontrollstrukturen/">Kontrollstrukturen in Java</a></li>
</ul>
<p>Der Beitrag <a href="https://lernjava.de/java-setup-2026-modernes-setup-fuer-java/">Java Setup 2026: Modernes Setup für Java</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lernjava.de/java-setup-2026-modernes-setup-fuer-java/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Threads in Java: Einführung, Theorie und Codebeispiel</title>
		<link>https://lernjava.de/threads-in-java/</link>
					<comments>https://lernjava.de/threads-in-java/#respond</comments>
		
		<dc:creator><![CDATA[Andreas Bauer]]></dc:creator>
		<pubDate>Thu, 06 Jun 2024 17:51:25 +0000</pubDate>
				<category><![CDATA[Algorithmen]]></category>
		<category><![CDATA[Expert]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[parallel]]></category>
		<category><![CDATA[threads]]></category>
		<guid isPermaLink="false">https://lernjava.de/?p=660</guid>

					<description><![CDATA[<p>Einführung Threads in Java sind ein wesentlicher Bestandteil der parallelen Programmierung und ermöglichen es, mehrere Aufgaben gleichzeitig auszuführen. Diese Technik verbessert die Effizienz und Reaktionsfähigkeit von Programmen erheblich. In diesem Artikel werden wir die Grundlagen von Threads in Java erläutern, ihre Theorie behandeln, ein praktisches Codebeispiel bereitstellen sowie die Anwendungsgebiete, Vor- und Nachteile von Threads [&#8230;]</p>
<p>Der Beitrag <a href="https://lernjava.de/threads-in-java/">Threads in Java: Einführung, Theorie und Codebeispiel</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">Einführung</h1>



<p class="wp-block-paragraph">Threads in Java sind ein wesentlicher Bestandteil der parallelen Programmierung und ermöglichen es, mehrere Aufgaben gleichzeitig auszuführen. Diese Technik verbessert die Effizienz und Reaktionsfähigkeit von Programmen erheblich. In diesem Artikel werden wir die <a href="https://lernjava.de/5-tipps-um-java-in-2023-zu-lernen/">Grundlagen</a> von Threads in Java erläutern, ihre Theorie behandeln, ein praktisches Codebeispiel bereitstellen sowie die Anwendungsgebiete, Vor- und Nachteile von Threads diskutieren.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="684" src="https://lernjava.de/wp-content/uploads/2023/08/pexels-christina-morillo-1181253-1024x684.jpg" alt="Frau vor Macbook" class="wp-image-596" style="width:706px;height:auto" srcset="https://lernjava.de/wp-content/uploads/2023/08/pexels-christina-morillo-1181253-1024x684.jpg 1024w, https://lernjava.de/wp-content/uploads/2023/08/pexels-christina-morillo-1181253-300x200.jpg 300w, https://lernjava.de/wp-content/uploads/2023/08/pexels-christina-morillo-1181253-768x513.jpg 768w, https://lernjava.de/wp-content/uploads/2023/08/pexels-christina-morillo-1181253-1536x1025.jpg 1536w, https://lernjava.de/wp-content/uploads/2023/08/pexels-christina-morillo-1181253-2048x1367.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">Frau vor Macbook</figcaption></figure>
</div>


<h1 class="wp-block-heading">Theorie</h1>



<p class="wp-block-paragraph">Ein <a href="https://de.wikipedia.org/wiki/Threads">Thread</a> ist im Wesentlichen ein kleinerer Ausführungseinheit innerhalb eines Prozesses. Jeder Java-Anwendung ist mindestens ein Thread zugewiesen: der Haupt-Thread, der die <code>main</code>-Methode ausführt. Zusätzliche Threads können erzeugt werden, um Aufgaben parallel zur Hauptausführung zu verarbeiten.</p>



<p class="wp-block-paragraph">Java bietet zwei Möglichkeiten, Threads zu implementieren:</p>



<ol class="wp-block-list">
<li><strong>Durch Implementierung des <code>Runnable</code>-Interfaces:</strong> Eine Klasse implementiert das <code>Runnable</code>-Interface und überschreibt die <code>run</code>-Methode. Ein <code>Thread</code>-Objekt wird erstellt und mit der <code>start</code>-Methode gestartet.</li>



<li><strong>Durch Erben von der <code>Thread</code>-Klasse:</strong> Eine Klasse erbt von <code>Thread</code> und überschreibt die <code>run</code>-Methode. Ein Objekt der abgeleiteten Klasse wird erstellt und mit der <code>start</code>-Methode gestartet.</li>
</ol>



<h1 class="wp-block-heading">Praktisches Codebeispiel</h1>



<p class="wp-block-paragraph">Hier ist ein einfaches Beispiel zur Demonstration der Erstellung und Nutzung von Threads in Java durch Implementierung des <code>Runnable</code>-Interfaces:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">class MyRunnable implements Runnable {
    public void run() {
        for (int i = 0; i &lt; 5; i++) {
            System.out.println(Thread.currentThread().getName() + " - Wert: " + i);
            try {
                Thread.sleep(500); // Pause für 500 Millisekunden
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

public class ThreadExample {
    public static void main(String[] args) {
        Thread thread1 = new Thread(new MyRunnable(), "Thread 1");
        Thread thread2 = new Thread(new MyRunnable(), "Thread 2");

        thread1.start();
        thread2.start();
    }
}
</pre>



<pre class="wp-block-code"><code>Thread 1 - Wert: 0
Thread 2 - Wert: 0
Thread 2 - Wert: 1
Thread 1 - Wert: 1
Thread 2 - Wert: 2
Thread 1 - Wert: 2
Thread 2 - Wert: 3
Thread 1 - Wert: 3
Thread 2 - Wert: 4
Thread 1 - Wert: 4</code></pre>



<p class="wp-block-paragraph">In diesem Beispiel wird die <code>MyRunnable</code>-Klasse erstellt, die das <code>Runnable</code>-Interface implementiert und die <code>run</code>-Methode überschreibt. Zwei Threads werden dann im <code>main</code>-Methodenblock erstellt und in Java gestartet.</p>



<h1 class="wp-block-heading">Anwendungsgebiete</h1>



<p class="wp-block-paragraph">Threads sind nützlich in verschiedenen Anwendungsbereichen, darunter:</p>



<ul class="wp-block-list">
<li><strong>Benutzeroberflächen:</strong> Verbesserung der Reaktionsfähigkeit von GUIs durch Ausführung langer Aufgaben in Hintergrund-Threads.</li>



<li><strong>Server-Anwendungen:</strong> Verwaltung mehrerer gleichzeitiger Verbindungen in Web- und Datenbankservern.</li>



<li><strong>Echtzeitanwendungen:</strong> Durchführung paralleler Datenverarbeitungsaufgaben in Echtzeit.</li>



<li><strong>Simulationen und Spiele:</strong> Erstellen realistischerer und flüssigerer Animationen und Simulationen.</li>
</ul>



<h1 class="wp-block-heading">Vor- und Nachteile</h1>



<p class="wp-block-paragraph"><strong>Vorteile:</strong></p>



<ul class="wp-block-list">
<li><strong>Erhöhte Leistung:</strong> Durch parallele Ausführung mehrerer Aufgaben können Programme effizienter arbeiten.</li>



<li><strong>Verbesserte Reaktionsfähigkeit:</strong> Anwendungen bleiben reaktionsfähig, während Hintergrundaufgaben ausgeführt werden.</li>



<li><strong>Bessere Ressourcenutzung:</strong> Threads können die verfügbaren CPU-Kerne besser ausnutzen.</li>
</ul>



<p class="wp-block-paragraph"><strong>Nachteile:</strong></p>



<ul class="wp-block-list">
<li><strong>Komplexität:</strong> Die Implementierung von Threading kann zu komplexeren und schwerer zu wartenden Code führen.</li>



<li><strong>Synchronisationsprobleme:</strong> Mehrere Threads, die auf gemeinsame Ressourcen zugreifen, können zu Race Conditions und Inkonsistenzen führen.</li>



<li><strong>Overhead:</strong> Der Kontextwechsel zwischen Threads kann zusätzlichen Overhead verursachen und die Leistung beeinträchtigen, wenn er nicht sorgfältig verwaltet wird.</li>
</ul>



<h1 class="wp-block-heading">Fazit von Threads in Java</h1>



<p class="wp-block-paragraph">Threads in Java sind ein mächtiges Werkzeug für die parallele Programmierung und bieten erhebliche Vorteile in Bezug auf Leistung und Reaktionsfähigkeit. Durch das Verständnis ihrer Theorie und der praktischen Implementierung können Entwickler ihre Anwendungen effizienter gestalten. Trotz der Herausforderungen, die mit der Komplexität und der Notwendigkeit einer sorgfältigen Synchronisation einhergehen, sind Threads eine wertvolle Technologie für moderne Java-Anwendungen.</p>
<p>Der Beitrag <a href="https://lernjava.de/threads-in-java/">Threads in Java: Einführung, Theorie und Codebeispiel</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lernjava.de/threads-in-java/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>HashMap in Java: Einführung, Theorie und Praxis</title>
		<link>https://lernjava.de/hashmap-in-java/</link>
					<comments>https://lernjava.de/hashmap-in-java/#respond</comments>
		
		<dc:creator><![CDATA[Andreas Bauer]]></dc:creator>
		<pubDate>Thu, 06 Jun 2024 17:38:10 +0000</pubDate>
				<category><![CDATA[Algorithmen]]></category>
		<category><![CDATA[Datenstrukturen]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Anwendungsgebiete]]></category>
		<category><![CDATA[Datenstruktur]]></category>
		<category><![CDATA[effiziente Datenspeicherung]]></category>
		<category><![CDATA[Hash-Funktion]]></category>
		<category><![CDATA[Java Codebeispiel]]></category>
		<category><![CDATA[Java Programmierung]]></category>
		<category><![CDATA[Schlüssel-Wert-Paare]]></category>
		<category><![CDATA[Vor- und Nachteile]]></category>
		<guid isPermaLink="false">https://lernjava.de/?p=656</guid>

					<description><![CDATA[<p>Einführung Eine HashMap ist eine der grundlegenden Datenstrukturen in Java, die es ermöglicht, Daten in Form von Schlüssel-Wert-Paaren zu speichern. Diese Struktur bietet eine effiziente Möglichkeit, auf Daten zuzugreifen, sie zu speichern und zu manipulieren, was sie für viele Anwendungen nützlich macht. In diesem Artikel werden wir die Theorie hinter der HashMap erklären, ein praktisches [&#8230;]</p>
<p>Der Beitrag <a href="https://lernjava.de/hashmap-in-java/">HashMap in Java: Einführung, Theorie und Praxis</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1 class="wp-block-heading">Einführung</h1>



<p class="wp-block-paragraph">Eine HashMap ist eine der grundlegenden <a href="https://lernjava.de/tag/datenstruktur/">Datenstrukturen</a> in <a href="https://lernjava.de/10-gruende-warum-man-java-in-2023-lernen-sollte/">Java</a>, die es ermöglicht, Daten in Form von Schlüssel-Wert-Paaren zu speichern. Diese Struktur bietet eine effiziente Möglichkeit, auf Daten zuzugreifen, sie zu speichern und zu manipulieren, was sie für viele Anwendungen nützlich macht. In diesem Artikel werden wir die Theorie hinter der HashMap erklären, ein praktisches Codebeispiel vorstellen und die Anwendungsgebiete sowie Vor- und Nachteile beleuchten.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="683" src="https://lernjava.de/wp-content/uploads/2024/06/pexels-antonio-batinic-2573434-4164418-1-1024x683.jpg" alt="Code" class="wp-image-658" style="width:636px;height:auto" srcset="https://lernjava.de/wp-content/uploads/2024/06/pexels-antonio-batinic-2573434-4164418-1-1024x683.jpg 1024w, https://lernjava.de/wp-content/uploads/2024/06/pexels-antonio-batinic-2573434-4164418-1-300x200.jpg 300w, https://lernjava.de/wp-content/uploads/2024/06/pexels-antonio-batinic-2573434-4164418-1-768x512.jpg 768w, https://lernjava.de/wp-content/uploads/2024/06/pexels-antonio-batinic-2573434-4164418-1-1536x1024.jpg 1536w, https://lernjava.de/wp-content/uploads/2024/06/pexels-antonio-batinic-2573434-4164418-1-2048x1365.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<h1 class="wp-block-heading">Theorie</h1>



<p class="wp-block-paragraph">Eine HashMap ist eine <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html">Implementierung der Map-Schnittstelle in Java</a>, die auf einer Hashtabelle basiert. Eine Hashtabelle verwendet eine <a href="https://de.wikipedia.org/wiki/Hashfunktion">Hashfunktion</a>, um einen Schlüssel in einen Index zu transformieren, der dann verwendet wird, um den zugehörigen Wert zu speichern. Dies ermöglicht einen schnellen Zugriff auf die Daten, da die durchschnittliche Zeitkomplexität für das Einfügen, Löschen und Abrufen von Elementen O(1) beträgt.</p>



<p class="wp-block-paragraph">Ein paar wichtige Eigenschaften der HashMap:</p>



<ul class="wp-block-list">
<li><strong>Ungeordnete Sammlung:</strong> Die Elemente in einer HashMap haben keine feste Reihenfolge.</li>



<li><strong>Schlüsselkollisionen:</strong> Wenn zwei verschiedene Schlüssel denselben Hashwert erzeugen, wird eine Kollision erzeugt. Die HashMap löst dies durch Verkettung (Linked Lists) oder andere Methoden.</li>



<li><strong>Null-Werte:</strong> Eine HashMap erlaubt einen null-Schlüssel und mehrere null-Werte.</li>
</ul>



<h1 class="wp-block-heading">Praktisches Codebeispiel</h1>



<p class="wp-block-paragraph">Hier ist ein einfaches Beispiel, wie man eine HashMap in Java verwendet:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">import java.util.HashMap;

public class HashMapBeispiel {
    public static void main(String[] args) {
        // Erstellen einer HashMap
        HashMap&lt;String, Integer> altersMap = new HashMap&lt;>();

        // Hinzufügen von Schlüssel-Wert-Paaren
        altersMap.put("Alice", 30);
        altersMap.put("Bob", 25);
        altersMap.put("Charlie", 35);

        // Abrufen eines Wertes
        int alterVonAlice = altersMap.get("Alice");
        System.out.println("Alice ist " + alterVonAlice + " Jahre alt.");

        // Überprüfen, ob ein Schlüssel vorhanden ist
        if (altersMap.containsKey("Bob")) {
            System.out.println("Bobs Alter ist: " + altersMap.get("Bob"));
        }

        // Entfernen eines Eintrags
        altersMap.remove("Charlie");

        // Iterieren über die HashMap
        for (String name : altersMap.keySet()) {
            System.out.println(name + " ist " + altersMap.get(name) + " Jahre alt.");
        }
    }
}
</pre>



<p class="wp-block-paragraph">In diesem Beispiel erstellen wir eine HashMap, fügen einige Schlüssel-Wert-Paare (Key-Value) hinzu, rufen Werte ab, überprüfen das Vorhandensein von Schlüsseln, entfernen Einträge und iterieren über die Map.</p>



<h1 class="wp-block-heading">Anwendungsgebiete</h1>



<p class="wp-block-paragraph">HashMaps sind vielseitig einsetzbar und finden in vielen Bereichen Anwendung:</p>



<ul class="wp-block-list">
<li><strong>Datenbank-Caching:</strong> Speicherung von zwischengespeicherten Datenbankabfragen für schnellen Zugriff.</li>



<li><strong>Konfigurationsspeicherung:</strong> Speicherung von Konfigurationsparametern in Anwendungen.</li>



<li><strong>Zähler:</strong> Implementierung von Zählern für verschiedene <a href="https://lernjava.de/was-ist-objektorientierte-programmierung/">Objekte</a>.</li>



<li><strong>Indexierung:</strong> Schnellzugriff auf Daten in <a href="https://lernjava.de/binary-search-in-java-eine-effiziente-suche-in-sortierten-listen/">Suchalgorithmen</a>.</li>
</ul>



<h1 class="wp-block-heading">Vor- und Nachteile</h1>



<h4 class="wp-block-heading">Vorteile:</h4>



<ul class="wp-block-list">
<li><strong>Schneller Zugriff:</strong> Durchschnittliche Zeitkomplexität von O(1) für Einfügen, Löschen und Abrufen.</li>



<li><strong>Einfache Implementierung:</strong> Leicht zu verwenden und zu implementieren.</li>



<li><strong>Flexibilität:</strong> Unterstützt null-Schlüssel und null-Werte.</li>
</ul>



<h4 class="wp-block-heading">Nachteile:</h4>



<ul class="wp-block-list">
<li><strong>Keine Ordnung:</strong> Elemente werden in keiner bestimmten Reihenfolge gespeichert.</li>



<li><strong>Speicherverbrauch:</strong> HashMaps können mehr Speicher benötigen als andere Datenstrukturen wie <a href="https://lernjava.de/array/">Arrays</a> oder LinkedLists.</li>



<li><strong>Schlüsselkollisionen:</strong> Bei vielen Kollisionen kann die Leistung beeinträchtigt werden.</li>
</ul>



<h1 class="wp-block-heading">Fazit</h1>



<p class="wp-block-paragraph">Die HashMap ist eine äußerst nützliche <a href="https://lernjava.de/tag/datenstruktur/">Datenstruktur</a> in Java, die für viele Anwendungen verwendet werden kann, bei denen schneller Zugriff auf Daten erforderlich ist. Trotz einiger Nachteile, wie der fehlenden Ordnung und des höheren Speicherverbrauchs, überwiegen die Vorteile in vielen Szenarien. Mit dem Verständnis der Theorie und praktischen Anwendungsmöglichkeiten der HashMap kann sie effizient in verschiedenen Projekten eingesetzt werden.</p>
<p>Der Beitrag <a href="https://lernjava.de/hashmap-in-java/">HashMap in Java: Einführung, Theorie und Praxis</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lernjava.de/hashmap-in-java/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Merge Sort Algorithmus in Java</title>
		<link>https://lernjava.de/merge-sort-algorithmus-in-java/</link>
					<comments>https://lernjava.de/merge-sort-algorithmus-in-java/#respond</comments>
		
		<dc:creator><![CDATA[Andreas Bauer]]></dc:creator>
		<pubDate>Sat, 10 Feb 2024 13:10:10 +0000</pubDate>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Effizienz]]></category>
		<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Implementierung]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[Laufzeitkomplexität]]></category>
		<category><![CDATA[rekursiv]]></category>
		<category><![CDATA[Sortieralgorithmus]]></category>
		<category><![CDATA[stabile Sortierung]]></category>
		<category><![CDATA[Teilarrays]]></category>
		<category><![CDATA[Vergleichssortierung]]></category>
		<guid isPermaLink="false">https://lernjava.de/?p=642</guid>

					<description><![CDATA[<p>Was ist der Merge Sort Algorithmus in Java? Der Java Merge Sort Algorithmus ist eine leistungsfähige Methode zur Sortierung von Daten in aufsteigender Reihenfolge. Als einer der effizientesten Sortieralgorithmen bietet er eine stabile und zuverlässige Lösung für das Sortieren großer Datensätze. In diesem Artikel werden wir den Merge Sort Algorithmus in Java genauer betrachten, seine [&#8230;]</p>
<p>Der Beitrag <a href="https://lernjava.de/merge-sort-algorithmus-in-java/">Merge Sort Algorithmus in Java</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Was ist der Merge Sort Algorithmus in Java?</h2>



<p class="wp-block-paragraph">Der Java Merge Sort <a href="https://lernjava.de/was-ist-ein-algorithmus/">Algorithmus</a> ist eine leistungsfähige Methode zur Sortierung von Daten in aufsteigender Reihenfolge. Als einer der effizientesten <a href="https://lernjava.de/bubble-sort-algorithmus-in-java-bubblesort/">Sortieralgorithmen</a> bietet er eine stabile und zuverlässige Lösung für das Sortieren großer Datensätze. In diesem Artikel werden wir den Merge Sort Algorithmus in Java genauer betrachten, seine Funktionsweise erklären und eine Implementierung des Algorithmus in <a href="https://lernjava.de/was-ist-java/">Java</a> vorstellen.</p>


<div class="wp-block-image">
<figure class="aligncenter size-large is-resized"><img loading="lazy" decoding="async" width="1024" height="685" src="https://lernjava.de/wp-content/uploads/2024/02/pexels-tim-gouw-52608-1024x685.jpg" alt="Ein Mann programmiert." class="wp-image-643" style="width:666px;height:auto" srcset="https://lernjava.de/wp-content/uploads/2024/02/pexels-tim-gouw-52608-1024x685.jpg 1024w, https://lernjava.de/wp-content/uploads/2024/02/pexels-tim-gouw-52608-300x201.jpg 300w, https://lernjava.de/wp-content/uploads/2024/02/pexels-tim-gouw-52608-768x513.jpg 768w, https://lernjava.de/wp-content/uploads/2024/02/pexels-tim-gouw-52608-1536x1027.jpg 1536w, https://lernjava.de/wp-content/uploads/2024/02/pexels-tim-gouw-52608.jpg 2048w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</div>


<p class="wp-block-paragraph">Der Merge-Sort-Algorithmus ist ein effizienter Sortieralgorithmus, der eine stabile Sortierung produziert. Das bedeutet, dass, wenn zwei Elemente den gleichen Wert haben, ihre relative Position in der sortierten Sequenz gleich bleibt wie in der Eingabe. Mit anderen Worten, die relative Reihenfolge von Elementen mit gleichen Werten bleibt in der sortierten Sequenz erhalten. Merge Sort ist ein Vergleichssortierverfahren, was bedeutet, dass er jede Eingabe sortieren kann, für die eine kleiner-als-Beziehung definiert ist.</p>



<h2 class="wp-block-heading">Wie funktioniert Merge Sort?</h2>



<p class="wp-block-paragraph">Merge Sort ist ein <a href="https://de.wikipedia.org/wiki/Teile-und-herrsche-Verfahren">Divide-and-Conquer-Algorithmus</a>. Wie alle Divide-and-Conquer-Algorithmen teilt Merge Sort ein großes Array in zwei kleinere Teilarrays nach dem Prinzip &#8222;Teile und Herrsche&#8220; auf und sortiert dann <a href="https://lernjava.de/rekursion-in-java/">rekursiv</a> die <a href="https://lernjava.de/array/">Teilarrays</a>. Im Wesentlichen sind zwei Schritte in den gesamten Prozess involviert:</p>



<ol class="wp-block-list">
<li>Teilen des unsortierten Arrays in n Teilarrays, von denen jedes eine Größe von 1 hat (ein Array der Größe 1 gilt als sortiert).</li>



<li>Wiederholtes Zusammenführen von Teilarrays, um neue sortierte Teilarrays zu erzeugen, bis nur noch 1 Teilarray übrig ist, was unser sortiertes Array ist.</li>
</ol>



<h2 class="wp-block-heading">Implementierung des Merge Sort Algorithmus</h2>



<p class="wp-block-paragraph">Hier ist eine Java-Implementierung des Merge-Sort-Algorithmus:</p>



<pre class="EnlighterJSRAW" data-enlighter-language="java" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">public class MergeSort {

    public static void sort(int[] arr) {
        int[] aux = new int[arr.length]; // Hilfsarray zum Zusammenführen
        mergesort(arr, aux, 0, arr.length - 1); // Aufruf der Hilfsmethode zum Sortieren
    }

    // Rekursive Hilfsmethode zum Sortieren des Arrays
    private static void mergesort(int[] arr, int[] aux, int low, int high) {
        if (low &lt; high) {
            int mid = low + (high - low) / 2; // Berechnung des Mittelpunkts
            mergesort(arr, aux, low, mid); // Sortiere die linke Hälfte
            mergesort(arr, aux, mid + 1, high); // Sortiere die rechte Hälfte
            merge(arr, aux, low, mid, high); // Führe die sortierten Hälften zusammen
        }
    }

    // Methode zum Zusammenführen zweier sortierter Teilarrays
    private static void merge(int[] arr, int[] aux, int low, int mid, int high) {
        // Kopiere das Array in das Hilfsarray
        for (int k = low; k &lt;= high; k++) {
            aux[k] = arr[k];
        }

        // Zusammenführen der beiden Teilarrays
        int i = low, j = mid + 1;
        for (int k = low; k &lt;= high; k++) {
            if (i > mid) {
                arr[k] = aux[j++];
            } else if (j > high) {
                arr[k] = aux[i++];
            } else if (aux[j] &lt; aux[i]) {
                arr[k] = aux[j++];
            } else {
                arr[k] = aux[i++];
            }
        }
    }

    public static void main(String[] args) {
        int[] arr = {12, 11, 13, 5, 6, 7};
        System.out.println("Unsorted array:");
        printArray(arr);

        sort(arr);

        System.out.println("\nSorted array:");
        printArray(arr);
    }

    // Methode zum Ausgeben eines Arrays
    private static void printArray(int[] arr) {
        for (int num : arr) {
            System.out.print(num + " ");
        }
    }
}</pre>



<p class="wp-block-paragraph">Die Java-Implementierung des Merge-Sort-Algorithmus beginnt mit der Methode <code>sort</code>, die das Hauptsortierverfahren aufruft und die erforderlichen Hilfsarrays initialisiert. Die <code>mergesort</code>-Methode teilt das Array rekursiv in kleinere Teilarrays auf und ruft sich selbst auf, um diese Teilarrays zu sortieren. Schließlich fusioniert die <code>merge</code>-Methode die sortierten Teilarrays wieder zu einem einzigen sortierten Array. Der Hauptteil des Codes demonstriert die Verwendung dieser Methoden, indem er ein Array von Ganzzahlen erstellt, es sortiert und das sortierte Array ausgibt.</p>



<h2 class="wp-block-heading">Fazit zum Merge Sort Algorithmus</h2>



<p class="wp-block-paragraph">Der Merge-Sort-Algorithmus ist ein leistungsstarkes Werkzeug zur Sortierung von Daten und bietet eine stabile Sortierung mit einer Zeitkomplexität von O(n.log(n)). Durch die Verwendung des Divide-and-Conquer-Ansatzes teilt der Merge-Sort-Algorithmus das Problem in kleinere Teilprobleme auf, die leichter zu lösen sind. Die Java-Implementierung zeigt, wie einfach es ist, diesen Algorithmus in der Praxis umzusetzen und ihn zur Sortierung von Arrays zu verwenden.</p>
<p>Der Beitrag <a href="https://lernjava.de/merge-sort-algorithmus-in-java/">Merge Sort Algorithmus in Java</a> erschien zuerst auf <a href="https://lernjava.de">LernJAVA.de</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://lernjava.de/merge-sort-algorithmus-in-java/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>

<!--
Performance optimized by W3 Total Cache. Learn more: https://www.boldgrid.com/w3-total-cache/?utm_source=w3tc&utm_medium=footer_comment&utm_campaign=free_plugin

Page Caching using Disk: Enhanced 
Minified using Disk
Database Caching 4/63 queries in 0.034 seconds using Disk

Served from: lernjava.de @ 2026-09-23 04:41:32 by W3 Total Cache
-->