<?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>Windows Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/windows/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/windows/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Fri, 21 Feb 2025 08:14:36 +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>Windows Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/windows/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<item>
		<title>Kernel &#8211; Herzstück des Betriebssystems</title>
		<link>https://ceosbay.com/2023/10/07/kernel-herzstueck-des-betriebssystems/</link>
					<comments>https://ceosbay.com/2023/10/07/kernel-herzstueck-des-betriebssystems/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sat, 07 Oct 2023 10:28:56 +0000</pubDate>
				<category><![CDATA[Betriebssystem]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Computerhardware]]></category>
		<category><![CDATA[Echtzeitbetriebssysteme]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Hardware-Verwaltung]]></category>
		<category><![CDATA[Hybridkernel]]></category>
		<category><![CDATA[I/O-Management]]></category>
		<category><![CDATA[Kernel]]></category>
		<category><![CDATA[Kernel-Entwicklung]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Mikrokernel]]></category>
		<category><![CDATA[Modularität]]></category>
		<category><![CDATA[Monolithischer Kernel]]></category>
		<category><![CDATA[Multitasking]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Prozesssynchronisation]]></category>
		<category><![CDATA[Prozessverwaltung]]></category>
		<category><![CDATA[Ressourcenverwaltung]]></category>
		<category><![CDATA[Schnittstelle]]></category>
		<category><![CDATA[Schnittstellenkommunikation]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Skalierbarkeit]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Softwareanwendungen]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Speicherverwaltung]]></category>
		<category><![CDATA[Systemarchitektur]]></category>
		<category><![CDATA[Systemaufrufe]]></category>
		<category><![CDATA[Systemdienste]]></category>
		<category><![CDATA[Systemintegrität]]></category>
		<category><![CDATA[Systemkern]]></category>
		<category><![CDATA[Thread-Management]]></category>
		<category><![CDATA[Treiber]]></category>
		<category><![CDATA[Virtualisierung]]></category>
		<category><![CDATA[Windows]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=2666</guid>

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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



<p>Zusammenfassend lässt sich sagen, dass es das Herzstück jedes Betriebssystems bildet. Er steuert und verwaltet den Zugriff auf die Hardware und ermöglicht so den Betrieb von Softwareanwendungen. Wer tiefer in die Welt der Kernels einsteigen möchte, dem stehen unzählige Ressourcen und Community-Plattformen zur Verfügung.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/10/07/kernel-herzstueck-des-betriebssystems/">Kernel &#8211; Herzstück des Betriebssystems</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/10/07/kernel-herzstueck-des-betriebssystems/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2666</post-id>	</item>
		<item>
		<title>Direct3D &#8211; Grundlagen, Entstehung und Implementierung</title>
		<link>https://ceosbay.com/2023/09/22/direct3d-grundlagen-entstehung-und-implementierung/</link>
					<comments>https://ceosbay.com/2023/09/22/direct3d-grundlagen-entstehung-und-implementierung/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Fri, 22 Sep 2023 08:16:17 +0000</pubDate>
				<category><![CDATA[Betriebssystem]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Spieleentwicklung]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[3D-Grafik]]></category>
		<category><![CDATA[3D-Programmierung]]></category>
		<category><![CDATA[Direct3D]]></category>
		<category><![CDATA[DirectX]]></category>
		<category><![CDATA[GPU]]></category>
		<category><![CDATA[Grafikhardware]]></category>
		<category><![CDATA[Grafikkarte]]></category>
		<category><![CDATA[Grafikschnittstelle]]></category>
		<category><![CDATA[Kompatibilität]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Optimierung]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Software Development Kit]]></category>
		<category><![CDATA[Visualisierung]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=2459</guid>

					<description><![CDATA[<p>Direct3D stellt einen zentralen Bestandteil der Windows-Grafikschnittstellen dar und hat die Art und Weise, wie Computerspiele und Anwendungen grafisch dargestellt werden, maßgeblich beeinflusst. Die Entstehungsgeschichte, seine Funktionsweise und wie man es effektiv einsetzt, sind Gegenstand &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/09/22/direct3d-grundlagen-entstehung-und-implementierung/">Direct3D &#8211; Grundlagen, Entstehung und Implementierung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Direct3D stellt einen zentralen Bestandteil der Windows-Grafikschnittstellen dar und hat die Art und Weise, wie Computerspiele und Anwendungen grafisch dargestellt werden, maßgeblich beeinflusst. Die Entstehungsgeschichte, seine Funktionsweise und wie man es effektiv einsetzt, sind Gegenstand dieses Blog-Beitrags.</p>



<h2 class="wp-block-heading"><strong>Was ist Direct3D?</strong></h2>



<p>Es gehört zur DirectX-Familie, einer Sammlung von <a href="https://ceosbay.com/2023/04/20/api-nahtlose-verbindungen-fuer-innovationen/">APIs</a> (<a href="https://ceosbay.com/2023/04/20/api-nahtlose-verbindungen-fuer-innovationen/">Application Programming Interfaces</a>) für multimediale Anwendungen auf Windows-Plattformen. Direct3D spezialisiert sich hierbei auf die Darstellung dreidimensionaler Grafiken und dient als Schnittstelle zwischen dem Programm und der Grafikhardware.</p>



<h2 class="wp-block-heading"><strong>Entstehungsgeschichte von Direct3D</strong></h2>



<p>Microsoft führte es erstmals 1996 mit <a href="https://ceosbay.com/2023/09/21/directx-evolution-und-implementierung/">DirectX</a> 2.0 ein. Der primäre Zweck bestand darin, Entwicklern eine effiziente Methode zur Hand zu geben, um 3D-Grafiken auf unterschiedlichen Hardwareplattformen darzustellen, ohne die spezifischen Details jeder Grafikkarte kennen zu müssen. Dies erleichterte den Entwicklungsprozess und ermöglichte es Software, ein breiteres Hardware-Spektrum zu unterstützen.</p>



<h2 class="wp-block-heading"><strong>Direct3D aufsetzen und umsetzen</strong></h2>



<h3 class="wp-block-heading">1. Systemanforderungen überprüfen</h3>



<p>Bevor man beginnt, sollte man sicherstellen, dass das Zielsystem die notwendigen Hardware- und Softwareanforderungen erfüllt. Die meisten modernen Grafikkarten unterstützen es, aber es lohnt sich, dies vorab zu überprüfen.</p>



<h3 class="wp-block-heading">2. Development Kit installieren</h3>



<p>Das <a href="https://ceosbay.com/2023/09/21/directx-evolution-und-implementierung/">DirectX</a> Software Development Kit (SDK) bietet die notwendigen Werkzeuge und Ressourcen. Durch das Installieren des SDKs erhält man Zugriff auf Bibliotheken, Header-Dateien und nützliche Hilfsprogramme.</p>



<h3 class="wp-block-heading">3. Programmieren mit Direct3D</h3>



<p>Ein einfaches Beispiel für die Initialisierung von Direct3D in einer Anwendung:</p>



<pre class="wp-block-code"><code>#include &lt;d3d9.h&gt;

IDirect3D9* pD3D = NULL;
IDirect3DDevice9* pDevice = NULL;

pD3D = Direct3DCreate9(D3D_SDK_VERSION);
if (!pD3D) {
    // Fehlerbehandlung
}

D3DPRESENT_PARAMETERS d3dpp = {};
// Parameter setzen...

HRESULT hr = pD3D-&gt;CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd, 
    D3DCREATE_SOFTWARE_VERTEXPROCESSING, &amp;d3dpp, &amp;pDevice);

if (FAILED(hr)) {
    // Fehlerbehandlung
}</code></pre>



<h2 class="wp-block-heading">Was gilt es zu beachten?</h2>



<ul class="wp-block-list">
<li><strong>Performance:</strong> Obwohl es die Arbeit mit Grafikhardware erleichtert, erfordert es dennoch effiziente Programmierpraktiken, um die bestmögliche Performance zu gewährleisten.</li>



<li><strong>Kompatibilität:</strong> Sicherstellen, dass die Anwendung mit verschiedenen Grafikkarten und Treiberversionen kompatibel ist.</li>



<li><strong>Updates:</strong> Microsoft aktualisiert DirectX regelmäßig. Die Software ist aktuell zu halten, um von den neuesten Optimierungen und Funktionen zu profitieren.</li>
</ul>



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



<p>Direct3D bietet Entwicklern leistungsstarke Tools für die 3D-Grafikprogrammierung unter Windows. Durch das Verständnis für die Geschichte, Funktionen und optimalen Implementierungspraktiken können Entwickler beeindruckende visuelle Anwendungen schaffen, die auf einer breiten Palette von Hardware laufen.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/09/22/direct3d-grundlagen-entstehung-und-implementierung/">Direct3D &#8211; Grundlagen, Entstehung und Implementierung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/09/22/direct3d-grundlagen-entstehung-und-implementierung/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2459</post-id>	</item>
		<item>
		<title>DirectX &#8211; Evolution und Implementierung</title>
		<link>https://ceosbay.com/2023/09/21/directx-evolution-und-implementierung/</link>
					<comments>https://ceosbay.com/2023/09/21/directx-evolution-und-implementierung/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Thu, 21 Sep 2023 17:38:00 +0000</pubDate>
				<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Spieleentwicklung]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[2D-Grafik]]></category>
		<category><![CDATA[3D-Grafik]]></category>
		<category><![CDATA[APIS]]></category>
		<category><![CDATA[Audio-Rendering]]></category>
		<category><![CDATA[Direct3D]]></category>
		<category><![CDATA[DirectX]]></category>
		<category><![CDATA[DirectX-Versionen]]></category>
		<category><![CDATA[Entwicklungsplattform]]></category>
		<category><![CDATA[Game-Design]]></category>
		<category><![CDATA[Grafik-Engine]]></category>
		<category><![CDATA[Grafikbibliothek]]></category>
		<category><![CDATA[Grafikkarte]]></category>
		<category><![CDATA[Grafikoptimierung]]></category>
		<category><![CDATA[Grafikrendering]]></category>
		<category><![CDATA[Hardware-Kompatibilität]]></category>
		<category><![CDATA[Hardware-Ressourcen]]></category>
		<category><![CDATA[Interaktivität]]></category>
		<category><![CDATA[Kompatibilität]]></category>
		<category><![CDATA[Lizenzierung]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsoft-Plattformen]]></category>
		<category><![CDATA[Multimedia]]></category>
		<category><![CDATA[Multimedia-Tools]]></category>
		<category><![CDATA[Multimediaanwendungen]]></category>
		<category><![CDATA[Netzwerkfunktionen]]></category>
		<category><![CDATA[PC-Spiele]]></category>
		<category><![CDATA[Performance-Optimierung]]></category>
		<category><![CDATA[Plattformstandardisierung]]></category>
		<category><![CDATA[Profiler]]></category>
		<category><![CDATA[Rendering]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[Shader]]></category>
		<category><![CDATA[Software Development Kit]]></category>
		<category><![CDATA[Sound]]></category>
		<category><![CDATA[Sound-Engine]]></category>
		<category><![CDATA[Systemintegration]]></category>
		<category><![CDATA[Technologie-Update]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Updates]]></category>
		<category><![CDATA[Videospiele]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=2443</guid>

					<description><![CDATA[<p>DirectX, ein integraler Bestandteil vieler moderner Computerspiele und multimediaanwendungen, prägt seit Jahren die Softwarelandschaft. In diesem Beitrag beleuchte ich die Ursprünge, die Entwicklung und die besten Vorgehensweisen bei der Implementierung von DirectX. Was ist DirectX? &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/09/21/directx-evolution-und-implementierung/">DirectX &#8211; Evolution und Implementierung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>DirectX, ein integraler Bestandteil vieler moderner Computerspiele und multimediaanwendungen, prägt seit Jahren die Softwarelandschaft. In diesem Beitrag beleuchte ich die Ursprünge, die Entwicklung und die besten Vorgehensweisen bei der Implementierung von DirectX.</p>



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



<p>Es bezeichnet eine Sammlung von <a href="https://ceosbay.com/2023/04/20/api-nahtlose-verbindungen-fuer-innovationen/">APIs</a> (<a href="https://ceosbay.com/2023/04/20/api-nahtlose-verbindungen-fuer-innovationen/">Application Programming Interfaces</a>), die speziell für multimediale Anwendungen und Videospiele auf Microsoft-Plattformen entwickelt wurden. Es unterstützt zahlreiche Funktionen, von 2D- und 3D-Grafikdarstellungen über Sound bis hin zu Netzwerkfunktionen.</p>



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



<p>Microsoft führte es im späten 1995 ein, um Entwicklern eine standardisierte Plattform für Multimediaanwendungen und Spiele zu bieten. Die Entstehung von DirectX resultiert aus dem Bedürfnis, die Fragmentierung in der Spieleentwicklung zu reduzieren und Entwicklern einen einheitlichen Zugang zu den Hardware-Ressourcen eines PCs zu bieten.</p>



<p>Vor DirectX verließen sich Entwickler auf eine Vielzahl von <a href="https://ceosbay.com/2023/04/20/api-nahtlose-verbindungen-fuer-innovationen/">APIs</a>, wodurch die Kompatibilität und Performance oft beeinträchtigt wurden. Mit DirectX konnten Entwickler effizienter arbeiten und gleichzeitig das Potenzial der Hardware besser ausschöpfen.</p>



<h2 class="wp-block-heading">Einrichten und Implementieren von DirectX</h2>



<p>Die Implementierung von DirectX in ein Projekt erfordert sowohl technisches Wissen als auch den Zugriff auf die richtigen Tools:</p>



<ol class="wp-block-list">
<li><strong>SDK Herunterladen:</strong> Um mit der Implementierung zu beginnen, muss man zuerst das Software Development Kit (SDK) herunterladen. Das SDK enthält Bibliotheken, Headerdateien und Tools, die für die Entwicklung notwendig sind. Es ist zu empfehlen, die SDK immer von der offiziellen Microsoft Repo herunterzuladen. Ansonsten gibt es auch mehr Informationen direkt bei <a href="https://www.microsoft.com/de-de/">Microsoft</a>.</li>



<li><strong>Einrichten des Projekts:</strong> Nachdem das SDK installiert ist, integriert man die notwendigen Bibliotheken und Headerdateien in das Projekt. Hierfür muss in den Projekt-Einstellungen der Pfad zu den Bibliotheken hinzugefügt werden.</li>



<li><strong>Verwenden von DirectX APIs:</strong> Sobald das Projekt eingerichtet ist, können die verschiedenen <a href="https://ceosbay.com/2023/04/20/api-nahtlose-verbindungen-fuer-innovationen/">APIs</a> für Grafik, Sound und andere Funktionen genutzt werden. Ein Beispiel: Um eine einfache 3D-Grafik zu rendern, verwendet man die Direct3D-<a href="https://ceosbay.com/2023/04/20/api-nahtlose-verbindungen-fuer-innovationen/">API</a>.</li>
</ol>



<pre class="wp-block-code"><code>// Initialisiere Direct3D
IDirect3DDevice9* pDevice;
// ... Einige Initialisierungscodes ...

// Zeichne ein Dreieck
pDevice->BeginScene();
// ... Zeichne Objekte ...
pDevice->EndScene();

// Präsentiere die gerenderte Szene
pDevice->Present(NULL, NULL, NULL, NULL);</code></pre>



<ol class="wp-block-list" start="4">
<li><strong>Optimierung und Testing:</strong> Eine wichtige Phase in der Entwicklung damit ist die Optimierung. Tools wie der DirectX-Profiler helfen dabei, Engpässe zu identifizieren und die Performance zu verbessern.</li>
</ol>



<h2 class="wp-block-heading">Wichtige Überlegungen</h2>



<ul class="wp-block-list">
<li><strong>Kompatibilität:</strong> Es bietet zwar eine Vielzahl von Funktionen, aber nicht alle sind auf jeder Hardware verfügbar. Es ist wichtig, die Anwendung auf verschiedenen Systemen zu testen, um sicherzustellen, dass sie überall reibungslos läuft.</li>



<li><strong>Aktualität:</strong> Microsoft veröffentlicht regelmäßig Updates dafür. Es lohnt sich, auf dem Laufenden zu bleiben und die Anwendung mit den neuesten Versionen zu testen.</li>



<li><strong>Lizenzierung:</strong> Die Nutzung unterliegt bestimmten Lizenzbedingungen. Entwickler sollten diese Bedingungen überprüfen, um sicherzustellen, dass sie die <a href="https://ceosbay.com/2023/04/20/api-nahtlose-verbindungen-fuer-innovationen/">API</a> korrekt verwenden.</li>
</ul>



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



<p>DirectX hat die Landschaft der Spiele- und Multimediaentwicklung maßgeblich geprägt. Durch das Verständnis seiner Geschichte, seiner Funktionen und Best Practices können Entwickler beeindruckende und leistungsstarke Anwendungen erstellen. Es bleibt ein wesentliches Tool im Arsenal eines jeden Entwicklers, der auf Windows-Plattformen arbeitet.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/09/21/directx-evolution-und-implementierung/">DirectX &#8211; Evolution und Implementierung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/09/21/directx-evolution-und-implementierung/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2443</post-id>	</item>
		<item>
		<title>Apache-Webserver</title>
		<link>https://ceosbay.com/2023/09/04/apache-webserver/</link>
					<comments>https://ceosbay.com/2023/09/04/apache-webserver/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Mon, 04 Sep 2023 20:45:00 +0000</pubDate>
				<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Apache Software Foundation]]></category>
		<category><![CDATA[Apache-Dokumentation]]></category>
		<category><![CDATA[Apache-Entwicklerteam]]></category>
		<category><![CDATA[Apache-Modules]]></category>
		<category><![CDATA[Apache-Webserver]]></category>
		<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Caching]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Einrichtung]]></category>
		<category><![CDATA[Geschichte]]></category>
		<category><![CDATA[HTTP-Server]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[Konfiguration]]></category>
		<category><![CDATA[Let’s Encrypt]]></category>
		<category><![CDATA[mod_cache]]></category>
		<category><![CDATA[mod_expires]]></category>
		<category><![CDATA[mod_security]]></category>
		<category><![CDATA[Module]]></category>
		<category><![CDATA[NCSA HTTPd]]></category>
		<category><![CDATA[Patches]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[PHP-Aktivierung]]></category>
		<category><![CDATA[Server-Software]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[SSL-Zertifikate]]></category>
		<category><![CDATA[SSL/TLS]]></category>
		<category><![CDATA[Unix]]></category>
		<category><![CDATA[Virtual Hosts]]></category>
		<category><![CDATA[Web Application Firewall]]></category>
		<category><![CDATA[Web-Hosting]]></category>
		<category><![CDATA[Web-Wurzelverzeichnis]]></category>
		<category><![CDATA[Webbrowser]]></category>
		<category><![CDATA[Webdienste]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<category><![CDATA[Webserver-Konfiguration]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=2323</guid>

					<description><![CDATA[<p>Der Apache-Webserver, häufig einfach als &#8222;Apache&#8220; bezeichnet, ist einer der bekanntesten und am häufigsten eingesetzten Webserver weltweit. Doch was genau ist der Apache-Webserver, woher kommt er und wie wird er eingerichtet? In diesem Blog-Beitrag versuche &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/09/04/apache-webserver/">Apache-Webserver</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Der Apache-Webserver, häufig einfach als &#8222;Apache&#8220; bezeichnet, ist einer der bekanntesten und am häufigsten eingesetzten <a href="https://ceosbay.com/2023/08/29/server-evolution-typen-und-best-practices-fuer-den-aufbau/">Webserver</a> weltweit. Doch was genau ist der Apache-<a href="https://ceosbay.com/2023/08/29/server-evolution-typen-und-best-practices-fuer-den-aufbau/">Webserver</a>, woher kommt er und wie wird er eingerichtet? In diesem Blog-Beitrag versuche ich, diese Fragen zu beantworten und gebe Einblicke in die spannende Geschichte und Technik hinter diesem <a href="https://ceosbay.com/2023/08/29/server-evolution-typen-und-best-practices-fuer-den-aufbau/">Webserver</a>.</p>



<h2 class="wp-block-heading">Geschichte des Apache-Webservers </h2>



<p>Die Entstehung von Apache geht zurück auf die frühen 1990er Jahre. Damals suchten einige Webentwickler nach einer Alternative zum damals populären NCSA HTTPd-Server, der von der <a href="https://www.ncsa.illinois.edu">National Center for Supercomputing Applications</a> entwickelt wurde. Der Name &#8222;Apache&#8220; leitet sich von &#8222;A Patchy Server&#8220; ab, was darauf hinweist, dass der ursprüngliche Code aus einer Reihe von Patches zum NCSA HTTPd bestand.</p>



<p>Das Apache-Entwicklerteam, zu dem Personen wie Rob McCool und Brian Behlendorf gehörten, veröffentlichte die erste offizielle Version 1995. Seitdem hat Apache stetige Weiterentwicklungen erlebt und stellt heute ein führendes <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Projekt dar, das die <a href="https://www.apache.org">Apache Software Foundation</a> verwaltet.</p>



<h2 class="wp-block-heading">Einrichtung des Apache-Webservers </h2>



<p>Apache lässt sich auf vielen Betriebssystemen, einschließlich UNIX, <a href="https://ceosbay.com/2022/11/22/erklaerung-linux/">Linux</a> und Windows, installieren. Der Apache-Webserver ist bereits in macOS eingebaut, allerdings standardmäßig deaktiviert. Dazu aber im Anschluss mehr. Für eine einfache Installation auf einem <a href="https://ceosbay.com/2022/12/05/erklaerung-debian-linux/">Debian</a>-basierten System, wie <a href="https://ceosbay.com/2022/12/04/erklaerung-ubuntu-linux/">Ubuntu</a>, verwendet man beispielsweise folgende Befehle:</p>



<p><code>sudo apt update sudo apt install apache2</code></p>



<p>Nach der Installation läuft der Webserver und kann über einen Webbrowser mit der <a href="https://ceosbay.com/2023/08/28/url-von-ihrer-entstehung-bis-zur-modernen-optimierung/">URL</a> &#8222;<a href="http://localhost/">http://localhost</a>&#8220; erreicht werden.</p>



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



<p>Der Apache-Webserver bietet eine Vielzahl von Konfigurationsoptionen, die in der Hauptkonfigurationsdatei <code>/etc/apache2/apache2.conf</code> zu finden sind. Einzelne Website-Konfigurationen lassen sich in <code>/etc/apache2/sites-available/</code> erstellen und mit dem Tool <code>a2ensite</code> aktivieren.</p>



<h2 class="wp-block-heading">Auf dem Mac</h2>



<p>Der Apache-Webserver ist bereits in macOS eingebaut, allerdings standardmäßig deaktiviert. Für diejenigen, die Apache auf einem Mac nutzen möchten, hier eine Schritt-für-Schritt-Anleitung zur Aktivierung und Einrichtung:</p>



<h2 class="wp-block-heading">Apache auf macOS aktivieren und konfigurieren</h2>



<ol class="wp-block-list">
<li><strong>Apache starten</strong>: Im Terminal gibt man den folgenden Befehl ein:bashCopy code<code>sudo apachectl start</code>Nachdem man den Befehl ausgeführt hat, kann man über den Webbrowser über die <a href="https://ceosbay.com/2023/08/28/url-von-ihrer-entstehung-bis-zur-modernen-optimierung/">URL</a> &#8222;<a href="http://localhost/">http://localhost</a>&#8220; überprüfen, ob Apache läuft. Es sollte eine Standard-Begrüßungsseite von Apache erscheinen.</li>



<li><strong>Dokumentenverzeichnis bestimmen</strong>: Standardmäßig verwendet Apache das Verzeichnis <code>/Library/WebServer/Documents/</code> als Web-Wurzelverzeichnis. Inhalte, die in diesem Verzeichnis platziert sind, kann man über den Webbrowser erreichen.</li>



<li><strong>Apache-Konfigurationsdatei bearbeiten</strong>: Die Hauptkonfigurationsdatei von Apache auf macOS befindet sich unter <code>/etc/apache2/httpd.conf</code>. Um diese Datei zu bearbeiten, kann man einen Texteditor wie <code>nano</code> verwenden:bashCopy code<code>sudo nano /etc/apache2/httpd.conf</code>In dieser Datei kann man verschiedene Einstellungen vornehmen, z.B. die Aktivierung von <a href="https://ceosbay.com/2023/02/26/erklaerung-php/">PHP</a>, die Definition von Virtual Hosts oder die Anpassung des Dokumentenverzeichnisses.</li>



<li><strong>PHP aktivieren (optional)</strong>: Wenn <a href="https://ceosbay.com/2023/02/26/erklaerung-php/">PHP</a> auf dem Mac installiert ist und man es mit Apache verwenden möchte, kann man dies in der <code>httpd.conf</code>-Datei aktivieren. Dazu muss die Zeile, die mit <code>#LoadModule php</code> beginnt, gesucht und das <code>#</code> am Anfang der Zeile entfernt werden. Nach dem Speichern der Datei muss man Apache neu starten, um die Änderungen zu übernehmen.</li>



<li><strong>Apache neu starten</strong>: Jedes Mal, wenn man Änderungen an der Konfigurationsdatei vornimmt, muss man Apache auch neu starten. Dies kann mit dem folgenden Befehl erfolgen:bashCopy code<code>sudo apachectl restart</code></li>



<li><strong>Automatischer Start von Apache</strong>: Wenn man möchte, dass Apache automatisch beim Hochfahren des Macs startet, kann man den folgenden Befehl verwenden:bashCopy code<code>sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist</code></li>
</ol>



<h2 class="wp-block-heading">Abschließende Anmerkungen</h2>



<p>Obwohl macOS einen eingebauten Apache-<a href="https://ceosbay.com/2023/08/29/server-evolution-typen-und-best-practices-fuer-den-aufbau/">Server</a> enthält, ziehen es einige Entwickler vor, Tools wie MAMP (Habe ich in der Vergangenheit verwendet aber heute eher nicht mehr. Evtl. schreibe ich noch einen Beitrag darüber) oder <a href="https://ceosbay.com/2022/10/25/homebrew-der-fehlende-paketmanager-fuer-macos-lassen-wir-fluegel-wachsen/">Homebrew</a> zu verwenden, um eine individuellere Entwicklungsumgebung zu schaffen. Diese Tools bieten oft eine einfachere Einrichtung und Konfiguration, insbesondere wenn auch andere Dienste wie <a href="https://ceosbay.com/2022/10/31/ubuntu-linux-starten-und-nutzen-mysql-server/">MySQL</a> oder <a href="https://ceosbay.com/2023/02/26/erklaerung-php/">PHP</a> in spezifischen Versionen benötigt werden.</p>



<h2 class="wp-block-heading">Best Practices und zu beachtende Punkte</h2>



<ol class="wp-block-list">
<li><strong>Sicherheit:</strong> Es ist immer dafür zu sorgen, dass der Webserver auf dem neuesten Stand ist, um Sicherheitslücken zu schließen. Zusätzlich empfiehlt sich die Installation von <code>mod_security</code> als Web Application Firewall.</li>



<li><strong>Performance:</strong> Für Websites mit hohem Traffic sollte man Module wie <code>mod_cache</code> und <code>mod_expires</code> verwenden, um Inhalte zu cachen und um die Ladezeiten zu reduzieren.</li>



<li><strong>SSL/TLS:</strong> In der heutigen Zeit ist es unerlässlich, Websites über <a href="https://ceosbay.com/2023/07/04/https-und-https-eine-reise-zur-web-sicherheit/">HTTPS</a> bereitzustellen. Mit Tools wie <a href="https://ceosbay.com/2023/09/01/lets-encrypt-der-offene-rechteanbieter/">Let&#8217;s Encrypt</a> lassen sich kostenlose <a href="https://ceosbay.com/2023/08/30/ssl-geschichte-typen-und-einrichtung/">SSL-Zertifikate</a> generieren und mit Apache verwenden.</li>



<li><strong>Module:</strong> Apache bietet eine Vielzahl von Modulen, die zusätzliche Funktionalitäten bereitstellen. Es ist genau zu überlegen, welche Module man benötigt, um unnötige Ressourcenbelastungen zu vermeiden.</li>
</ol>



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



<p>Der Apache-Webserver ist nicht nur ein Stück Internetgeschichte, sondern auch heute noch ein leistungsstarkes Tool für Webentwickler und Administratoren. Mit dem richtigen Wissen und den passenden Best Practices lässt sich Apache optimal einsetzen und bietet eine solide Grundlage für nahezu jede Webanwendung.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/09/04/apache-webserver/">Apache-Webserver</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/09/04/apache-webserver/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">2323</post-id>	</item>
		<item>
		<title>Java &#8211; Endlose Möglichkeiten der Softwareentwicklung</title>
		<link>https://ceosbay.com/2023/03/16/erklaerung-java/</link>
					<comments>https://ceosbay.com/2023/03/16/erklaerung-java/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Thu, 16 Mar 2023 18:24:29 +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[32]]></category>
		<category><![CDATA[754]]></category>
		<category><![CDATA[Annotationen]]></category>
		<category><![CDATA[Applets]]></category>
		<category><![CDATA[Apps]]></category>
		<category><![CDATA[Bytecode]]></category>
		<category><![CDATA[class]]></category>
		<category><![CDATA[Classpath]]></category>
		<category><![CDATA[Compiler]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Einsatz]]></category>
		<category><![CDATA[Entwickeln]]></category>
		<category><![CDATA[Entwicklungsumgebungen]]></category>
		<category><![CDATA[Float]]></category>
		<category><![CDATA[GNU]]></category>
		<category><![CDATA[Gosling]]></category>
		<category><![CDATA[GUI]]></category>
		<category><![CDATA[IEEE]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JDK]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[Klassen]]></category>
		<category><![CDATA[Kompilieren]]></category>
		<category><![CDATA[Laufzeitumgebung]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Machine]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Microsystems]]></category>
		<category><![CDATA[Multithreading]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Objektorientiert]]></category>
		<category><![CDATA[Optimierung]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Reflexion]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Sun]]></category>
		<category><![CDATA[Technologie]]></category>
		<category><![CDATA[TIOBE]]></category>
		<category><![CDATA[Virtual]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[XCode]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1168</guid>

					<description><![CDATA[<p>Java ist eine objektorientierte Programmiersprache und eine eingetragene Marke des Unternehmens Sun Microsystems. Dieser Beitrag ist verhältnismäßig etwas länger bzw. auf mehrere Teile aufgeteilt, da ich derzeit Java erlerne. Oracle hat es im Jahr 2010 &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java &#8211; Endlose Möglichkeiten der Softwareentwicklung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Java ist eine objektorientierte Programmiersprache und eine eingetragene Marke des Unternehmens Sun Microsystems. Dieser Beitrag ist verhältnismäßig etwas länger bzw. auf mehrere Teile aufgeteilt, da ich derzeit Java erlerne. Oracle hat es im Jahr 2010 aufgekauft. Die Programmiersprache ist ein Bestandteil der Java-Technologie. Sie besteht grundsätzlich aus dem Java-Entwicklungswerkzeug (JDK) zum Erstellen von Java-Anwendungen und der Laufzeitumgebung (JRE) zu deren Ausführung. Die Laufzeitumgebung selbst umfasst die virtuelle Maschine (JVM) und die mitgelieferten Bibliotheken. Java als Programmiersprache sollte nicht mit der Java-Technologie gleichgesetzt werden; Java-Laufzeitumgebungen führen Bytecode aus, der sowohl aus der Programmiersprache Java als auch aus anderen Programmiersprachen wie Groovy, Kotlin und Scala kompiliert werden kann. Im Prinzip kann jede Programmiersprache als Grundlage für Java-Bytecode genutzt werden, meistens existieren aber keine entsprechenden Bytecode-Compiler. Was ein Compiler ist, thematisiere ich noch in einem zukünftigen Beitrag.</p>



<p>Die Programmiersprache Java dient innerhalb der Java-Technologie vor allem zum Formulieren von Programmen. Diese liegen zunächst als reiner, menschenverständlicher Text vor, dem sogenannten Quellcode. Dieser Quellcode ist nicht direkt ausführbar. Erst der Java-Compiler, der Teil des Entwicklungswerkzeugs ist, übersetzt es in die Maschinensprache Java-Bytecode. Die Maschine, die diesen Bytecode ausführt, ist jedoch typischerweise virtuell. Folglich findet die Ausführung nicht direkt über die Hardware bzw. etwa einem Mikroprozessor ausgeführt, sondern durch entsprechende Software auf der Zielplattform.</p>



<p>Zweck der Virtualisierung ist die Plattformunabhängigkeit. Das Programm soll ohne weitere Änderung auf jeder Rechnerarchitektur laufen, wenn dort eine passende Laufzeitumgebung installiert ist. Oracle selbst bietet Laufzeitumgebungen für die Betriebssysteme <a href="https://ceosbay.com/2022/11/22/erklaerung-linux/" target="_blank" rel="noreferrer noopener">Linux</a>, macOS, Solaris und Windows an. Andere Hersteller lassen eigene Java-Laufzeitumgebungen für ihre Plattform zertifizieren. Auch in Autos, HiFi-Anlagen und anderen elektronischen Geräten wird Java verwendet.</p>



<p>Um die Ausführungsgeschwindigkeit zu erhöhen, werden Konzepte wie die Just-in-time-Kompilierung und die Hotspot-Optimierung verwendet. In Bezug auf den eigentlichen Ausführungsvorgang kann die JVM den Bytecode so interpretieren, bei Bedarf jedoch auch kompilieren und optimieren.</p>



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



<p>Im Grunde genommen ist es eine Person, die für die Entstehung der objektorientierten Programmiersprache Java verantwortlich ist. James Gosling.</p>



<p>James Gosling schloss sein Studium an der University of Calgary im Jahr 1977 mit dem Bachelor of Science in Informatik ab. Sechs Jahre später erhielt er den Doktortitel. Während seiner Doktorarbeit schrieb er 1981 den ersten Emacs für Unix-Systeme in C. Seine Implementierung wurde unter dem Namen Gosling Emacs (Gosmacs) bekannt. Neben Compilern und Mailsystemen erfand er bei Sun Microsystems in den 80ern gemeinsam mit David S. H. Rosenthal auch das nicht mehr weiterentwickelte Windowing-System „NeWS (Network extensible Window System)“, welches ursprünglich unter dem Namen SunDew bekannt war.</p>



<p>Bei seiner Arbeit von 1984 bis 2010 arbeitete Gosling bei Sun Microsystems, in dieser Zeit entwarf er auch das originäre Design von Java. Den Grundstein für diese Programmiersprache hatte er bereits während seines Studiums gelegt. Dort entwickelte er auch eine virtuelle CPU, die P-Code als Maschinensprache ausführte. Das Konzept dieser Pseudo-Maschine übertrug Gosling später auf die architekturneutrale Ausführung weitverbreiteter Programme.</p>



<p>Im Jahr 2005 erhielt Gosling den Titel zum Chief Technical Officer der Produktentwicklung bei Sun Microsysems.</p>



<h3 class="wp-block-heading">Java als Open Source bzw. Freie Software</h3>



<p>Sun hatte zugesichert, die JDK unter der GNU General Public License zu veröffentlichen. mit der Übernahme durch Oracle wurde auch die offene Lizenzierung übernommen. Am 13. November 2006 haben sie erste Teile der JDK bereits mit dem Compiler javac und der Hotspot Virtual Machine als <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a> veröffentlicht. Zudem hat man mit OpenJDK eine Community-Seite eröffnet, mit deren Hilfe man die Entwicklung koordinierte. Am 8. Mai 2007 folgten große Teile des „Java-SE“-Quellcodes zum Erstellen eines JDK. Eine Ausnahme stellte solcher Code dar, für den Sun nicht die nötigen Rechte besaß, um diesen freizugeben. Dieser liegt somit nur in kompilierter Form vor. Ebenfalls kündigte Sun an, dass Entwicklungen auf Grundlage des OpenJDK das „Java Compatible“-Logo führen, wenn sie nach dem „Java Compatibility Kit“ (JCK) zertifiziert sind.</p>



<p>Zuvor hat man den Quelltext von Java unter anderem bei jedem JDK mitgeliefert und ermöglichte so zwar Einsicht, doch man durfte diesen nicht beliebig modifizieren. Aus diesem Grund gibt es neben den offiziellen JCP auch diverse unabhängige Vereinigungen, die es sich zum Ziel gesetzt haben, ein unter einer freien <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a>-Lizenz gestelltes Java bereitzustellen. Die bekanntesten dieser Projekte sind Apache Harmony, Kaffe und das GNU-Classpath-Projekt gewesen. Gegenwärtig gibt es neben OpenJDK noch eine weitere große Implementierung, die aktuelle Java Releases veröffentlicht, Eclipse OpenJ9. Diese JVM-Implementierung hat IBM an die Eclipse Foundation übergeben. OpenJ9 steht mehrfachlizenziert unter EPL 2.0, Apache 2.0 und GNU 2.0 with Classpath Exception zur Verfügung. Darüber aber mehr in meinem Eclipse Beitrag.</p>



<p>Java ist mitunter eines der populärsten Programmiersprachen. In dem seit 2001 veröffentlichten TIOBE-Index lag Java bis 2020, konkurrierend mit C, stets auf den ersten beiden, seit 2021 mit zusätzlicher Konkurrenz von <a href="https://ceosbay.com/2022/12/20/erklaerung-python/" target="_blank" rel="noreferrer noopener">Python</a>, auf den ersten drei Plätzen des Rankings. Nach dem RedMonk-Programmiersprachenindex 2019 liegt Java zusammen mit <a href="https://ceosbay.com/2022/12/20/erklaerung-python/" target="_blank" rel="noreferrer noopener">Python</a> auf dem zweiten Platz nach <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>.</p>



<h3 class="wp-block-heading">Das Grundkonzept von Java</h3>



<p><strong>Der Entwurf der Programmiersprache strebte hauptsächlich fünf Ziele an:</strong></p>



<ol class="wp-block-list" type="1">
<li><strong>Sie soll eine einfache, objektorientierte, verteilte und vertraute Programmiersprache sein.</strong><br>Java ist im Vergleich zu anderen objektorientierten Programmiersprachen wie C++ oder C# einfacher, da es einen reduzierten Sprachumfang besitzt und beispielsweise Operatorüberladung und Mehrfachvererbung nicht unterstützt.<br></li>



<li><strong>Sie soll robust und sicher sein.</strong><br>Viele der Designentscheidungen bei der Definition von Java reduzieren die Wahrscheinlichkeit ungewollter Systemfehler. Beispiele dafür sind die starke Typisierung, Garbage Collection, Ausnahmebehandlung sowie der Verzicht auf Zeigerarithmetik. Für die Sicherheit stehen Konzepte wie der Class-Loader, der die sichere Zuführung von Klasseninformationen zur Java <a href="https://ceosbay.com/2022/11/10/erklaerung-virtuelle-maschine/" target="_blank" rel="noreferrer noopener">Virtual Machine</a> steuert und der Security-Manager, die sicherstellen, dass nur Zugriff auf Programmobjekte erlaubt wird, für die entsprechende Rechte vorhanden sind.<br></li>



<li><strong>Sie soll architekturneutral und portabel sein.<br></strong>Java ist so entwickelt, dass dieselbe Version eines Programms prinzipiell auf einer beliebigen Computerhardware läuft, unabhängig von ihrem Prozessor oder anderen Hardwarebestandteilen. Zusätzlich zur Architekturneutralität ist es portabel. Folglich sind elementare Datentypen sowohl in ihrer Größe und der internen Darstellung als auch in ihrem arithmetischen Verhalten standardisiert. Beispielsweise ist ein float immer ein IEEE 754 Float von 32 Bit Länge. Dasselbe gilt beispielsweise auch für die Klassenbibliothek, mit deren Hilfe man eine vom Betriebssystem unabhängige GUI erzeugen kann.<br></li>



<li><strong>Sie soll sehr leistungsfähig sein.<br></strong>Java hat aufgrund der Optimierungsmöglichkeit zur Laufzeit das Potenzial, eine bessere Performance als auf Compilezeit-Optimierungen begrenzte Sprachen (C++ und andere Sprachen) zu erreichen. Dem entgegen steht der Overhead durch die Laufzeitumgebung, sodass die Leistungsfähigkeit von beispielsweise C++-Programmen in einigen Kontexten übertroffen, in anderen aber nicht erreicht wird. Um die Leistungsfähigkeit zu gewährleisten, kann man in der Java Virtual Machine (JVM) die Performance messen.<br></li>



<li><strong>Sie soll interpretierbar, parallelisierbar und dynamisch sein.<br></strong>Wie mehrfach erwähnt, finden die Kompilierung im maschinenunabhängigen Bytecode statt. Dieser wiederum kann auf der Zielplattform interpretiert werden. Die Java Virtual Machine interpretiert Bytecode, bevor sie es aus Performancegründen kompiliert und optimiert. Die Parallelisierbarkeit erreicht es durch die Unterstützung von Multithreading. Also durch den parallelen Ablauf von eigenständigen Programmabschnitten. Dazu bietet die Sprache selbst die Schlüsselwörter synchronized und volatile – Konstrukte, die das „Monitor &amp; Condition Variable Paradigma“ von C. A. R. Hoare unterstützen. Die Klassenbibliothek enthält weitere Unterstützungen für parallele Programmierung mit Threads. Moderne JVMs bilden einen Java-Thread auf Betriebssystem-Threads ab und profitieren somit von Prozessoren mit multiplen Rechenkernen. Die Dynamik erreicht es durch den Aufbau. Vor allem durch die Dynamik bzw. der Anpassungsfähigkeit an sich ändernde Rahmenbedingungen anzupassen. Da die Module erst zur Laufzeit gelinkt werden, können beispielsweise Teile der Software (etwa Bibliotheken) neu ausgeliefert werden, ohne die restlichen Programmteile anpassen zu müssen. Man kann Interfaces als Basis für die Kommunikation zwischen zwei Modulen einsetzen, während sich die eigentliche Implementierung dynamisch und beispielsweise auch während der Laufzeit ändern kann.</li>
</ol>



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



<p>Die Grundidee der objektorientierten Programmierung ist, Daten und zugehörige Funktionen möglichst eng in einem sogenannten Objekt zusammenzufassen und nach außen hin zu kapseln (Abstraktion). Die Absicht dahinter ist, große Softwareprojekte einfacher zu verwalten und die Qualität der Software zu erhöhen. Ein weiteres Ziel der Objektorientierung ist ein hoher Grad der Wiederverwendbarkeit von Softwaremodulen.</p>



<p>Ein neuer Aspekt von Java gegenüber beispielsweise der objektorientierten Programmiersprache C++ ist die explizite Unterscheidung zwischen Schnittstellen und Klassen, die man durch entsprechende Schlüsselwörter interface und class ausdrückt. Es unterstützt kein Erben von mehreren unabhängigen Basisklassen (sogenannte „Mehrfachvererbung“ wie in C++ oder Eiffel üblich), wohl aber das Implementieren einer beliebigen Zahl von Schnittstellen, womit sich viele der entsprechenden Probleme lösen lassen. Dabei kann man Methodensignaturen und Standardimplementierungen von Methoden an die abgeleiteten Klassen weitergeben, jedoch keine Attribute.</p>



<p>Es ist nicht vollständig objektorientiert, da die Grunddatentypen (int, boolean usw.) keine Objekte sind. Dies hängt mit der Syntax zusammen. Die Semantik, Grammatik und Syntax von Java sind in der Java Language Specification (Java-Sprachspezifikation) von Sun Microsystems dokumentiert. Das folgende Beispielprogramm gibt die unter Entwicklern bzw. Programmierern klassische Meldung „Hallo Welt!“, gefolgt von einem Zeilenumbruch, auf dem Ausgabemedium aus. Mittels Autoboxing kann man in die entsprechenden Objekttypen und umgekehrt umwandeln.</p>



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



<p>Reflexion (englisch reflection) bedeutet in der Programmierung, dass ein Programm die eigene Struktur kennt (englisch introspection) und/oder diese modifizieren kann (englisch intercession). Auch Java bietet eine Reflexion-API als Bestandteil der Laufzeitumgebung an. Damit ist es möglich, zur Laufzeit auf Klassen und Methoden zuzugreifen, deren Existenz oder genaue Ausprägung zur Zeit der Programmerstellung nicht bekannt war. Häufig wird diese Technik im Zusammenhang mit dem Entwurfsmuster Fabrikmethode (Factory Method) angewandt.</p>



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



<p>Annotationen erlauben die Notation von Metadaten und ermöglichen bis zu einem gewissen Grad benutzerdefinierte Spracherweiterungen. Sinn der Annotationen ist unter anderem die automatisierte Erzeugung von Code und anderen in der Software-Entwicklung wichtigen Dokumenten für wiederkehrende Muster anhand kurzer Hinweise im Quelltext. Früher hat man dafür ausschließlich Javadoc-Kommentare mit speziellen JavaDoc-Tags verwendet, deren Auswerung von Doclets wie zum Beispiel dem XDoclet stattgefunden hat.</p>



<p>Annotationen können auch in den kompilierten Class-Dateien enthalten sein. Für die Verwendung wird der Quelltext folglich nicht benötigt. Insbesondere sind die Annotationen auch über die Reflection-API zugänglich. Man kann sie beispielsweise zur Erweiterung des Bean-Konzeptes verwenden. Doch darüber schreibe ich in naher Zukunft einen gesonderten Beitrag.</p>



<h3 class="wp-block-heading">Wo findet Java Einsatz?</h3>



<p><strong>Webanwendungen</strong></p>



<p>Anwendungen, die man auf einem Webserver lädt, startet und die beim Benutzer in einem Webbrowser ablaufen bzw. dargestellt werden. Üblicherweise läuft ein Teil der Webanwendung auf dem Server (die Geschäftslogik und Persistenz) und ein anderer Teil im Webbrowser (die Logik der grafischen Benutzeroberfläche). Der Serverteil wird üblicherweise vollständig in Java geschrieben, der Browserteil üblicherweise in <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a> und <a href="https://ceosbay.com/2022/11/12/javascript/" target="_blank" rel="noreferrer noopener">JavaScript</a>. Es ist jedoch auch möglich, Java-Webanwendungen inklusive GUI-Logik vollständig in Java zu schreiben (siehe z. B. Google Web Toolkit oder die Remote Application Platform). Bekannte Beispiele für Java-Webanwendungen sind Twitter, Jira, <a href="https://ceosbay.com/2022/12/18/erklaerung-jenkins/" target="_blank" rel="noreferrer noopener">Jenkins</a>. Zwar nicht vollständig, aber Gmail ist zu großen Teilen auch damit geschrieben.</p>



<p><strong>Desktop-Anwendungen</strong></p>



<p>Unter Desktop-Anwendungen oder Applikationen fasst man normale Desktop-Programme zusammen. Sowohl Internet-Kommunikationsprogramme als auch Spiele und/oder Office-Anwendungen, die auf einem normalen PC laufen, haben diese Bezeichnung. Bekannte Beispiele für Java-Desktop-Anwendungen sind die integrierte Entwicklungsumgebung Eclipse oder das mittlerweile von Microsoft aufgekaufte Computerspiel Minecraft.</p>



<p><strong>Applets</strong></p>



<p>Java-Applets sind Anwendungen, die man normalerweise in einem Webbrowser ausführt. Sie sind üblicherweise auf einen durch ein spezielles <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>-Tag definierten Bereich einer Webseite beschränkt. Voraussetzung für die Ausführung der Applets ist ein Java-fähiger Browser. Eine Unterstützung dieser Anwendungsform liegt seit der Version 11 nicht mehr vor.</p>



<p><strong>Apps</strong></p>



<p>Apps sind kleinere Applikationen für mobile Endgeräte wie Handys, Smartphones, PDAs oder Tablets. Sie laufen üblicherweise auf speziellen, für die Ausführung von Java-Anwendungen optimierten Plattformen wie Java ME. Native Apps für das Android Betriebssystem von Google sind in der Regel auch damit programmiert, basieren aber auf einer abweichenden Klassenbibliotheks-API.</p>



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



<p>Es gibt eine große Vielfalt von Entwicklungsumgebungen für Java, sowohl proprietäre als auch <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open Source</a>. Die meisten Entwicklungsumgebungen dafür sind selbst ebenfalls in Java geschrieben.</p>



<p>Die bekanntesten Open-Source-Umgebungen sind das von der Eclipse Foundation bereitgestellte Eclipse und das von Sun entwickelte NetBeans.</p>



<p>Unter den kommerziellen Entwicklungsumgebungen sind <a href="https://ceosbay.com/2023/03/10/erklaerung-intellij-idea/" target="_blank" rel="noreferrer noopener">IntelliJ IDEA</a> von JetBrains, siehe meinen Beitrag, JBuilder von Borland sowie JCreator und das auf NetBeans basierende Sun ONE Studio von Sun, am verbreitetsten. Außerdem gibt es noch eine Version von Eclipse, die von IBM unter dem Namen WebSphere Studio Application Developer („WSAD“) vertrieben wurde und ab Version 6.0 Rational Application Developer („RAD“) heißt. Auch in XCode von Apple lässt sich damit schreiben. Doch zu empfehlen ist es eher nicht, da es primär für C++ und C optimiert ist.</p>



<p>Sehr viele Texteditoren bieten Unterstützung dafür, darunter Emacs, jEdit, Atom (Ist aufgrund eines Hacks nicht mehr verfügbar 😉 ), Visual Studio Code, Vim und Notepad++, über die ich in zukünftigen Beiträgen schreibe.</p>



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



<p>Ein Compiler übersetzt Java-Quellcode (Dateiendung „.java“) in einen ausführbaren Code. Grundsätzlich unterscheidet man zwischen Bytecode- und Nativecode-Compilern. Einige Laufzeitumgebungen verwenden einen JIT-Compiler, um zur Laufzeit den Bytecode häufig genutzter Programmteile in nativen Maschinencode zu übersetzen.</p>



<p><strong>Bytecode Compiler</strong></p>



<p>Im Normalfall übersetzt der Java-Compiler die Programme in einen nicht direkt ausführbaren Bytecode (Dateiendung „.class“), den die Java Runtime Environment (JRE) später ausführt. Die HotSpot-Technologie kompiliert den Bytecode zur Laufzeit in nativen Prozessorcode und optimiert diesen abhängig von der verwendeten Plattform. Diese Optimierung findet dabei nach und nach statt, sodass der Effekt auftritt, dass Programmteile nach mehrmaliger Abarbeitung schneller werden. Andererseits führt diese Technik, die ein Nachfolger der Just-in-time-Kompilierung ist, dazu, dass man mit Java-Bytecode, Anwendungen theoretisch genauso schnell wie nativ kompilierte Programme ausführen kann.</p>



<p><strong>Native Compiler</strong></p>



<p>Es existieren auch Compiler für Java, die Quelltexte oder den Bytecode in „normalen“ Maschinencode übersetzen können, sogenannte Ahead-of-time-Compiler. Nativ kompilierte Programme haben den Vorteil, keine JavaVM mehr zu benötigen aber auch den Nachteil, nicht mehr plattformunabhängig zu sein.</p>



<p>Beispiele für native Java Compiler waren Excelsior JET (eingestellt, bis Java SE 7), sowie GNU Compiler for Java (GCJ, eingestellt, bis J2SE 5.0) wie MinGW, Cygwin oder JavaNativeCompiler (JNC).</p>



<p><strong>Wrapper</strong></p>



<p>Als weitere Möglichkeit kann das Java-Programm in ein anderes Programm „eingepackt“ (englisch to wrap) werden. Unter anderem nennt man dies auch Adapter. Diese äußere Hülle dient dann als Ersatz für ein Java-Archiv. Sie sucht selbständig nach einer installierten Java-Laufzeitumgebung, um das eigentliche Programm zu starten und informiert den Benutzer darüber, wo er eine Laufzeitumgebung herunterladen kann, sofern noch keine installiert ist. Es ist also immer noch eine Laufzeitumgebung nötig, um das Programm starten zu können, aber der Anwender erhält eine verständliche Fehlermeldung, die ihm weiterhilft.</p>



<p>Java Web Start ist ein etwas eleganterer und standardisierter Ansatz für diese Lösung. Es ermöglicht die einfache Aktivierung von Anwendungen und garantiert, dass immer die neueste Version der Anwendung ausgeführt wird. Dadurch bleiben einem durch die Automatisierung komplizierte Installations- oder Aktualisierungsprozeduren erspart.</p>



<p>Beispiele für Java-Wrapper sind JSmooth oder Launch4J. JBuilder von Borland und NSIS sind ebenfalls in der Lage, einen Wrapper für Windows zu erstellen.</p>



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



<p>Ein Fazit gibt es hierfür nicht, da ich es mir nicht anmaße, etwas zu beurteilen, dass ich noch nicht zu einem großen Teil verstehe. In diesem Zusammenhang vielleicht in den zukünftigen Beiträgen zu finden.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/16/erklaerung-java/">Java &#8211; Endlose Möglichkeiten der Softwareentwicklung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/16/erklaerung-java/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1168</post-id>	</item>
		<item>
		<title>PHP &#8211; Die Sprache für dynamische und interaktive Webanwendungen</title>
		<link>https://ceosbay.com/2023/02/26/erklaerung-php/</link>
					<comments>https://ceosbay.com/2023/02/26/erklaerung-php/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sun, 26 Feb 2023 18:03:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Betriebssystem]]></category>
		<category><![CDATA[Big-Data]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Netzwerk]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Anwendungsgebiete]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[APIS]]></category>
		<category><![CDATA[Arrays]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[Commerce]]></category>
		<category><![CDATA[Cookies]]></category>
		<category><![CDATA[Dateien]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[E-Commerce]]></category>
		<category><![CDATA[Einfach]]></category>
		<category><![CDATA[Entwicklungszeit]]></category>
		<category><![CDATA[Hombrew]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Hypertext]]></category>
		<category><![CDATA[Integer]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[Laravel]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Management]]></category>
		<category><![CDATA[Media]]></category>
		<category><![CDATA[Objekte]]></category>
		<category><![CDATA[Online]]></category>
		<category><![CDATA[Open-Source]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Preprocessor]]></category>
		<category><![CDATA[PrestaShop]]></category>
		<category><![CDATA[Programmiersprache]]></category>
		<category><![CDATA[Quelle]]></category>
		<category><![CDATA[Social]]></category>
		<category><![CDATA[Sprache]]></category>
		<category><![CDATA[Standardbibliothek]]></category>
		<category><![CDATA[Strings]]></category>
		<category><![CDATA[Syntax]]></category>
		<category><![CDATA[Terminal]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[Web-Services]]></category>
		<category><![CDATA[Webhosting]]></category>
		<category><![CDATA[Webserver]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Zahlen]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1379</guid>

					<description><![CDATA[<p>PHP (Hypertext Preprocessor) ist eine weit verbreitete, serverseitige Skriptsprache, speziell für die Webentwicklung. Ursprünglich von Rasmus Lerdorf 1994 ins Leben gerufen, hat es sich zu einer der wichtigsten und einflussreichsten Skriptsprachen in der Webentwicklung entwickelt. &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/02/26/erklaerung-php/">PHP &#8211; Die Sprache für dynamische und interaktive Webanwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>PHP (Hypertext Preprocessor) ist eine weit verbreitete, serverseitige Skriptsprache, speziell für die Webentwicklung. Ursprünglich von Rasmus Lerdorf 1994 ins Leben gerufen, hat es sich zu einer der wichtigsten und einflussreichsten Skriptsprachen in der Webentwicklung entwickelt. Es hat den Vorteil, dass man es leicht in <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a> einbetten kann und sich nahtlos in <a href="https://ceosbay.com/2023/02/28/erklaerung-cms/" target="_blank" rel="noreferrer noopener">Content-Management-Systeme</a> wie <a href="https://ceosbay.com/2023/03/01/erklaerung-wordpress/" target="_blank" rel="noreferrer noopener">WordPress</a>, Joomla und Drupal integrieren lässt.</p>



<h3 class="wp-block-heading">Grundprinzipien von PHP</h3>



<p>Es ist eine serverseitige Sprache, was bedeutet, dass man PHP-Skripte ausschließlich auf einem Server ausführt, bevor es das Ergebnis an den Webbrowser des Clients sendet. Dies hat den Vorteil, dass man sensible Daten wie Passwörter oder Datenbankverbindungen nicht direkt im Quellcode des Clients preisgeben muss.</p>



<h4 class="wp-block-heading">Einige der grundlegenden Prinzipien:</h4>



<ul class="wp-block-list">
<li>Einfache Syntax: Es ist bekannt für seine einfache und leicht verständliche Syntax, die es sowohl Anfängern als auch erfahrenen Programmierern ermöglicht, relativ schnell produktiv zu sein.</li>
</ul>



<ul class="wp-block-list">
<li>Dynamisches Typisierungssystem: Im Gegensatz zu streng typisierten Sprachen erlaubt es Variablen, verschiedene Datentypen (z.B. Strings, Zahlen, Arrays und Objekte) während der Laufzeit zu speichern. Dies ermöglicht eine höhere Flexibilität und verkürzt die Entwicklungszeit.</li>
</ul>



<ul class="wp-block-list">
<li>Integration mit <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>: Man kann PHP-Skripte direkt in <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>-Dateien einbetten, wodurch es einfach ist, dynamische Inhalte innerhalb einer statischen <a href="https://ceosbay.com/2022/12/29/erklaerung-html/" target="_blank" rel="noreferrer noopener">HTML</a>-Seite zu erstellen.</li>
</ul>



<ul class="wp-block-list">
<li>Umfangreiche Standardbibliothek: Es bietet eine umfangreiche Sammlung von Funktionen und Klassen, die die Arbeit mit Dateien, Datenbanken, Sitzungen, Cookies, Netzwerkprotokollen und vielem mehr erleichtern.</li>
</ul>



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



<ul class="wp-block-list">
<li>Plattformübergreifend: Es ist kompatibel mit verschiedenen Betriebssystemen wie Windows, <a href="https://ceosbay.com/2022/11/22/erklaerung-linux/">Linux</a> und MacOS. Dies macht es zu einer idealen Wahl für Webentwickler, die plattformunabhängige Anwendungen erstellen möchten. Bis vor einigen Iterationen von MacOS konnte man einen Server nativ über das Terminal starten. Dies hat man aber scheinbar aufgrund von Sicherheitsrisiken unterbunden. Möglich ist dies nun via <a href="https://ceosbay.com/2022/10/25/homebrew-der-fehlende-paketmanager-fuer-macos-lassen-wir-fluegel-wachsen/" target="_blank" rel="noreferrer noopener">Homebrew</a>. Hierzu verweise ich gerne auf den folgenden <a href="https://ceosbay.com/2022/10/25/homebrew-der-fehlende-paketmanager-fuer-macos-lassen-wir-fluegel-wachsen/" target="_blank" rel="noreferrer noopener">Artikel</a>.</li>
</ul>



<ul class="wp-block-list">
<li>Leistungsfähigkeit: Man kann komplexe und umfangreiche Webanwendungen verarbeiten und ist in der Lage, auch bei hoher Last stabile Leistung zu liefern.</li>
</ul>



<ul class="wp-block-list">
<li>Kostenfrei und Open Source: Es ist eine <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a>-Software, was bedeutet, dass man sie kostenlos herunterladen, verwenden und modifizieren darf. Dies hat zu einer großen und engagierten Entwicklergemeinschaft geführt, die nach wie vor zur ständigen Verbesserung und Erweiterung der Sprache beiträgt.</li>
</ul>



<ul class="wp-block-list">
<li>Breite Unterstützung: Viele Webhosting-Unternehmen unterstützen PHP von Haus aus und man kann es leicht auf einem Webserver installieren.</li>
</ul>



<h3 class="wp-block-heading">Anwendungsgebiete von PHP</h3>



<p>Wie bereits erwähnt ist es ist eine vielseitige Programmiersprache. Man kann sie aus diesem Grund in einer Vielzahl von Anwendungsfällen einsetzen. Einige der wichtigsten Anwendungsgebiete von PHP sind:</p>



<ul class="wp-block-list">
<li>Content-Management-Systeme (CMS): PHP ist die treibende Kraft hinter einigen der beliebtesten <a href="https://ceosbay.com/2023/02/28/erklaerung-cms/" target="_blank" rel="noreferrer noopener">CMS</a> wie <a href="https://ceosbay.com/2023/03/01/erklaerung-wordpress/" target="_blank" rel="noreferrer noopener">WordPress</a>, Joomla und Drupal. Diese Systeme erleichtern die Erstellung und Verwaltung von Websites ohne tiefgreifende Programmierkenntnisse.</li>
</ul>



<ul class="wp-block-list">
<li>E-Commerce-Plattformen: Man verwendet es häufig zur Entwicklung von Online-Shops und E-Commerce-Plattformen. Beispiele hierfür sind WooCommerce, Magento oder PrestaShop. Die Skalierbarkeit und Flexibilität von PHP ermöglichen es Entwicklern, umfangreiche und leistungsfähige E-Commerce-Websites zu erstellen, die auf die individuellen Bedürfnisse der Kunden zugeschnitten sind.</li>
</ul>



<ul class="wp-block-list">
<li>Webanwendungen: PHP eignet sich hervorragend für die Entwicklung von benutzerdefinierten Webanwendungen und hat eine Vielzahl von <a href="https://ceosbay.com/2022/11/14/erklaerung-frameworks/" target="_blank" rel="noreferrer noopener">Frameworks</a> wie Laravel, Symfony oder CodeIgniter, die den Entwicklungsprozess vereinfachen und beschleunigen.</li>
</ul>



<ul class="wp-block-list">
<li>APIs und Web-Services: Aufgrund seiner Fähigkeit, einfach und schnell mit verschiedenen Datenquellen und -formaten zu arbeiten, eignet sich PHP hervorragend zur Entwicklung von APIs und Web-Services, die als Brücke zwischen unterschiedlichen Anwendungen und Plattformen fungieren.</li>
</ul>



<ul class="wp-block-list">
<li>Social-Media-Plattformen: PHP ist die Grundlage einiger bekannter Social-Media-Plattformen wie Facebook, dass man ursprünglich in PHP entwickelt hat. PHP kann man aber auch bei der Entwicklung eigener Social-Media-Plattformen oder bei der Integration von Social-Media-Funktionalitäten in bestehende Anwendungen einsetzen.</li>
</ul>



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



<p>PHP hat sich als eine robuste, vielseitige und weit verbreitete serverseitige Skriptsprache etabliert, die man in einer Vielzahl von Anwendungsbereichen einsetzt. Mit seiner einfachen Syntax, den leistungsfähigen Funktionen und breiten Unterstützung durch Webhosting-Unternehmen, ist PHP eine ausgezeichnete Wahl für Webentwickler, die dynamische, interaktive und benutzerfreundliche Websites und Webanwendungen erstellen möchten. Die engagierte und wachsende Entwicklergemeinschaft garantiert die fortlaufende Verbesserung und Erweiterung der Sprache, was PHP zu einer attraktiven Option für Webentwickler auf der ganzen Welt macht.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/02/26/erklaerung-php/">PHP &#8211; Die Sprache für dynamische und interaktive Webanwendungen</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/02/26/erklaerung-php/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1379</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>Jenkins &#8211; Automatisierte Arbeitsabläufe beim Testing</title>
		<link>https://ceosbay.com/2022/12/18/erklaerung-jenkins/</link>
					<comments>https://ceosbay.com/2022/12/18/erklaerung-jenkins/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sun, 18 Dec 2022 07:35:48 +0000</pubDate>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[CD]]></category>
		<category><![CDATA[CI]]></category>
		<category><![CDATA[CIFS]]></category>
		<category><![CDATA[Continious]]></category>
		<category><![CDATA[Deploy]]></category>
		<category><![CDATA[Dev]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Foundation]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Hudson]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Jenkins]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Machine]]></category>
		<category><![CDATA[Maschine]]></category>
		<category><![CDATA[Microservice]]></category>
		<category><![CDATA[Microservices]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Microsystems]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[OS]]></category>
		<category><![CDATA[Pipeline]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[SSH]]></category>
		<category><![CDATA[Sun]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[VM]]></category>
		<category><![CDATA[Win]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=999</guid>

					<description><![CDATA[<p>Jenkins ist ein webbasiertes Open Source Tool bzw. Software-System, für Continuous Integration und Continuous Delivery (CI/CD). Es dient der Automatisierung und für DevOps. Geschrieben ist es in der Programmiersprache Java. Es lassen sich damit CI/CD-Workflows &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/18/erklaerung-jenkins/">Jenkins &#8211; Automatisierte Arbeitsabläufe beim Testing</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Jenkins ist ein webbasiertes <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open Source</a> Tool bzw. Software-System, für <a href="https://ceosbay.com/2023/04/14/erklaerung-ci-cd/" target="_blank" rel="noreferrer noopener">Continuous Integration und Continuous Delivery</a> (<a href="https://ceosbay.com/2023/04/14/erklaerung-ci-cd/" target="_blank" rel="noreferrer noopener">CI/CD</a>). Es dient der Automatisierung und für <a href="https://ceosbay.com/2023/03/02/erklaerung-devops/" target="_blank" rel="noreferrer noopener">DevOps</a>. Geschrieben ist es in der Programmiersprache Java. Es lassen sich damit <a href="https://ceosbay.com/2023/04/14/erklaerung-ci-cd/" target="_blank" rel="noreferrer noopener">CI/CD</a>-Workflows bzw. sogenannte Pipelines implementieren. Es wird als Fork der Software Hudson von Sun Microsystems, heute Oracle, betrachtet.</p>



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



<p>Jenkins ist in erster Linie eine Entwicklung von Kohsuke Kawaguchi. Einem ehemaligen Mitarbeiter von Sun Microsystems, der es unter dem Namen Hudson entwickelt hat. Kawaguchi verließ das Unternehmen, nachdem Oracle es Ende Januar 2010 übernahm. Er behielt aber die Leitung bei Hudson und arbeitete nach eigenen Angaben auf freiberuflicher Basis weiter bei Oracle. Oracle hielt nach wie vor die Namensrechte an Hudson. Aus diesem Grund hat man das Projekt schließlich in Jenkins umbenannt. Die Namensgebung erfolgte laut der Entwickler aufgrund der äquivalenten Assoziation der beiden Wörter mit dem Beruf des Butlers.</p>



<p>Oracle trieb die Entwicklung von Hudson weiterhin voran. Deshalb spricht man heute von einem Fork (einer „Abspaltung“) in der Softwareentwicklung. Im Jahr 2016 wurde die Entwicklung von Hudson zugunsten von Jenkins eingestellt und der Eclipse Foundation gespendet. Die Entwicklung wird jetzt als <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Projekt unter der Leitung der <a href="https://cd.foundation" target="_blank" rel="noreferrer noopener">CD Foundation</a>, einer Organisation innerhalb der <a href="https://www.linuxfoundation.org" target="_blank" rel="noreferrer noopener">Linux Foundation</a>, verwaltet.</p>



<h3 class="wp-block-heading">Wofür Pipelines?</h3>



<p>Im Grunde genommen automatisieren Pipelines Tests und Berichte zu isolierten Änderungen in einer größeren Codebasis in Echtzeit und erleichtern die Integration unterschiedlicher Codezweige in einen Hauptzweig. Man erkennt dadurch schnell Fehler in einer Codebasis, erstellt die Software, automatisiert das Testen der Builds, bereitet die Codebasis für die Bereitstellung (Auslieferung) vor und stellt schließlich Code in Containern und auf <a href="https://ceosbay.com/2022/11/10/erklaerung-virtuelle-maschine/">virtuellen Maschinen</a> sowie Bare-Metal- und <a href="https://ceosbay.com/2022/11/30/erklaerung-cloud-computing/">Cloud</a>-Servern bereit. Es gibt auch kommerzielle Versionen von Jenkins, auf die ich in diesem Beitrag aber nicht weiter eingehe.</p>



<h3 class="wp-block-heading">Continious Integration / Kontinuierliche Integration</h3>



<p>Kontinuierliche Integration hat sich seit der Erfindung weiterentwickelt. Ursprünglich war es die Norm, dass Teams einen Build pro Tag veröffentlichten. Nun ist es die Regel, dass jedes Teammitglied täglich oder häufiger Aktualisierungen einreicht, die man als Commit bezeichnet (Siehe <a href="https://ceosbay.com/2022/11/18/erklaerung-git/">Git</a> / <a href="https://ceosbay.com/2022/11/19/erklaerung-github/">GitHub</a>). Dies erfolgt bei jeder wesentlichen Änderung eines Builds. Bei der richtigen Anwendung bietet Continuous Integration verschiedene Vorteile, wie zum Beispiel ständige Rückmeldungen zum Status der Software. Da man durch CI, Mängel frühzeitig in der Entwicklung erkennt, sind Fehler in der Regel kleiner, weniger komplex und leichter zu beheben.</p>



<h3 class="wp-block-heading">Jenkins und CI/CD</h3>



<p>Im Laufe der Zeit wurden Jenkins <a href="https://ceosbay.com/2023/04/14/erklaerung-ci-cd/" target="_blank" rel="noreferrer noopener">Continuous Delivery und Deployment</a> hinzugefügt. <a href="https://ceosbay.com/2023/04/14/erklaerung-ci-cd/" target="_blank" rel="noreferrer noopener">Continuous Delivery</a> bedeutet, dass das Erstellen und Packen von Code für die spätere Bereitstellung in Test-, Produktions-Staging- und Produktionsumgebungen automatisiert wird. <a href="https://ceosbay.com/2023/04/14/erklaerung-ci-cd/" target="_blank" rel="noreferrer noopener">Continuous Deployment</a> automatisiert den letzten Schritt der Bereitstellung des Codes an seinem endgültigen Ziel.</p>



<p>In beiden Fällen reduziert die Automatisierung die Anzahl der auftretenden Fehler, da die richtigen Schritte und Best Practices in Jenkins kodiert sind. Jenkins beschreibt einen gewünschten Zustand und der Automatisierungsserver stellt sicher, dass dieser Zustand erreicht wird. Darüber hinaus macht diese Automatisierung die Bereitstellung schneller, da Vorgänge nicht mehr an personelle Beschränkungen gebunden sind. Schließlich reduziert es die Belastung des Entwicklungs- und Betriebsteams, indem es die Notwendigkeit von manuellen Rollouts mitten in der Nacht und am Wochenende beseitigt.</p>



<h3 class="wp-block-heading">Jenkins und Microservices</h3>



<p>Jenkins bewährt sich besonders in Microservices-Architekturen. Da es eines der Ziele von Microservices ist, Anwendungen und Dienste häufig zu aktualisieren, sollte man dafür sorgen, dass die Bandbreite die Releases nicht verzögert. Mehr und kleinere Dienste mit schnelleren Update-Intervallen lassen sich nur durch Automatisierung gut umsetzen – und dafür ist es wohl die richtige Wahl.</p>



<h3 class="wp-block-heading">Jenkins X</h3>



<p>Das Jenkins X-Projekt wurde 2018 mit dem Ziel gestartet, eine moderne, <a href="https://ceosbay.com/2022/11/30/erklaerung-cloud-computing/">Cloud</a>-native Version von Jenkins zu erschaffen. Das Projekt steht ebenfalls unter der Leitung der <a href="https://cd.foundation" target="_blank" rel="noreferrer noopener">CD Foundation</a>. Die Architektur, Technologie und Pipeline-Sprache unterscheiden sich grundsätzlich von Jenkins. Jenkins X ist für Kubernetes konzipiert und verwendet es in einer eigenen Implementierung. Andere <a href="https://ceosbay.com/2022/11/30/erklaerung-cloud-computing/">Cloud</a>-native Technologien, die Jenkins X verwendet, sind Helm und Tekton, auf die ich in gesonderten Beiträgen eingehen werde.</p>



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



<p>Jenkins läuft auf einer Vielzahl von Betriebssystemen bzw. Plattformen. Darunter gibt es Windows, MacOS und Unix-Varianten. Am besten jedoch läuft es auf <a href="https://ceosbay.com/2022/11/22/erklaerung-linux/">Linux</a>. Es erfordert mindestens eine Java 8 <a href="https://ceosbay.com/2022/11/10/erklaerung-virtuelle-maschine/">VM</a> oder höher und kann auf Oracle Java Runtime Environment oder Open Java Development Kit ausgeführt werden. Normalerweise läuft es als Java-Servlet innerhalb eines Jetty-Anwendungsservers. Es kann aber auch auf anderen Java-Anwendungsservern wie Apache Tomcat ausgeführt werden. Auch kann es in einem <a href="https://ceosbay.com/2022/10/28/laufzeitumgebung-fuer-softwareanwendungen-docker/">Docker</a>-Container ausgeführt werden. Im <a href="https://ceosbay.com/2022/10/28/laufzeitumgebung-fuer-softwareanwendungen-docker/">Docker</a> Hub-Online-Repository sind aus diesem Grund schreibgeschützte Jenkins-Images verfügbar.</p>



<p>Um Jenkins zu auszuführen, werden Pipelines erstellt. Eine Pipeline ist eine Reihe von Schritten, die der Jenkins-Server ausführt. Diese Schritte sind in einem Klartext-Jenkins-File gespeichert. Das Jenkins-File verwendet eine geschweifte Klammersyntax, die einer JSON gleicht. Schritte in der Pipeline werden als Befehle mit Parametern deklariert und in geschweiften Klammern gekapselt. Der Jenkins-Server liest dann die Jenkins-Datei und führt die Befehle aus, wobei der Code die Pipeline vom festgeschriebenen Quellcode zur Produktionslaufzeit weiterleitet. Ein Jenkins-File kann über eine grafische Benutzeroberfläche oder durch Code erstellt werden.</p>



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



<p>Für Jenkins sind eine Reihe von Plugins verfügbar, damit es mit anderen Tools zusammenarbeiten kann. Mit Plugins lässt sich auch der Funktionsumfang der Software erweitern. Fertige bzw. bewährte Plugins können aus dem Online-Repository für Jenkins-PlugIns heruntergeladen und über die Jenkins-Webbenutzeroberfläche oder -CLI (Kommandozeile, Command Line Interface) geladen werden. Man kann aber auch eigene Plugins entwickeln.</p>



<p>Plugins helfen bei der Integration anderer Entwicklertools in die Jenkins-Umgebung, fügen der Web-UI neue Elemente hinzu. Dies dient im Allgemeinen der erleichterten Verwaltung und Benutzung. Ein wichtiges Einsatzgebiet von Plugins ist das Bereitstellen von Integrationspunkten für CI/CD-Quellen und -Ziele. Dazu gehören Software-Versionskontrollsysteme (SVCs) wie <a href="https://ceosbay.com/2022/11/18/erklaerung-git/">Git</a> und Atlassian BitBucket, Container-Laufzeitsysteme – insbesondere <a href="https://ceosbay.com/2022/10/28/laufzeitumgebung-fuer-softwareanwendungen-docker/">Docker</a>, sowie Hypervisoren wie VMware vSphere, Public-<a href="https://ceosbay.com/2022/11/30/erklaerung-cloud-computing/">Cloud</a>-Instanzen wie Google <a href="https://ceosbay.com/2022/11/30/erklaerung-cloud-computing/">Cloud</a> Platform und AWS und schließlich Private-<a href="https://ceosbay.com/2022/11/30/erklaerung-cloud-computing/">Cloud</a>-Systeme wie OpenStack. Es gibt auch Plugins, die eine Kommunikation mit Betriebssystemen über FTP, CIFS und SSH unterstützen.</p>



<p>Plugins verwenden ihren eigenen Satz von Java-Annotationen und Designmustern, die definieren, wie sie instanziiert werden. Die Plugin-Entwicklung nutzt außerdem die Maven-Bereitstellung für Jenkins.</p>



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



<p>Bei der Sicherheit geht es vor allem darum den Server und die Benutzer zu schützen. Die Serversicherheit wird mehr oder weniger auf dieselbe Art und Weise erreicht, wie auf regulären Servern. Der Zugriff auf den Standort, beispielsweise eine <a href="https://ceosbay.com/2022/11/10/erklaerung-virtuelle-maschine/">VM</a> oder einen Bare-Metal-Server, ist so konfiguriert, dass möglichst wenige Prozesse mit dem Server kommunizieren dürfen. Dies wird durch typische Serverbetriebssysteme und Netzwerksicherheitsfunktionen erreicht.</p>



<p>Darüber hinaus ist der Zugriff auf den Server über die Jenkins-Benutzeroberfläche mit den regulären Mechanismen, wie Multi-Faktor-Authentifizierung oder der Beschränkung der Anzahl von legitimierten Benutzern, geschützt.</p>



<p>Jenkins enthält außerdem Sicherheitsfunktionen für die interne Nutzerdatenbank. Man unterscheidet zwei Sicherheitsbereiche. Zum einen den Sicherheitsbereich und den Autorisierungsbereich. Im Sicherheitsbereich regeln Administratoren, wer Zugriff hat, und im Autorisierungsbereich bestimmen die Nutzer selbst, was man mit dem Zugriff anstellen kann.</p>



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



<p>Ein großer Vorteil von Jenkins sind die Unmengen an verfügbaren Plugins. Diese tragen zu einer enormen Flexibilität bei. Auch die umfangreichen Skript- und deklarativen Sprachen, mit denen man stark benutzerdefinierte Pipelines erstellen kann, stellen einen großen Mehrwert dar. Da es weitestgehend neutral ist, passt es gut in die meisten Umgebungen, einschließlich in komplexe Hybrid- und Multi-<a href="https://ceosbay.com/2022/11/30/erklaerung-cloud-computing/">Cloud</a>-Systeme.</p>



<p>Da Jenkins schon etwas länger als vergleichbare Lösungen in diesem Bereich verwendet wird, gibt es umfangreiche Dokumentationen und zahlreiche Community-Ressourcen, an denen man sich bedienen kann. Diese Ressourcen erleichtern die Installation, Verwaltung und Fehlerbehebung ungemein.</p>



<p>Da die gesamte Lösung auf Java basiert, steht es auf einer soliden Basis, die man mit gängigen Designmustern und Frameworks erweitern kann. Auch wenn sich die Installation relativ einfach gestaltet, kann es relativ schwierig sein, komplexe Pipelines zu entwickeln, zu debuggen und zu warten.</p>



<p>Das <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-System ist außerdem eine Single-Server-Architektur. Dies kann jedoch die Ressourcen auf einen einzigen Computer, eine <a href="https://ceosbay.com/2022/11/10/erklaerung-virtuelle-maschine/">virtuelle Maschine</a> oder einen Container einschränken. Cluster werden nicht unterstützt. Diese Tatsache kann die Leistung enorm einschränkten. Es kann auch dazu führen, dass es zum Server-Sprawl kommt und man den Überblick über all die einzelnen Jenkins-Server verliert.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/18/erklaerung-jenkins/">Jenkins &#8211; Automatisierte Arbeitsabläufe beim Testing</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/12/18/erklaerung-jenkins/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">999</post-id>	</item>
		<item>
		<title>Discord &#8211; Community durch nahtlose Kommunikation und Zusammenarbeit</title>
		<link>https://ceosbay.com/2022/11/29/erklaerung-discord/</link>
					<comments>https://ceosbay.com/2022/11/29/erklaerung-discord/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Tue, 29 Nov 2022 17:29:25 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Blockchain]]></category>
		<category><![CDATA[Blockchain Games]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Metaverse]]></category>
		<category><![CDATA[NFT]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Soziale Medien]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[Audio]]></category>
		<category><![CDATA[Bot]]></category>
		<category><![CDATA[Community]]></category>
		<category><![CDATA[Covid-19]]></category>
		<category><![CDATA[Discord]]></category>
		<category><![CDATA[Element]]></category>
		<category><![CDATA[Hack]]></category>
		<category><![CDATA[Hacken]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[Instant]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Jitsi]]></category>
		<category><![CDATA[Kommunikation]]></category>
		<category><![CDATA[Mau]]></category>
		<category><![CDATA[Messaging]]></category>
		<category><![CDATA[Mumble]]></category>
		<category><![CDATA[Nitro]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Protocol]]></category>
		<category><![CDATA[Protokoll]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[Skype]]></category>
		<category><![CDATA[Slack]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Spieler]]></category>
		<category><![CDATA[Teams]]></category>
		<category><![CDATA[Teilen]]></category>
		<category><![CDATA[Voice]]></category>
		<category><![CDATA[VoIP]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=688</guid>

					<description><![CDATA[<p>Discord ist eine soziale VoIP- und Instant-Messaging-Plattform. Ich hatte mal in den Anfängen hineingeschnuppert. Doch zu der Zeit beschränkten sich die Funktionen eher auf Text- und Audio-Kommunikation. Nicht wesentlich anders als die anderen gängigen Anwendungen &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/29/erklaerung-discord/">Discord &#8211; Community durch nahtlose Kommunikation und Zusammenarbeit</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Discord ist eine soziale VoIP- und Instant-Messaging-Plattform. Ich hatte mal in den Anfängen hineingeschnuppert. Doch zu der Zeit beschränkten sich die Funktionen eher auf Text- und Audio-Kommunikation. Nicht wesentlich anders als die anderen gängigen Anwendungen zu der Zeit. Bei den anderen handelte es sich um TeamSpeak, Skype oder Slack. Mit dem Aufkommen der <a href="https://ceosbay.com/2022/11/01/erklaerung-crypto-bzw-kryptowaehrung/">Krypto</a>&#8211; bzw. <a href="https://ceosbay.com/2022/11/04/erklaerung-nft/">NFT</a>-Projekte, musste bei mir auch wieder die Anwendung zum Einsatz kommen, da ein Großteil der Community auf dieser Plattform bzw. auf den Servern unterwegs war und heute noch ist.</p>



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



<p>Mit Discord haben Benutzer die Möglichkeit, mit Sprachanrufen, Videoanrufen, Textnachrichten, Medien und Dateien in privaten Chats oder als Teil von Gemeinschaften, die &#8222;Server&#8220; genannt werden, zu kommunizieren. Ein Server ist eine Sammlung von dauerhaften Chaträumen und Sprachkanälen, auf die über Einladungslinks zugegriffen werden kann. Die Anwendung läuft auf Windows, macOS, Android, iOS, iPadOS, <a href="https://ceosbay.com/2022/11/22/erklaerung-linux/">Linux</a> und in Webbrowsern. Es ist möglich, durch den Einsatz von Bots, wesentliche Funktionen auf diesen Servern zu administrieren und zu automatisieren.</p>



<h3 class="wp-block-heading">Ein bisschen Background Information</h3>



<p>Als Discord im Jahr 2015 auf den Markt kam, musste es sich gegen drei etablierte Apps behaupten: Skype, Slack und TeamSpeak. Alle drei taten, was sie sollten, doch waren sie nicht besonders gut darin. Dies ist wohl auch eines der Gründe, warum die Anwendung von Anfang an so viel Traffic und Zulauf erhielt. Der Andrang führte unweigerlich zu mehreren Serverabstürzen, da das Unternehmen sich schwertat, mit dem enormen Nutzerzahlen gleich zu Beginn klarzukommen.</p>



<p>Jason Citron, der Gründer von Discord, hatte gerade eine 100-Millionen-Dollar-Übernahme seiner vorherigen Social-Gaming-Technologie OpenFeint abgeschlossen. Er wusste, dass seine Anwendung durch einen modernen Ansatz für die Online-Kommunikation das Angebot von Skype und TeamSpeak bei weitem übertreffen konnte.</p>



<p>Anstatt auf Reddit oder in Foren zu suchen, konnten die Nutzer, die primär Gamer bzw. Spieler waren, einem Server beitreten, der speziell für ein bestimmtes Spiel gedacht war. Als die Server immer beliebter wurden, bekamen die Administratoren die Möglichkeit, Unterkanäle für bestimmte Themen oder Spielmodi hinzuzufügen.</p>



<p>Es gibt mittlerweile ca. 7 Millionen aktive Server auf Discord. Und mittlerweile kann man durchaus man sagen, dass eine nicht zu unterschätzende Zahl nicht mehr viel mit Spielen zu tun haben. Unter ihnen findet sich auch <a href="https://www.coezbay.com" target="_blank" rel="noreferrer noopener">mein Unternehmen</a>s Server oder auch ein paar Server, in denen ich in Bezug auf <a href="https://ceosbay.com/2022/11/04/erklaerung-nft/">NFTs</a> und <a href="https://ceosbay.com/2022/11/01/erklaerung-crypto-bzw-kryptowaehrung/">Krypto</a> Teilhaber bin. Obwohl Discord nach wie vor für Gamer gedacht ist, hat das Team versucht, die Reichweite zu vergrößern, um mit Slack und Microsoft Teams zu konkurrieren. Und dies machen sie wirklich gut.</p>



<p>Die Möglichkeit, unmoderierte private Server zu erstellen, hat in der Vergangenheit auch für Kontroversen gesorgt. Im Jahr 2017 wurde ein Server von amerikanischen Nationalisten genutzt, um die Kundgebung in Charlottesville, Virginia, zu organisieren. Discord sperrte die Mitglieder der White-Supremacist-Gruppe und viele andere Neonazi- und Alternativ-rechte-Server und hat seitdem Verifizierungs- und Bot-Moderationstools eingeführt, um diese Art von Gruppen schneller aus dem Verkehr zu ziehen.</p>



<p>Wie bereits erwähnt, bot Discord zu Beginn nur Text- und Audiokommunikation. Im Jahr 2017 wurden Videoanrufe und Bildschirmfreigaben hinzugefügt. Später wurden auch Integrationen mit Twitch, Spotify und Xbox Live hinzugefügt.</p>



<p>Der Aufstieg von Discord kam mit dem Wachstum des E-Sports zusammen. Mit Spielen wie League of Legends, Overwatch und Fortnite, die allesamt über eher begrenzte Kommunikationstools verfügten. Als immer mehr Twitch-Streamer zu Discord wechselten, wurde dies zu einem Selbstläufer bzw. geradezu zu einer kostengünstigen Marketingkampagne für das Unternehmen.</p>



<p>Trotz des schnellen Wachstums, dass sich von 10 Millionen monatlich aktiven Nutzern (MAUs) im Jahr 2016 auf 45 Millionen im Jahr 2018 beschleunigte, kämpfte Discord damit, ein Einnahmemodell zu finden, dass die Erträge des Unternehmens sichern sollte. In den ersten Jahren verkaufte Discord digitale Aufkleber und Merchandise-Artikel. Aber diese Maßnahme brachte dem Unternehmen 2017 lediglich 10 Millionen US-Dollar ein.</p>



<p>Im Jahr 2018 wurde ein Spiele-Shop eingeführt, der eine ausgewählte Auswahl an Spielen bot. Außerdem wurde ein Abonnementdienst, Discord Nitro, eingeführt, der mehr Emojis, eine größere Uploadgröße, Serverunterstützung und Zugang zu den Videospielen im Schaufenster „Im Endeffekt Bildschirm-Sharing“ bot.</p>



<p>Während Discord Nitro noch immer im Einsatz ist, hat das Unternehmen die Funktion mit dem Spiele-Shop im Jahr 2019, mit der Begründung des mangelnden Interesses der Abonnenten entfernt. Seitdem hat es die Storefront auf Eis gelegt, die Discord oder den Spieleentwicklern von Drittanbietern offenbar nicht viel Geld einbrachte.</p>



<p>Trotz des Scheiterns der Storefront befindet sich Discord weiterhin in einer gesunden Position. Die Nutzung ist während der COVID-19-Ausgangssperre, die ja weitestgehend global realisiert wurde, sprunghaft angestiegen. Kürzlich wurden über 100 Millionen MAUs und ein neuer Höchststand von 10,6 Millionen gleichzeitig aktiven Nutzern bekannt gegeben.</p>



<p>Ob es in der Lage sein wird, Nutzer und Unternehmen von Slack und Microsoft Teams zu gewinnen, bleibt abzuwarten. Im März änderte es sein Motto von &#8222;Chat for Gamers&#8220; in &#8222;Chat for Communities and Friends&#8220; und gestaltete seine Website neu, um weniger Gamer-spezifische Inhalte zu zeigen. Kommt scheinbar im professionellen Umfeld nicht so gut an 😉</p>



<h3 class="wp-block-heading">Ist Discord Open Source?</h3>



<p>Discord ist nicht quelloffen und somit auch nicht <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open Source</a>. Obwohl es sich um einen geschlossenen Quellcode handelt, kommuniziert Discord selbst, dass sie als Unternehmen an die <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Entwicklungsprinzipien der Zusammenarbeit und der gemeinsamen Nutzung von Lösungen glauben. Es ist proprietär lizenziert, und der Source Code ist nicht frei zugänglich bzw. kann nicht modifiziert werden.</p>



<h3 class="wp-block-heading">Warum ist Discord nicht Open Source?</h3>



<p>Es ist anzunehmen, dass Discord keine <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open-Source</a>-Software ist, weil die Entwickler der App primär Geld verdienen möchten. Es erlaubt ihnen auch, die Software „begehrenswert“ zu halten. So zumindest die Aussage eines Mitarbeiters.</p>



<p>Da der Quellcode von Discord geschlossen ist, kann die Öffentlichkeit den Code der Discord-App nicht einsehen. Dies wirft viele Fragen darüber auf, was sich hinter dem Quellcode der Software verbirgt. Discord hat sich nicht zu den Spekulationen geäußert, warum es eine Closed-Source-Plattform ist. Die Geheimhaltung des Quellcodes kann Vorteile haben, muss es aber meiner Meinung nach nicht. Mich persönlich interessiert es, welche Daten erhoben werden.</p>



<h3 class="wp-block-heading">Discord Bezahlmodell?&nbsp;</h3>



<p>Discord ist in der Standardversion kostenlos und bietet ein monatliches Abonnement mit dem Namen Discord Nitro an. Das Abonnement bietet Vorteile wie Streaming mit höherer Auflösung, das Hinzufügen von Änderungen an dem eigenen Server sowie größere Datenuploads.</p>



<h3 class="wp-block-heading">Gibt es Alternativen zu Discord?</h3>



<p>Klar gibt es Alternativen. Diese sind Mumble, Element, Tox.Chat, Jitsi, TeamSpeak und Skype.</p>



<p>Wobei ich persönlich, zusammen mit Discord, nur TeamSpeak, Mumble und Jitsi aktiv benutze. Evtl. werde ich auch Beiträge zu den alternativen Lösungen erstellen.</p>



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



<p>Alles in allem finde ich persönlich Discord ok. Die Tatsache, dass der Quellcode nicht offen und somit <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open Source</a> ist, gefällt mir nicht. Auch gefällt es mir nicht, dass ich für den Einsatz von Bots extra Geld ausgeben muss, obwohl der Bot von mir persönlich entwickelt wurde und auch von mir selbst gehostet wird. Ich habe keine Ahnung, welche Daten der Kommunikation von Discord selbst erhoben werden. Wahrscheinlich sammeln sie alles. </p>



<p>Es gibt keinen Grund, paranoid zu sein, dennoch sollte man mit dieser Annahme gewissenhaft umgehen. Denn solange man nicht wirklich weiß, was unter der Haube läuft, kann man sich eben nicht sicher sein. Und die jüngsten Ereignisse in dem Kontext der <a href="https://ceosbay.com/2022/11/13/soziale-medien-filterblase/">sozialen Medien </a>haben gezeigt, dass viel Unfug damit anstellen. Besonders fällt mir dies persönlich im <a href="https://ceosbay.com/2022/11/28/blockchain/">Blockchain</a>-, <a href="https://ceosbay.com/2022/11/01/erklaerung-crypto-bzw-kryptowaehrung/">Krypto</a>&#8211; und <a href="https://ceosbay.com/2022/11/04/erklaerung-nft/">NFT</a>-Space auf. Viele Projekte, in die ich investiert oder an denen ich beteiligt war, wurden meistens über Discord gehacked, da die Sicherheitsmaßnahmen nicht ausgefeilt genug waren. </p>



<p>Sicherlich gehört da auch die Gewissenhafte Verwaltung und Administration des eigenen Servers auch dazu, doch ich möchte Discord selbst mindestens genauso zur Verantwortung ziehen, da es ihre Anwendung ist, über den der Missbrauch stattfindet. Nichtsdestotrotz hat sich auch das <a href="https://ceosbay.com/2022/11/04/erklaerung-nft/">NFT</a>-Space mittlerweile regelrecht in Discord etabliert. Es ist abzuwarten, was Elon Musk mit Twitter anstellt. Vielleicht ergibt sich schon bald eine Alternative, die Discord zumindest im NFT-Space ablöst.</p>



<p>Dennoch muss ich sagen, dass ich ohne Discord wohl nicht auf grandiose Menschen gestoßen wäre, mit denen ich viel Zeit verbringe, um richtig gute Anwendungen und Lösungen zu entwickeln. Auch der Wissensgehalt, den ich mir lediglich durch die Nutzung der Plattform angeeignet habe, ist immens. Man findet halt relativ schnell Gleichgesinnte, mit einem gewissen Etwas 😉</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/29/erklaerung-discord/">Discord &#8211; Community durch nahtlose Kommunikation und Zusammenarbeit</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/11/29/erklaerung-discord/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">688</post-id>	</item>
		<item>
		<title>Delta Chat &#8211; E-Mail neu erfunden</title>
		<link>https://ceosbay.com/2022/11/20/erklaerung-delta-chat/</link>
					<comments>https://ceosbay.com/2022/11/20/erklaerung-delta-chat/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sun, 20 Nov 2022 07:23:34 +0000</pubDate>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Dezentralisierung]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MacOS]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Soziale Medien]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[7435]]></category>
		<category><![CDATA[App]]></category>
		<category><![CDATA[CC]]></category>
		<category><![CDATA[Chat]]></category>
		<category><![CDATA[Client]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[E2EE]]></category>
		<category><![CDATA[Forward]]></category>
		<category><![CDATA[Instant Messenger]]></category>
		<category><![CDATA[Kommunikation]]></category>
		<category><![CDATA[Konten]]></category>
		<category><![CDATA[Man in the Middle]]></category>
		<category><![CDATA[Nutzer]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[PC]]></category>
		<category><![CDATA[PFS]]></category>
		<category><![CDATA[Postfach]]></category>
		<category><![CDATA[Protokoll]]></category>
		<category><![CDATA[Provider]]></category>
		<category><![CDATA[QR]]></category>
		<category><![CDATA[RFC]]></category>
		<category><![CDATA[Secrecy]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[Sichere]]></category>
		<category><![CDATA[SMTP]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Verschlüsselung]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=371</guid>

					<description><![CDATA[<p>Delta Chat ist ein Open Source Instant-Messaging-Client für Smartphones (iOS / Android) und PC (Windows/macOS/Linux). Der Messenger hat seinen Ursprung in Freiburg (Baden-Württemberg) und wird von der Merlinux GmbH entwickelt. Es verfolgt einen dezentralisierten Ansatz, &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/20/erklaerung-delta-chat/">Delta Chat &#8211; E-Mail neu erfunden</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Delta Chat ist ein <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/">Open Source</a> Instant-Messaging-Client für Smartphones (iOS / Android) und PC (Windows/macOS/Linux). Der Messenger hat seinen Ursprung in Freiburg (Baden-Württemberg) und wird von der Merlinux GmbH entwickelt. </p>



<p>Es verfolgt einen dezentralisierten Ansatz, basiert auf den IMAP bzw. SMTP Protokollen und ist, meiner Erfahrung nach, eines der „sichereren“ Messenger Apps, die man heutzutage nutzen kann.</p>



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



<p>Das Internet Message Access Protocol (IMAP), ursprünglich Interactive Mail Access Protocol, ist ein Netzwerkprotokoll, dass ein Netzwerkdateisystem für E-Mails bereitstellt.</p>



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



<p>Das Simple Mail Transfer Protocol (Einfaches E-Mail-Transportprotokoll), gehört zu der Internetprotokollfamilie, dass zum Austausch von E-Mails in Computernetzen dient)</p>



<p> Durch den Einsatz der E-Mail-Protokolle IMAP und SMTP ist Delta Chat mit jedem herkömmlichen E-Mail-Client kompatibel. Seit Veröffentlichung im Februar 2019 verzeichnet die App im Google Play Store über 100.000+ Downloads. Auch ist die App im Apple App Store verfügbar aber auf die Zahlen haben wir leider keinen Zugriff. Nachdem ein Freund mich darum gebeten hat, heute ein bisschen was über Delta Chat 😉</p>



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



<p>Wie anfangs angesprochen, werden die IMAP- und SMTP-Protokolle benutzt. Daher kommt das System ohne Registrierung bzw. Erstellung eines Kontos innerhalb des Messengers selbst und ohne eigene Server aus. Auch wird keine Telefonnummer oder der Zugriff auf das Adressbuch benötigt. Man ist bei der Verwendung nicht auf Nutzer beschränkt, die denselben Dienst verwenden. Folglich kann man damit Nutzer erreichen, die andere Chat-Clients verwenden, da das zugrundeliegende Messaging-Protokoll der offene E-Mail-Standard ist. Alles in allem sehr viel versprechend. Doch zu Beginn habe ich „sichereren“ in Anführungszeichen geschrieben. Bewusst 😉</p>



<p>Dies liegt aber weniger an Messenger selbst, sondern an der E-Mail-Infrastruktur bzw. den zugrundeliegenden Protokollen IMAP und SMTP. Darüber aber nachfolgend mehr.</p>



<h3 class="wp-block-heading">Verschlüsselung</h3>



<p>Bei Nachrichteninhalten wird auf Ende-zu-Ende-Verschlüsselung (E2EE) zur „sichereren“ Kommunikation gesetzt. Unter „E2EE“, versteht man die Verschlüsselung übertragener Daten, über alle Übertragungsstationen hinweg. Nur die Kommunikationspartner (Die jeweiligen Endpunkte der Kommunikation) können die Nachrichten entschlüsseln. Dazu nutzt der Messenger OpenPGP (Ein standardisiertes Datenformat für verschlüsselte und digital signierte Daten). Zertifikate definieren das Format, die als „Schlüssel“ bezeichnet werden. Autocrypt stellt eine weitere Schutzebene dar. Diese Verschlüsselung baut auf dem OpenPGP-Standard auf und ist damit kompatibel. Autocrypt ist ebenfalls eine standardisierte Richtlinie, die eine nutzerfreundliche Verschlüsselung von E-Mails und automatisierten, aber ungesicherten Austausch kryptografischer Schlüssel ermöglicht.</p>



<p>Bei der Verknüpfung eines E-Mail-Kontos generiert Delta Chat bei der Ersteinrichtung automatisch ein Schlüsselpaar. Auch der Import von bereits bestehenden Schlüsseln ist möglich. Mittels Autocrypt werden die öffentlichen Schlüssel anschließend zwischen den Teilnehmern ausgetauscht und ermöglichen damit eine E2EE-Kommunikation. Bei Autocrypt kann theoretisch ein nichtwohlgesonnener E-Mail-Provider diese Verschlüsselung kompromittieren, da Autocrypt grundsätzlich jeden Schlüssel akzeptiert. Dies erfolgt über &#8222;Opportunistic Security (<a href="https://www.rfc-editor.org/rfc/rfc7435" target="_blank" rel="noreferrer noopener">RFC 7435</a>)&#8220;. Dies werde ich zu einem späteren Zeitpunkt thematisieren, da es den Rahmen sprengen würde. Es ist 06:10 Uhr, Sonntag morgen 😀 &#8211; Wen es aber interessiert, kann dennoch auf den Link klicken 😉</p>



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



<p>Auf jeden Fall können wir festhalten, dass das Potential erfolgreicher Man-in-the-Middle-Attacken minimiert wird. Bei einem Man-in-the-Middle-Angriff platziert sich der Angreifer logisch oder physisch zwischen dem Opfer und den verwendeten Ressourcen. Der Angreifer ist dadurch in der Lage, die Kommunikation abzufangen, mitzulesen oder zu manipulieren. Delta Chat erweitert den Autocrypt-Standard daher um countermitm – dadurch wird die Wahrscheinlichkeit einer erfolgreichen Man-in-the-Middle-Attacke auf verifizierte Schlüssel bzw. Kontakte minimiert. </p>



<p>Neben dieser „Schwäche“ kommt hinzu, dass OpenPGP keine Perfect Forward Secrecy beherrscht. (PFS &#8211; Perfect Forward Secrecy ist eine Methode für den Schlüsselaustausch kryptografischer Verfahren. Es bewerkstelligt, dass eine nachträgliche Entschlüsselung durch Bekanntwerden des Hauptschlüssels erschwert bzw. ausgeschlossen wird. Die Sitzungsschlüssel werden nicht ausgetauscht und sind nicht mehr rekonstruierbar). Die Schutzziele der „glaubhaften“ Abstreitbarkeit und Folgenlosigkeit sind daher nicht umsetzbar. Um sicher zu stellen, dass man mit seinem wahren Gegenüber kommuniziert, stellt Delta Chat eine Authentifizierung via QR-Code zur Verfügung. Dadurch wird gewährleistet, dass sich kein Dritter zwischenschaltet. Nach der Durchführung des gegenseitigen Scans des QR-Codes, werden die Nutzer als „Verifiziert“ markiert.</p>



<p>Wenn die Empfänger einer Nachricht auch Delta Chat nutzen, werden die Nachrichten automatisch Ende-zu-Ende-verschlüsselt und als Chatnachricht dargestellt. Allerdings erlaubt Delta Chat das Versenden von Nachrichten auch an E-Mail-Postfächer bzw. Kontakte, die kein Delta Chat verwenden. Wenn der Empfänger einen E-Mail-Client verwendet, der nicht Autocrypt-kompatibel ist, werden Nachrichten unverschlüsselt bzw. nur transportverschlüsselt gesendet bzw. empfangen. Das hat den Nachteil, dass ein E-Mail-Provider die so empfangenen / versendeten Nachrichten unter Umständen einsehen kann. Diesen Umstand sollte man unbedingt berücksichtigen bzw. bei der Nutzung von Delta Chat im Hinterkopf behalten. Welche Transportverschlüsselung zum Einsatz kommt, kann in der App eingesehen werden bzw. wird dies im Nachrichtenverlauf mit einem Schloss symbolisiert.</p>



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



<p>Wie bereits angesprochen, verfolgt Delta Chat den Ansatz der dezentralisierten Kommunikation, da der Nachrichtenaustausch nicht über zentrale Server läuft. Delta Chat setzt auf die bestehende E-Mail-Infrastruktur auf und kann dadurch auf eigene Server verzichten. Die Nutzung von Delta Chat setzt demnach lediglich ein bestehendes E-Mail-Postfach voraus, das mit Delta Chat verknüpft werden muss. Der Nutzer ist also vollkommen frei in seiner Entscheidung, bei welchem E-Mail-Anbieter er ein Konto eröffnet. Die einzige Voraussetzung ist das IMAP-Protokoll.</p>



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



<p>Ist man im Besitz einer E-Mail-Adresse, kann man Delta Chat ohne eine Registrierung und vor allem Serverunabhängig nutzen. Wird Delta Chat von der Gegenseite nicht genutzt, werden Nachrichten an die konventionelle E-Mail-Adresse des Empfängers gesendet. Wenn der Empfänger auch Delta Chat nutzt, bekommt man die Nachricht innerhalb der App angezeigt. Durch diesen Ansatz ist es nicht notwendig, denselben Messenger zu nutzen. Man kann Delta Chat daher auch als interoperablen Messenger nutzen. </p>



<p>Im Grunde genommen eignet sich Delta Chat für Personen, die ihre Telefonnummer nicht teilen wollen. Gleichzeitig kann man sich die Möglichkeit offen halten, über einen Messenger erreichbar zu sein. </p>



<p>Leider ist nicht sichergestellt, dass Nachrichten E2EE verschlüsselt zugestellt werden und damit für einen Angreifer einsehbar sind. Über die Metadaten können die An- und CC-Felder des E-Mail-Headers eingesehen werden. So lässt es sich relativ einfach herausfinden, wer mit wem, zu welchem Zeitpunkt kommuniziert hat. Die Interoperabilität hat durchaus seine Vorteile. Ob die Vorteile dabei die Nachteile überwiegen, darf jeder für sich selbst entscheiden. Alles in allem stellt Delta Chat eine gute Alternative als Instant Messenger dar. Selbst für meinen Geschmack, wird eine gute Portion an Mehrwert für den Dezentralisierungsgedanken leistet.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/20/erklaerung-delta-chat/">Delta Chat &#8211; E-Mail neu erfunden</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/11/20/erklaerung-delta-chat/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">371</post-id>	</item>
	</channel>
</rss>
