<?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>Source Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/source/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/source/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Fri, 21 Feb 2025 07:24:30 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>

<image>
	<url>https://i0.wp.com/ceosbay.com/wp-content/uploads/2022/11/image.jpg?fit=32%2C32&#038;ssl=1</url>
	<title>Source Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/source/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<item>
		<title>Kernel &#8211; Herzstück des Betriebssystems</title>
		<link>https://ceosbay.com/2023/10/07/kernel-herzstueck-des-betriebssystems/</link>
					<comments>https://ceosbay.com/2023/10/07/kernel-herzstueck-des-betriebssystems/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sat, 07 Oct 2023 10:28:56 +0000</pubDate>
				<category><![CDATA[Betriebssystem]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Computerhardware]]></category>
		<category><![CDATA[Echtzeitbetriebssysteme]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Hardware-Verwaltung]]></category>
		<category><![CDATA[Hybridkernel]]></category>
		<category><![CDATA[I/O-Management]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Kernel-Entwicklung]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Mikrokernel]]></category>
		<category><![CDATA[Modularität]]></category>
		<category><![CDATA[Monolithischer Kernel]]></category>
		<category><![CDATA[Multitasking]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Prozesssynchronisation]]></category>
		<category><![CDATA[Prozessverwaltung]]></category>
		<category><![CDATA[Ressourcenverwaltung]]></category>
		<category><![CDATA[Schnittstelle]]></category>
		<category><![CDATA[Schnittstellenkommunikation]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Skalierbarkeit]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Softwareanwendungen]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Speicherverwaltung]]></category>
		<category><![CDATA[Systemarchitektur]]></category>
		<category><![CDATA[Systemaufrufe]]></category>
		<category><![CDATA[Systemdienste]]></category>
		<category><![CDATA[Systemintegrität]]></category>
		<category><![CDATA[Systemkern]]></category>
		<category><![CDATA[Thread-Management]]></category>
		<category><![CDATA[Treiber]]></category>
		<category><![CDATA[Virtualisierung]]></category>
		<category><![CDATA[Windows]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=2666</guid>

					<description><![CDATA[<p>Im digitalen Zeitalter, in dem Computer und Technologie allgegenwärtig sind, spielt der Begriff &#8222;Kernel&#8220; eine zentrale Rolle. Doch was genau ist der Kernel, welche Funktionen übernimmt er und wie setzt man ihn auf? In diesem &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/10/07/kernel-herzstueck-des-betriebssystems/">Kernel &#8211; Herzstück des Betriebssystems</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Im digitalen Zeitalter, in dem Computer und Technologie allgegenwärtig sind, spielt der Begriff &#8222;Kernel&#8220; eine zentrale Rolle. Doch was genau ist der Kernel, welche Funktionen übernimmt er und wie setzt man ihn auf? In diesem Blog-Beitrag beleuchte ich den zentralen Kern des Betriebssystems.</p>



<h3 class="wp-block-heading">Definition Kernel</h3>



<p>Der Kernel bildet das zentrale Bindeglied zwischen der Computerhardware und den Softwareanwendungen. Er verwaltet die Hardware-Ressourcen, darunter Prozessor, Arbeitsspeicher und Speichermedien und ermöglicht es, dass verschiedene Softwareanwendungen auf diese Ressourcen zugreifen können.</p>



<h3 class="wp-block-heading">Entstehungsgeschichte Kernel</h3>



<p>Die Geschichte des Kernels geht Hand in Hand mit der Entwicklung der ersten Betriebssysteme. In den frühen Tagen der Computertechnologie bestand die Notwendigkeit, eine Schnittstelle zu schaffen, die den effizienten Zugriff von Software auf Hardware ermöglicht. So entstand der erste rudimentäre Kernel. Mit der Zeit und mit wachsender Komplexität von Hardware und Software hat es sich stetig weiterentwickelt, um den wachsenden Anforderungen gerecht zu werden.</p>



<h2 class="wp-block-heading">Arten von Kernels</h2>



<p>Es existieren unterschiedliche Typen von Kernels:</p>



<ol class="wp-block-list">
<li><strong>Monolithische Kernels</strong>: Bei dieser Art werden alle grundlegenden Systemdienste wie Dateisystem, Netzwerk und Prozesskommunikation in einem einzigen, großen Kern implementiert. Ein Beispiel hierfür ist <a href="https://ceosbay.com/2022/11/22/erklaerung-linux/">Linux</a>.</li>



<li><strong>Mikrokernel</strong>: Hierbei handelt es sich um einen minimalistischen Kernel. Die meisten Systemdienste laufen als eigenständige Prozesse. Beispiele hierfür sind Minix und QNX.</li>



<li><strong>Hybridkernel</strong>: Dieser Kernel-Typ kombiniert Elemente von monolithischen Kernels und Mikrokernels. Ein bekanntes Beispiel ist  das gute alte Windows NT, XP, 7, 8, 10 und auch die <a href="https://ceosbay.com/2023/08/29/server-evolution-typen-und-best-practices-fuer-den-aufbau/">Server</a>-Varianten.</li>
</ol>



<h2 class="wp-block-heading">Aufsetzen des Kernels</h2>



<p>Das Aufsetzen eines Kernels kann sich je nach System und Anforderungen unterscheiden. Im Allgemeinen folgt man jedoch diesen Schritten:</p>



<ol class="wp-block-list">
<li><strong>Quellcode herunterladen</strong>: Zunächst lädt man den Quellcode des gewünschten Kernels herunter.</li>



<li><strong>Konfigurieren</strong>: Mittels Konfigurationswerkzeugen passt man den Kernel an die eigenen Bedürfnisse an.</li>



<li><strong>Kompilieren</strong>: Der angepasste Quellcode wird kompiliert, um eine ausführbare Version des Kernels zu erstellen.</li>



<li><strong>Installation</strong>: Kompiliert kann man es nun auf dem Zielsystem installieren.</li>
</ol>



<h2 class="wp-block-heading">Beispiele und Anwendung</h2>



<p>Das bekannteste Beispiel für einen Kernel ist wohl der <a href="https://ceosbay.com/2022/11/22/erklaerung-linux/">Linux</a>-Kernel. Millionen von <a href="https://ceosbay.com/2023/08/29/server-evolution-typen-und-best-practices-fuer-den-aufbau/">Servern</a> und Desktop-Computern weltweit nutzen <a href="https://ceosbay.com/2022/11/22/erklaerung-linux/">Linux</a>. Der Quellcode des <a href="https://ceosbay.com/2022/11/22/erklaerung-linux/">Linux</a>-Kernels ist frei verfügbar bzw. <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open Source</a>, weshalb viele Entwickler und Unternehmen es an ihre spezifischen Anforderungen anpassen und weiterentwickeln.</p>



<p>Zusammenfassend lässt sich sagen, dass es das Herzstück jedes Betriebssystems bildet. Er steuert und verwaltet den Zugriff auf die Hardware und ermöglicht so den Betrieb von Softwareanwendungen. Wer tiefer in die Welt der Kernels einsteigen möchte, dem stehen unzählige Ressourcen und Community-Plattformen zur Verfügung.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/10/07/kernel-herzstueck-des-betriebssystems/">Kernel &#8211; Herzstück des Betriebssystems</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/10/07/kernel-herzstueck-des-betriebssystems/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2666</post-id>	</item>
		<item>
		<title>Nicht funktionale Tests in der Softwareentwicklung &#8211; Damit es funktioniert</title>
		<link>https://ceosbay.com/2023/07/23/nicht-funktionale-tests-in-der-softwareentwicklung-damit-es-funktioniert/</link>
					<comments>https://ceosbay.com/2023/07/23/nicht-funktionale-tests-in-der-softwareentwicklung-damit-es-funktioniert/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sun, 23 Jul 2023 19:27:03 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Testautomatisierung]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Belastungstests]]></category>
		<category><![CDATA[Benutzererfahrung]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Kompatibilitätstestverfahren]]></category>
		<category><![CDATA[Lasttestwerkzeuge]]></category>
		<category><![CDATA[Leistungstests]]></category>
		<category><![CDATA[Nicht funktionale Tests]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Performance-Testing-Tools]]></category>
		<category><![CDATA[Sicherheit im Software-Test]]></category>
		<category><![CDATA[Sicherheitstests]]></category>
		<category><![CDATA[Skalierbarkeit]]></category>
		<category><![CDATA[Software Zuverlässigkeit]]></category>
		<category><![CDATA[Softwareentwicklungsprozess]]></category>
		<category><![CDATA[Softwareleistung]]></category>
		<category><![CDATA[Softwarequalität]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Teststrategien]]></category>
		<category><![CDATA[Usability-Testing-Methoden]]></category>
		<category><![CDATA[Usability-Tests]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1930</guid>

					<description><![CDATA[<p>Nicht funktionale Tests sind ein essenzieller Bestandteil des Softwareentwicklungsprozesses, den man jedoch oft übersieht. Bei der Softwareentwicklung ist es unabdingbar, sowohl funktionale als auch nicht funktionale Aspekte zu testen, um eine hochwertige, zuverlässige und effiziente &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/07/23/nicht-funktionale-tests-in-der-softwareentwicklung-damit-es-funktioniert/">Nicht funktionale Tests in der Softwareentwicklung &#8211; Damit es funktioniert</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Nicht funktionale Tests sind ein essenzieller Bestandteil des Softwareentwicklungsprozesses, den man jedoch oft übersieht. Bei der Softwareentwicklung ist es unabdingbar, sowohl funktionale als auch nicht funktionale Aspekte zu testen, um eine hochwertige, zuverlässige und effiziente Softwarelösung zu gewährleisten.</p>



<h2 class="wp-block-heading"><strong>Definition von nicht funktionalen Tests</strong></h2>



<p>Nicht funktionale Tests beziehen sich auf Aspekte der Software, die nicht mit spezifischen Benutzeranforderungen oder -funktionen in Verbindung stehen. Vielmehr beziehen sie sich auf die Performance der Software, ihre Zuverlässigkeit, Skalierbarkeit und andere qualitative Merkmale, die die Benutzererfahrung insgesamt beeinflussen.</p>



<h2 class="wp-block-heading"><strong>Arten von nicht funktionalen Tests</strong></h2>



<p>Es gibt verschiedene Arten von nicht funktionalen Tests. Einige der gebräuchlichsten sind:</p>



<ol class="wp-block-list">
<li><em><strong>Leistungstests</strong></em>: Diese messen, wie eine Anwendung unter Last reagiert, einschließlich der Geschwindigkeit, Reaktionszeit und Stabilität unter hoher Belastung.</li>



<li><em><strong>Belastungstests</strong></em>: Diese prüfen das System auf seine Fähigkeit, unter intensiver Last oder hoher Benutzeraktivität zu funktionieren.</li>



<li><em><strong>Usability-Tests</strong></em>: Sie bewerten die Benutzerfreundlichkeit der Software. Dabei werden Faktoren wie Benutzerführung, Konsistenz und Lernbarkeit untersucht.</li>



<li><em><strong>Sicherheitstests</strong></em>: Diese Tests suchen nach Schwachstellen in einer Anwendung, die zu einem Sicherheitsleck führen könnten.</li>



<li><em><strong>Kompatibilitätstests</strong></em>: Sie stellen sicher, dass die Software in verschiedenen Umgebungen, einschließlich unterschiedlicher Hardware, Betriebssysteme, Browser usw., korrekt funktioniert.</li>
</ol>



<h2 class="wp-block-heading"><strong>Wichtigkeit nicht funktionale Tests</strong></h2>



<p>Nicht funktionale Tests tragen wesentlich dazu bei, das Vertrauen in die Softwarequalität zu stärken und potenzielle Leistungsprobleme oder Sicherheitslücken aufzudecken. Sie helfen dabei, die Akzeptanz der Benutzer zu erhöhen und die Risiken, die mit der Einführung neuer Software verbunden sind, zu minimieren.</p>



<h2 class="wp-block-heading">Welche Softwarelösungen gibt es, um nicht funktionale Tests auszuführen?</h2>



<p>Es gibt eine Vielzahl von Softwarelösungen, die man speziell entwickelt hat, um nicht funktionale Tests durchzuführen. Hier sind einige Beispiele:</p>



<ol class="wp-block-list">
<li><strong>JMeter</strong>: Dies ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Tool, das man hauptsächlich für Leistungs- und Lasttests verwendet. Man kann es auch für Funktions- und Integrationstests verwenden.</li>



<li><strong>LoadRunner</strong>: Dieses kommerzielle Tool von Micro Focus wird häufig für Leistungs- und Lasttests verwendet. Es unterstützt eine Vielzahl von Anwendungs-Umgebungen und Protokollen.</li>



<li><strong>Gatling</strong>: Gatling ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Last- und Leistungstest-Framework. Es hat sich als sehr nützlich erwiesen für seine Fähigkeit, komplexe Szenarien zu modellieren.</li>



<li><strong>Selenium</strong>: Obwohl es hauptsächlich als Funktionstestwerkzeug bekannt ist, kann man <a href="https://ceosbay.com/2022/11/25/selenium/">Selenium</a> auch für einige Arten von nicht funktionalen Tests wie Kompatibilitätstests verwenden.</li>



<li><strong>Apache Bench (ab)</strong>: Dieses Tool verwendet man, um die Leistung von <a href="https://ceosbay.com/2023/07/04/https-und-https-eine-reise-zur-web-sicherheit/">https</a>-Servern zu testen, indem es viele Anfragen an einen Server sendet und die Zeit für deren Bearbeitung misst.</li>



<li><strong>Wireshark</strong>: <a href="https://ceosbay.com/2022/11/24/erklaerung-wireshark/">Wireshark</a> ist ein Netzwerkanalysetool, das man zur Fehlersuche und Analyse von Netzwerkprotokollen verwenden kann. Man kann es auch für Sicherheitstests verwenden.</li>



<li><strong>OWASP ZAP (Zed Attack Proxy)</strong>: Dies ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Webanwendungssicherheitsscanner, von der OWASP-Community. Man verwendet es, um Sicherheitslücken in Webanwendungen zu finden.</li>
</ol>



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



<p>Nicht funktionale Tests sind ein unverzichtbarer Bestandteil des Software-Qualitätssicherungsprozesses. Durch deren effektive Umsetzung können Unternehmen die Leistung, Zuverlässigkeit und Sicherheit ihrer Software verbessern und so das Vertrauen der Endnutzer gewinnen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/07/23/nicht-funktionale-tests-in-der-softwareentwicklung-damit-es-funktioniert/">Nicht funktionale Tests in der Softwareentwicklung &#8211; Damit es funktioniert</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/07/23/nicht-funktionale-tests-in-der-softwareentwicklung-damit-es-funktioniert/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1930</post-id>	</item>
		<item>
		<title>Vue.js &#8211; Das progressive JavaScript Framework</title>
		<link>https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/</link>
					<comments>https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 18 Apr 2023 10:30:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Aktiv]]></category>
		<category><![CDATA[Angular]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Ecosystem]]></category>
		<category><![CDATA[Einarbeitung]]></category>
		<category><![CDATA[Einfach]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[File]]></category>
		<category><![CDATA[Flexibilität]]></category>
		<category><![CDATA[Frame]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Komponenten]]></category>
		<category><![CDATA[Ökosystem]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Produktivität]]></category>
		<category><![CDATA[Script]]></category>
		<category><![CDATA[Single]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Vast]]></category>
		<category><![CDATA[Vue]]></category>
		<category><![CDATA[Vue.js]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1743</guid>

					<description><![CDATA[<p>Vue.js ist ein leichtgewichtiges, progressives und anpassungsfähiges Open Source JavaScript&#8211;Framework für den Aufbau benutzerfreundlicher und leistungsstarker Single-Page-Anwendungen (SPA) sowie kleiner und großer Webanwendungen. Seit seiner Einführung im Jahr 2014 durch den Entwickler Evan You hat &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/">Vue.js &#8211; Das progressive JavaScript Framework</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Vue.js ist ein leichtgewichtiges, progressives und anpassungsfähiges <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a> <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>&#8211;<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> für den Aufbau benutzerfreundlicher und leistungsstarker Single-Page-Anwendungen (SPA) sowie kleiner und großer Webanwendungen. Seit seiner Einführung im Jahr 2014 durch den Entwickler Evan You hat es sich rasch zu einem der beliebtesten <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Frameworks</a> für die Webentwicklung entwickelt. In diesem Beitrag geht es um die Hauptmerkmale von Vue.js und warum es für Entwickler in der Webentwicklung von Vorteil ist.</p>



<h3 class="wp-block-heading">Hauptmerkmale von Vue.js</h3>



<ul class="wp-block-list">
<li>Leichtgewichtig und Modularität: Vue.js ist für seine geringe Größe bekannt, wobei die kompilierte und gzip-komprimierte Version gerade einmal 20 KB wiegt. Das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> ist in verschiedene Module unterteilt, sodass Entwickler nur diejenigen auswählen müssen, die sie für ihr Projekt benötigen, um den Overhead gering zu halten.</li>



<li>Progressive Anpassung: Vue.js ist als progressives <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> konzipiert, was bedeutet, dass man es schrittweise in bestehende Projekte implementieren kann. Es ermöglicht Entwicklern, bestehenden Anwendungen schrittweise Verbesserungen hinzuzufügen, ohne die gesamte Anwendung neu schreiben zu müssen.</li>



<li>Reaktive Datenbindung: Eine der Hauptstärken von Vue.js ist die reaktive Datenbindung. Dies bedeutet, dass die Übertragung aller Änderungen auf die Benutzeroberfläche automatisch stattfindet, ohne dass der Entwickler explizit eingreifen muss.</li>



<li>Single-File-Komponenten: Vue.js bietet eine einfache Möglichkeit, wiederverwendbare Komponenten zu erstellen, indem <a href="https://ceosbay.com/2022/12/29/erklaerung-html/">HTML</a>, <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a> und <a href="https://ceosbay.com/2023/02/27/erklaerung-css/">CSS</a> via Kapselung in einer einzigen .vue-Datei zusammengefasst sind. Diese Tatsache vereinfacht die Strukturierung und Wartung von Projekten maßgeblich.</li>



<li>Declarative Rendering: Mit Vue.js können Entwickler deklarativ angeben, wie die Anwendung auf der Grundlage der zugrunde liegenden Daten rendert. Diese Herangehensweise verbessert die Lesbarkeit und Wartbarkeit des Codes, indem sie sich auf die Logik und das Verhalten der Anwendung konzentriert, anstatt auf die Implementierungsdetails.</li>



<li>Hervorragende Dokumentation und Community: Die offizielle Dokumentation von Vue.js ist umfassend und gut organisiert, was den Einstieg in das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> wesentlich erleichtert. Die Vue.js-Community ist aktiv und wächst stetig, was zu einer Vielzahl von Ressourcen, Plugins und Erweiterungen führt, die Entwicklern zur Verfügung stehen.</li>
</ul>



<h3 class="wp-block-heading">Warum Vue.js für Webentwickler von Vorteil ist</h3>



<ul class="wp-block-list">
<li>Einfache Einarbeitung: Im Vergleich zu anderen <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Frameworks</a> wie <a href="https://ceosbay.com/2023/03/21/erklaerung-angular/">Angular</a> oder <a href="https://ceosbay.com/2022/12/21/erklaerung-react/" target="_blank" rel="noreferrer noopener">React</a>, ist die Lernkurve relativ flach. Dies ermöglicht neuen Entwicklern einen schnellen Einstieg, während erfahrene Entwickler leicht von anderen <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Frameworks</a> umsteigen können.</li>



<li>Flexibilität und Skalierbarkeit: Aufgrund der modularen Architektur und progressiven Anpassung eignet sich Vue.js sowohl für kleine als auch für große Projekte. Entwickler können es sowohl für einfache Widgets als auch für komplexe Anwendungen verwenden. Man kann es problemlos in bestehende Projekte integrieren oder als Grundlage für neue Projekte verwenden.</li>



<li>Verbesserte Produktivität: Durch die Verwendung von Single-File-Komponenten und reaktiven Datenbindungen ermöglicht Vue.js Entwicklern, schneller und effizienter zu arbeiten. Weniger Zeit wird für die Aktualisierung des UI-Codes und die Synchronisierung von Daten aufgewendet, was zu einer höheren Produktivität führt.</li>



<li>Vast Ecosystem: Das Vue.js-Ökosystem umfasst eine breite Palette von Tools, Bibliotheken und Erweiterungen, die die Entwicklung von Anwendungen beschleunigen und vereinfachen. Beispiele hierfür sind das Vue CLI (Command Line Interface), Vuex für State Management und das Vue Router-Modul für die Navigation.</li>



<li>Aktive Entwicklung und Wartung: Die Weiterentwicklung und Wartung erfolgt stetig. Folglich kann man immer mit zeitgemäßen neuen Funktionen und Verbesserungen rechnen. Dies stellt sicher, dass das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> auf dem neuesten Stand der Webentwicklungstechniken bleibt und gleichzeitig sicher und stabil ist.</li>
</ul>



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



<p>Vue.js hat sich als vielseitiges und leistungsstarkes <a href="https://ceosbay.com/2022/11/12/javascript/">JavaScript</a>&#8211;<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> etabliert, das Entwicklern ermöglicht, auf einfache Weise schnelle und skalierbare Webanwendungen zu erstellen. Mit seinen progressiven Anpassungsmöglichkeiten, reaktiven Datenbindungen und einem wachsenden Ökosystem ist es ein ausgezeichnetes Werkzeug für Webentwickler, unabhängig von ihrem Erfahrungsstand. Die einfache Einarbeitung und Flexibilität von Vue.js machen es zu einer attraktiven Wahl für Entwickler, die nach einer modernen Lösung für die Webentwicklung suchen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/">Vue.js &#8211; Das progressive JavaScript Framework</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/04/18/vue-js-das-progressive-javascript-framework/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1743</post-id>	</item>
		<item>
		<title>Jasmine &#8211; JavaScript Testautomatisierung</title>
		<link>https://ceosbay.com/2023/04/16/erklaerung-jasmine/</link>
					<comments>https://ceosbay.com/2023/04/16/erklaerung-jasmine/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sun, 16 Apr 2023 06:23:35 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Automatisierung]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Anwendungen]]></category>
		<category><![CDATA[Behavior]]></category>
		<category><![CDATA[Best]]></category>
		<category><![CDATA[Browser]]></category>
		<category><![CDATA[CI]]></category>
		<category><![CDATA[CI/CD]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Ent-to-End]]></category>
		<category><![CDATA[Flexibilität]]></category>
		<category><![CDATA[Funktionsweise]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Integrationstests]]></category>
		<category><![CDATA[Jasmine]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Karma]]></category>
		<category><![CDATA[Konstrukt]]></category>
		<category><![CDATA[Mocking]]></category>
		<category><![CDATA[Mocks]]></category>
		<category><![CDATA[Objekt]]></category>
		<category><![CDATA[Objekte]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Practice]]></category>
		<category><![CDATA[Prozess]]></category>
		<category><![CDATA[Prozesse]]></category>
		<category><![CDATA[Qualität]]></category>
		<category><![CDATA[Qualitätsmanagement]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Spec]]></category>
		<category><![CDATA[Specs]]></category>
		<category><![CDATA[Spy]]></category>
		<category><![CDATA[spyOn]]></category>
		<category><![CDATA[Struktur]]></category>
		<category><![CDATA[Strukturieren]]></category>
		<category><![CDATA[Suite]]></category>
		<category><![CDATA[Syntax]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Testabdeckung]]></category>
		<category><![CDATA[Testbeschreibung]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Unit]]></category>
		<category><![CDATA[Vorteile]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1483</guid>

					<description><![CDATA[<p>Die moderne Softwareentwicklung hat eine Vielzahl von Werkzeugen und Technologien, um Entwicklern bei der Gestaltung und Implementierung robuster Anwendungen zu helfen. Eines dieser Werkzeuge, dass ich in den letzten Tagen auf GitHub entdeckt habe, ist &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/16/erklaerung-jasmine/">Jasmine &#8211; JavaScript Testautomatisierung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Die moderne Softwareentwicklung hat eine Vielzahl von Werkzeugen und Technologien, um Entwicklern bei der Gestaltung und Implementierung robuster Anwendungen zu helfen. Eines dieser Werkzeuge, dass ich in den letzten Tagen auf <a href="https://ceosbay.com/2022/11/19/erklaerung-github/" target="_blank" rel="noreferrer noopener">GitHub</a> entdeckt habe, ist <a href="https://jasmine.github.io" target="_blank" rel="noreferrer noopener">Jasmine</a>. Es ist ein bekanntes <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> zur Testautomatisierung für <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>. In diesem Blogbeitrag schaue ich mir an, was Jasmine ist, wie es funktioniert und welche Vorteile es bietet, wenn es um das Testen von <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Anwendungen geht.</p>



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



<p>Jasmine ist ein beliebtes Open-Source-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> für <a href="https://ceosbay.com/2023/03/12/erklaerung-behavior-driven-development/" target="_blank" rel="noreferrer noopener">Behavior-Driven Devel</a><a href="https://ceosbay.com/2023/03/12/erklaerung-behavior-driven-development/">opment</a> (<a href="https://ceosbay.com/2023/03/12/erklaerung-behavior-driven-development/" target="_blank" rel="noreferrer noopener">BDD</a>) Tests in <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>. Man verwendet es hauptsächlich, um das Verhalten von <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Code durch das Schreiben von Test-Spezifikationen zu überprüfen. Jasmine bietet eine saubere, leicht verständliche Syntax und ermöglicht Entwicklern, ihre Tests unabhängig von ihrer Implementierung auszuführen. Dadurch können sie schnell und effizient sicherstellen, dass ihr Code wie erwartet funktioniert.</p>



<h3 class="wp-block-heading">Vorteile:</h3>



<ul class="wp-block-list">
<li><strong>Einfachheit</strong>: Man hat Jasmine entwickelt, um leicht verständlich und zugänglich für Entwickler zu sein. Die Test-Syntax ist klar und einfach, sodass selbst Entwickler, die neu in der Testautomatisierung sind, schnell damit arbeiten können.</li>



<li><strong>Unabhängigkeit</strong>: Jasmine ist unabhängig von anderen <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>&#8211;<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a>, Browsern und DOM-Manipulationsbibliotheken, was bedeutet, dass man es praktisch jedem <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Projekt verwenden kann, unabhängig von der verwendeten Technologie.</li>



<li><strong>Flexibilität</strong>: Entwickler können Jasmine für Unit-Tests, Integrationstests und sogar für End-to-End-Tests verwenden. Dies gibt ihnen die Möglichkeit, das gesamte Verhalten ihrer Anwendung mit einem einzigen Tool abzudecken.</li>
</ul>



<h3 class="wp-block-heading">Wie funktioniert Jasmine?</h3>



<p>Jasmine basiert auf einer Hierarchie von Suites und Specs. Suites sind Gruppen von verwandten Tests, während Specs einzelne Testfälle sind. Diese Hierarchie ermöglicht es Entwicklern, ihre Tests klar zu strukturieren und den Code leicht zu organisieren.</p>



<p>Es verwendet das &#8222;describe&#8220;-Konstrukt, um Test-Suites zu definieren. Jede Suite kann mehrere Test-Spezifikationen (Specs) enthalten, die mit dem &#8222;it&#8220;-Konstrukt definiert werden. Diese Specs enthalten Erwartungen (Expectations) in Bezug auf das zu testende Verhalten des Codes.</p>



<h4 class="wp-block-heading">Ein einfaches Beispiel für eine Jasmine Test-Suite sieht wie folgt aus:</h4>



<pre class="wp-block-code"><code>describe("A suite is just a function", function() {
  let a;

  it("and so is a spec", function() {
    a = true;

    expect(a).toBe(true);
  });
});</code></pre>



<p>oder</p>



<pre class="wp-block-code"><code>describe('Array', () =&gt; {
  describe('#indexOf()', () =&gt; {
    it('sollte -1 zurückgeben, wenn der Wert nicht im Array vorhanden ist', () =&gt; {
      expect(&#91;1, 2, 3].indexOf(4)).toBe(-1);
    });
  });
});</code></pre>



<h3 class="wp-block-heading">Integration in die Softwareentwicklung</h3>



<p>Man kann Jasmine problemlos in moderne <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Projekte und Build-Tools integrieren. Mit Integrationen für Tools wie Grunt, Gulp und Webpack lässt es sich nahtlos in bestehende Entwicklungsprozesse einfügen. Darüber hinaus gibt es auch Jasmine-Plugins für gängige Entwicklungsumgebungen wie Visual Studio Code oder <a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/" target="_blank" rel="noreferrer noopener">IntelliJ</a>, die das Schreiben und Ausführen von Tests noch einfacher und bequemer gestalten.</p>



<p>Man kann es auch mit anderen Testing-Tools und Libraries kombinieren, um noch umfassendere Testlösungen zu schaffen. Beispielsweise kann man es mit Karma (einem <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Test-Runner) verwenden, um Tests in verschiedenen Browsern auszuführen, oder mit Protractor für End-to-End-Tests in Angular-Anwendungen.</p>



<h3 class="wp-block-heading">Best Practices für Jasmine-Tests</h3>



<p>Um das Beste aus Jasmine herauszuholen und effektive Tests zu erstellen, sind hier einige bewährte Vorgehensweisen:</p>



<ul class="wp-block-list">
<li><strong>Klare Testbeschreibungen</strong>: Man sollte aussagekräftige und präzise Beschreibungen für Suites und Specs verwenden. Dies erleichtert das Verständnis des Testzwecks und die Identifizierung von Fehlern.</li>



<li><strong>Kleine, fokussierte Tests</strong>: Es ist ratsam, Tests zu schreiben, die nur eine Funktion oder ein Verhalten testen. Dies erleichtert das Auffinden und Beheben von Fehlern, da man dadurch genau im Blick behält, welcher Teil des Codes betroffen ist.</li>



<li><strong>Testabdeckung</strong>: Man sollte sicherstellen, dass man eine ausreichende Testabdeckung für den Code hat. Dies bedeutet, dass man alle wichtigen Funktionen und Szenarien in den Tests berücksichtigt.</li>



<li><strong>Mocking und Spies</strong>: Es ist zu empfehlen, Mock-Objekte und Spies zu verwenden, um externe Abhängigkeiten zu isolieren und den Testfokus auf den zu testenden Code zu richten. Jasmine bietet dafür eingebaute Funktionen wie createSpy und spyOn.</li>



<li><strong>Regelmäßige Testausführung</strong>: Man sollte die Tests regelmäßig ausführen, um sicherzustellen, dass Änderungen im Code nicht zu unerwarteten Fehlern führen. Daher ist es ratsam, Jasmine in den <a href="https://ceosbay.com/2023/04/14/erklaerung-ci-cd/" target="_blank" rel="noreferrer noopener">Continuous Integration (CI) bzw. Continuous Deployment</a> (<a href="https://ceosbay.com/2023/04/14/erklaerung-ci-cd/" target="_blank" rel="noreferrer noopener">CI/CD</a>) Prozess integrieren, um automatisch Tests auszuführen, sobald man Codeänderungen vornimmt.</li>
</ul>



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



<p>Jasmine ist ein leistungsstarkes und vielseitiges <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> für das Testen von <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Anwendungen. Mit seiner klaren Syntax, Flexibilität und Integration in moderne Entwicklungsprozesse ist es ein unverzichtbares Werkzeug für jeden <a href="https://ceosbay.com/2022/11/12/javascript/">JavaScript</a>-Entwickler. Durch die Befolgung der Best Practices und die regelmäßige Ausführung von Tests können Entwickler sicherstellen, dass ihr Code zuverlässig und fehlerfrei funktioniert. Insgesamt trägt Jasmine dazu bei, die Qualität von <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>-Anwendungen zu verbessern und die Entwicklungszeit zu reduzieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/16/erklaerung-jasmine/">Jasmine &#8211; JavaScript Testautomatisierung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/04/16/erklaerung-jasmine/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1483</post-id>	</item>
		<item>
		<title>YAML &#8211; Klarheit und Einfachheit für strukturierte Daten und Konfigurationen</title>
		<link>https://ceosbay.com/2023/04/09/erklaerung-yaml/</link>
					<comments>https://ceosbay.com/2023/04/09/erklaerung-yaml/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sun, 09 Apr 2023 20:28:02 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Dokumen]]></category>
		<category><![CDATA[Dokument]]></category>
		<category><![CDATA[Doppelpunkt]]></category>
		<category><![CDATA[Einfach]]></category>
		<category><![CDATA[Expressivität]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Komplex]]></category>
		<category><![CDATA[Lesbarkeit]]></category>
		<category><![CDATA[Markup]]></category>
		<category><![CDATA[Programme]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Sprache]]></category>
		<category><![CDATA[YAML]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1319</guid>

					<description><![CDATA[<p>YAML ist eine von vielen Markup-Sprachen, die man in der Softwareentwicklung verwendet. Die Abkürzung YAML steht für &#8222;YAML Ain&#8217;t Markup Language&#8220;. Man hat es entwickelt, um eine einfache, leicht lesbare Sprache zu bieten, die für &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/09/erklaerung-yaml/">YAML &#8211; Klarheit und Einfachheit für strukturierte Daten und Konfigurationen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>YAML ist eine von vielen Markup-Sprachen, die man in der Softwareentwicklung verwendet. Die Abkürzung YAML steht für &#8222;YAML Ain&#8217;t Markup Language&#8220;. Man hat es entwickelt, um eine einfache, leicht lesbare Sprache zu bieten, die für menschliche Leser gut strukturiert und verständlich ist. Im Gegensatz zu anderen Markup-Sprachen wie <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> oder <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">JSON</a>, bietet es eine höhere Lesbarkeit und Benutzerfreundlichkeit.</p>



<h3 class="wp-block-heading">Wie funktioniert YAML?</h3>



<p>YAML ist eine Dateiformatierungssprache, die mithilfe von Schlüssel-Wert-Paaren und Einrückungen arbeitet, um die Datenstruktur zu definieren. Ein YAML-Dokument besteht aus Blöcken von Daten, die in Hierarchien und Listen organisiert sind. Jeder Block enthält einen Schlüssel und einen dazugehörigen Wert, die durch einen Doppelpunkt voneinander getrennt sind. </p>



<h4 class="wp-block-heading">Hier ein Beispiel:</h4>



<pre class="wp-block-code"><code>name: John
age: 30
hobbies:
  - reading
  - hiking</code></pre>



<p>In diesem Beispiel enthält das YAML-Dokument drei Schlüssel-Wert-Paare: &#8222;name&#8220;, &#8222;age&#8220; und &#8222;hobbies&#8220;. Der Schlüssel &#8222;hobbies&#8220; hat eine Liste von Werten, die durch Einrückungen unter dem Schlüssel definiert sind.</p>



<p>Man verwendet es oft, um Konfigurationsdateien zu definieren, die Programmen lesen und interpretieren können. Ein Beispiel dafür ist eine Docker Compose-Datei, die eine Anwendung und ihre Abhängigkeiten in einer einzigen Datei definiert. Man kann YAML auch verwenden, um Daten in einer Datenbank oder einer anderen Dateiformatierung zu speichern.</p>



<h3 class="wp-block-heading">Warum ist YAML nützlich?</h3>



<p>Es bietet mehrere Vorteile gegenüber anderen Markup-Sprachen wie <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> oder <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">JSON</a>. Hier sind einige davon:</p>



<ul class="wp-block-list">
<li><strong>Lesbarkeit</strong>: Es ist sehr leicht lesbar und strukturiert, was es einfacher macht, Dokumente zu erstellen und zu bearbeiten.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Kompakt</strong>: Es ist im Vergleich zu <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> oder <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">JSON</a> sehr kompakt und benötigt weniger Code zum Definieren von Daten.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Einfache Verwendung</strong>: Man kann es schnell und einfach verwenden, ohne dass ein spezielles Werkzeug oder ein besonderes Wissen erforderlich ist.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Erweiterbarkeit</strong>: Es ist erweiterbar und man kann es leicht an die Bedürfnisse einer bestimmten Anwendung oder eines bestimmten Datenformats anpassen.</li>
</ul>



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



<p>YAML ist eine leistungsfähige, einfach lesbare und schreibbare Markup-Sprache, die in der Softwareentwicklung sehr nützlich ist. Es bietet eine Vielzahl von Vorteilen gegenüber anderen Markup-Sprachen und findet häufig bei der Definition von Konfigurationsdateien und Datenstrukturen Einsatz.</p>



<p>Lediglich die Fehlererkennung sollte man nicht außer Acht lassen. Denn YAML-Dokumente können fehlerhaft sein und es kann sich als schwierig erweisen, diese Fehler zu erkennen. Da es sehr auf die Einhaltung der Einrückungen angewiesen ist, kann ein kleiner Fehler in der Formatierung schnell zu Problemen führen. </p>



<p>Auch der Mangel an Expressivität ist nicht zu vernachlässigen. Obwohl es für die meisten Anwendungsfälle ausreichend ist, gibt es Fälle, in denen es an Expressivität mangelt. In einigen Fällen muss man komplexe Datenstrukturen definieren, die über die Fähigkeiten von YAML hinausgehen. In solchen Fällen bieten sich möglicherweise andere Sprachen wie <a href="https://ceosbay.com/2023/03/14/erklaerung-json/" target="_blank" rel="noreferrer noopener">JSON</a> oder <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> an. </p>



<p>Trotz der erwähnten Nachteile bleibt es eine nützliche und beliebte Markup-Sprache in der Softwareentwicklung. Wenn man sich entscheidet, YAML zu verwenden, sollte man jedoch diese Nachteile berücksichtigen und geeig</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/09/erklaerung-yaml/">YAML &#8211; Klarheit und Einfachheit für strukturierte Daten und Konfigurationen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/04/09/erklaerung-yaml/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1319</post-id>	</item>
		<item>
		<title>Lombok &#8211; Entwicklerproduktivität steigern und Boilerplate-Code eliminieren für sauberen, effizienten Java-Code</title>
		<link>https://ceosbay.com/2023/03/28/erklaerung-lombok/</link>
					<comments>https://ceosbay.com/2023/03/28/erklaerung-lombok/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 28 Mar 2023 14:15:28 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Builder]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Equal]]></category>
		<category><![CDATA[Equals]]></category>
		<category><![CDATA[Getter]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[JAR]]></category>
		<category><![CDATA[Log]]></category>
		<category><![CDATA[Logging]]></category>
		<category><![CDATA[Lombok]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Objekt]]></category>
		<category><![CDATA[Objekte]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[pom]]></category>
		<category><![CDATA[Programmiersprache]]></category>
		<category><![CDATA[Setter]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Sprache]]></category>
		<category><![CDATA[ToString]]></category>
		<category><![CDATA[Wert]]></category>
		<category><![CDATA[Zeit]]></category>
		<category><![CDATA[Zip]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1260</guid>

					<description><![CDATA[<p>Lombok ist ein Open Source Java-Framework, um die Entwicklungszeit von Java-Anwendungen zu verkürzen und um die Codequalität im Allgemeinen zu verbessern. Ins Leben gerufen durch die beiden Entwickler Eugen Paraschiv und Roel Spilker. Die Idee &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/28/erklaerung-lombok/">Lombok &#8211; Entwicklerproduktivität steigern und Boilerplate-Code eliminieren für sauberen, effizienten Java-Code</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Lombok ist ein Open Source <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Framework, um die Entwicklungszeit von <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Anwendungen zu verkürzen und um die Codequalität im Allgemeinen zu verbessern. Ins Leben gerufen durch die beiden Entwickler Eugen Paraschiv und Roel Spilker. Die Idee hinter Lombok ist es, Entwicklern das Schreiben von Boilerplate-Code zu ersparen, indem man Annotationen verwendet, um häufig verwendete Konstrukte wie Getter, Setter, Builder, Konstruktoren und vieles mehr automatisch zu generieren.</p>



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



<p>Lombok bietet eine Vielzahl von Funktionen, die Entwicklern helfen, effizienten Code zu schreiben. Hier sind einige der wichtigsten Funktionen:</p>



<p><strong>Getter und Setter:</strong></p>



<p>Lombok ermöglicht es Entwicklern, Getter und Setter-Methoden für Klassenvariablen automatisch zu generieren. Dies ist besonders nützlich, wenn man viele Klassenvariablen hat und nicht jedes Mal manuell Getter und Setter schreiben möchte.</p>



<p><strong>Konstruktoren:</strong></p>



<p>Entwickler können Konstruktoren für ihre Klassen automatisch generieren lassen. Dies ist besonders nützlich, wenn man eine Klasse mit vielen Variablen hat und einen Konstruktor erstellen möchte, der diese Variablen automatisch initialisiert.</p>



<p><strong>Builder:</strong></p>



<p>Mit dem Builder können Entwickler Builder-Klassen automatisch generieren lassen, die es einfach machen, komplexe Objekte zu erstellen. Der Builder generiert eine Methode für jede Klassenvariable, mit der man den Wert der Variable setzen kann. Sobald alle Variablen gesetzt sind, erfolgt die Rückgabe des Objekts.</p>



<p><strong>ToString:</strong></p>



<p>Entwickler können die toString-Methode automatisch generieren lassen. Dies macht es einfach, die Inhalte eines Objekts zu debuggen oder zu protokollieren.</p>



<p><strong>Equals und HashCode:</strong></p>



<p>Entwickler können equals- und hashCode-Methoden automatisch generieren lassen. Dies ist besonders nützlich, wenn man eine Klasse hat, die Verwendung in einer Hash-Map hat.</p>



<p><strong>Log:</strong></p>



<p>Es bietet eine Annotation, mit der Entwickler eine Logger-Variable automatisch generieren können. Dies macht es einfach, Protokolle in der Anwendung zu erstellen.</p>



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



<p>Um Lombok in einem Projekt zu verwenden, muss man es installieren. Es gibt mehrere Möglichkeiten, Lombok zu installieren, doch die einfachste Methode besteht darin, die Lombok-JAR-Datei in das Projektverzeichnis zu kopieren und diese dann zu der IDE-Konfiguration hinzuzufügen. Als IDE&#8217;s sind beispielsweise <a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/" target="_blank" rel="noreferrer noopener">IntelliJ</a> oder <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/" target="_blank" rel="noreferrer noopener">Eclipse</a> zu erwähnen.</p>



<p>Wenn man <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/" target="_blank" rel="noreferrer noopener">Maven</a> verwendet, kann man Lombok einfach zu der POM-File hinzufügen:</p>



<pre class="wp-block-code"><code>&lt;dependency&gt;

&nbsp;&nbsp;&nbsp;&lt;groupId&gt;org.projectlombok&lt;/groupId&gt;

&nbsp;&nbsp;&nbsp;&lt;artifactId&gt;lombok&lt;/artifactId&gt;

&nbsp;&nbsp;&nbsp;&lt;version&gt;X.XX.XX&lt;/version&gt;

&nbsp;&nbsp;&nbsp;&lt;scope&gt;provided&lt;/scope&gt;

&lt;/dependency&gt;</code></pre>



<p>Sobald es installiert ist, kann man die verschiedenen Annotationen verwenden, um den Code zu verbessern.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/28/erklaerung-lombok/">Lombok &#8211; Entwicklerproduktivität steigern und Boilerplate-Code eliminieren für sauberen, effizienten Java-Code</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/28/erklaerung-lombok/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1260</post-id>	</item>
		<item>
		<title>MapStruct &#8211; Schnelle und sichere Objektmapper für saubere und wartungsfreundliche Java-Anwendungen</title>
		<link>https://ceosbay.com/2023/03/27/erklaerung-mapstruct/</link>
					<comments>https://ceosbay.com/2023/03/27/erklaerung-mapstruct/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Mon, 27 Mar 2023 17:01:36 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Bean]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Codes]]></category>
		<category><![CDATA[Frame]]></category>
		<category><![CDATA[Funktionalität]]></category>
		<category><![CDATA[Gradle]]></category>
		<category><![CDATA[Head]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Integrieren]]></category>
		<category><![CDATA[Intelli]]></category>
		<category><![CDATA[J]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Kompilieren]]></category>
		<category><![CDATA[Konfiguration]]></category>
		<category><![CDATA[Map]]></category>
		<category><![CDATA[Mapping]]></category>
		<category><![CDATA[Mappings]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[Minimal]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[OpenSource]]></category>
		<category><![CDATA[Seite]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Struct]]></category>
		<category><![CDATA[Typ]]></category>
		<category><![CDATA[Types]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1241</guid>

					<description><![CDATA[<p>MapStruct ist ein Java-basiertes Open Source Framework zur automatischen Generierung von Mappings zwischen Java-Objekten (Bean-Types). Es ist eine Alternative zu anderen Mapping-Frameworks wie Dozer, ModelMapper und Orika. Das Ziel von MapStruct ist es, die Entwicklung &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/27/erklaerung-mapstruct/">MapStruct &#8211; Schnelle und sichere Objektmapper für saubere und wartungsfreundliche Java-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>MapStruct ist ein <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-basiertes Open Source <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> zur automatischen Generierung von Mappings zwischen <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Objekten (Bean-Types). Es ist eine Alternative zu anderen Mapping-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> wie Dozer, ModelMapper und Orika. Das Ziel von MapStruct ist es, die Entwicklung von Mapping-Code zu vereinfachen und zu beschleunigen und dabei typsichere und fehlerfreie Mappings zu generieren.</p>



<p>MapStruct nutzt dabei die Annotationen, die auf den <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Objekten angebracht sind, um automatisch Mapping-Code (Bean-Mappings) zu generieren. Das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> generiert dabei standardmäßig Mappings zwischen Objekten mit gleichem Namen und Typ, es können aber auch eigene Mappings definiert werden. Dabei können auch komplexere Mappings erstellt werden, beispielsweise wenn Attribute in den Quell- und Zielobjekten unterschiedliche Namen haben oder wenn sie unterschiedliche Typen haben.</p>



<p>MapStruct ist sehr einfach zu verwenden und erfordert nur eine minimale Konfiguration. Es integriert sich nahtlos in das Build-System, da es als Annotation Processor fungiert und beim Kompilieren des Codes aufgerufen wird. Das <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> ist relativ schnell und hat einen geringen Overhead, da es keine Laufzeit-Abhängigkeiten hat.</p>



<h3 class="wp-block-heading">Vorteile auf einem Blick</h3>



<ul class="wp-block-list">
<li>Schnelle Ausführung durch Verwendung einfacher Methodenaufrufe anstelle von Reflexion (Bedeutet: Ein Programm kennt seine eigene Struktur und kann diese modifizieren)</li>



<li>Kompilierzeit-Typensicherheit. Nur Objekte und Attribute, die einander zugeordnet sind – Es findet keine versehentliche Zuordnung einer Auftragsentität zu einem Kunden-DTO statt.</li>



<li>In sich geschlossener Code &#8211; keine Laufzeit-Abhängigkeiten</li>



<li>Eindeutige Fehlerberichte zur Erstellungszeit, wenn:&nbsp;<ul><li>Mappings unvollständig sind (Wenn nicht alle Zieleigenschaften gemappt sind)</li></ul>
<ul class="wp-block-list">
<li>Mappings fehlerhaft sind (Wenn es keine geeignete Mapping-Methode oder Typkonvertierung findet)</li>
</ul>
</li>



<li>Leicht zu debuggender Mapping-Code (Oder manuell editierbar, z. B. im Falle eines Fehlers im Generator)</li>
</ul>



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



<p>Zusammenfassend ist MapStruct ein leistungsfähiges und einfach zu bedienendes <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" rel="nofollow">Framework</a>, das die Entwicklung von Mapping-Code vereinfacht und beschleunigt. Vor allem, weil das Übertragen von Daten zwischen Objektmodellen meist eine wiederkehrende Aufgabe bei der Anwendungsentwicklung ist. Es ist eine gute Wahl, wenn man schnell und effizient Mapping-Funktionalitäten in Anwendungen integrieren möchte. Man kann es in Befehlszeilen-Builds (<a href="https://ceosbay.com/2022/12/22/erklaerung-maven/" target="_blank" rel="noreferrer noopener">Maven</a>, Gradle usw.) als auch in der bevorzugten IDE wie z.B. <a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/" target="_blank" rel="noreferrer noopener">IntelliJ</a> oder <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/" target="_blank" rel="noreferrer noopener">Eclipse</a> verwenden.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/27/erklaerung-mapstruct/">MapStruct &#8211; Schnelle und sichere Objektmapper für saubere und wartungsfreundliche Java-Anwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/27/erklaerung-mapstruct/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1241</post-id>	</item>
		<item>
		<title>SOAP &#8211; Effiziente Möglichkeit, um Daten zwischen Systemen zu übertragen</title>
		<link>https://ceosbay.com/2023/03/23/erklaerung-soap/</link>
					<comments>https://ceosbay.com/2023/03/23/erklaerung-soap/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Thu, 23 Mar 2023 17:16:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Big-Data]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Raspberry Pi]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Application]]></category>
		<category><![CDATA[Body]]></category>
		<category><![CDATA[Child]]></category>
		<category><![CDATA[Compliance]]></category>
		<category><![CDATA[Computing]]></category>
		<category><![CDATA[CSV]]></category>
		<category><![CDATA[Daten]]></category>
		<category><![CDATA[Datenaustausch]]></category>
		<category><![CDATA[EAI]]></category>
		<category><![CDATA[Empfänger]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[FTP]]></category>
		<category><![CDATA[Header]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[Information]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JMS]]></category>
		<category><![CDATA[Kind]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Middleware]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[Post]]></category>
		<category><![CDATA[Protocol]]></category>
		<category><![CDATA[Protokoll]]></category>
		<category><![CDATA[Request]]></category>
		<category><![CDATA[Rest]]></category>
		<category><![CDATA[Richtlinien]]></category>
		<category><![CDATA[RSS]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Sender]]></category>
		<category><![CDATA[Serverless]]></category>
		<category><![CDATA[Services]]></category>
		<category><![CDATA[SOAP]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Transaktion]]></category>
		<category><![CDATA[Unternehmensanforderungen]]></category>
		<category><![CDATA[URL]]></category>
		<category><![CDATA[Verbindung]]></category>
		<category><![CDATA[Verschlüsselung]]></category>
		<category><![CDATA[W3C]]></category>
		<category><![CDATA[Ware]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[www]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1069</guid>

					<description><![CDATA[<p>SOAP (Simple Object Access Protocol) ist ein Netzwerkprotokoll, mit dessen Hilfe man Daten zwischen Systemen austauschen und RPC’s (Remote Procedure Calls) durchführen kann. SOAP ist ein industrieller Standard des World Wide Web Consortiums (W3C). Es &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/23/erklaerung-soap/">SOAP &#8211; Effiziente Möglichkeit, um Daten zwischen Systemen zu übertragen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>SOAP (Simple Object Access Protocol) ist ein Netzwerkprotokoll, mit dessen Hilfe man Daten zwischen Systemen austauschen und RPC’s (Remote Procedure Calls) durchführen kann. SOAP ist ein industrieller Standard des World Wide Web Consortiums (W3C).</p>



<p>Es stützt sich auf <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> zur Repräsentation der Daten und auf Internet-Protokolle der Transport- und Anwendungsschicht zur Übertragung der Nachrichten. Die gängigste Kombination ist SOAP über https (Hypertext Transfer Protocol) und TCP (Transmission Control Protocol). Man kann SOAP auch über das SMTP (Simple Mail Transfer Protocol) oder JMS (Jakarta Messaging) verwenden.</p>



<p>Die mit der Nachricht übermittelten Nutzdaten man nicht zwingend in <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> senden. Andere Formate wie Base64 oder CSV sind ebenfalls möglich. Seit Version 1.2. nutzt man die Abkürzung SOAP offiziell nicht mehr als Akronym, da es erstens (subjektiv) keineswegs einfach (Simple) ist und zweitens nicht nur dem Zugriff auf Objekte (Object Access) dient.</p>



<h3 class="wp-block-heading">Kurze Zeitreise</h3>



<p>SOAP entstand aus der Weiterentwicklung der Spezifikation für <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>-RPC im Jahr 1998. Hauptverantwortlicher Software-Entwickler damals Dave Winer und seine Firma UserLand Software in engem Austausch mit Microsoft. Dave Winter ist übrigens auch für <a href="https://ceosbay.com/2022/12/28/erklaerung-rss/" target="_blank" rel="noreferrer noopener">RSS</a> 2.0 verantwortlich. Einen Beitrag über <a href="https://ceosbay.com/2022/12/28/erklaerung-rss/" target="_blank" rel="noreferrer noopener">RSS</a> findet man <a href="https://ceosbay.com/2022/12/28/erklaerung-rss/" target="_blank" rel="noreferrer noopener">hier</a>.</p>



<p>Im Jahr 1999 fand die Veröffentlichung der Version 1.0 von SOAP statt. Dies stellt unter Anderem den Zeitpunkt dar, an dem die Entwicklung mehr Unterstützung fand. Vor allem hat sich IBM im Jahr 2000 der Entwicklung angeschlossen, was dazu führte, dass IBM, Microsoft, DevelopMentor (Don Box) und UserLand Software (Dave Winer) die Spezifikation von SOAP 1.1 beim World Wide Web Consortium (W3C) einreichten. Dabei hat man das Ziel verfolgt, eine Arbeitsgruppe zu gründen, die SOAP weiterentwickeln sollte. Das Ergebnis dieser Arbeitsgruppe ist SOAP Version 1.2, empfing im Juni 2003 die Anerkennung als recommendation (Empfehlung).</p>



<p>Wie zu Beginn des Beitrags erwähnt, hat man SOAP nicht mehr als gebräuchliche(s) Akronym bzw. Abkürzung verstanden. Der Hauptgrund dafür ist die Tatsache, dass sämtliche Deutungen für SOAP, wie Simple Object Access Protocol oder Service Oriented Architecture Protocol, nicht mehr den vollständigen Sinn von SOAP trafen. Dies ermöglichte die Anmeldung von SOAP als Markennamen in den USA.</p>



<h3 class="wp-block-heading">Wie funktioniert SOAP?</h3>



<p>SOAP ist wie zuvor beschrieben, ein Protokoll zum Austausch <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>-Information-Set-basierter Nachrichten über ein Rechnernetz und hat den Status einer W3C-Empfehlung. Es stellt Regeln für das Nachrichtendesign auf. Regelt, wie Daten in der Nachricht abzubilden und zu interpretieren sind. Es gibt eine Konvention für entfernte Prozeduraufrufe mittels SOAP-Nachrichten vor. SOAP macht keine Vorschriften zur Semantik applikationsspezifischer Daten, die man gegebenenfalls versendet möchte, sondern stellt ein <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> (Siehe meinen Beitrag) zur Verfügung, welches erlaubt, dass man beliebige applikationsspezifische Informationen übertragen kann. </p>



<p>Man kann SOAP für entfernte Prozeduraufrufe ebenso nutzen wie für einfache Nachrichtensysteme. Zum Senden von Nachrichten kann man beliebige Transportprotokolle verwendet. Dazu gehören beispielsweise FTP, SMTP, https oder auch JMS. Aus Gründen der Kompatibilität nutzt man in der Praxis hierzu gängige Netzwerk-Architekturen. Auch ist mittels https die verschlüsselte Übertragung von SOAP-Nachrichten möglich. Das ermöglicht jedoch keine End-to-End-Verschlüsselung. Dies kann man durch WS-Security erreichen. Die Einbindung erfolgt lediglich auf der Ebene der Nachrichten und nicht auf der des unterliegenden Transportprotokolls. Folglich ist es so, dass man das <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> Information Set der SOAP-Anfrage bei Nutzung von https(S) im Body eines https POST Requests als <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a> an eine gegebene URL schickt.</p>



<p>In der Regel setzt man SOAP da ein, wo der direkte Zugang fremder Systeme zu einer Informationsquelle nicht sinnvoll erscheint. Dies kann sowohl an Kompatibilitätsproblemen zwischen verschiedenen Anwendungsarchitekturen liegen aber auch an diversen Sicherheitsaspekten. So kann man einen (partiellen) Zugriff auf eine Datenbank ermöglichen, ohne dem Anwenderprogramm den direkten Zugang zu ermöglichen. Die Menge der ausführbaren Methoden reglementiert und definiert man über die SOAP-Schnittstelle.</p>



<p>Die Kommunikation mit SOAP ermöglicht die Kopplung von Systemen. Der offene Entwurf ermöglicht jedoch lediglich den Aufbau schwach gekoppelter Systeme. Die Flexibilität des Konzeptes erkauft man sich durch die Nachteile beim Übertragungsvolumen und Rechenaufwand. Dies kann teuer werden, da man das <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>-Dokument beim Sender zunächst aufbaut und anschließend validiert. Das Konzept verfolgt eigentlich das Ziel eines leichtgewichtigen Protokolls. </p>



<p>Doch durch den flexiblen Einsatzbereich führt die zu übertragende Datei eine Reihe von Metadaten mit sich, die bei der Konstruktion des <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>-Dokuments weiter anwächst. So führt beispielsweise das einfache Versenden von „Wahr“ oder „Falsch“ zu einem Datenvolumen von mehreren hundert Bytes. In einem stark gekoppelten System sollte dafür theoretisch ein Bit reichen. </p>



<p>Durch die Möglichkeit des flexiblen Aufbaus des Dokuments kann man jedoch auch komplexe Transaktionen in einer Anfrage atomar zusammenfassen, während man in stark gekoppelten Systemen hierzu oftmals mehrere Anfragen erstellen muss. Dies verbessert das Nutzlastverhältnis (Nutzdaten zu Meta-Daten) und den Kommunikationsaufwand (für den Aufbau einer Verbindung, nur ein Senden/Empfangen).</p>



<p>SOAP unterscheidet zwischen dem endgültigen Empfänger und den Zwischenempfängern. Dies ermöglicht es, eine Nachricht über verschiedene „Hops“ zu schicken, bei denen man sogar verschiedene Transportprotokolle verwendet. Beispielsweise kann man zum ersten Hop die Nachricht mittels <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Message Service schicken, im Anschluss über E-Mail und schließlich dem Empfänger mittels https weitergeben. Der Absender muss über die Zwischenhops keine Information haben, die Middleware jedoch schon.</p>



<h3 class="wp-block-heading">Wie ist eine SOAP-Nachricht aufgebaut?</h3>



<p>Eine minimale SOAP-Nachricht besteht aus einem Envelope genannten Element, dem man einen lokalen Namen zuweisen muss. Dieses Element referenziert mittels eines Namensraum-Attributes auf https://www.w3.org/2003/05/soap-envelope. Child dieses Elements muss ein Body-Element sein. Optional kann zuvor ein Header-Element stehen. In diesem kann man Meta-Informationen, beispielsweise zum Routing, zur Verschlüsselung oder zu Transaktionsidentifizierung, unterbringen. Im Body-Element sind die eigentlichen Nutzdaten untergebracht. Dies sieht dann folgendermaßen aus:</p>



<pre class="wp-block-code"><code>&lt;?xml version="1.0"?&gt;
&lt;s:Envelope xmlns:s="https://www.w3.org/2003/05/soap-envelope"&gt;
    &lt;s:Header&gt;
    &lt;/s:Header&gt;
    &lt;s:Body&gt;
    &lt;/s:Body&gt;
&lt;/s:Envelope&gt;</code></pre>



<p>Innerhalb des Body-Elements können sowohl Informationen zum Datenaustausch als auch Anweisungen für einen entfernten Prozeduraufruf stehen. Dies ist vom Empfänger entsprechend zu interpretieren.</p>



<p>Im Header gibt man den nächsten Hop (intermediary) und den endgültigen Empfänger (ultimate recipient) an. Ein intermediary kann beispielsweise die Nachricht verschlüsseln, sie loggen oder die Nachricht aufteilen. Ersteres erlaubt es, dass die Anwendungslogik sich nicht um die Sicherheit der Nachricht kümmern muss. Darum kümmert sich die Middleware. Was eine Middleware ist, erkläre ich in einem anderen Beitrag. Die Möglichkeit, dass Intermediaries beliebige Dinge tun können, ermöglicht EAI (Enterprise Application Integration).</p>



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



<p>Viele Altsysteme verwenden möglicherweise noch SOAP. In der Vergangenheit war es auch die Lösung schlechthin. Heute ist es eher <a href="https://ceosbay.com/2022/12/23/erklaerung-rest/" target="_blank" rel="noreferrer noopener">REST</a>, welches zum Einsatz kommt und in webbasierten Szenarien häufig als die schnellere Alternative gilt.</p>



<p>Zusammengefasst kann man sagen, dass <a href="https://ceosbay.com/2022/12/23/erklaerung-rest/" target="_blank" rel="noreferrer noopener">REST</a> aus einer Reihe von Richtlinien für eine flexible Implementierung besteht und SOAP ein Protokoll mit spezifischen Anforderungen wie <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>-Messaging ist.</p>



<p><a href="https://ceosbay.com/2022/12/23/erklaerung-rest/" target="_blank" rel="noreferrer noopener">REST-APIs</a> sind schlank und daher ideal für moderne Anwendungen geeignet, wie das Internet of Things (IoT), mobile Anwendungen und Serverless Computing. SOAP-Webservices bieten zwar integrierte Sicherheit und Transaktions-Compliance, die vielen Unternehmensanforderungen entspricht, doch die Erstellung und Wartung ist wesentlich aufwändiger. Darüber hinaus folgen auch viele öffentlich zugängliche APIsheutzutage, den REST-Richtlinien.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/23/erklaerung-soap/">SOAP &#8211; Effiziente Möglichkeit, um Daten zwischen Systemen zu übertragen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/23/erklaerung-soap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1069</post-id>	</item>
		<item>
		<title>Spring Boot &#8211; Schnell und einfach Webanwendungen erstellen</title>
		<link>https://ceosbay.com/2023/03/22/erklaerung-spring-boot/</link>
					<comments>https://ceosbay.com/2023/03/22/erklaerung-spring-boot/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 22 Mar 2023 17:12:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Big-Data]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Abhängigkeiten]]></category>
		<category><![CDATA[Applications]]></category>
		<category><![CDATA[Apps]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Boot]]></category>
		<category><![CDATA[Container]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Dependencies]]></category>
		<category><![CDATA[Dependency]]></category>
		<category><![CDATA[Frame]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Frei]]></category>
		<category><![CDATA[Freie]]></category>
		<category><![CDATA[Injection]]></category>
		<category><![CDATA[Injizieren]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[Lesitung]]></category>
		<category><![CDATA[Microservices]]></category>
		<category><![CDATA[Modular]]></category>
		<category><![CDATA[Objekte]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Optionated]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Webanwendungen]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1057</guid>

					<description><![CDATA[<p>Java Spring Framework ist ein beliebtes Open-Source&#8211;Framework zur Erstellung eigenständiger, produktionsreifer Anwendungen, die auf der Java Virtual Machine (JVM) laufen. Spring Boot ist ein Tool, dass die Entwicklung von Webanwendungen und Microservices mit Spring Framework &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/22/erklaerung-spring-boot/">Spring Boot &#8211; Schnell und einfach Webanwendungen erstellen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p><a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Spring <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> ist ein beliebtes <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a>&#8211;<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> zur Erstellung eigenständiger, produktionsreifer Anwendungen, die auf der <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Virtual Machine (JVM) laufen. Spring Boot ist ein Tool, dass die Entwicklung von Webanwendungen und Microservices mit Spring Framework durch drei Kernfunktionen beschleunigt und einfacher macht.</p>



<ol class="wp-block-list" type="1">
<li>Autokonfiguration</li>



<li>Ein Opinionated-Konfigurationsansatz</li>



<li>Die Fähigkeit, eigenständige Anwendungen zu erstellen</li>
</ol>



<p>Das Zusammenspiel dieser Funktionen ermöglicht die Installation einer Spring basierten Anwendung mit minimalem Konfigurations- bzw. Einrichtungsaufwand, worauf ich nachfolgend näher eingehe. Mit einem breiten Spektrum an Funktionalitäten ist es eine ganzheitliche Lösung, wobei die Entkopplung der Applikationskomponenten im Vordergrund steht.</p>



<h3 class="wp-block-heading">Was ist das Spring Framework und was stellt Spring Boot damit an?</h3>



<p>Ein Spring <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> bietet eine Abhängigkeitsinjektionsfunktion, mit der Objekte ihre eigenen Abhängigkeiten definieren können.Der Spring-Container injiziert diese nachfolgend. So kann man als Entwickler modulare Anwendungen erstellen, die aus losen verbundenen Komponenten bestehen. Diese eignen sich ideal für Microservices und verteilte Netzanwendungen.</p>



<p>Das Spring <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> bietet auch die integrierte Unterstützung für typische Aufgaben, die eine Anwendung ausführen muss. Beispiele hierfür sind Datenbindung, Typumsetzung, Prüfung und Bewertung, Ausnahmebehandlung, Ressourcen- und Ereignismanagement und vielem mehr. Darüber hinaus lässt es sich mit verschiedenen <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> EE-Technologien wie RMI (Remote Method Invocation), AMQP (Advanced Message Queuing Protocol), <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Web Services und anderen integrieren. Alles in allem liefert das Spring <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> Entwicklern alle Tools und Funktionen, die man benötigt, um lose verbundene, plattformunabhängige <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> EE-Anwendungen zu erstellen, die man in den verschiedensten Umgebungen ausführen kann. So leistungsfähig und umfassend das Spring <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> auch ist, so viel Zeit und Know-How erfordert es, Spring-Anwendungen sauber zu konfigurieren, einzurichten und bereitzustellen. Spring Boot verringert diesen Aufwand mit den bereits zu Beginn erwähnten drei wichtigen Funktionen.</p>



<h3 class="wp-block-heading">Autokonfiguration in Spring Boot</h3>



<p>Unter der Autokonfiguration verstehen man die Initialisierung von Anwendungen mit voreingestellten Abhängigkeiten ohne den manuellen Eingriff eines Entwicklers. Da <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a> Spring Boot über integrierte Autokonfigurationsfunktionen verfügt, konfiguriert es sowohl das zugrunde liegende Spring <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> als auch die Pakete von Drittanbietern automatisch auf der Grundlage der eigenen individuellen Einstellungen. Dies trägt auch zur grundlegenden Fehlervermeidung bei. Auch wenn man die Standardeinstellungen nach Abschluss der Initialisierung überschreiben kann, ermöglicht die Autokonfigurationsfunktion von <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Spring Boot einen schnellen Start bei der Entwicklung von Spring-basierten Anwendungen. Dies reduziert die Möglichkeit menschlicher Fehler.</p>



<h3 class="wp-block-heading">Opinionated-Konfigurationsansatz</h3>



<p>Der Optionated-Ansatz bei Spring Boot findet Anwendung beim Hinzufügen und bei der Konfiguration von Steuer-Abhängigkeiten, basierend auf den Projektanforderungen. Spring Boot wählt nach eigenem Ermessen die passenden Pakete zur Installation aus und setzt auch die Standardwerte, ohne dass ein nachträgliches manuelles Eingreifen erforderlich ist.</p>



<p>Man kann die Anforderungen des jeweiligen Projekts während des Initialisierungsprozesses definieren. Dabei wählt man zwischen mehreren Starter-Abhängigkeiten (den Spring Starters) die typische Anwendungsfälle abdecken. Man startet den Spring Boot Initializr (Das ist kein Rechtschreibfehler 😉 ), indem man ein einfaches Webformular ausfüllt. Alles erst einmal ohne zu programmieren und ohne Code.</p>



<p>Mit der Starter-Abhängigkeit „Spring Web&#8220; kann man beispielsweise Spring-basierte Webanwendungen mit minimaler Konfiguration erstellen, indem man im Projekt alle erforderlichen Abhängigkeiten – wie den Apache Tomcat Webserver – hinzufügt. „Spring Security&#8220; ist eine weitere vielfach eingesetzte Starter-Abhängigkeit, die automatisch Authentifizierungs- und Zugriffskontrollfunktionen zur Verfügung stelllt. Spring Boot enthält von Haus aus über 50 Spring-Starter, und viele weitere Starter von Drittanbietern sind ebenfalls verfügbar.</p>



<h3 class="wp-block-heading">Eigenständige Anwendungen</h3>



<p>Spring Boot hilft Entwicklern, Anwendungen zu erstellen, die einfach funktionieren. Insbesondere kann man damit eigenständige Anwendungen erstellen, die ohne einen externen Webserver auskommen, indem man einen Webserver wie Tomcat oder Netty während des Initialisierungsprozesses in der eigenen Anwendung einbettet. So kann man die Anwendung auf jeder Plattform starten, indem man einfach auf den Befehl „Ausführen&#8220; klickt. Man kann aber auch auf diese Funktion verzichten, indem man dies in der Konfiguration deaktiviert.</p>



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



<p>In der Praxis ist die Verwendung von Spring Boot durchaus zu empfehlen. Außer man hat vor, eine sehr spezielle Konfiguration zu implementieren. Man kann weiterhin das vielfach eingesetzte Annotationssystem von Spring <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> verwenden, mit dem man auf einfache Weise zusätzliche Abhängigkeiten (deren Abdeckung nicht von Spring Starters gewährleistet ist) in die Anwendung implementieren kann. Auch hat man weiterhin Zugriff auf alle Spring <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a>-Funktionen, einschließlich der einfachen Ereignisverarbeitung, Prüfung und Bewertung, Datenbindung, Typumsetzung und der integrierten Sicherheits- und Testfunktionen. Kurz zusammengefasst &#8211; Wenn die Abdeckung des Projektumfangs lediglich ein Spring Starter gewährleistet, kann Spring Boot die Entwicklung signifikant rationalisieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/22/erklaerung-spring-boot/">Spring Boot &#8211; Schnell und einfach Webanwendungen erstellen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/22/erklaerung-spring-boot/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1057</post-id>	</item>
		<item>
		<title>Eclipse &#8211; Die flexible Entwicklungsumgebung</title>
		<link>https://ceosbay.com/2023/03/19/erklaerung-eclipse/</link>
					<comments>https://ceosbay.com/2023/03/19/erklaerung-eclipse/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sun, 19 Mar 2023 20:47:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[CDT]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[DPP]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Entwicklungsumgebung]]></category>
		<category><![CDATA[Erweiterungen]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[GEF]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[IntelliJ]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JFace]]></category>
		<category><![CDATA[Jupiter]]></category>
		<category><![CDATA[Jupyter]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[Kern]]></category>
		<category><![CDATA[Machine]]></category>
		<category><![CDATA[Mylyn]]></category>
		<category><![CDATA[oasp4j]]></category>
		<category><![CDATA[Oomph]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[Perspektiven]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[PP]]></category>
		<category><![CDATA[Programmiersprache]]></category>
		<category><![CDATA[Projekt]]></category>
		<category><![CDATA[Quellcode]]></category>
		<category><![CDATA[Rich]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Saros]]></category>
		<category><![CDATA[Scala]]></category>
		<category><![CDATA[Sichten]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Speicher]]></category>
		<category><![CDATA[Sprache]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[Werkzeug]]></category>
		<category><![CDATA[Werkzeuge]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Yatta]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1190</guid>

					<description><![CDATA[<p>Eclipse „Sonnenfinsternis“, ist ein Open Source Programm zur Entwicklung von Software verschiedener Art. Ihren Ursprung hat Eclipse als integrierte Entwicklungsumgebung (IDE) für die Programmiersprache Java. Mittlerweile nutzt man es aufgrund der Erweiterbarkeit auch für viele &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/">Eclipse &#8211; Die flexible Entwicklungsumgebung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Eclipse „Sonnenfinsternis“, ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a> Programm zur Entwicklung von Software verschiedener Art. Ihren Ursprung hat Eclipse als integrierte Entwicklungsumgebung (IDE) für die Programmiersprache <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>. Mittlerweile nutzt man es aufgrund der Erweiterbarkeit auch für viele andere Entwicklungsaufgaben. Für Eclipse gibt es eine Vielzahl sowohl quelloffener als auch kommerzieller Erweiterungen. Es selbst basiert auf <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>. Ab Version 3.0 auf dem OSGi-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> Equinox. Die OSGi Alliance (früher Open Services Gateway initiative) spezifizierte eine hardwareunabhängige dynamische Softwareplattform, die es erleichtert, Anwendungen und ihre Dienste per Komponentenmodell („Bundle“/„Service“) zu modularisieren und zu verwalten („Service Registry“). Die OSGi-Plattform setzt eine <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Virtual Machine (JVM) voraus und bietet darauf aufbauend das OSGi-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a>. Während Equinox (Tag-und-Nacht-Gleiche) ein von der Eclipse Foundation entwickeltes <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-basiertes <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> ist, dass die OSGi-Kernspezifikation implementiert und das Gerüst der integrierten Entwicklungsumgebung Eclipse bildet.</p>



<h3 class="wp-block-heading">Kurze Zeitreise</h3>



<p>Eclipse ist im Grunde genommen der Nachfolger von IBM Visual Age for <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> 4.0. Der Quellcode dafür wurde im Jahr 2001 von IBM freigegeben. Im Jahr 2004 beschloss das von IBM geführte Eclipse-Konsortium die Ausgründung der rechtlich eigenständigen Eclipse Foundation, die seitdem für die Entwicklung von Eclipse verantwortlich ist. Es unterstützt die <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Version 5 ab Version 3.1 und <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> 6 ab Version 3.2. Ab dem Jahr 2006 wurden die Veröffentlichungstermine neuer Versionen der wichtigsten Eclipse-Komponenten harmonisiert, um Versionskonflikte zu vermeiden und Eclipse-Anwendern die Nutzung zu erleichtern. Man hat den Veröffentlichungszyklus ab der Version 2018-09 auf Quartalsaktualisierungen verkürzt, da ab <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> 9 nicht mehr alle 3 Jahre, sondern alle 6 Monate eine neue <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Version erscheint. Es folgt nun einem Rolling Release Modell.</p>



<h3 class="wp-block-heading">Rolling Release</h3>



<p>(„rollen“ und „veröffentlichen“. Sinngemäß handelt es sich dabei um die kontinuierliche Aktualisierung der Software und ist ein Begriff aus der Softwareentwicklung. Bei einem Betriebssystem, dass das Rolling-Release-Prinzip anwendet, gibt es keine Betriebssystem-Versionen, bei denen bei einem Versions-Upgrade eine große Menge an Software auf einmal aktualisiert wird. Die einzelnen Software-Pakete werden vielmehr immerfort aktualisiert. Dies schließt sogenannte Releases, also Veröffentlichungen des Betriebssystems, aber nicht aus. Im Gegensatz zu einem Betriebssystem ohne Rolling Releases sind die Veröffentlichungen jedoch keine Versionen, sondern sogenannte Snapshots. Dies bedeutet, eine Kopie aller im Moment im Repository liegenden Software-Versionen. Diese Snapshots dienen meistens auch als Installations-Medien.</p>



<p>Die Projektnamen waren bisher nach den Jupitermonden (Callisto, Europa und Ganymede), den Raumsonden Galileo und Helios, die Version 3.7 nach der für Eclipse typischen Farbe Indigo benannt. Die Anfangsbuchstaben der Projektnamen werden ab Version 3.5 in alphabetischer Reihenfolge vergeben. Die Version 3.8 erschien gleichzeitig mit der Version 4.2. Um mit dem schnelleren Release-Zyklus von <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> mitzuhalten, hat man 2018 von einem jährlichen Release auf vier Releases pro Jahr umgestellt. Damit hat man auch das Namensschema der Release-Versionen auf „{Jahreszahl}-{Monat}“ vereinfacht, also beispielsweise „2018-09“. Die einzelnen Versionen werden jeweils als Grundversion oder als Zusammenstellung aus verschiedenen Programmpaketen veröffentlicht. Einzelne Programmpakete kann man jedoch auch später noch nachinstallieren. Die Benutzeroberfläche von Eclipse ist standardmäßig englischsprachig. Es gibt jedoch zu jeder Version Babel-Language-Packs, die man sich in den entsprechenden Sprachen als Plugin installieren kann.</p>



<p>Darauf gehe ich so explizit ein, da ich mich in den letzten Tagen mit Kollegen über Eclipse ausgetauscht und in einem Quellcode verweise auf „Jupiter“ entdeckt habe. In der jüngsten Vergangenheit habe ich mich mit <a href="https://ceosbay.com/2022/12/30/erklaerung-projekt-jupyter/" target="_blank" rel="noreferrer noopener">Jupyter</a> beschäftigt. Daher auch hier ein Verweis auf den Beitrag damit es zu keiner Verwechslung der Themen kommt. Beides von Grund auf verschiedene Themen bzw. Dinge 😉</p>



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



<p>Bis einschließlich zur Version 2.1 ist Eclipse als erweiterbare IDE konzipiert gewesen. Ab Version 3.0 ist es selbst nur der Kern, der die einzelnen Plug-ins lädt, die dann die eigentliche Funktionalität zur Verfügung stellt. Diese Funktionalität basiert, wie bereits erwähnt, auf Equinox. Sowohl Eclipse als auch die Plugins sind vollständig in <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> implementiert. Zur Erstellung der GUI (grafischen Benutzeroberfläche) wurde SWT verwendet. Zur Darstellung der GUI-Komponenten basiert SWT ähnlich wie AWT auf den nativen GUI-Komponenten des jeweiligen Betriebssystems. Eclipse steht für 14 verschiedene Systeme und Architekturen zur Verfügung und gilt somit als plattformunabhängig. Die Plugins lassen sich direkt von einem Update-Server, über den „Market Place“, oder durch Entpacken einer Installationsdatei installieren.</p>



<p>Das frei verfügbare Eclipse SDK umfasst die Eclipse-Plattform, Werkzeuge zur <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>-Entwicklung (<a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Development Tools, JDT) und die Umgebung zur Entwicklung von Eclipse-Plugins (Plugin Development Environment, PDE).</p>



<h3 class="wp-block-heading">Rich Client Platform</h3>



<p>Eclipse bietet eine Rich Client Platform, welche es Anwendungsentwicklern ermöglicht, basierend auf dem Eclipse-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a>, von der Eclipse-IDE unabhängige Anwendungen zu schreiben. Die folgenden Komponenten (Plugins) werden typischerweise mindestens für eine Eclipse-Rich-Client-Platform-Anwendung verwendet:</p>



<ul class="wp-block-list">
<li>Eclipse Core Platform – steuert den Lebenszyklus einer Eclipse-Anwendung</li>



<li>Eclipse Platform UI – stellt die Workbench mit den Konzepten Sichten, Editoren, Perspektiven, Menüs und Toolbars zur Verfügung</li>



<li>Standard Widget Toolkit (SWT)</li>



<li>JFace</li>
</ul>



<p>Weitere Eclipse-Komponenten, wie das Hilfesystem oder das automatische Aktualisierungssystem, kann man ebenfalls einsetzen. In der Regel nutzt man das Eclipse-OSGi-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> Equinox zum Kombinieren (bundling) der Komponenten.</p>



<h3 class="wp-block-heading">Das UI (User Interface)</h3>



<p>Eclipse ist in Komponenten (parts) gegliedert, die in Sichten (views) und Editoren (editors) gegliedert sind. Wobei die Unterscheidung in view und editor sich an der Nutzung orientiert und nicht technischer Natur ist. Diese Fenster kann man durch Drag and Drop beliebig anordnen oder minimieren.</p>



<p><strong>Sichten</strong></p>



<p>Mit Hilfe der views kann man Daten direkt bearbeitet und darunterliegende Datenstrukturen verändern.</p>



<p>Beispiele für views sind die auch aus den meisten anderen Editoren bekannte Navigator-View, die im Projektverzeichnis enthaltene Dokumente anzeigt, der Klassenexplorer, der baumartig strukturiert Symbole für die Klassen, Funktionen, Variablen und Importe eines geöffneten Quelltextes anzeigt oder das Suchfenster, dass die Ergebnisse einer Suche auflisten kann.</p>



<p><strong>Editoren</strong></p>



<p>Editoren sind Komponenten, die nur das jeweils geöffnete Datenelement bearbeiten und in denen der Nutzer explizit speichern muss, um Daten zu verändern. Beispiele sind Fenster, die meist den Quelltext mit Syntaxhervorhebung anzeigen, wobei es für viele Programmiersprachen einen eigenen Editor gibt. Beispielsweise für <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>, C, PHP, <a href="https://ceosbay.com/2022/12/20/erklaerung-python/" target="_blank" rel="noreferrer noopener">Python</a>, <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>, aber auch einen einfachen Texteditor. Genauso gibt es auch visuelle Editoren (beispielsweise UML-Editoren, GUI-Builder) oder solche, die Baumstrukturen anzeigen (etwa der <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/" target="_blank" rel="noreferrer noopener">XML</a>-Editor). Editoren nehmen normalerweise den meisten Raum des Programmfensters in Anspruch. Mehrere geöffnete Quelltexte kann man als Reiter öffnen, die man dann über Tabs am oberen Rand in den Vordergrund bringen kann. Außerdem kann man Tabs fixieren, damit man beispielsweise den zugehörigen Quelltext nicht versehentlich schließt. Auch kann man die Editoren weitestgehend frei per Drag and Drop anordnen. Davon abgesehen ist es möglich, eine Datei in mehreren Editoren gleichzeitig zu öffnen.</p>



<p><strong>Perspektiven</strong></p>



<p>Perspektiven sind vollständige Anordnungen von parts. Ein editor bleibt beim Perspektivwechsel erhalten. Perspektiven sind weitestgehend frei konfigurierbar und man kann benutzerdefinierte Konstellationen speichern sowie laden. Meistens stellen Plugins, die man nachinstalliert, vorkonfigurierte Perspektiven zur Verfügung, diese passt man dann meisten den eigenen Wünschen und Vorlieben an.</p>



<h3 class="wp-block-heading">Plugins und Erweiterungen</h3>



<p>Es gibt zahlreiche Erweiterungen für Eclipse. Teils proprietär, teils frei verwendbar bzw. <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a>. Primär verwendet man es als <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> IDE. Dabei kommen vor allem die in den <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Development Tools zusammengefassten Plugins zum Einsatz. Es existieren aber etliche Plugins für andere Sprachen, die ich bereits unter Editoren erwähnt habe. Hinzu kommt noch die Entwicklung von OSGi-Bundles. Dazu zählt vor allem das CDT-Projekt, welches C und C++ unterstützt und unter Anderem die GNU Compiler Collection sowie die LLVM (-Clang und -GCC) abdeckt. Darüber hinaus gibt es auch Plugins für Perl, PHP, ColdFusion, <a href="https://ceosbay.com/2022/12/19/erklaerung-ruby/" target="_blank" rel="noreferrer noopener">Ruby</a>, <a href="https://ceosbay.com/2022/12/20/erklaerung-python/" target="_blank" rel="noreferrer noopener">Python</a>, C#, Fortran, Ada2005, Scala usw. Diese kann man über ein Menü in Eclipse einbinden. Neben Plugins für konkrete Programmiersprachen gibt es auch solche, die allgemeine Entwicklungsprozesse unterstützen, wie beispielsweise Mylyn für „aufgabenorientierte Entwicklung“ oder Saros für Verteilte Paarprogrammierung auch Distributed Pair Programming, DPP oder Pair Programming, PP genannt. Oft sind diese Ergänzungen – anders als das Kernprogramm – ausschließlich in der englischen Sprache erhältlich.</p>



<p>Neben den <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a> Development Tools gibt es viele weitere Projekte, die man ebenfalls auf der Eclipse-Website koordiniert. Ein solches Projekt ist das Eclipse Tools Project, dass verschiedene Hilfsmittel entwickelt, die Entwickler erweitern können. Weitere Projekte sind das Eclipse Modeling <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> (EMF), das Graphical Editing <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> (GEF) und die eingestellte Eclipse Riena Platform (Riena). Mit EMF lässt sich ein Datenmodell erstellen, das zum Beispiel auf UML basieren kann. GEF ist ein Projekt, dass es Entwicklern erlaubt, mit Hilfe eines existierenden Datenmodells schnell einen grafischen Editor zu erstellen. Riena unterstützt Entwickler bei der Ausstattung einer Anwendung mit einem benutzerfreundlichen Interaktionskonzept und ansprechenden Oberflächenelementen.</p>



<p>Basierend auf diesen Erweiterungen und dem modularen Aufbau von Eclipse selbst, lassen sich für Projekte spezifische Eclipse-Bundles erstellen. Diese enthalten alle für ein bestimmtes Projekt notwendigen Teile und Erweiterungen von Eclipse, ohne mit unnötigen Teilen Hauptspeicher und Rechenleistung zu verbrauchen.</p>



<p>Inzwischen gibt es auch <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a>-Erweiterungen, die eine automatisierte Bereitstellung und Konfiguration erheblich erleichtern. Dazu zählen oasp4j-ide, Oomph und Yatta Profiles, von denen ich einige in zukünftigen Beiträgen thematisiere.</p>



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



<p>Durch den quelloffenen Ansatz und der kostenfreien Nutzungsmöglichkeit ist Eclipse neben <a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/" target="_blank" rel="noreferrer noopener">IntelliJ</a> eines der beliebteren IDEs. Man kann durch Plugins und Erweiterungen viele Programmiersprachen bedienen. Der Programmkern von Eclipse stellt in dem Zusammenhang die einzige versionsübergreifende Konstante dar. Jede Aktualisierung führt Neuerungen in den Kern ein und die integrierten Plugins bzw. Erweiterungen erfordern dadurch meist eine Anpassung an die neue Version.</p>



<p>Die grafische Oberfläche von Eclipse ist auf eine effiziente Arbeitsweise ausgerichtet. Der konzeptionelle Aufbau durch Views, Editoren und Perspektiven sorgt für eine anpassbare Optik und eine bequeme Arbeitsweise mit und in der IDE. Man kann sowohl die Funktionalitäten als auch die GUI von Eclipse durch die manuelle oder automatische Installation von Plugins bzw. Erweiterungen anpassen. Entsprechende Möglichkeiten finden sich in dem standardmäßig integrierten Market Place von Eclipse.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/">Eclipse &#8211; Die flexible Entwicklungsumgebung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/19/erklaerung-eclipse/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1190</post-id>	</item>
	</channel>
</rss>
