<?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>News Archive - CEOsBay</title>
	<atom:link href="https://ceosbay.com/tag/news/feed/" rel="self" type="application/rss+xml" />
	<link>https://ceosbay.com/tag/news/</link>
	<description>It&#039;s all about Tech</description>
	<lastBuildDate>Fri, 15 Sep 2023 08:55:21 +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>News Archive - CEOsBay</title>
	<link>https://ceosbay.com/tag/news/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">211828771</site>	<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>Factfulness &#8211; Buchempfehlung</title>
		<link>https://ceosbay.com/2022/11/09/buchempfehlung-factfulness/</link>
					<comments>https://ceosbay.com/2022/11/09/buchempfehlung-factfulness/#respond</comments>
		
		<dc:creator><![CDATA[CEO]]></dc:creator>
		<pubDate>Wed, 09 Nov 2022 16:38:16 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Bildung]]></category>
		<category><![CDATA[Buchempfehlung]]></category>
		<category><![CDATA[Nachrichten]]></category>
		<category><![CDATA[Sicherheit]]></category>
		<category><![CDATA[Alles wird schlimmer]]></category>
		<category><![CDATA[Armut]]></category>
		<category><![CDATA[Barack Obama]]></category>
		<category><![CDATA[Betrug]]></category>
		<category><![CDATA[Bill Gates]]></category>
		<category><![CDATA[Buch]]></category>
		<category><![CDATA[Factfulness]]></category>
		<category><![CDATA[Fake News]]></category>
		<category><![CDATA[Finanz]]></category>
		<category><![CDATA[Geisteshaltung]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Klimaschutz]]></category>
		<category><![CDATA[Klimawandel]]></category>
		<category><![CDATA[Lernen]]></category>
		<category><![CDATA[Netzwerke]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Sachlichkeit]]></category>
		<category><![CDATA[Social]]></category>
		<category><![CDATA[Social Engineering]]></category>
		<category><![CDATA[Soziale]]></category>
		<category><![CDATA[Statistik]]></category>
		<category><![CDATA[Statistiken]]></category>
		<category><![CDATA[Zukunft]]></category>
		<guid isPermaLink="false">https://ceosbay.com/?p=414</guid>

					<description><![CDATA[<p>Heute gibt es mal eine Buchempfehlung für das Buch Factfulness. Da auch meine Zeit heute etwas knapp ist, ich in ca. einer halben Stunde in ein Meeting muss und wir alle in schwierigen Zeiten leben, &#8230;</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/09/buchempfehlung-factfulness/">Factfulness &#8211; Buchempfehlung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Heute gibt es mal eine Buchempfehlung für das Buch Factfulness. Da auch meine Zeit heute etwas knapp ist, ich in ca. einer halben Stunde in ein Meeting muss und wir alle in schwierigen Zeiten leben, kann es Sinn machen, die Dinge mal aus einer sehr sachlichen Ebene zu betrachten. &#8222;Factfulness: Wie wir lernen, die Welt so zu sehen, wie sie wirklich ist&#8220; hat mir sehr dabei geholfen, vieles nicht so schwarz zu sehen. Vor allem weil die/der Autor*innen es geschafft haben, es auf Basis von validen Quellen und Statistiken, auf den Punkt zu bringen. Nicht umsonst wird es von Personen wie Bill Gates und Barack Obama hoch gelobt. Und auch ich gehöre zu den Menschen, die dieses Buch wirklich liebgewonnen und bereits unzählige male empfohlen haben.</p>



<h2 class="wp-block-heading">Es wird alles schlimmer!</h2>



<p>Wirklich? Als Unternehmer und politisch engagierter Mensch verfolge ich auch die Nachrichten mit. Eine schreckliche Nachricht jagt die andere. Die Reichen werden reicher, die Armen ärmer. Es gibt immer mehr Kriege, Gewaltverbrechen, Naturkatastrophen. Viele Menschen tragen solche beängstigenden Bilder im Kopf. Besonders in den sozialen Medien, bei der jede(r) in einer gewissen künstlichen Blase festsitzt und nur noch mit auf die eigene Person zugeschnittenen Feeds (Ein Feed ist eine ständig aktualisierte Liste der neuen Inhalte, die von den Accounts gepostet werden, denen ein Nutzer in den sozialen Medien folgt. Die meisten Social Media-Feeds sind aber nicht rein chronologisch angeordnet und basieren auf den selbstgewählten Kontakten, sondern werden von einem Algorithmus gesteuert) zugemüllt wird.</p>



<p>Unser Gehirn verführt uns zu einer dramatisierenden Weltsicht, die mitnichten der Realität entspricht, wie der geniale Statistiker und Wissenschaftler Hans Rosling erklärt. Wer Factfulness gelesen hat, wird ein sicheres, auf Fakten basierendes Grundgerüst erhalten, um die Welt so zu sehen, wie sie wirklich ist. Die zehn gängigsten Arten von aufgebauschten Geschichten erkennen, bessere Entscheidungen treffen können, gegebenenfalls die persönliche Sachlichkeit so steigern, dass in der Zukunft eine offenere, neugierige und entspannte Geisteshaltung, in der man nur noch Ansichten teilt und Urteile fällt, die auf soliden Fakten basieren. Und im Zeitalter des Social Engineerings, der Botnet&#8217;s und Fake News, ist dies bitter nötig. Diese Begriffe werden im Anschluss kurz erklärt.</p>



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



<p>Beim Social Engineering werden menschliche Eigenschaften wie Hilfsbereitschaft, Vertrauen, Angst oder Respekt vor Autorität ausgenutzt, um Personen geschickt zu manipulieren. Cyber-Kriminelle verleiten das Opfer auf diese Weise beispielsweise dazu, vertrauliche Informationen preiszugeben, Sicherheitsfunktionen auszuhebeln, Überweisungen zu tätigen oder Schadsoftware auf dem privaten Gerät oder einem Computer im Firmennetzwerk zu installieren. Social Engineering ist an sich nichts Neues und dient seit Menschengedenken als Grundlage für die unterschiedlichsten Betrugsmaschen. Im Zeitalter der digitalen Kommunikation ergeben sich jedoch äußerst effektive, neue Möglichkeiten für Kriminelle, mit denen sie Millionen von potenziellen Opfern erreichen können.</p>



<h2 class="wp-block-heading">Botnet?</h2>



<p>Ein Botnet oder Botnetz ist eine Gruppe automatisierter Schadprogramme, sogenannter Bots. Die Bots (Roboter) werden auf vernetzten Rechnern ausgeführt, deren Netzwerkanbindung sowie lokale Ressourcen und Daten ihnen, ohne Einverständnis des Eigentümers, zur Verfügung stehen. In Deutschland gab es 2010 über 470.000 solcher Bots, von denen im Durchschnitt etwa 2.000 pro Tag aktiv waren. Die Initiative <a href="https://botfrei.de" target="_blank" rel="noreferrer noopener">botfrei.de</a> (Da kann man übrigens auch einen Phishing Selbsttest machen) des Verbandes der Internetwirtschaft ECO stellte 2014 bei 220.000 stichprobenartig untersuchten Computern 92.000 verseuchte Systeme mit rund 725.000 infizierten Dateien fest, woraus sich eine Infektionsrate von ca. 40 Prozent aller Computer in Deutschland errechnet. </p>



<p>Laut Bericht zur Lage der IT-Sicherheit in Deutschland 2015 des Bundesamtes für Sicherheit in der Informationstechnik (BSI), wurden im ersten Halbjahr 2015 in Deutschland täglich bis zu 60.000 Systeme neu infiziert. Betreiber illegaler Botnetze installieren die Bots ohne Wissen der Benutzer auf deren Computer und nutzen sie für ihre Zwecke. Die meisten Bots können von einem Botnetz-Operator (Auch Bot-Master oder Bot-Hirte genannt) über einen Kommunikationskanal überwacht werden und Befehle empfangen. Dieser wird in der Fachsprache als Command-and-Control-Server bezeichnet. Kurz: C&amp;C-Server. Ich muss da immer an Command &amp; Conquer denken. Ja, das ist ein Computerspiel 😉 Über Botnet&#8217;s kann man Bücher schreiben. Daher werde ich dieses Thema wohl zu einem späteren Zeitpunkt nochmal aufgreifen.</p>



<h2 class="wp-block-heading">Fake News</h2>



<p>Als Fake News werden im engeren Sinn und im Rahmen aktueller Debatten vor allem das Streuen von Falschmeldungen als Propagandamittel verstanden. Meist soll mit deren Hilfe der politische Diskurs verschoben sowie Angst und Hass gegenüber bestimmten Personengruppen geschürt werden. Fake News lassen sich anhand ihres Umgangs mit realen Gegebenheiten und Ereignissen unterteilen in: Aus dem Kontext gerissene Meldungen,<br>manipulierte Nachrichten und erfundene Geschichten. Auch bei diesem Thema kann man so richtig in die Tiefe gehen. Doch dies werde ich gewiss nicht auf diesem Blog machen, da man hierzu genug Informationen im Netz findet. Nur aufpassen, dass man bei der Recherche auch keine Fake News erwischt 😉</p>



<h2 class="wp-block-heading">Weiter zum Buch</h2>



<p>Es gehört aus meiner Sicht zu den besten und unterhaltsamsten Sachbüchern dieses Jahrzehnts.  Ich finde es etwas schade, dass der Autor im Jahr 2017 verstorben ist. Dadurch hat er das Erscheinen und den Erfolg seines Buches Factfulness leider nicht mehr erleben und feiern dürfen. Auch hat die Menschheit damit eine Person verloren, die einen großen Beitrag für ein gutes Miteinander geleistet bzw. das Potential dafür signifikant gesteigert hat.</p>



<p>Factfulness beginnt mit einem aus 13 Fragen bestehenden Quiz, die im Multiple-Choice-Verfahren beantworten werden. Wobei jeweils nur eine Antwort richtig ist. Teilt mir Eure Resultate gerne gleich zu Beginn mit, wenn Ihr Eure Antworten evaluiert. Ich möchte jetzt aber nicht zu viel verraten. Ich war fasziniert über meine Resultate. Die 13 Fragen werden heute von fast 90% aller Befragten und in allen Bildungsschichten fast auf die gleiche Weise falsch beantwortet. Man hat auch Schimpansen nach dem Zufallsprinzip für die 13 Fragen jeweils den Buchstaben A, B oder C auswählen lassen und das Ergebnis war im Gesamtdurchschnitt lediglich zu 60% falsch.</p>



<p>Das Buch zeigt gekonnt falsche Wahrnehmungen auf, die leider allzu oft auch zu falschen Entscheidungen in der Politik und Wirtschaft führen. Rosling zeigt aber auch die Methoden auf, wie man sich dieser Falschwahrnehmungen entziehen kann und eine ganz große Hilfe dabei spielt das Hinterfragen von vorgelegten Statistiken und anderem Zahlenmaterial.&nbsp;Das Buch eignet sich auch hervorragend als&nbsp;legitime Informationsquelle.</p>



<h2 class="wp-block-heading">Klimawandel?</h2>



<p>Das Zahlen und Datenmaterial hat &#8211; so berichtet der Autor selbst in seinem Buch Factfulness &#8211; auch den ehemaligen Kandidaten für das US-Präsidentenamt, Al Gore, begeistert. In einem persönlichen Gespräch bat er Rosling, ob er die Diagramme auch für seine Präsentationen bezüglich des Klimawandels nutzen dürfe. Rosling lehnte dies ab. Doch die Begründung dafür findet Ihr im Buch!</p>



<p>Muss gleich in mein Meeting und habe noch 40 Minuten Zeit, um mich vorzubereiten.</p>



<p>In diesem Sinne – Wünsche ich Euch noch einen schönen Abend und bis morgen! Da geht es dann um <a href="https://ceosbay.com/2022/11/10/erklaerung-virtuelle-maschine/">virtuelle Maschinen</a> 😉</p>
<p>Der Beitrag <a href="https://ceosbay.com/2022/11/09/buchempfehlung-factfulness/">Factfulness &#8211; Buchempfehlung</a> erschien zuerst auf <a href="https://ceosbay.com">CEOsBay</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://ceosbay.com/2022/11/09/buchempfehlung-factfulness/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">414</post-id>	</item>
	</channel>
</rss>
