<?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>JVM Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/jvm/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/jvm/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Sun, 16 Apr 2023 07:57:22 +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>JVM Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/jvm/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<item>
		<title>Spring Boot &#8211; Schnell und einfach Webanwendungen erstellen</title>
		<link>https://ceosbay.com/2023/03/22/erklaerung-spring-boot/</link>
					<comments>https://ceosbay.com/2023/03/22/erklaerung-spring-boot/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 22 Mar 2023 17:12:00 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<category><![CDATA[Big-Data]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Entwicklung]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Testing]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Abhängigkeiten]]></category>
		<category><![CDATA[Applications]]></category>
		<category><![CDATA[Apps]]></category>
		<category><![CDATA[Automation]]></category>
		<category><![CDATA[Boot]]></category>
		<category><![CDATA[Container]]></category>
		<category><![CDATA[Datenbank]]></category>
		<category><![CDATA[Dependencies]]></category>
		<category><![CDATA[Dependency]]></category>
		<category><![CDATA[Frame]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[Frei]]></category>
		<category><![CDATA[Freie]]></category>
		<category><![CDATA[Injection]]></category>
		<category><![CDATA[Injizieren]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[Lesitung]]></category>
		<category><![CDATA[Microservices]]></category>
		<category><![CDATA[Modular]]></category>
		<category><![CDATA[Objekte]]></category>
		<category><![CDATA[Open]]></category>
		<category><![CDATA[Optionated]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[Spring]]></category>
		<category><![CDATA[Test]]></category>
		<category><![CDATA[Tool]]></category>
		<category><![CDATA[Webanwendungen]]></category>
		<category><![CDATA[Work]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1057</guid>

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



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



<li>Ein Opinionated-Konfigurationsansatz</li>



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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

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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



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



<p>Die grafische Oberfläche von Eclipse ist auf eine effiziente Arbeitsweise ausgerichtet. Der konzeptionelle Aufbau durch Views, Editoren und Perspektiven sorgt für eine anpassbare Optik und eine bequeme Arbeitsweise mit und in der IDE. Man kann sowohl die Funktionalitäten als auch die GUI von Eclipse durch die manuelle oder automatische Installation von Plugins bzw. Erweiterungen anpassen. Entsprechende Möglichkeiten finden sich in dem standardmäßig integrierten Market Place von Eclipse.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2023/03/19/erklaerung-eclipse/">Eclipse &#8211; Die flexible Entwicklungsumgebung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2023/03/19/erklaerung-eclipse/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1190</post-id>	</item>
		<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>Apache Kafka &#8211; Echtzeit-Datenströme in wertvolle Einblicke verwandeln</title>
		<link>https://ceosbay.com/2022/12/25/erklaerung-apache-kafka/</link>
					<comments>https://ceosbay.com/2022/12/25/erklaerung-apache-kafka/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Sun, 25 Dec 2022 10:51:49 +0000</pubDate>
				<category><![CDATA[Big-Data]]></category>
		<category><![CDATA[Cloud]]></category>
		<category><![CDATA[Datenbanken]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Programmieren]]></category>
		<category><![CDATA[Website]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Brokers]]></category>
		<category><![CDATA[Cluster]]></category>
		<category><![CDATA[Confluent]]></category>
		<category><![CDATA[Connect]]></category>
		<category><![CDATA[Copy]]></category>
		<category><![CDATA[CPU]]></category>
		<category><![CDATA[Datenströme]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Fazit]]></category>
		<category><![CDATA[Foundation]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JVM]]></category>
		<category><![CDATA[Kafka]]></category>
		<category><![CDATA[LinkedIn]]></category>
		<category><![CDATA[Operatoren]]></category>
		<category><![CDATA[Plattform]]></category>
		<category><![CDATA[Producer]]></category>
		<category><![CDATA[Quellen]]></category>
		<category><![CDATA[Schnittstellen]]></category>
		<category><![CDATA[Skalierbar]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Source]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[Topic]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=1043</guid>

					<description><![CDATA[<p>Apache Kafka ist eine Open-Source-Software der Apache Software Foundation, die insbesondere zur Verarbeitung von Datenströmen dient. Kafka ist dazu entwickelt, Datenströme zu speichern und zu verarbeiten, und stellt eine Schnittstelle zum Laden und Exportieren von &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/25/erklaerung-apache-kafka/">Apache Kafka &#8211; Echtzeit-Datenströme in wertvolle Einblicke verwandeln</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Apache Kafka ist eine <a href="https://ceosbay.com/2022/11/16/erklaerung-open-source/" target="_blank" rel="noreferrer noopener">Open-Source</a>-Software der Apache Software Foundation, die insbesondere zur Verarbeitung von Datenströmen dient. Kafka ist dazu entwickelt, Datenströme zu speichern und zu verarbeiten, und stellt eine Schnittstelle zum Laden und Exportieren von Datenströmen zu Drittsystemen bereit. Die Kernarchitektur bildet ein verteiltes Transaktions-Log.</p>



<p>Apache Kafka ist die Entwicklung von LinkedIn. Seit 2012 ist es Teil der Apache Software Foundation. Im Jahr 2014 gründeten die Entwickler das Unternehmen Confluent aus LinkedIn heraus, welches die Weiterentwicklung von Apache Kafka fokussiert. Apache Kafka ist ein verteiltes System, das skalierbar und fehlertolerant und somit für Big-Data-Anwendungen geeignet ist.</p>



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



<p>Den Kern des Systems bildet ein Rechnerverbund (Cluster), bestehend aus sogenannten Brokern. Broker speichern Schlüssel-Wert-Nachrichten zusammen mit einem Zeitstempel in Topics. Topics wiederum sind in Partitionen aufgeteilt, die im Kafka-Cluster verteilt und repliziert sind. Innerhalb einer Partition werden die Nachrichten in der Reihenfolge gespeichert, in der sie geschrieben wurden. Lese- und Schreibzugriffe umgehen den Arbeitsspeicher durch die direkte Anbindung der Festplatten mit dem Netzwerkadapter (Zero Copy), so dass weniger Kopiervorgänge vor dem Schreiben oder Versenden von Nachrichten nötig sind.</p>



<h3 class="wp-block-heading">Was ist Zero Copy im Kontext Apache Kafka?</h3>



<p>Zero Copy &#8222;Null-Kopie&#8220; beschreibt Computeroperationen, bei denen die CPU keine Daten von einem Speicherbereich in einen anderen kopiert oder bei denen unnötige Datenkopien vermieden werden. Dies wird häufig verwendet, um CPU-Zyklen und Speicherbandbreite bei vielen zeitaufwändigen Aufgaben zu sparen. Beispielsweise bei der Übertragung einer Datei mit hoher Geschwindigkeit über ein Netzwerk, wodurch die Leistung von Programmen (Prozessen), die von einem Computer ausgeführt werden, verbessert wird.</p>



<p>Anwendungen, die Daten in einen Kafka-Cluster schreiben, werden als Producer bezeichnet, Anwendungen, die Daten von dort lesen, als Consumer. Zur Datenstromverarbeitung besteht die Möglichkeit, Kafka Streams zu verwenden. Kafka Streams ist eine Java-Bibliothek, die Daten aus Kafka liest, verarbeitet und die Ergebnisse nach Kafka zurückschreibt. Auch die Verwendung mit anderen Stream-Verarbeitungssystemen ist möglich. Ab der Version 0.11.0.0 ist „„transaktionales Schreiben“ auch möglich, dadurch ist garantiert, dass die Verarbeitung von Nachrichten exakt ein einziges Mal stattfindet, wenn eine Anwendung Kafka Streams verwendet. Stichwort (Exactly-Once processing) &#8211; Wobei dies ein Thema für sich darstellt und den Rahmen hier sprengen würde.</p>



<p>Kafka unterstützt zwei Arten von Topics: „normal“ und „compacted“ Topics. Normale Topics garantieren, Nachrichten für einen konfigurierbaren Zeitraum vorzuhalten oder einen gewissen Speicherbedarf nicht zu überschreiten. Liegen Nachrichten vor, die älter sind als die konfigurierte „retention time“, oder ist das Speicherlimit einer Partition überschritten, kann Kafka alte Nachrichten löschen, um Festplattenspeicher freizugeben. Standardmäßig speichert Kafka Nachrichten für 7 Tage, aber es ist auch möglich, Nachrichten für immer zu speichern. Neben „normal“ Topics bietet Kafka auch „compacted“ Topics an, die keiner Zeit- oder Platzlimitierung unterliegen. Stattdessen werden neuere Nachrichten als Aktualisierung („updates“) alter Nachrichten mit dem gleichen Schlüssel interpretiert. Dadurch ist garantiert, dass keine Löschung der neuesten Nachricht pro Schlüssel stattfindet. Nutzer können Nachrichten jedoch explizit löschen, indem sie eine Spezialnachricht (sog. tombstone) mit null-Wert für den entsprechenden Schlüssel schreiben.</p>



<h3 class="wp-block-heading">Apache Kafka bietet vier Hauptschnittstellen an:</h3>



<ul class="wp-block-list">
<li>Producer API<br>Für Anwendungen, die Daten in einen Kafka-Cluster schreiben wollen.&nbsp;</li>



<li>Consumer API<br>Für Anwendungen, die Daten aus einem Kafka-Cluster lesen wollen.</li>



<li>Connect API<br>Import/Export-Schnittstelle zur Anbindung von Drittsystemen und baut auf der Consumer- und der Producer-API auf. Kafka Connect führt sogenannte Konnektoren („connectors“) aus, welche die eigentliche Kommunikation mit dem Drittsystem übernehmen. Dabei definiert die Connect-API die Programmierschnittstellen, die von einem Connector implementiert werden müssen. Es gibt bereits viele frei verfügbare und kommerzielle Konnektoren, die genutzt werden können. Apache Kafka liefert selbst keine produktreifen Konnektoren.</li>



<li>Streams API<br>Java-Bibliothek zur Datenstromverarbeitung. Die Bibliothek ermöglicht es, zustandsbehaftete Datenstromverarbeitungsprogramme zu entwickeln, die sowohl skalierbar, flexibel als auch fehlertolerant sind. Dafür bietet Kafka Streams eine eigene domänenspezifische Sprache (DSL) an, die Operatoren zum Filtern, Abbilden (Mappen) oder Gruppieren enthält. Des Weiteren werden Zeitfenster, Joins, und Tabellen unterstützt. Ergänzend zur domänenspezifischen Sprache ist es auch möglich, eigene Operatoren in der Processor-API zu implementieren. Diese Operatoren können auch in der domänenspezifischen Sprache genutzt werden. Zur Unterstützung zustandsbehafteter Operatoren wird RocksDB verwendet. Dies erlaubt es, Operatorzustände lokal vorzuhalten und Zustände, die größer als der verfügbare Hauptspeicher sind, als RocksDB-Daten auf die Festplatte auszulagern. Um den Anwendungszustand verlustsicher zu speichern, werden alle Zustandsänderungen zusätzlich in einem Kafka-Topic protokolliert. Im Falle eines Ausfalls können alle Zustandsübergänge aus dem Topic ausgelesen werden, um den Zustand wiederherzustellen.</li>
</ul>



<p>Die Consumer- und Producer-Schnittstellen basieren auf dem Kafka-Nachrichtenprotokoll und können als Referenzimplementierung in Java angesehen werden. Das eigentliche Kafka-Nachrichtenprotokoll ist ein binäres Protokoll und erlaubt es damit, Consumer- und Producer-Clients in jeder beliebigen Programmiersprache zu entwickeln. Damit ist Kafka nicht an das JVM-Ökosystem gebunden.</p>



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



<p>Apache Kafka bietet als Plattform ein redundantes und skalierbares Event-Streaming. Es funktioniert sowohl auf einem einzelnen Server als auch in riesigen Clustern mit multiplen Brokern. Die Datenquellen und Senken werden in Kafka als Producer und Consumer bezeichnet, die Events in Topics schreiben oder aus Topics lesen. Zusätzlich können verschiedene Systeme über Kafka Connect angebunden werden. Eine Echtzeitdatenverarbeitung auf Stream Basis ist über das Kafka-Streams-Framework möglich. Durch Consumer Groups kann man auch die Anwendungen, die ihre Daten aus Kafka beziehen, verteilt ausgeführen, ohne dass die Verarbeitung eines Events mehrfach stattfindet.</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/12/25/erklaerung-apache-kafka/">Apache Kafka &#8211; Echtzeit-Datenströme in wertvolle Einblicke verwandeln</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/12/25/erklaerung-apache-kafka/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1043</post-id>	</item>
	</channel>
</rss>
