<?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>C Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/c-4/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/c-4/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Tue, 18 Apr 2023 17:25:50 +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>C Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/c-4/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<item>
		<title>C# &#8211; Als Brücke zwischen Innovation und Benutzererfahrung</title>
		<link>https://ceosbay.com/2023/04/19/c-als-bruecke-zwischen-innovation-und-benutzererfahrung/</link>
					<comments>https://ceosbay.com/2023/04/19/c-als-bruecke-zwischen-innovation-und-benutzererfahrung/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 19 Apr 2023 14:30:00 +0000</pubDate>
				<category><![CDATA[3D]]></category>
		<category><![CDATA[Agile]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Gaming]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[#]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[C+]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[COM]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Cool]]></category>
		<category><![CDATA[Drittanbieter]]></category>
		<category><![CDATA[Entwicklungen]]></category>
		<category><![CDATA[Frame]]></category>
		<category><![CDATA[Funktionen]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[Integrated]]></category>
		<category><![CDATA[Interoperabilität]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JIT]]></category>
		<category><![CDATA[Klassen]]></category>
		<category><![CDATA[Kollektionen]]></category>
		<category><![CDATA[Lambda]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Natur]]></category>
		<category><![CDATA[NetCore]]></category>
		<category><![CDATA[Objekt]]></category>
		<category><![CDATA[Ökosystem]]></category>
		<category><![CDATA[Parameter]]></category>
		<category><![CDATA[Plattform]]></category>
		<category><![CDATA[Programmiersprache]]></category>
		<category><![CDATA[Proprietäre]]></category>
		<category><![CDATA[Query]]></category>
		<category><![CDATA[refs]]></category>
		<category><![CDATA[Sharp]]></category>
		<category><![CDATA[Skalierbarkeit]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Studio]]></category>
		<category><![CDATA[Unity]]></category>
		<category><![CDATA[Unity3D]]></category>
		<category><![CDATA[Visual]]></category>
		<category><![CDATA[Visual Studio]]></category>
		<category><![CDATA[VisualStudio]]></category>
		<category><![CDATA[Wolke]]></category>
		<category><![CDATA[Xamarin]]></category>
		<category><![CDATA[XM]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1741</guid>

					<description><![CDATA[<p>In der Welt der Programmierung ist C# (ausgesprochen &#8222;C-Sharp&#8220;) eine der am häufigsten verwendeten und vielseitigsten Programmiersprachen. Entwickelt von Microsoft als Teil der .NET-Initiative. Hat sich C# seit seiner Einführung im Jahr 2000 rasant weiterentwickelt &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/19/c-als-bruecke-zwischen-innovation-und-benutzererfahrung/">C# &#8211; Als Brücke zwischen Innovation und Benutzererfahrung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>In der Welt der Programmierung ist C# (ausgesprochen &#8222;C-Sharp&#8220;) eine der am häufigsten verwendeten und vielseitigsten Programmiersprachen. Entwickelt von Microsoft als Teil der .NET-Initiative. Hat sich C# seit seiner Einführung im Jahr 2000 rasant weiterentwickelt und ist heute eine der Top-Programmiersprachen. Ich habe mich erst intensiver damit beschäftigt, als ich Unity 3D kennengelernt habe. Im Kontext der Echtzeit 3D Visualisierung und Spieleentwicklung. Anfangs noch für Serious Games und später auch für konventionelle Spiele. In diesem Blogbeitrag befasse ich mich aber lediglich mit der Geschichte und Entwicklung von C# selbst. Für Unity gibt es dann einen gesonderten Beitrag.</p>



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



<p>Die Geschichte von C# beginnt im Jahr 1999. Als Microsoft-Entwickler Anders Hejlsberg und sein Team an einer neuen Programmiersprache namens &#8222;Cool&#8220; (kurz für &#8222;C-like Object Oriented Language&#8220;) arbeiteten. Das Projekt, Teil von Microsofts größerer .NET-Initiative, eine einheitliche Plattform für die Entwicklung von Webdiensten, Desktop-Anwendungen und verteilter Systeme zu schaffen. Cool sollte leistungsstark und einfach zu erlernen sein. Die Elemente von C, <a href="https://ceosbay.com/2023/02/25/erklaerung-c/">C++</a>, <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a> und Delphi in einer Programmiersprache vereint.</p>



<h4 class="wp-block-heading">Die ersten Schritte (2000-2002)</h4>



<p>Im Juni 2000 kam die offizielle Vorstellung von Microsoft C#. Es war von Anfang an eng mit dem .NET-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> verknüpft. Die Veröffentlichung der ersten Version von C# und dem .NET-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> (Version 1.0) folgte im Jahr 2002. Sie bot grundlegende Funktionen für objektorientierte Programmierung, wie Klassen, Objekte, Vererbung und Polymorphismus. Auch wenn diese Version noch nicht über einige der leistungsfähigen Funktionen verfügte, die man in späteren Versionen hinzugefügte. War es dennoch eine attraktive Option für Entwickler, die eine Alternative zu <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a> oder <a href="https://ceosbay.com/2023/02/25/erklaerung-c/">C++</a> suchten.</p>



<h4 class="wp-block-heading">Weiterentwicklung und Verbesserungen (2002-2010)</h4>



<p>In den folgenden Jahren entwickelte sich C# kontinuierlich weiter, zahlreiche neue Funktionen und Verbesserungen kamen nach und nach hinzu. C# 2.0, dessen Veröffentlichung im Jahr 2005 stattfand, führte Generics, partielle Klassen, anonyme Methoden und Nullable-Werttypen ein. Diese Verbesserungen erleichterten die Programmierung und erweiterten die Möglichkeiten von C# erheblich.</p>



<p>C# 3.0 dann im Jahr 2007. Es brachte eine der bahnbrechendsten Neuerungen der Sprache: Language Integrated Query (LINQ) ins Spiel. LINQ ist eine Sammlung von Funktionen, die es ermöglichen, Daten aus verschiedenen Quellen (wie <a href="https://ceosbay.com/2022/10/29/structured-query-language-sql/">SQL</a>-Datenbanken, <a href="https://ceosbay.com/2022/12/27/erklaerung-xml/">XML</a>-Dokumenten und in-memory Kollektionen) zu verarbeiten. Direkt in C#, und außerdem, zu manipulieren. Diese Version führte auch anonyme Typen, Erweiterungsmethoden und Lambda-Ausdrücke ein, was die Sprache noch flexibler und ausdrucksstärker machte.</p>



<p>Mit C# 4.0, das 2010 erschien, kamen einige wichtige Funktionen hinzu. Diese verbesserten die Interoperabilität von C# mit anderen Technologien und Programmiersprachen. Dazu gehörten dynamische Typen, benannte und optionale Parameter sowie verbesserte COM-Interoperabilität.</p>



<h4 class="wp-block-heading">Aktuelle Entwicklungen (2010-heute)</h4>



<p>C# 5.0, im Jahr 2012. Es fokussierte sich hauptsächlich auf die Verbesserung der asynchronen Programmierung durch die Einführung von Async und Await Keywords. Diese Funktionen ermöglichen es Entwicklern, heute noch, asynchronen Code auf einfache und saubere Weise zu schreiben. So kann man Anwendungen erstellen, die dadurch heute schneller und reaktionsfähiger sind.</p>



<p>Seitdem kamen weitere Versionen von C#, die jeweils neue Funktionen und Verbesserungen enthielten. C# 6.0 (2015) brachte einige Syntaktische Vereinfachungen wie Auto-Property-Initialisierer, Expression-bodied-Mitglieder, Nullbedingungsoperator (?.) und String-Interpolation.</p>



<p>Gefolgt von C# 7.0 (2017). Es kamen Tuples, Pattern Matching, lokale Funktionen und erweiterte Möglichkeiten für das Arbeiten mit Werttypen durch die Einführung von ref locals und ref returns mit rein.</p>



<p>Und C# 8.0 (2019) legte einen Schwerpunkt auf die Verbesserung von Sicherheit und Produktivität, indem es Funktionen wie Nullable Reference Types, Asynchronous Streams, Pattern Matching Enhancements, Indices und Ranges sowie Default Interface Members einführte.</p>



<p>Zuletzt C# 9.0 im Jahr 2020, dass sich auf die Verbesserung von Programmiersprachfunktionen konzentrierte. Dadurch konnte man den Umgang mit Daten und den Ausdruck von Algorithmen vereinfachen. Dazu gehörten beispielsweise Init-only-Properties, Records, Pattern Matching Enhancements, Top-Level-Statements und Target-typed New Expressions.</p>



<p>Parallel zur Entwicklung von C# hat Microsoft auch an der .NET-Plattform gearbeitet. Im Jahr 2016 veröffentlichte das Unternehmen .NET Core, eine plattformübergreifende, modulare und leichte Version von .NET, die für moderne Web- und <a href="https://ceosbay.com/2022/11/30/erklaerung-cloud-computing/">Cloud</a>-Anwendungen optimiert ist. Seit der Veröffentlichung von .NET 5 im Jahr 2020 hat Microsoft die traditionellen .NET-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Frameworks</a> und .NET Core vereint und setzt nun auf eine einzige .NET-Laufzeit und -Plattform.</p>



<h3 class="wp-block-heading">Vorteile von C#</h3>



<ul class="wp-block-list">
<li><strong>Vielseitigkeit</strong>: Es eignet sich für eine breite Palette von Anwendungen und Projekten. Es wird häufig für die Entwicklung von Webanwendungen, Windows-Anwendungen, <a href="https://ceosbay.com/2022/11/30/erklaerung-cloud-computing/">Cloud</a>-basierten Diensten, Spielen, mobilen Anwendungen und sogar KI-Projekten verwendet.</li>



<li><strong>Objektorientierung</strong>: Es ist eine vollständig objektorientierte Sprache, was bedeutet, dass sie auf dem Prinzip der Kapselung von Daten und Verhalten innerhalb von Objekten basiert. Dies ermöglicht eine saubere Trennung von Anliegen und fördert Wiederverwendbarkeit und Erweiterbarkeit des Codes.</li>



<li><strong>Einfache und klare Syntax</strong>: Die Syntax von C# ist einfach und leicht verständlich, wodurch Programmierer schneller lernen und produktiver sein können. Die Sprache ist weniger fehleranfällig und erlaubt Entwicklern, effizienter und mit weniger Fehlern zu arbeiten.</li>



<li><strong>Leistungsstarke Entwicklungsumgebungen</strong>: C# wird von einer Vielzahl von Entwicklungsumgebungen unterstützt, insbesondere von <a href="https://ceosbay.com/2023/02/22/visual-studio-code-der-leichte-schwergewicht/">Visual Studio Code</a>, einer leistungsstarken integrierten Entwicklungsumgebung (IDE) von Microsoft. Dies ermöglicht Programmierern, schnell und effizient zu arbeiten, Code zu schreiben, zu testen und zu debuggen.</li>



<li><strong>Unterstützung und Gemeinschaft</strong>: Da C# von Microsoft entwickelt und unterstützt wird, profitiert die Sprache von einer starken Gemeinschaft und einer breiten Palette von Ressourcen, einschließlich Online-Tutorials, Dokumentationen und Foren. Die C#-Community ist bekannt für ihre Hilfsbereitschaft und ihr Engagement, neue Programmierer willkommen zu heißen und bei Problemen zu unterstützen.</li>



<li><strong>Interoperabilität</strong>: C# bietet eine hervorragende Interoperabilität mit anderen .NET-Sprachen und -Technologien. Durch die Nutzung der .NET-Bibliotheken und &#8211;<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Frameworks</a> können Entwickler eine Vielzahl von Funktionalitäten in ihren Anwendungen leicht implementieren und erweitern.</li>



<li><strong>Skalierbarkeit und Leistung</strong>: C#-Anwendungen sind für ihre Leistung und Skalierbarkeit bekannt. Durch die Verwendung des Just-In-Time (JIT)-Compilers und anderer Optimierungstechniken bietet C# schnelle Ausführungszeiten und geringe Latenzzeiten, was für Anwendungen mit hohen Anforderungen an Geschwindigkeit und Reaktionsfähigkeit unerlässlich ist.</li>



<li><strong>Plattformübergreifende Entwicklung</strong>: Mit der Einführung von .NET Core und Xamarin ermöglicht C# die plattformübergreifende Entwicklung von Anwendungen für Windows, MacOS, <a href="https://ceosbay.com/2022/11/22/erklaerung-linux/">Linux</a>, iOS und Android. Dies eröffnet Entwicklern eine Vielzahl neuer Möglichkeiten und macht die Sprache noch attraktiver für Unternehmen und Entwickler.</li>
</ul>



<h3 class="wp-block-heading">Nachteile von C#</h3>



<p>Obwohl es eine leistungsstarke und vielseitige Programmiersprache ist, gibt es einige Nachteile, die man beachten sollte, bevor man sich für diese Sprache entscheidet. Hier sind einige der wichtigsten:</p>



<ul class="wp-block-list">
<li><strong>Leistung</strong>: Trotz der Verbesserungen in der Laufzeitumgebung und den Optimierungstechniken von .NET ist die Leistung von C#-Anwendungen möglicherweise nicht so gut wie die von Anwendungen, die in niedrigeren Programmiersprachen wie C oder <a href="https://ceosbay.com/2023/02/25/erklaerung-c/">C++</a> geschrieben sind. Die Verwendung von Just-In-Time (JIT)-Kompilierung und Garbage Collection kann zu einem gewissen Laufzeit-Overhead führen.</li>



<li><strong>Plattformabhängigkeit</strong>: Historisch gesehen war C# stark an das Windows-Ökosystem und die .NET-Plattform gebunden. Obwohl die Einführung von .NET Core und Xamarin die plattformübergreifende Entwicklung ermöglicht hat, ist die Unterstützung und Integration von C# in Nicht-Windows-Umgebungen möglicherweise nicht so nahtlos wie bei einigen anderen Programmiersprachen, insbesondere <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a>. Mir ist dies besonders aufgefallen, als ich zeitgleich für Android und iOS Devices kompiliert habe. Man muss einige Dinge beachten und Drittanbieter-Software installieren, um überhaupt vom Fleck zu kommen.</li>



<li><strong>Lernkurve</strong>: Obwohl es im Vergleich zu einigen anderen Programmiersprachen relativ einfach zu erlernen ist, kann es dennoch eine gewisse Zeit dauern, sich mit allen Funktionen und Konzepten der Sprache vertraut zu machen, insbesondere wenn man noch keine Erfahrung mit objektorientierter Programmierung hat.</li>



<li><strong>Größe des Ökosystems:</strong> Während das .NET-Ökosystem umfangreich ist und viele Bibliotheken und <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Frameworks</a> bietet, kann es sein, dass bestimmte Drittanbieter-Bibliotheken oder -Tools nicht verfügbar sind oder nicht so umfangreich wie in einigen anderen Programmiersprachen.</li>



<li><strong>Proprietäre Natur:</strong> C# von Microsoft ist eine proprietäre Sprache. Obwohl es <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Implementierungen gibt (z.B. .NET Core und Xamarin), hängt die Entwicklung der Sprache und der zugehörigen Tools stark von Microsofts Strategie und Vision ab. Einige Entwickler ziehen es vor, sich auf <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Programmiersprachen wie <a href="https://ceosbay.com/2022/12/20/erklaerung-python/">Python</a> oder <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java</a> zu konzentrieren, die nicht ein einzelnes Unternehmen kontrolliert.</li>
</ul>



<h3 class="wp-block-heading">Anwendungsbeispiele für C#</h3>



<ul class="wp-block-list">
<li><strong>Webanwendungen</strong>: Es ist eine beliebte Wahl für die Entwicklung von Webanwendungen, insbesondere mit dem ASP.NET-<a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a>. ASP.NET Core ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Webframework, das auf .NET Core basiert und die Entwicklung von modernen, leistungsstarken Webanwendungen ermöglicht.</li>



<li><strong>Windows-Anwendungen</strong>: Es eignet sich hervorragend für die Entwicklung von Windows-Desktop-Anwendungen. Mit dem Windows Presentation Foundation (WPF) <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/">Framework</a> können Entwickler ansprechende Benutzeroberflächen und robuste Anwendungen erstellen.</li>



<li><strong>Mobile Anwendungen</strong>: Mit Hilfe von Xamarin, einer plattformübergreifenden App-Entwicklungsumgebung, können Entwickler C# verwenden, um native Anwendungen für iOS, Android und Windows Mobile zu erstellen.</li>



<li><strong>Spieleentwicklung</strong>: Die Unity-Engine, eine der weltweit führenden Spieleentwicklungsplattformen, unterstützt C# als Skriptsprache. Dies ermöglicht es Entwicklern, anspruchsvolle und leistungsfähige Spiele für verschiedene Plattformen zu entwickeln.</li>
</ul>



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



<p>C# hat sich seit seiner Einführung zu einer der bevorzugten Programmiersprachen für Entwickler und Unternehmen entwickelt. Mit seiner Vielseitigkeit, leistungsstarken Entwicklungsumgebungen, der starken Unterstützung durch Microsoft und einer engagierten Community bietet C# eine hervorragende Grundlage für die Entwicklung einer Vielzahl von Anwendungen. Wenn man in Betracht zieht, eine neue Programmiersprache zu erlernen oder ein neues Projekt zu starten, sollte man auf jeden Fall die vielen Vorteile von C# in Betracht ziehen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/04/19/c-als-bruecke-zwischen-innovation-und-benutzererfahrung/">C# &#8211; Als Brücke zwischen Innovation und Benutzererfahrung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/04/19/c-als-bruecke-zwischen-innovation-und-benutzererfahrung/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1741</post-id>	</item>
		<item>
		<title>Eclipse &#8211; Die flexible Entwicklungsumgebung</title>
		<link>https://ceosbay.com/2023/03/19/erklaerung-eclipse/</link>
					<comments>https://ceosbay.com/2023/03/19/erklaerung-eclipse/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sun, 19 Mar 2023 20:47:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[CDT]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[DPP]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[Entwicklungsumgebung]]></category>
		<category><![CDATA[Erweiterungen]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[GEF]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[IBM]]></category>
		<category><![CDATA[IntelliJ]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JFace]]></category>
		<category><![CDATA[Jupiter]]></category>
		<category><![CDATA[Jupyter]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[Kern]]></category>
		<category><![CDATA[Machine]]></category>
		<category><![CDATA[Mylyn]]></category>
		<category><![CDATA[oasp4j]]></category>
		<category><![CDATA[Oomph]]></category>
		<category><![CDATA[Ops]]></category>
		<category><![CDATA[OSGi]]></category>
		<category><![CDATA[Perspektiven]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[PP]]></category>
		<category><![CDATA[Programmiersprache]]></category>
		<category><![CDATA[Projekt]]></category>
		<category><![CDATA[Quellcode]]></category>
		<category><![CDATA[Rich]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Saros]]></category>
		<category><![CDATA[Scala]]></category>
		<category><![CDATA[Sichten]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Speicher]]></category>
		<category><![CDATA[Sprache]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[UML]]></category>
		<category><![CDATA[Werkzeug]]></category>
		<category><![CDATA[Werkzeuge]]></category>
		<category><![CDATA[Work]]></category>
		<category><![CDATA[Yatta]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1190</guid>

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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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