<?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>IDE Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/ide/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/ide/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Fri, 21 Feb 2025 08:39:57 +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>IDE Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/ide/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<item>
		<title>Generic Code Editors &#8211; Flexibel, Leicht &#038; Vielseitig</title>
		<link>https://ceosbay.com/2025/02/21/generic-code-editors-flexibel-leicht-vielseitig/</link>
					<comments>https://ceosbay.com/2025/02/21/generic-code-editors-flexibel-leicht-vielseitig/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Fri, 21 Feb 2025 08:39:33 +0000</pubDate>
				<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[RDF]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Softwareentwicklung]]></category>
		<category><![CDATA[Atom]]></category>
		<category><![CDATA[Autovervollständigung]]></category>
		<category><![CDATA[Backend]]></category>
		<category><![CDATA[Build-Tools]]></category>
		<category><![CDATA[Code-Analyse]]></category>
		<category><![CDATA[Code-Editor]]></category>
		<category><![CDATA[Coden]]></category>
		<category><![CDATA[Compiler]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Entwickler-Tools]]></category>
		<category><![CDATA[Entwicklungsumgebung]]></category>
		<category><![CDATA[Erweiterbarkeit]]></category>
		<category><![CDATA[Frontend]]></category>
		<category><![CDATA[GCE]]></category>
		<category><![CDATA[Generic Code Editor]]></category>
		<category><![CDATA[Git-Integration]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[leichtgewichtig]]></category>
		<category><![CDATA[Multi-Language-Support]]></category>
		<category><![CDATA[NeoVim]]></category>
		<category><![CDATA[Notepad++]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Plattformunabhängig]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Programmierung]]></category>
		<category><![CDATA[Projektmanagement]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[Scripting]]></category>
		<category><![CDATA[Software-Tools]]></category>
		<category><![CDATA[Sublime Text]]></category>
		<category><![CDATA[Syntax-Highlighting]]></category>
		<category><![CDATA[Terminal-Editor]]></category>
		<category><![CDATA[Versionskontrolle]]></category>
		<category><![CDATA[Vim]]></category>
		<category><![CDATA[VS Code]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=5108</guid>

					<description><![CDATA[<p>In der Welt der Softwareentwicklung gibt es zahlreiche Tools zur Code-Bearbeitung. Während einige als Generic Code Editors (GCEs) gelten, gehören andere zu vollständigen IDEs (Integrated Development Environments). Doch was genau macht einen Generic Code Editor &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2025/02/21/generic-code-editors-flexibel-leicht-vielseitig/">Generic Code Editors &#8211; Flexibel, Leicht &amp; Vielseitig</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In der Welt der Softwareentwicklung gibt es zahlreiche Tools zur Code-Bearbeitung. Während einige als <strong>Generic Code Editors (GCEs)</strong> gelten, gehören andere zu vollständigen <strong><a href="https://ceosbay.com/category/ide/">IDEs</a> (<a href="https://ceosbay.com/category/ide/">Integrated Development Environments</a>)</strong>. Doch was genau macht einen Generic Code Editor aus, und welche Tools fallen nicht in diese Kategorie?</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="871" height="871" src="https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/02/GCEs.jpg?resize=871%2C871&#038;ssl=1" alt="GCEs" class="wp-image-5162" srcset="https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/02/GCEs.jpg?w=1024&amp;ssl=1 1024w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/02/GCEs.jpg?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/02/GCEs.jpg?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/ceosbay.com/wp-content/uploads/2025/02/GCEs.jpg?resize=768%2C768&amp;ssl=1 768w" sizes="(max-width: 871px) 100vw, 871px" /></figure>



<h3 class="wp-block-heading"><strong>Was ist ein Generic Code Editor (GCE)?</strong></h3>



<p>Ein Generic Code Editor ist ein universeller Code-Editor, der eine Vielzahl von Programmiersprachen unterstützt, ohne sich auf eine bestimmte Umgebung oder Sprache zu spezialisieren. Seine Hauptmerkmale sind:</p>



<ul class="wp-block-list">
<li><strong>Syntax-Highlighting</strong> für verschiedene Sprachen</li>



<li><strong>Autovervollständigung</strong> für besseren Workflow</li>



<li><strong>Erweiterbarkeit durch Plugins</strong></li>



<li><strong>Plattformunabhängigkeit</strong> für eine flexible Nutzung</li>



<li><strong>Leichtgewichtige Performance</strong>, ohne eine komplexe Projektverwaltung</li>
</ul>



<p>Ein Generic Code Editor ist <strong>kein vollständiges Entwicklungswerkzeug</strong>, sondern ein flexibler Editor zur Bearbeitung von Code in mehreren Sprachen. Er eignet sich besonders für schnelle Änderungen an Code-Dateien, Skripte oder für Entwickler, die in mehreren Programmiersprachen arbeiten.</p>



<h3 class="wp-block-heading"><strong>Vorteile eines Generic Code Editors</strong></h3>



<ol class="wp-block-list">
<li><strong>Flexibilität</strong> – Unterstützt verschiedene Sprachen ohne spezielle Anpassungen.</li>



<li><strong>Leichtgewichtigkeit</strong> – Schneller Start und geringe Systemanforderungen.</li>



<li><strong>Erweiterbarkeit</strong> – Plugins und Erweiterungen können individuell hinzugefügt werden.</li>



<li><strong>Plattformunabhängig</strong> – Funktioniert auf <a href="https://ceosbay.com/category/technologie/betriebssystem/windows/">Windows</a>, <a href="https://ceosbay.com/2023/10/05/macos-intuitiv-sicher-nahtlos/">macOS</a> und <a href="https://ceosbay.com/2022/11/22/erklaerung-linux/">Linux</a>.</li>



<li><strong>Kein Overhead</strong> – Keine komplexen Projektkonfigurationen notwendig.</li>
</ol>



<h3 class="wp-block-heading"><strong>Bekannte Generic Code Editors</strong></h3>



<ul class="wp-block-list">
<li><strong>Visual Studio Code (VS Code)</strong> – Sehr populär mit einer großen Erweiterungsbibliothek. (Siehe auch meinen Beitrag &#8222;<a href="https://ceosbay.com/2023/02/22/visual-studio-code-der-leichte-schwergewicht/">Visual Studio Code – Das leichte Schwergewicht</a>&#8222;)</li>



<li><strong>Atom</strong> – Open-Source-Editor von GitHub (War eines meiner Lieblingseditoren, wird allerdings nicht mehr aktiv weiterentwickelt).</li>



<li><strong>Sublime Text</strong> – Leichtgewichtig, schnell und mit guter Plugin-Unterstützung. (Aktuell eines meiner Lieblingseditoren auf <a href="https://ceosbay.com/2023/10/05/macos-intuitiv-sicher-nahtlos/">macOS</a>)</li>



<li><strong>Notepad++</strong> – Einfacher, schneller Editor mit grundlegenden Funktionen. (Aktuell eines meiner Lieblingseditoren auf <a href="https://ceosbay.com/category/technologie/betriebssystem/windows/">Windows</a>)</li>



<li><strong>Vim/NeoVim</strong> – Terminal-basierter Editor mit hoher Anpassbarkeit. (Aktuell eines meiner Lieblingseditoren auf <a href="https://ceosbay.com/category/technologie/betriebssystem/windows/"><a href="https://ceosbay.com/2022/11/22/erklaerung-linux/">Linux</a></a>-Systemen wie <a href="https://ceosbay.com/2022/12/31/erklaerung-kali-linux/">KALI</a>, <a href="https://ceosbay.com/2022/12/05/erklaerung-debian-linux/">Debian</a> und <a href="https://ceosbay.com/2022/12/04/erklaerung-ubuntu-linux/">Ubuntu</a>)</li>
</ul>



<h3 class="wp-block-heading"><strong>Vergleich: GCE vs. IDE</strong></h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Eigenschaft</th><th>Generic Code Editor</th><th>IDE (z.B. <a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/">IntelliJ</a>, Visual Studio)</th></tr></thead><tbody><tr><td><strong>Leichtgewichtig</strong></td><td>✅ Ja</td><td>❌ Nein</td></tr><tr><td><strong>Syntax-Highlighting</strong></td><td>✅ Ja</td><td>✅ Ja</td></tr><tr><td><strong>Autovervollständigung</strong></td><td>✅ Ja</td><td>✅ Ja</td></tr><tr><td><strong>Debugger integriert</strong></td><td>❌ Nein</td><td>✅ Ja</td></tr><tr><td><strong>Projektmanagement</strong></td><td>❌ Nein</td><td>✅ Ja</td></tr><tr><td><strong>Integrierter Compiler</strong></td><td>❌ Nein</td><td>✅ Ja</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><strong>Was zählt nicht als Generic Code Editor?</strong></h3>



<p>Einige Entwicklungsumgebungen unterstützen zwar mehrere Sprachen, sind aber keine GCEs, weil sie <strong>mehr als nur reine Code-Bearbeitung bieten</strong>. Dazu gehören:</p>



<h4 class="wp-block-heading"><strong>1. IntelliJ IDEA</strong> – Die Power-IDE für Java &amp; Co.</h4>



<p>IntelliJ IDEA von JetBrains ist primär für <strong>Java und Kotlin</strong> entwickelt, unterstützt jedoch durch Plugins viele weitere Sprachen. Es bietet:</p>



<ul class="wp-block-list">
<li><strong>Automatisches Refactoring</strong> für sauberen Code</li>



<li><strong>Integrierten Debugger</strong> zur Fehleranalyse</li>



<li><strong>Projektmanagement mit Build-Tools</strong> (<a href="https://ceosbay.com/2022/12/22/erklaerung-maven/">Maven</a>, Gradle)</li>



<li><strong>Intelligente Code-Analyse</strong> zur Fehlererkennung</li>



<li><strong>Version Control (Git, SVN)</strong> direkt integriert</li>
</ul>



<h4 class="wp-block-heading"><strong>2. Visual Studio</strong> – Microsofts leistungsstarke Entwicklungsumgebung</h4>



<p>Visual Studio ist besonders für <strong>.NET- und <a href="https://ceosbay.com/2023/04/19/c-als-bruecke-zwischen-innovation-und-benutzererfahrung/">C#</a>-Entwicklung</strong> optimiert, unterstützt aber auch <a href="https://ceosbay.com/2023/02/25/erklaerung-c/">C++</a>, <a href="https://ceosbay.com/2022/12/20/erklaerung-python/">Python</a> und andere Sprachen. Seine Merkmale umfassen:</p>



<ul class="wp-block-list">
<li><strong>Integrierte Compiler &amp; <a href="https://ceosbay.com/2023/10/12/debugging-die-kunst-der-fehlerbehebung-und-optimierung/">Debugging</a>-Tools</strong></li>



<li><strong>Automatische Code-Generierung &amp; <a href="https://ceosbay.com/2023/04/02/erklaerung-kuenstliche-intelligenz/">AI</a>-gestützte Features</strong></li>



<li><strong>GUI-Designer für App-Entwicklung</strong></li>



<li><strong>Umfassendes Projektmanagement</strong> mit Solution Explorer</li>
</ul>



<h3 class="wp-block-heading"><strong>Was ist mit Visual Studio Code?</strong></h3>



<p>Eine interessante Ausnahme ist <strong><a href="https://ceosbay.com/2023/02/22/visual-studio-code-der-leichte-schwergewicht/">Visual Studio Code</a> (<a href="https://ceosbay.com/2023/02/22/visual-studio-code-der-leichte-schwergewicht/">VS Code</a>)</strong>. Es ist leichter als Visual Studio, unterstützt viele Sprachen und wird oft als <strong>Generic Code Editor</strong> genutzt. Durch Erweiterungen kann es jedoch zu einer fast vollständigen <a href="https://ceosbay.com/category/ide/">IDE</a> ausgebaut werden.</p>



<h3 class="wp-block-heading"><strong>Wann solltest du einen GCE statt einer IDE nutzen?</strong></h3>



<p>Ein Generic Code Editor eignet sich besonders, wenn du:</p>



<ul class="wp-block-list">
<li><strong>Mit vielen verschiedenen Programmiersprachen arbeitest</strong> und schnelle Bearbeitung benötigst.</li>



<li><strong>Kein vollständiges Projektmanagement brauchst</strong>, sondern nur einzelne Dateien editieren möchtest.</li>



<li><strong>Leichtgewichtige Tools bevorzugst</strong>, die nicht viele Ressourcen verbrauchen.</li>



<li><strong>Oft in Terminal- oder Cloud-Umgebungen arbeitest</strong> und keinen GUI-basierten Editor benötigst.</li>
</ul>



<h3 class="wp-block-heading"><strong>Fazit: GCE oder IDE?</strong></h3>



<p>Ein <strong>echter Generic Code Editor</strong> ist leichtgewichtig, universell und nicht an eine bestimmte Sprache oder Umgebung gebunden. <strong>IntelliJ IDEA und Visual Studio</strong> hingegen sind <strong>vollständige IDEs</strong> mit Debugging- und Projektmanagement-Funktionen, die über die Eigenschaften eines GCE hinausgehen.</p>



<p>Wenn du also nach einem leistungsstarken Entwicklungswerkzeug mit Debugging und Projektmanagement suchst, sind <strong><a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/">IntelliJ IDEA</a> oder Visual Studio</strong> großartige Optionen. Falls du hingegen einen flexiblen, leichtgewichtigen Editor für mehrere Sprachen möchtest, sind <strong><a href="https://ceosbay.com/2023/02/22/visual-studio-code-der-leichte-schwergewicht/">VS Code</a>, Sublime Text oder Vim</strong> die bessere Wahl.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2025/02/21/generic-code-editors-flexibel-leicht-vielseitig/">Generic Code Editors &#8211; Flexibel, Leicht &amp; Vielseitig</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2025/02/21/generic-code-editors-flexibel-leicht-vielseitig/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">5108</post-id>	</item>
		<item>
		<title>Xcode &#8211; Wo Ideen zu Apple-Apps werden</title>
		<link>https://ceosbay.com/2023/09/26/xcode-wo-ideen-zu-apple-apps-werden/</link>
					<comments>https://ceosbay.com/2023/09/26/xcode-wo-ideen-zu-apple-apps-werden/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 26 Sep 2023 14:18:00 +0000</pubDate>
				<category><![CDATA[Betriebssystem]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Softwarequalität]]></category>
		<category><![CDATA[Spieleentwicklung]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Testautomatisierung]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[API-Integration]]></category>
		<category><![CDATA[App Lifecycle]]></category>
		<category><![CDATA[App-Design]]></category>
		<category><![CDATA[App-Entwicklung]]></category>
		<category><![CDATA[App-Store-Veröffentlichung]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Apple-Geräte]]></category>
		<category><![CDATA[ARKit]]></category>
		<category><![CDATA[Asset-Management]]></category>
		<category><![CDATA[Auto Layout]]></category>
		<category><![CDATA[Betas]]></category>
		<category><![CDATA[Build-System]]></category>
		<category><![CDATA[Code Templates]]></category>
		<category><![CDATA[Code-Editor]]></category>
		<category><![CDATA[Code-Optimierung]]></category>
		<category><![CDATA[Code-Refactoring]]></category>
		<category><![CDATA[Code-Signatur]]></category>
		<category><![CDATA[Compiler]]></category>
		<category><![CDATA[Continuous Integration]]></category>
		<category><![CDATA[Core Data]]></category>
		<category><![CDATA[Dark Mode]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Extensions]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Gesten-Erkennung]]></category>
		<category><![CDATA[Instruments]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interface Builder]]></category>
		<category><![CDATA[Interface Gestaltung]]></category>
		<category><![CDATA[Interface-Design]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Mac Catalyst]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Memory-Management]]></category>
		<category><![CDATA[Metal]]></category>
		<category><![CDATA[Mobile Development]]></category>
		<category><![CDATA[Multithreading]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Performance-Testing]]></category>
		<category><![CDATA[Playgrounds]]></category>
		<category><![CDATA[Profiling]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[RealityKit]]></category>
		<category><![CDATA[Simulator]]></category>
		<category><![CDATA[Source Control]]></category>
		<category><![CDATA[SWIFT]]></category>
		<category><![CDATA[SwiftUI]]></category>
		<category><![CDATA[Toolkit]]></category>
		<category><![CDATA[tvOS]]></category>
		<category><![CDATA[VoiceOver]]></category>
		<category><![CDATA[WatchOS]]></category>
		<category><![CDATA[XCode]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=2524</guid>

					<description><![CDATA[<p>Xcode, das offizielle Entwicklungs-Toolkit von Apple, bietet alles, was Entwickler benötigen, um Apps für Mac, iPhone, iPad, Apple Watch und Apple TV zu erstellen. In diesem Beitrag biete ich einen umfassenden Einblick in Xcode. Die &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/09/26/xcode-wo-ideen-zu-apple-apps-werden/">Xcode &#8211; Wo Ideen zu Apple-Apps werden</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Xcode, das offizielle Entwicklungs-Toolkit von Apple, bietet alles, was Entwickler benötigen, um Apps für Mac, iPhone, iPad, Apple Watch und Apple TV zu erstellen. In diesem Beitrag biete ich einen umfassenden Einblick in Xcode. Die Geschichte und wie man es optimal einrichtet und verwendet.</p>



<h2 class="wp-block-heading">Geschichte von Xcode</h2>



<p>Apple präsentierte es erstmals im Jahr 2003. Es diente als Nachfolger der NeXTSTEP-Entwicklungstools, die Apple durch den Kauf von NeXT im Jahr 1997 erwarb. Es hat seinen Ursprung im Bestreben von Apple, den Entwicklern eine effiziente und intuitive Umgebung zu bieten, in der sie qualitativ hochwertige Apps für die wachsende Palette von Apple-Produkten erstellen können.</p>



<h2 class="wp-block-heading">Aufsetzen von Xcode</h2>



<p>Das Installieren und Einrichten gestaltet sich denkbar einfach:</p>



<ol class="wp-block-list">
<li><strong>Download und Installation</strong>: Xcode steht im Mac App Store zur Verfügung. Ein einfacher Suchbegriff danach führt direkt zum Download-Button.</li>



<li><strong>Erstes Öffnen</strong>: Nach der Installation das Programm starten. Hier kann man ein neues Projekt erstellen oder ein bestehendes öffnen.</li>



<li><strong>Wichtige Einstellungen</strong>: In den Einstellungen lassen sich viele individuelle Anpassungen vornehmen, etwa die Auswahl eines Themes oder die Konfiguration der Texteditor-Eigenschaften.</li>
</ol>



<h2 class="wp-block-heading">Best Practices bei der Nutzung von Xcode</h2>



<p>Um das Beste herauszuholen, empfehlen sich folgende Praktiken:</p>



<ul class="wp-block-list">
<li><strong>Regelmäßige Aktualisierungen</strong>: Apple veröffentlicht regelmäßig Updates. Diese bringen oft neue Funktionen, Bugfixes und Performance-Verbesserungen mit sich. (An dieser Stelle macht es Sinn, meinen Beitrag über das <a href="https://ceosbay.com/2023/07/15/pestizid-paradoxon-resistenz-von-bugs-und-fehlern/">Pestizid Paradoxon</a> zu erwähnen)</li>



<li><strong>Nutzung der Interface Builder</strong>: Dieses visuelle Tool ermöglicht das einfache Design von Benutzeroberflächen per Drag-and-Drop.</li>



<li><strong>Effektive Nutzung von Simulatoren</strong>: Es bietet Simulatoren für alle Apple-Geräte. Sie sind unerlässlich für das Testen von Apps unter verschiedenen Bedingungen und Bildschirmgrößen.</li>



<li><strong>Verwendung von Profiling-Tools</strong>: Instruments, ein in Xcode integriertes Tool, hilft dabei, Engpässe in der App-Performance zu identifizieren und zu beheben.</li>
</ul>



<h2 class="wp-block-heading">ARKit &#8211; Eine Revolution in der Augmented Reality</h2>



<p>ARKit, von Apple entwickelt und in iOS eingeführt, markiert einen Wendepunkt in der Welt der Augmented Reality (AR). Dieses Framework ermöglicht Entwicklern das Erstellen von beeindruckenden AR-Erlebnissen für iPhone und iPad. ARKit nutzt dabei hochentwickelte Algorithmen, um die Kamera-Bildinformationen und Bewegungssensordaten zu kombinieren und so die Position des Geräts in der realen Welt zu verfolgen. Es unterstützt auch die Erkennung von horizontalen und vertikalen Flächen, Gesichtserkennung und 3D-Objekterkennung. Mit jedem Update erweitert Apple die Fähigkeiten von ARKit, wodurch Entwickler noch tiefere und immersivere AR-Erfahrungen schaffen können. Egal, ob es um virtuelle Möbelplatzierung, interaktive Spiele oder Lernanwendungen geht, ARKit treibt die Möglichkeiten der Augmented Reality auf Apple-Geräten voran.</p>



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



<p>Xcode steht im Zentrum der Apple-Entwicklungswelt. Von seinen Anfängen im Jahr 2003 bis heute hat es sich stetig weiterentwickelt und bietet Entwicklern eine leistungsstarke Umgebung, um erstklassige Apps zu erstellen. Durch die Beachtung von Best Practices und eine effektive Nutzung der in Xcode integrierten Tools können Entwickler ihre Produktivität steigern und qualitativ hochwertige Produkte liefern. In den kommenden Wochen habe ich auf jeden Fall noch vor, die ein oder andere kleine App vorzustellen. In diesem Kontext bietet es sich auch an, den Workflow anzuschauen, wie man effektiv Apps in und mit Xcode erstellen kann.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/09/26/xcode-wo-ideen-zu-apple-apps-werden/">Xcode &#8211; Wo Ideen zu Apple-Apps werden</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/09/26/xcode-wo-ideen-zu-apple-apps-werden/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2524</post-id>	</item>
		<item>
		<title>JAXB-2 (Maven Plugin) &#8211; XML in Möglichkeiten verwandeln</title>
		<link>https://ceosbay.com/2023/07/12/jaxb-2-maven-plugin-xml-in-moeglichkeiten-verwandeln/</link>
					<comments>https://ceosbay.com/2023/07/12/jaxb-2-maven-plugin-xml-in-moeglichkeiten-verwandeln/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 12 Jul 2023 19:57:35 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Build-Prozess]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Java Architecture for XML Binding]]></category>
		<category><![CDATA[JAXB-2 Maven Plugin]]></category>
		<category><![CDATA[Maven]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1862</guid>

					<description><![CDATA[<p>In der heutigen IT-Welt sind XML-Dateien und deren Verarbeitung ein fester Bestandteil vieler Projekte. Java Architecture for XML Binding (JAXB) ist hierbei ein bedeutendes Werkzeug. Doch wie bindet man JAXB in ein Maven-Projekt ein? Mit &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/07/12/jaxb-2-maven-plugin-xml-in-moeglichkeiten-verwandeln/">JAXB-2 (Maven Plugin) &#8211; XML in Möglichkeiten verwandeln</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In der heutigen IT-Welt sind <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/">XML</a>-Dateien und deren Verarbeitung ein fester Bestandteil vieler Projekte. <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a> Architecture for <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/">XML</a> Binding (JAXB) ist hierbei ein bedeutendes Werkzeug. Doch wie bindet man JAXB in ein <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/">Maven</a>-Projekt ein? Mit dem JAXB-2 <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/">Maven</a> Plugin! Dieser Blog-Artikel bietet eine Anleitung, wie man es als <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/">Maven</a> Plugin nutzen kann. An dieser Stelle sei auch der Beitrag über <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/">Maven</a> empfohlen.</p>



<h2 class="wp-block-heading">Was ist JAXB-2?</h2>



<p>JAXB-2 ist ein leistungsfähiges Tool, das <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a>-Entwicklern dabei hilft, XML-Schemata in <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a>-Klassen umzuwandeln und umgekehrt. Es basiert auf der JAXB-API und man verwendet es hauptsächlich für das Parsen, Validieren, Marshallen und Unmarshallen von XML-Dokumenten.</p>



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



<p>JAXB, einschließlich seiner Version 2, ist ein Teil der <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a>-Plattform, Standard Edition (<a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a> SE). Es entstand aus dem Bedürfnis, eine standardisierte Methode für das Binden von <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/">XML</a>-Schemata an <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a>-Objekte bereitzustellen. Dies ist eine häufige Anforderung für viele Java-Anwendungen, da <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/">XML</a> eine weit verbreitete Technologie für den Datenaustausch zwischen Systemen und Anwendungen ist.</p>



<p>Im Detail ist JAXB ein vom <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a> Community Process (JCP) spezifiziertes <a href="https://ceosbay.com/2023/04/20/api-nahtlose-verbindungen-fuer-innovationen/">API</a> und wurde ursprünglich als Teil der <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a> Web Services Development Pack (JWSDP) eingeführt. JAXB 2.0, veröffentlicht im Jahr 2006, stellte eine wichtige Weiterentwicklung dar, die den Benutzern zusätzliche Flexibilität und Leistung bot. Es erlaubte unter anderem die Nutzung von generischen Sammlungstypen, erweiterte Anpassungen und verbesserte Validierungsmöglichkeiten.</p>



<p>Insgesamt ist JAXB-2 aus der Notwendigkeit entstanden, eine effiziente und standardisierte Methode für die Interaktion zwischen <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a> und <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/">XML</a> bereitzustellen, die weitgehend unabhängig von den spezifischen Anforderungen einer Anwendung ist.</p>



<h2 class="wp-block-heading">Vorteile als Maven Plugin</h2>



<p>Das JAXB-2 <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/">Maven</a> Plugin bietet eine nahtlose Integration mit <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/">Maven</a>, wodurch Entwickler die Möglichkeit erhalten, ihre <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/">XML</a>-zu-<a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a> Bindungen direkt in ihre Build-Prozesse zu integrieren. Darüber hinaus unterstützt das Plugin die neuesten JAXB-Versionen und bietet mehrere Erweiterungen, um eine erweiterte Kontrolle über die Generierung von <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a>-Klassen zu ermöglichen.</p>



<h2 class="wp-block-heading">Einrichten des Maven Plugins</h2>



<p>Um das JAXB-2 <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/">Maven</a> Plugin zu verwenden, muss man es zuerst in einer <code>pom.xml</code>-Datei konfigurieren. Hier ist ein Beispiel für eine Grundkonfiguration:</p>



<pre class="wp-block-code"><code>&lt;project>
...
    &lt;build>
        &lt;plugins>
            &lt;plugin>
                &lt;groupId>org.ceosbay.yoyo&lt;/groupId>
                &lt;artifactId>jaxb2-maven-plugin&lt;/artifactId>
                &lt;version>2.5.0&lt;/version>
                &lt;executions>
                    &lt;execution>
                        &lt;id>xjc&lt;/id>
                        &lt;goals>
                            &lt;goal>xjc&lt;/goal>
                        &lt;/goals>
                    &lt;/execution>
                &lt;/executions>
                &lt;configuration>
                    &lt;schemaDirectory>${project.basedir}/src/main/resources/schema&lt;/schemaDirectory>
                    &lt;outputDirectory>${project.basedir}/src/main/java&lt;/outputDirectory>
                    &lt;clearOutputDir>false&lt;/clearOutputDir>
                &lt;/configuration>
            &lt;/plugin>
        &lt;/plugins>
    &lt;/build>
...
&lt;/project>
</code></pre>



<h2 class="wp-block-heading">Das Maven Plugin in Aktion</h2>



<p>Nachdem man das JAXB-2 <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/">Maven</a> Plugin konfiguriert hat, wird <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/">Maven</a> automatisch die <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a>-Klassen aus den in <code>&lt;schemaDirectory></code> angegebenen <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/">XML</a>-Schemas generieren, wann immer man das Projekt baut. Diese Klassen werden im durch <code>&lt;outputDirectory></code> definierten Verzeichnis gespeichert.</p>



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



<p>Das JAXB-2 <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/">Maven</a> Plugin ist ein effektives Werkzeug zur Integration von <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/">XML</a>-Bindungen in <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a>-Projekte. Mit seiner Hilfe kann man Projekte effizienter gestalten und den Build-Prozess weiter automatisieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/07/12/jaxb-2-maven-plugin-xml-in-moeglichkeiten-verwandeln/">JAXB-2 (Maven Plugin) &#8211; XML in Möglichkeiten verwandeln</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/07/12/jaxb-2-maven-plugin-xml-in-moeglichkeiten-verwandeln/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1862</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>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>
		<item>
		<title>JUnit &#8211; Framework für automatisierte Tests und Qualitätssicherung</title>
		<link>https://ceosbay.com/2023/03/18/erklaerung-junit/</link>
					<comments>https://ceosbay.com/2023/03/18/erklaerung-junit/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sat, 18 Mar 2023 20:41:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Bytecode]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Coverage]]></category>
		<category><![CDATA[DBUnit]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[EE5]]></category>
		<category><![CDATA[Error]]></category>
		<category><![CDATA[Erweiterung]]></category>
		<category><![CDATA[Exception]]></category>
		<category><![CDATA[Failure]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[J2EEUnit]]></category>
		<category><![CDATA[JAR]]></category>
		<category><![CDATA[JUnit]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Qualität]]></category>
		<category><![CDATA[Qualitätssicherung]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Unit]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1073</guid>

					<description><![CDATA[<p>JUnit ist ein Unit-Testing-Framework für die Programmiersprache Java. JUnit spielt eine wichtige Rolle bei der Entwicklung der testgesteuerten Entwicklung und gehört zu der Familie von Unit-Test-Frameworks, die zusammen als xUnit bekannt sind und ihren Ursprung &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/18/erklaerung-junit/">JUnit &#8211; Framework für automatisierte Tests und Qualitätssicherung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>JUnit ist ein Unit-Testing-Framework für die Programmiersprache Java. JUnit spielt eine wichtige Rolle bei der Entwicklung der testgesteuerten Entwicklung und gehört zu der Familie von Unit-Test-Frameworks, die zusammen als xUnit bekannt sind und ihren Ursprung in SUnit haben.</p>



<p>JUnit wird zur Kompilierzeit als JAR gelinkt. Bei einem JAR handelt es sich um ein Java Archiv (umgangssprachlich wegen der Dateiendung auch JAR-Datei genannt) dient der Gliederung, Verteilung und Bereitstellung von Klassenbibliotheken und ausführbaren Programmen, die in der Programmiersprache Java erstellt wurden. Technisch ist es eine komprimierte Datei im ZIP-Format. Das Archiv enthält kompilierte Java-Klassen (Bytecode) und ggf. weitere Ressourcen. In der Regel umfasst es auch eine oder mehrere Dateien mit Metadaten. Diese haben fest vorgegebene Namen und Strukturen und liegen im Verzeichnis META-INF. Wie es genau funktioniert, schreibe ich in einem zukünftigen Beitrag. Auf jeden Fall kann man sich die Kurzbezeichnung des Archivs als Wortspiel mit dem englischen Wort jar (deutsch: „Gefäß“) ganz gut merken.</p>



<p>Die neueste Version des Frameworks, JUnit 5, befindet sich im Paket org.junit.jupiter. Die Vorgängerversionen JUnit 4 und JUnit 3 waren unter den Paketen org.junit bzw. junit.framework zu finden.</p>



<p>Eine im Jahr 2013 durchgeführte Umfrage unter 10.000 auf GitHub gehosteten Java-Projekten ergab, dass JUnit (gleichauf mit slf4j-api) die am häufigsten eingebundene externe Bibliothek ist. Jede Bibliothek wurde von 30,7 % der Projekte verwendet.</p>



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



<p>Ein JUnit-Test kennt nur zwei Ergebnisse: Entweder der Test gelingt (dann ist dieser „grün“) oder er misslingt (dann ist dieser „rot“). Das Misslingen kann als Ursache einen Fehler (Error) oder ein falsches Ergebnis (Failure) haben. Beides signalisiert via Exception (Eine Ausnahmesituation, normalerweise durch Fehler hervorgerufen). Der Unterschied zwischen den beiden Begriffen liegt darin, dass man Failures erwartet, während Errors eher unerwartet auftreten.&nbsp;</p>



<p>Technisch betrachtet, sind Failures mittels einer speziellen Exception namens AssertionFailedError gekennzeichnet. Die Interpretation aller übrigen Exceptions erfolgen vom JUnit-Framework durch Errors.</p>



<h3 class="wp-block-heading">JUnit im Softwareentwicklungsprozess</h3>



<p>JUnit ist ein wichtiges Hilfsmittel im Extreme Programming und unterstützt in diesem Zusammenhang die Idee des Extreme Testing. Als Programmierer schreibt man zuerst einen automatisch wiederholbaren (JUnit-)Test und dann den zu testenden Code.</p>



<p>Der Test selbst ist ebenfalls ein Stück Software und ebenso wie der zu testende Code ist dafür die Programmierung notwendig.</p>



<p>Wenn man zu einem späteren Zeitpunkt den Code eines anderen Programmierers zum Ändern beabsichtigt, so ruft man zuerst alle JUnit-Tests auf, um sich zu vergewissern, dass der Code vor der Änderung fehlerfrei ist. Dann führt man die Änderung durch und ruft die JUnit-Tests erneut auf. Misslingen diese, so hat man die Erkenntnis, dass man selbst Fehler gemacht hat und muss diese korrigieren. Dieser Zyklus wiederholt sich so lange, bis alle JUnit-Tests wieder fehlerfrei durchlaufen.</p>



<p>Dieses Verfahren wird auch „testgetriebene Entwicklung“ (englisch test-driven software development) genannt und zählt zu den agilen Methoden. Die Idee dabei ist, fehlerarmen Code zu erzeugen, indem man nichts implementiert, was man nicht auch testet. Entstehen Testfälle erst nach der Entwicklung des Codes, so ist die Wahrscheinlichkeit höher, wichtige Testfälle zu übersehen. Doch darüber habe ich bereits hier einen Artikel geschrieben.</p>



<h3 class="wp-block-heading">Plugins und Erweiterungen für JUnit</h3>



<p>Eine Implementierung von JUnit für Jakarta EE ist Cactus (ehemals J2EEUnit) aus dem Jakarta-Projekt. Seit Java EE 5 haben sich sogenannte Out-of-container-Frameworks (zum Beispiel EJB3Unit) etabliert, die eine Ausführung von Tests außerhalb eines Containers erlauben.</p>



<p>Erweiterungen für JUnit dienen in der Regel für den Einsatz in spezifischen Bereichen (beispielsweise httpsUnit für Webentwicklung, DBUnit für Datenbankentwicklung). Darüber hinaus gibt es noch Plugins für Entwicklungsumgebungen, die den Einsatz innerhalb der Entwicklungsumgebung ermöglichen beziehungsweise erweitern (beispielsweise Infinitest für kontinuierliches Testen oder DJUnit für Berechnung der Code-Abdeckung, englisch Code Coverage, der Tests).</p>



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



<p>Bei der Testabdeckung geht es um das Verhältnis an tatsächlich getroffenen Aussagen eines Tests gegenüber den theoretisch möglich treffbaren Aussagen bzw. der Menge der gewünschten treffbaren Aussagen. Die Testabdeckung spielt als Metrik zur Qualitätssicherung und zur Steigerung der Qualität insbesondere im Maschinenbau und der Softwaretechnik eine große Rolle.</p>



<p>Die Testabdeckung lässt sich durch eine Erhöhung der Zahl an Messungen, Stichproben und Testfällen verbessern. Begrenzt wird die Testabdeckung in der Praxis jedoch durch die Kosten, die mit jedem Test verbunden sind. Doch dies ist ein komplexes Thema, welches ich gerne in einem separaten Beitrag thematisiere.</p>



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



<p>JUnit ist ein einfach zu benutzendes und leichtgewichtiges Framework für die Entwicklung von Softwaretests. Eine Integration in verschiedene IDE’s ist möglich. Dies thematisiere ich aber in den Artikeln zu den einzelnen IDE’s. Diese verlinke ich dann selbstverständlich auch hier. Die Ausführung einzelner Tests oder kompletter Testsuiten ist im Entwicklungsprozess jederzeit möglich. Nur das Programmieren der Tests kann man damit naturgemäß nicht leisten. Jedoch ist die Einstiegshürde für einen relativ guten Entwickler minimal. Es ist dabei sehr zu empfehlen, möglichst frühzeitig mit der Erstellung von Tests zu beginnen! In der Literatur beginnt die Erstellung der Tests, besonders im agilen Umfeld. Zeitgleich mit der Entwicklung selbst. Sie sind der wichtigste Bestandteil der Qualitätssicherung. Insbesondere spätere Änderungen an der Software im Rahmen funktionaler Erweiterungen oder eines <a href="https://ceosbay.com/2023/04/10/erklaerung-refactoring/">Refactorings</a> sind ohne vorhandene <a href="https://ceosbay.com/2023/10/20/regressionstest-qualitaet-zaehlt-sicherheit-garantiert/">Regressionstests</a> oftmals gar nicht durchführbar.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/18/erklaerung-junit/">JUnit &#8211; Framework für automatisierte Tests und Qualitätssicherung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/18/erklaerung-junit/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1073</post-id>	</item>
		<item>
		<title>IntelliJ IDEA &#8211; Die intelligente und leistungsstarke Entwicklungsumgebung</title>
		<link>https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/</link>
					<comments>https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Fri, 10 Mar 2023 18:34:56 +0000</pubDate>
				<category><![CDATA[Big-Data]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Cython]]></category>
		<category><![CDATA[Dart]]></category>
		<category><![CDATA[Enterprise]]></category>
		<category><![CDATA[Entwicklungsumgebung]]></category>
		<category><![CDATA[Export]]></category>
		<category><![CDATA[Fehler]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Groovy]]></category>
		<category><![CDATA[Haml]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[IDEA]]></category>
		<category><![CDATA[Import]]></category>
		<category><![CDATA[Intelli]]></category>
		<category><![CDATA[IntelliJ]]></category>
		<category><![CDATA[J]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Kotlin]]></category>
		<category><![CDATA[Layout]]></category>
		<category><![CDATA[Less]]></category>
		<category><![CDATA[Manager]]></category>
		<category><![CDATA[Markdown]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Python and Jython]]></category>
		<category><![CDATA[Ruby and JRuby]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[Sass]]></category>
		<category><![CDATA[Scala]]></category>
		<category><![CDATA[SCSS]]></category>
		<category><![CDATA[Slim]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Testfall]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[TypeScript]]></category>
		<category><![CDATA[Ultimate]]></category>
		<category><![CDATA[Umfeld]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[xml]]></category>
		<category><![CDATA[XPath]]></category>
		<category><![CDATA[XSL]]></category>
		<category><![CDATA[YAML]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1084</guid>

					<description><![CDATA[<p>IntelliJ IDEA ist eine integrierte Entwicklungsumgebung (IDE) des Softwareunternehmens JetBrains. Es existieren derzeit zwei verschiedene Editionen. Zum einen die kostenpflichtige Ultimate Edition und die kostenfreie Community Edition. Features Im Wesentlichen unterscheiden sich die beiden Versionen &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/">IntelliJ IDEA &#8211; Die intelligente und leistungsstarke Entwicklungsumgebung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>IntelliJ IDEA ist eine integrierte Entwicklungsumgebung (IDE) des Softwareunternehmens JetBrains. Es existieren derzeit zwei verschiedene Editionen. Zum einen die kostenpflichtige Ultimate Edition und die kostenfreie Community Edition.</p>



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



<p>Im Wesentlichen unterscheiden sich die beiden Versionen im Funktionsumfang. Hierzu von der Ultimate Version unterstützte Sprachen: Java, Groovy, Kotlin, Scala, Python and Jython, Cython, <a href="https://ceosbay.com/2022/12/19/erklaerung-ruby/" target="_blank" rel="noreferrer noopener">Ruby</a> and JRuby, Rust, PHP, Go, Dart, SQL, HTML, XML, JSON, YAML, XSL, XPath, Markdown, <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>, TypeScript, CSS, Sass, SCSS, Less, Haml, Slim, Liquid</p>



<p>Wobei zu beachten ist, dass die Ultimate Edition von IntelliJ IDEA neben den nativ unterstützten Sprachen, einige der Sprachen lediglich durch den Einsatz von PlugIns unterstützt. In der Community Edition sind auch einige Sprachen gar nicht berücksichtigt. Eine explizite bzw. genaue Differenzierung möchte ich in diesem Beitrag nicht vornehmen. Also sind die Angaben bzgl. der Features mit Vorsicht zu genießen.</p>



<p>Auch ist zu beachten, dass lediglich die Ultimate Edition von IntelliJ IDEA die umfangreiche <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> Unterstützung mitbringt. Im Enterprise Umfeld sind diese in der Regel unabdingbar.</p>



<p>Auch bei den Build Tools gibt es Unterschiede. Besonders auffällig ist dabei die Tatsache, dass <a href="https://ceosbay.com/2022/11/11/node-js-mit-npm-auf-macos/" target="_blank" rel="noreferrer noopener">npm</a> zwar in der Ultimate Edition läuft, jedoch nicht in der Community Edition. Ich habe es auch in der Community Version zum Laufen gebracht. Dennoch ist dies mit Vorsicht zu genießen, da ich aufgrund von Fehlern dennoch auf die Ultimate Edition geswitched bin.</p>



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



<p>Auf die Funktionsfähigkeit bei der Versionskontrolle bzw. bei <a href="https://ceosbay.com/2022/11/30/erklaerung-cloud-computing/" target="_blank" rel="noreferrer noopener">Cloud</a>-basierten Diensten wie <a href="https://ceosbay.com/2022/11/18/erklaerung-git/" target="_blank" rel="noreferrer noopener">Git</a>, <a href="https://ceosbay.com/2022/11/19/erklaerung-github/" target="_blank" rel="noreferrer noopener">GitHub</a>, Subversion, Mercurial und Team Foundation Server kann man sich verlassen. Bei Perforce ist man zumindest in der Community Edition verlassen.</p>



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



<p>Während die Community Edition lediglich <a href="https://ceosbay.com/2022/10/28/laufzeitumgebung-fuer-softwareanwendungen-docker/" target="_blank" rel="noreferrer noopener">Docker</a> für das Deployment unterstützt sind es mit der Ultimate Edition <a href="https://ceosbay.com/2022/12/24/erklaerung-kubernetes/" target="_blank" rel="noreferrer noopener">Kubernetes</a>, Java Applications Servers als auch <a href="https://ceosbay.com/2022/10/28/laufzeitumgebung-fuer-softwareanwendungen-docker/" target="_blank" rel="noreferrer noopener">Docker</a>.</p>



<h3 class="wp-block-heading">Codevervollständigung</h3>



<p>Die Codevervollständigung ist eine Funktion, die vor allem Programmieranfängern sehr entgegenkommt. Nur wenige werden als Coder geboren, oder!? Da vergisst man schon mal schnell eine import-Anweisung, IDEA aber nicht. Meistens weist IntelliJ einen auf den Fehler hin und schlägt Korrekuren vor. Dies gilt auch für nicht verwendete Importe, die IntelliJ entsprechend einer manuellen Zustimmung entsorgt.</p>



<p>Es nimmt einem den Grossteil der Tipparbeit ab, damit man sich dem Programmdesign widmen kann und nicht über korrekt formulierte JAVA-Anweisungen nachdenken muss. Ich muss gestehen, dass ich mich bisher noch nicht wirklich mit JAVA auseinandergesetzt habe. Doch dies hole ich derzeit nach und auch darüber gibt es in der nahen Zukunft einen Beitrag.</p>



<h3 class="wp-block-heading">Code Layout Manager</h3>



<p>Den Code Layout Manager weiß man spätestens dann zu schätzen, wenn man im eigenen Quelltext nicht mehr durchblickt oder fremden Quelltext bearbeiten muss. Dann kann man Text markieren und von IDEA neu formatieren lassen. Dies geht relativ intelligent von statten.</p>



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



<p>Auch die Refactoringfähigkeiten von IntelliJ sind nicht zu unterschätzen. Wer die Funktionen einmal in Aktion erlebt hat, der möchte sie nicht mehr missen. Dazu gehören u.A. das Renaming, Move, Introduce Explaining Variable, Extract Method usw.</p>



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



<p>Ich arbeite noch nicht lange mit dem Programm. Doch IntelliJ hat scheinbar in enger Kooperation mit den Anwendern ein relativ gutes Produkt entwickelt, mit dem man gut im Enterprise Umfeld arbeiten kann. Besonders die große PlugIn Bibliothek als auch die individuelle Erweiterbarkeit durch eine offen gelegte API haben mir persönlich sehr gefallen. Dadurch ist es auch möglich eigene PlugIns für IntelliJ zu schreiben und diese zu selbst zu implementieren.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/">IntelliJ IDEA &#8211; Die intelligente und leistungsstarke Entwicklungsumgebung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1084</post-id>	</item>
		<item>
		<title>Visual Studio Code &#8211; Das leichte Schwergewicht</title>
		<link>https://ceosbay.com/2023/02/22/visual-studio-code-der-leichte-schwergewicht/</link>
					<comments>https://ceosbay.com/2023/02/22/visual-studio-code-der-leichte-schwergewicht/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 22 Feb 2023 20:30:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Betriebssystem]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[Angular]]></category>
		<category><![CDATA[Anpassung]]></category>
		<category><![CDATA[Arbeitsbereiche]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Clean]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Coder]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Core]]></category>
		<category><![CDATA[Cross]]></category>
		<category><![CDATA[Debugging]]></category>
		<category><![CDATA[Definition]]></category>
		<category><![CDATA[Django]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Editor]]></category>
		<category><![CDATA[Erweiterbarkeit]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Frameworks]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[GitHub]]></category>
		<category><![CDATA[Go]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Intelli]]></category>
		<category><![CDATA[IntelliJ]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[live]]></category>
		<category><![CDATA[Live Share]]></category>
		<category><![CDATA[Multifunktionsfenster]]></category>
		<category><![CDATA[Online]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Plattform]]></category>
		<category><![CDATA[React]]></category>
		<category><![CDATA[Refactoring]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Rust]]></category>
		<category><![CDATA[SHARE]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Studio]]></category>
		<category><![CDATA[Syntax]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[To]]></category>
		<category><![CDATA[TypeScript]]></category>
		<category><![CDATA[Umgebungen]]></category>
		<category><![CDATA[Visual]]></category>
		<category><![CDATA[VS]]></category>
		<category><![CDATA[Vue.js]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1498</guid>

					<description><![CDATA[<p>In der Welt der Softwareentwicklung gibt es unzählige Werkzeuge und Technologien, die Programmierern dabei helfen, effizienter und produktiver zu arbeiten. Eine solche Technologie ist die IDE Visual Studio Code, der sich in kürzester Zeit zu &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/02/22/visual-studio-code-der-leichte-schwergewicht/">Visual Studio Code &#8211; Das leichte Schwergewicht</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In der Welt der Softwareentwicklung gibt es unzählige Werkzeuge und Technologien, die Programmierern dabei helfen, effizienter und produktiver zu arbeiten. Eine solche Technologie ist die IDE Visual Studio Code, der sich in kürzester Zeit zu einem der beliebtesten Editoren für Entwickler entwickelt hat. In diesem Blog-Beitrag thematisiere ich Visual Studio Code.</p>



<h3 class="wp-block-heading">Hintergrund von Visual Studio Code</h3>



<p>Visual Studio Code (VS Code) ist ein plattformübergreifender <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a>-Code-Editor von Microsoft. Er wurde erstmals im Jahr 2015 veröffentlicht und hat sich seitdem kontinuierlich weiterentwickelt. Der Editor unterstützt Windows, macOS und <a href="https://ceosbay.com/2022/11/22/erklaerung-linux/" target="_blank" rel="noreferrer noopener">Linux</a>. Es bietet Entwicklern eine nahtlose und einheitliche Erfahrung über verschiedene Plattformen hinweg.</p>



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



<p>Visual Studio Code entstand als Teil von Microsofts Bemühungen, Entwicklern leichtgewichtige, leistungsfähige und plattformübergreifende Werkzeuge zur Verfügung zu stellen. Die Geschichte von Visual Studio Code reicht zurück bis ins Jahr 2011. Als Erich Gamma, einer der Erfinder des berühmten Design-Patterns-Buchs und der <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/" target="_blank" rel="noreferrer noopener">Eclipse</a>-Plattform, bei Microsoft anfing. Zusammen mit anderen Entwicklern arbeitete er an einem Projekt namens &#8222;Project Monaco&#8220;. Es begann als Experiment, um browserbasierte Entwicklungs-Umgebungen zu erforschen.</p>



<p>Project Monaco fokussierte sich darauf, eine leistungsfähige, webbasierte Code-Editing-Umgebung zu schaffen. Genutzt von mehreren Microsoft-Produkten wie Azure DevOps (früher Visual Studio Online) und OneDrive. Im Laufe der Zeit vergrößerte sich das Projekt immer weiter. Das Team erkannte schon bald, dass die wachsende Codebasis und die leistungsstarken Funktionen das Zeug zu einem eigenständigen Produkt hatten.</p>



<p>Am 29. April 2015 stellte Microsoft Visual Studio Code erstmals während der Build-Konferenz in San Francisco vor. Es war von Anfang an als <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a>-Projekt konzipiert und steht unter der MIT-Lizenz der Masse zur Verfügung. Seit der ersten Veröffentlichung hat VS Code eine große Entwickler-Community angezogen, die ständig zur Verbesserung des Produkts beiträgt.</p>



<p>Mit der Veröffentlichung von Visual Studio Code verfolgte Microsoft eine neue Strategie. Sie öffneten die Pforten zu der Technologie und zu den Werkzeugen für Entwickler aller Plattformen und Programmiersprachen. VS Code war eines der ersten Produkte, das diese neue Richtung widerspiegelte. Heute ist VS Code einer der am häufigsten verwendeten Code-Editoren. Darüber hinaus hat es dazu beigetragen, das Bild von Microsoft als Unternehmen zu verändern. Ein Bild der Offenheit und Zusammenarbeit in der Entwicklergemeinschaft.</p>



<h3 class="wp-block-heading">Hauptmerkmale von Visual Studio Code</h3>



<ul class="wp-block-list">
<li><strong>Syntax-Hervorhebung und IntelliSense</strong>: VS Code unterstützt Syntax-Hervorhebung für eine Vielzahl von Programmiersprachen. Es bietet Entwicklern eine klar strukturierte und leicht verständliche Darstellung des Codes. IntelliSense ist eine intelligente Code-Vervollständigungsfunktion. KI-Algorithmen helfen dabei, den Code effizienter und schneller zu schreiben. Dies passiert, indem es automatisch Vorschläge für Variablen, Funktionen und andere Code-Elemente anzeigt.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Git-Integration</strong>: Die Integration von <a href="https://ceosbay.com/2022/11/18/erklaerung-git/" target="_blank" rel="noreferrer noopener">Git</a> ermöglicht es Entwicklern, direkt aus dem Editor heraus Änderungen am Code vorzunehmen. Sowohl das committen und mit Remote-Repositories zu synchronisieren sind möglich. Darüber hinaus erfolgt die Anzeige der Änderungen im Code direkt im Editor. Dadurch kann man leichter erkennen, was, wer, wann verändert hat.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Debugging</strong>: VS Code bietet umfangreiche Debugging-Möglichkeiten für viele Programmiersprachen und Plattformen. Es ermöglicht das Anlegen von Breakpoints, das Verfolgen von Variablenwerten und das Ausführen von Code schrittweise. Dies hilft Entwicklern, Fehler effizienter zu finden und zu beheben.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Anpassung und Erweiterbarkeit</strong>: VS Code ermöglicht es den Nutzern, den Editor individuell anzupassen und mit zusätzlichen Funktionen zu erweitern. Es gibt eine Vielzahl von Plugins und Erweiterungen, die man im Visual Studio Code Marketplace finden und installieren kann.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Terminal-Integration</strong>: VS Code integriert das Terminal direkt in den Editor. Dadurch kann man problemlos Terminal Befehle direkt im Editor ausführen. Auch die Build-Tools lassen sich direkt darüber verwenden. Folglich muss man den Editor nicht verlassen, um auf die Befehlszeile zuzugreifen.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Code-Navigation und -Refactoring</strong>: Mithilfe von Funktionen wie &#8222;Go to Definition&#8220;, &#8222;Find All References&#8220; und &#8222;Rename Symbol&#8220; können Entwickler ihren Code effizienter navigieren und organisieren. Diese Funktionen machen das Code-Refactoring leichter und fördern die Erstellung von sauberem, gut strukturiertem Code. Nachdem ich erst kürzlich diese Funktion in <a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/" target="_blank" rel="noreferrer noopener">IntelliJ</a> auch recht vorteilhaft fand noch der Verweis auf den <a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/" target="_blank" rel="noreferrer noopener">Beitrag</a>.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Unterstützung von Programmiersprachen und Framework</strong>s: VS Code unterstützt eine Vielzahl von Programmiersprachen und <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a>. Darunter <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>, TypeScript, <a href="https://ceosbay.com/2022/12/20/erklaerung-python/" target="_blank" rel="noreferrer noopener">Python</a>, C#, <a href="https://ceosbay.com/2023/02/25/erklaerung-c/" target="_blank" rel="noreferrer noopener">C++</a>, <a href="https://ceosbay.com/2023/03/16/erklaerung-java/" target="_blank" rel="noreferrer noopener">Java</a>, <a href="https://ceosbay.com/2023/02/26/erklaerung-php/" target="_blank" rel="noreferrer noopener">PHP</a>, <a href="https://ceosbay.com/2022/12/19/erklaerung-ruby/" target="_blank" rel="noreferrer noopener">Ruby</a>, Go, Rust und viele mehr. Dank der Unterstützung von zahlreichen <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> wie <a href="https://ceosbay.com/2023/03/21/erklaerung-angular/" target="_blank" rel="noreferrer noopener">Angular</a>, <a href="https://ceosbay.com/2022/12/21/erklaerung-react/" target="_blank" rel="noreferrer noopener">React</a>, Vue.js, Django und .NET Core sind Entwickler in der Lage, in ihren bevorzugten Sprachen und Umgebungen zu arbeiten.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Arbeitsbereiche und Multifunktionsfenster</strong>: VS Code ermöglicht das Öffnen mehrerer Projekte und Arbeitsbereiche gleichzeitig und unterstützt auch das Teilen von Fenstern, sodass man problemlos mehrere Dateien nebeneinander anzeigen und bearbeiten kann. Dies erleichtert die Zusammenarbeit an komplexen Projekten erheblich.</li>
</ul>



<ul class="wp-block-list">
<li><strong>Live Share</strong>: Mit der Live Share-Funktion können Entwickler ihre Arbeitsbereiche in Echtzeit mit anderen teilen und gemeinsam am Code arbeiten. Dies ist besonders hilfreich für Teamarbeit, Pair-Programming und das Lösen von Problemen gemeinsam mit Kollegen.</li>
</ul>



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



<p>Visual Studio Code ist ein mächtiges und vielseitiges Tool für Entwickler, das sich in den letzten Jahren zu einem unverzichtbaren Bestandteil der Softwareentwicklung entwickelt hat. Durch die kontinuierliche Weiterentwicklung und die Anpassungsfähigkeit des Editors befindet sich VS Code mit an der Spitze der IDE’s bzw. Code Editoren und hilft Entwicklern dabei, produktiver und effizienter zu arbeiten. Obwohl es viele großartige Funktionen in Visual Studio Code gibt, ist es wichtig, sich daran zu erinnern, dass kein Tool oder Editor perfekt ist. Davon abgesehen hat jeder Entwickler seine eigenen Präferenzen und Arbeitsweisen. Wenn man jedoch auf der Suche nach einem leistungsstarken, anpassungsfähigen und umfangreichen Code-Editor ist, kann man Visual Studio Code auf jeden Fall in Betracht ziehen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/02/22/visual-studio-code-der-leichte-schwergewicht/">Visual Studio Code &#8211; Das leichte Schwergewicht</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/02/22/visual-studio-code-der-leichte-schwergewicht/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1498</post-id>	</item>
		<item>
		<title>Apache Maven &#8211; Projekte inklusive Abhängigkeiten mühelos verwalten</title>
		<link>https://ceosbay.com/2022/12/22/erklaerung-maven/</link>
					<comments>https://ceosbay.com/2022/12/22/erklaerung-maven/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Thu, 22 Dec 2022 05:53:15 +0000</pubDate>
				<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[1]]></category>
		<category><![CDATA[4]]></category>
		<category><![CDATA[Abhängigkeiten]]></category>
		<category><![CDATA[Artifact]]></category>
		<category><![CDATA[Build]]></category>
		<category><![CDATA[Central]]></category>
		<category><![CDATA[classes]]></category>
		<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Cucumber]]></category>
		<category><![CDATA[Dependency]]></category>
		<category><![CDATA[Deployment]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Don&#039;t repeat yourself]]></category>
		<category><![CDATA[DRY]]></category>
		<category><![CDATA[Entwicklungsumgebung]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[installieren]]></category>
		<category><![CDATA[IntelliJ]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JFrog]]></category>
		<category><![CDATA[Klasse]]></category>
		<category><![CDATA[Klassen]]></category>
		<category><![CDATA[Kompilieren]]></category>
		<category><![CDATA[Konfiguration]]></category>
		<category><![CDATA[Konvention]]></category>
		<category><![CDATA[Manager]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[Over]]></category>
		<category><![CDATA[Package]]></category>
		<category><![CDATA[Paket]]></category>
		<category><![CDATA[pom]]></category>
		<category><![CDATA[Programmierer]]></category>
		<category><![CDATA[Project]]></category>
		<category><![CDATA[Projekt]]></category>
		<category><![CDATA[Repo]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[verifizieren]]></category>
		<category><![CDATA[verify]]></category>
		<category><![CDATA[xml]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1025</guid>

					<description><![CDATA[<p>Maven ist ein Open Source Build-Tool der Apache Software Foundation für die Projektverwaltung. Man kann damit Java-Projekte automatisieren. Es wurde für die Java-Programmierplattform entwickelt und ist in integrierten Entwicklungsumgebungen für Java, beispielsweise in Apache NetBeans, &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/">Apache Maven &#8211; Projekte inklusive Abhängigkeiten mühelos verwalten</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Maven ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a> Build-Tool der Apache Software Foundation für die Projektverwaltung. Man kann damit Java-Projekte automatisieren. Es wurde für die Java-Programmierplattform entwickelt und ist in integrierten Entwicklungsumgebungen für Java, beispielsweise in Apache NetBeans, Eclipse, IntelliJ IDEA bereits implementiert, sodass oftmals keine separate Installation notwendig ist. und es ist aus einem Teil des Jakarta-Projekts hervorgegangen. Über die genannten IDE’s (Entwicklungsumgebungen) werde ich in zukünftigen Beiträgen schreiben.</p>



<p>Maven vereinfacht den Softwareerstellungsprozess, bietet ein einheitliches System für die Entwicklerarbeit, hochwertige Projektinformationen, Richtlinien für das Festlegen von Best Practices und erleichtert die Migration zu neuen Funktionen durch mehr Transparenz. Es beschreibt sowohl, wie Software gebaut wird, als auch deren Abhängigkeiten. Apache hilft sowohl bei der Verwaltung von Projekten und dient als Tool zum Verständnis. Es hilft also dabei, den Zustand eines Projekts zu organisieren und relativ schnell darzustellen.</p>



<p>Primär wird das Programm von Entwicklern und Projektmanagern bei Java-Anwendungsprojekten verwendet. Das Tool kann nützlich sein, um den Zustand eines Projektes auf einem Blick für technisch weniger versierte Personen, wie Führungspersönlichkeiten und Investoren, zusammenzufassen und gleichzeitig, um einige Prozesse bei der Softwareentwicklung zu automatisieren.</p>



<p>Maven basiert auf dem Objektmodell. Projekte werden als eine Pom.xml-Datei gespeichert. Das Tool verwaltet Projekt-Builds, Reportings und Dokumentationen aus einer zentralen XML-Informationsbasis. Mit der Standard-Plug-in-Architektur kann man es über den Standard-Input mit so gut wie jeder Anwendung nutzen und kollaborieren. Es vereinfacht den Prozess für das Erstellen von Java-Anwendungen erheblich, sodass der Nutzer den Status des Projektes viel einfacher einschätzen kann.</p>



<p>Der Name Maven kommt aus dem Jiddischen und bedeutet so viel wie „Sammler des Wissens“.</p>



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



<p>Maven entstand in der Apache Software Foundation aus Frust über den Build-Prozess von Turbine. Es wurde bald zum Top-Level-Projekt aufgrund der Notwendigkeit, die Builds der vielen unterschiedlichen Projekte der Apache Software Foundation möglichst zu vereinheitlichen und somit auch zu vereinfachen.</p>



<p>Durch die vereinheitlichten Strukturen konnten Mitglieder unterschiedlicher Entwicklungsteams zwischen den einzelnen Teilprojekten wechseln und produktivere Arbeitsergebnisse erzielen. Dank der projektübergreifenden Standardisierung war es nicht mehr notwendig, sich in komplizierte Prozesse einzuarbeiten, um das Projekt ausführen und testen zu können.</p>



<p>Die Entwicklung von Maven 1 wurde im Jahr 2003 begonnen und am 13. Juli 2004 als Version 1.0 veröffentlicht. Die Umsetzung wurde jedoch sehr schnell realisiert, sodass einige Eigenheiten nicht bedacht wurden. Beispielsweise gab es Probleme bei der Performance sowie einen Überschuss an Konfigurationsdateien und -angaben, die es zu beherrschen galt. 2014 wurde das End of Life (EoL) von Maven 1 verkündet. Die letzte veröffentlichte Version ist 1.1 vom 25. Juni 2007.</p>



<p>Im Jahr 2005 wurde parallel damit begonnen, Maven 2 zu entwickeln, welches mit Version 2.0 am 19. Oktober 2005 fertiggestellt wurde. Mit dem Major-Release 2 wurde Maven von Grund auf überarbeitet und bekannte Probleme aus der Vorgängerversion wurden behoben. Aus diesem Grund sind Maven 1 und Maven 2 untereinander inkompatibel. Am 18. Februar 2014 wurde das End of Life von Maven 2 kommuniziert. Die letzte veröffentlichte Version ist 2.2.1 aus November 2009.</p>



<p>Die Entwicklung von Maven 3 begann im Jahr 2008, bei der man sich insbesondere auf die Kompatibilität zwischen Maven 2 und 3 konzentrierte.</p>



<p>In der zweiten Hälfte des Jahres 2021 wurden die Arbeiten an Maven 4 begonnen. Eine wesentliche Verbesserung ist die stark optimierte Unterstützung von Multi-Modul-Projekten.</p>



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



<p>Maven benötigt zur Ausführung eine Java virtuelle Maschine (JVM) und ist aufgrund dieses Umstandes plattformunabhängig. Aus diesem Grund kann es auf jedem Betriebssystem ausgeführt werden, für das eine Java VM verfügbar ist.</p>



<p>Der Kern von Maven ist mit wenigen Megabyte als Paket kompakt gehalten. Die interne Struktur ist modular aufgebaut. Sämtliche Funktionen werden über Erweiterungen, sogenannte Plugins, bei der erstmaligen Verwendung über ein öffentliches im Internet verfügbares Repository, Maven Central genannt, nachgeladen und in einem lokalen Repository abgelegt.</p>



<p>Maven ist deklarativ und basiert auf zwei wesentlichen Paradigmen. Zum einen auf „Don’t Repeat Yourself“ (DRY bzw. Wiederhole dich nicht selbst) bedeutet sinngemäß im Kontext von Maven, dass man nicht bei jedem Projekt dieselben Build-Schritte neu definiert muss. Und auf „Convention over Configuration“ (CoC bzw. Konvention vor Konfiguration). Dies bezieht sich auf die Konfigurationsdatei (POM), mit denen Maven-Projekte beschrieben werden. Durch festgelegte Konventionen haben möglichst viele Konfigurationseinträge gemeingültige Vorbelegungen (Default-Werte), die für die meisten Anwendungsfälle bereits die erwünschten Ergebnisse produzieren.</p>



<p>Maven folgt den beiden beschriebenen Paradigmen über den gesamten Zyklus der Softwareerstellung konsequent. Eine wichtige Voraussetzung für eine erfolgreiche Automatisierung der einzelnen Schritte des Softwareerstellungsprozesses sind strikte Vereinheitlichungen, wie sie durch die beiden Paradigmen DRY und CoC geschaffen werden.</p>



<p>Obwohl Maven bereits sehr viele Vorgaben liefert, können Projekte diese Vorgaben an ihre tatsächlichen Bedürfnisse anpassen. Sowohl für künftige neuere Versionen von Maven als auch bei der Anbindung von Drittanbieterprodukten ist es eine bewährte Praxis, möglichst nahe am Maven-Standard zu bleiben.</p>



<h3 class="wp-block-heading">Wichtige Begriffe bei der Arbeit mit Maven</h3>



<p>Im Zusammenhang mit Maven werden wichtige Begriffe verwendet, mit denen man vertraut sein sollte, um effektiv damit zu arbeiten:</p>



<ul class="wp-block-list">
<li><strong>Artifacts</strong> (Artefakte) Diese werden in Maven sowohl Plugins als auch Abhängigkeiten zu externen Programmbibliotheken und die selbst erstellten binären Programmdateien des eigenen Softwareprojektes bezeichnet.</li>



<li><strong>Lifecycles</strong> (Lebenszyklen) Dies kann auch als Workflow oder Prozess verstanden werden. Maven kennt drei Lifecycles: „clean“, „site“ und „build“.</li>



<li><strong>Phases</strong> (Phasen) In diesen werden die einzelnen Schritte innerhalb eines „Lifecycles“ bezeichnet, die in festgelegter linearer Reihenfolge durchlaufen werden. Der Build-Lifecycle Default kennt 23 Schritte.</li>



<li><strong>Goals</strong> (Ziele) Sind einzelne Aktionen bzw. Funktionalitäten, die in einem Plugin bereitgestellt werden.</li>



<li><strong>Archetypes</strong> (Archetypen) In diesen können Gerüste für unterschiedlichste Arten von Softwareprojekten erstellt werden, deren Struktur dem Standard von Maven entspricht. Was auch als ein wesentliches Merkmal von Maven-Projekten ist. Die einheitliche Verzeichnisstruktur, auf die ich nachfolgend eingehen werde.</li>
</ul>



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



<p>my-project/ – Wurzelverzeichnis</p>



<p>pom.xml – Projektbeschreibung (Build-Logik)</p>



<p>src/ – alle Eingabedateien</p>



<p>main/ – Eingabedateien für die Erstellung des eigentlichen Produkts</p>



<p>java/ – Java-Quelltext-Dateien</p>



<p>resources/ – Projektdateien, die kein Java-Quellcode sind, aber für die Übersetzung oder zur Laufzeit benötigt werden, z. B. Bilder, <a href="https://ceosbay.com/2022/10/29/structured-query-language-sql/">SQL</a>, Java-Properties-Dateien etc.</p>



<p>test/ – Eingabedateien, die für automatisierte Testläufe benötigt werden</p>



<p>java/ – Testfälle, die als Java-Quellcode vorliegen, z. B. JUnit-Testfälle</p>



<p>resources/ – Zusätzliche Ressourcen für Testfälle</p>



<p>target/ – Alle durch Maven während des Build-Vorgangs erstellten Dateien</p>



<p>classes/ – kompilierte Java-Klassen</p>



<h3 class="wp-block-heading">Die Konfigurationsdatei &#8222;pom.xml&#8220;</h3>



<p>Die Konfigurationsdatei für Maven-Projekte hat die offizielle Bezeichnung &#8222;Project Object Model (POM)&#8220;und ist als pom.xml im Wurzelverzeichnis des Projektes abgelegt. Im Kontext des Build-Managements ist die pom.xml die Build-Logik, die von externen Werkzeugen wie dem Automatisierungsserver Jenkins aufgerufen wird. <a href="https://ceosbay.com/2022/12/18/erklaerung-jenkins/" target="_blank" rel="noreferrer noopener">Über Jenkins habe ich bereits geschrieben.</a></p>



<p>Die zwingenden Basisangaben für ein Projekt innerhalb einer POM sind die sogenannten GAV-Parameter, zuzüglich des Packagetyps. GAV steht für (G) = GroupID, (A) = ArtifactId und (V) = Version. Die GAV-Koordinaten müssen für jedes Projekt eindeutig sein und dürfen nicht mehrfach Verwendung finden.</p>



<h3 class="wp-block-heading">Abhängigkeiten bzw. (Dependency Management)</h3>



<p>Einer der wichtigsten Faktoren für den Erfolg von Maven ist der einfache Umgang mit fremden Abhängigkeiten, sogenannten 3rd Party Libraries. Externe Abhängigkeiten werden in der pom.xml notiert und über ihre GAV-Koordinaten eindeutig und transitiv aufgelöst. Die definierten Abhängigkeiten werden nicht physisch in die Versionsverwaltung mit aufgenommen, sondern während des Buildvorgangs im Projekt-Ausgabeverzeichnis target bereitgestellt.</p>



<p>Bei der Verwendung eines Artefaktes prüft Maven, ob es bereits lokal im Repository vorhanden ist. Das lokale Repository ist ein verstecktes Verzeichnis mit der Bezeichnung .m2/repository und findet sich im home-Verzeichnis des am Betriebssystem angemeldeten Nutzers.</p>



<p>Wird von Maven das angeforderte Artefakt im lokalen Repository nicht gefunden, wird in einem öffentlichen Remote-Repository danach gesucht. Bei erfolgreicher Suche wird das Artefakt im lokalen Repository verfügbar gemacht. Das Wichtigste öffentlich frei verfügbare Repository für Java-Artefakte lautet &#8222;Maven Central&#8220; und wird von dem Unternehmen Sonatype betrieben.</p>



<p>Es besteht die Möglichkeit, einen eigenen Repository-Server zu betreiben, um selbst erstellte Artefakte im Unternehmen bzw. im Intranet für andere Projekte bereitzustellen oder diese über das Internet zur Verfügung zu stellen.</p>



<p>Wichtige Implementierungen zum Hosten eigener Artefakte sind Sonatype Nexus OSS oder JFrog Artifactory, für die es sowohl freie Community Versionen als auch kommerzielle Enterprise-Varianten gibt. Diese Lösungen können neben den verschiedenen Java-Artefakten auch andere Formate wie beispielsweise Docker Images, RubyGems, .NET nuget oder NPM verwalten. Maven Central, das größte Open-Source-Repository, wird mit Nexus OSS betrieben.</p>



<h3 class="wp-block-heading">Maven-Lebenszyklen (Lifecycles)</h3>



<p>Wie bereits vorher erwähnt, kommen in einem Maven Workflow verschiedene Lebenszyklen zum Einsatz. Diese sind:</p>



<ul class="wp-block-list">
<li><strong>clean</strong> (Zum Löschen von Ergebnissen vorheriger Builds, mit den Phasen pre-clean, clean, post-cl</li>



<li><strong>build</strong> (default) (Zum Erstellen eines Projekts im Rahmen der verschiedenen Phasen</li>



<li><strong>site</strong> (Zum Erstellen von Webseiten zur Projektdokumentation und Reports, mit den Phasen pre-site, site, post-site, site-deploy.</li>
</ul>



<p>Maven geht dabei jeweils von einem Zyklus aus, der bei der Softwareerstellung im Allgemeinen durchlaufen wird. Es muss aber nicht jedes Softwareprojekt alle Phasen des im Folgenden verkürzt dargestellten Default-Zyklus verwenden. Die Standardfunktionalität kann durch die Einbindung von zusätzlichen Plug-ins an die entsprechende Phase erweitert werden.</p>



<ul class="wp-block-list">
<li><strong>validate</strong> bzw. validieren (Es wird überprüft, ob die pom.xml und die Projektstrukturen vollständig, valide und gültig sind.</li>



<li><strong>compile</strong> bzw. kompilieren (In dieser Phase wird der Quellcode kompiliert.</li>



<li><strong>test</strong> bzw. testen (Hier wird der kompilierte Code durch das eingebundene Unit-Test-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Framework</a> (z. B. JUnit, TestNG) getestet. Maven berücksichtigt dabei in späteren Zyklen, dass Testklassen normalerweise nicht in der auszuliefernden Software vorhanden sind.</li>



<li><strong>package</strong> bzw. verpacken (Das Kompilat wird – ggf. mit anderen nicht kompilierbaren Dateien – zur Weitergabe verpackt. Häufig handelt es sich dabei um eine JAR-Datei.</li>



<li><strong>integration-test</strong> bzw. Integrationstests (Bereitstellen der programmatisch erstellten Integrationstests mittels Behavior Driven Development (z. B. Cucumber, jGiven).</li>



<li><strong>verify</strong> bzw. Gültigkeitsprüfung des Softwarepakets (Überprüfung der Artefakte, ob die festgelegten Spezifikationen erfüllt wurden, D.H. die bereitgestellten Integrationstests werden ausgeführt.</li>



<li><strong>install</strong> bzw. das Kopieren in die lokale Maven-Repository (Kopiert das Softwarepaket ins lokale Maven-Repository, um es dann in anderen lokalen Maven-Projekten verwenden zu können. Dies ist insbesondere für modulare Projekte von Bedeutung.</li>



<li><strong>deploy</strong> bzw. anwenden (Lädt das Softwarepaket in ein entferntes Maven-Repository hoch, wonach es auch anderen Entwicklern global zur Verfügung steht.</li>
</ul>



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



<p>Hierbei kann man sich relativ kurzfassen. Ein Software-Projekt sollte stehts mit einem vernünftigen Buildmanagement ausgestattet sein. Das <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Tool bietet sich dabei vor allem bei Java-Projekten an, zumal es selbst auf Java basiert. Es ist ebenso möglich, Maven durch selbst entwickelte Plugins zu erweitern. Aufgrund dieser Eigenschaft wird es auch als Plugin Execution Framework bezeichnet. Man kann damit die Kollaboration bei der Entwicklung durch Programmierer und Projektmanager mit verschiedensten Skill-Sets wesentlich erleichtern bzw. vereinfachen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/22/erklaerung-maven/">Apache Maven &#8211; Projekte inklusive Abhängigkeiten mühelos verwalten</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/12/22/erklaerung-maven/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1025</post-id>	</item>
	</channel>
</rss>
