Grundlagen der Informatik – Semaphore (Thread Steuerung)
Grundlagen der Informatik - Semaphore (Thread Steuerung)
Wenn man mit Threads arbeitet, muss man aufpassen, dass die Threads sich nicht gegenseitig blockieren. Deshalb sollte man beachten, ob der Thread in einen kritischen Zustand gerät. Bevor dieser in einen kritischen Zustand kommt, soll gefragt werden, ob ein anderer bereits darin ist. Damit sich die Threads nicht in die Quere kommen.
Kritischer Zustand
Ein kritischer Zustand ist eine Sequenz von einem Thread, die durch das einwirken eines anderen Threads manipuliert bzw. blockiert werden kann. In dem kritischen Zustand kann das Programm abstürzen oder schwere Fehler verursachen. Kommen oft zustande wenn mehrere Threads auf die gleiche Variable bzw. Attribut zugreifen wollen.
Im kritischen Zustand können somit zwei Threads verklemmen!
In Java kann man eine Semaphore so programmieren:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | public class Semaphore { private int value; public Semaphore(int pInit) { if (pInit < 0) { pInit = 0; } value = pInit; } public synchronized void down() { while (value == 0) { try { wait(); } catch (InterruptedException exp) { } } value--; } public synchronized void up() { value++; notifyAll(); } } |
In dem Konstruktor der Semaphore wird ein Integerwert übergeben, wie viele Threads auf einmal in den überwachten kritischen Zustand kommen dürfen. Natürlich kann dieser Wert nicht kleiner als 0 sein und auch 0 macht wenig sinn, da sonst kein Thread den kritischen Zustand erlangen kann.
In Unserem Beispiel setzten wir den value-Wert auf 1. Wir haben 2 Threads die in einen kritischen Zustand kommen.
Wenn jetzt nun unser 1. Thread in den Zustand kommen möchte, ruft diese den Befehl down() auf. Nun wird value auf 0 gesetzt und unser 1. Thread kann arbeiten. Sollte jetzt der 2. Thread kommen, dann bleibt er bei der Abfrage value == 0 hängen und wartet nun passiv.
Wenn unser 1. Thread nun den kritischen Zustand verlässt wird value wieder auf 1 gesetzt und mittels notifyAll() werden die wartenden Threads geweckt. Der erste der nun geweckt wurde, kann nun den kritischen Zustand erreichen. In unserem Beispiel ist nun der 2. Thread in der Lage den kritischen Zustand zu erreichen.
Klar ist, dass die Semaphore die gleiche sein muss, die beide Threads verwenden. Weil wenn jeder Thread seine eigene Semaphore hat, werden beide nahezu gleichzeitig in den kritischen Zustand wechseln.
Eine Semaphore kann man sich wie eine Ampel vorstellen, die den "Verkehr" regelt. Hierbei kann sie Threads in die Warteliste schieben und auch wieder in den bereiten Zustand ändern.
Lexikalischer, Syntax- und semantischer Fehler – Informatik Grundlagen
Lexikalischer, Syntax- und semantischer Fehler - Grundlagen der Informatik
Bei dem kompilieren des Quellcodes können verschiedene Arten von Fehler passieren, die jedoch in einer bestimmten Reihenfolge abgefangen werden.
1. Lexikalischer Fehler
Das erste was der Compiler macht, ist das ganze Dokument durchsuchen nach unerlaubten Zeichen. Früher konnte man nur im ASCI-Schriftsatz programmieren, deshalb konnte man Sonderzeichen wie "ä","ö","ü" und "ß" nicht verwenden. Aber heutzutage unterstützen die meisten Programmiersprachen den UNI-Code und somit sind weitgehend alle Zeichen verwendbar. In Java hat man mit Sonderzeichen auch keine Probleme mehr.
2. Syntaxfehler
Die häufigsten Fehler überhaupt sind die Syntaxfehler, den diese kommen zustande wenn man z. B. die Klammern vergisst "}",")" und "[" oder je nach Programmiersprache auch das beliebte Abschlusszeichen ";". Man bedenke: Jede geöffnete Klammer benötigt auch eine geschlossene Klammer.
3. Semantischer Fehler
Diese Fehler entstehen, wenn man in seinem Quelltext auf Klassen und/oder Methoden zugreifen will, die nicht zur Verfügung stehen bzw. nicht vorhanden sind.
Compiler und Interpreter – Informatik Grundlagen
Grundlagen der Informatik : Compiler und Interpreter
Jede Programmiersprache benötigt ein Compiler und manche sogar noch einen Interpreter. Einleuchten wird dieser Satz, wenn wir uns den Aufbau eines Computers genauer anschauen, denn wenn wir programmieren, schreiben wir Texte in leserlichen ASCII oder UNI-CODE Zeichen, mit denen unser CPU eigentlich nichts anfängt. Daher benötigen wir einen Übersetzer, der unseren geschriebenen Quellcode in den Maschinencode umändert.
Wozu brauchen wir einen Interpreter?
Da es viele Programmiersprachen gibt, müssen wir den Quellcode für jedes Betriebssystem und Architektur anders Übersetzten. Denn z. B. der Aufruf von einem Fenster läuft auf einem Windows PC ganz anders ab, als in einem Mac oder Linux Computer.
Interpreter sind somit notwendig, wenn das Programm für mehrere Plattformen funktionieren soll.
Genauer Ablauf in Java
Zuerst wird unser geschriebener Quelltext (*.java Dateien) mittels den Java Compiler umgewandelt in einen Bytecode.
Dieser Bytecode ist nicht komplett leserlich, aber sobald ein System/Plattform abhängiger Aufruf stattfindet, kann man einen leserlichen Schriftzug erkennen. Der Bytecode wird in der "*.class" Datei abgespeichert oder in ganzen Gruppen als "*.jar" Datei.
Der Interpreter liest nun diesen Bytecode und wandelt die fehlenden Stellen um, sodass ein vollständiger Maschinencode entsteht. Deshalb muss man bei der Installation des Interpreters auf das eigene Betriebssystem achten, damit die Übersetzung erfolgreich und ausführbar ist.
Der Maschinencode wird dann sofort ausgeführt, im Rahmen der Java Virtual Machine.
- Zu dem Compiler Interpreter Tutorial ->
- Zu dem Java Virtual Machine Tutorial ->
GTGE in Eclipse mittels SVN installieren
Ein Java 2D Spiel entwickeln mit der GTGE
Um ein 2D-Spiel in Java entwickeln zu können, benötigen wir die gesamten GTGE libarys. Diese können wir sogar in Eclipse mittels SVN (Subclipse Plug-In) einfach einrichten.
In einem neuen VHPD Videotutorial erklären wir Schritt für Schritt, wie man Eclipse so konfiguriert, damit man die GTGE herunterladen kann.
Verwendete Links
SVN - Subclipse: http://subclipse.tigris.org/update_1.6.x
GTGE Source - SVN: http://gtge.googlecode.com/svn/trunk
GTGE
Der Sourcecode von der GTGE ist unter der GPL-Lizens veröffentlicht und kann auch über der GTGE direkt heruntergeladen werden.
Schreibe 2D Spiele selber in Java
2D Spiele in Java selber programmieren
Wir vom VHPD-Team sind schon seit geraumer Zeit auf der Suche, nach der ultimativen Java 2D Engine und wir haben nun unseren eindeutigen Sieger ermittelt:
Dieses Powerpacket beinhaltet eine voll funktionierende 2D Engine die sogar mittels OpenGL rendern kann und auch problemlos in Browser eingebunden werden kann. Auch in den Testreihen wurden auf Windows Systemen und Linux (Ubuntu) getestet, ob die Engine auch wirklich überall läuft.
Unser Ergebnis
Von der 2D Ausgabe bis hin zum Netzwerktest lief die GTGE-Engine problemlos unter allen Systemen und das programmieren macht richtig Spaß. GTGE ist durch ihren einfachen Aufbau und anhand der gelungenen Tutorials ein toller Begleiter, wenn es um die Entwicklung von 2D Spielen geht.
Lizenz
Der Source Code von GTGE wurde unter der GPL veröffentlicht und frei verfügbar über eine SVN Schnittstelle.
Danksagung
Durch Swen Schreiter's Testunterstützung, konnten die Linux (Ubuntu) Tests erfolgreich durchgeführt werden. Zu seinem 3G-Phoneblog ->
Mittels Maximilan Häge's Unterstützung, konnten wir die Engines untereinander austesten und besser vergleichen. Zu seinem IT's Real Blog ->
Vielen Dank auch an allen anderen, die während des Laufzeittests uns unterstützt haben.
Wie geht's weiter?
In den kommenden Wochen wird ein 2D Ping Ping Tutorial mit Eclipse und der GTGE auf dem VHPD-Blog für alle veröffentlicht, sodass jeder sehen kann, wie einfach es ist, ein 2D Spiel zu programmieren.
Java wird 3D
Java wurde auf 3D Basis stark erweitert
Überall 3D, von Spielen bis hin zur Office-Anwendung - Heutzutage ist 3D fast ein fester Bestandteil der Entwicklung.
Durch was kann man 3D in Java benutzen?
Mittels JavaFX wurde zuerst direkt von SUN ein pseudo 3D-Libary vorbereitet für Anwendungen. Natürlich ist diese zu OpenGL und DirectX fast nichts, aber die ersten Schritte in Richtung 3D wurden gebaut.
Auf der anderen Seite aber, gibt es ein Team von Programmierern, die es sich zur Aufgabe gemacht haben, ein gut funktionierendes 3D Libary für Java zu entwickeln. JMonkey Engine (JME) ist das Zauberwort. Diese Libary erweitert Java auf viele OpenGL Funktionen die sogar dann mit OpenGL oder DirectX (nur Windows) gerendert werden.
jME - Java Monkey Engine
Jeder kann problemlos mit Eclipse diese 3D Engine verwenden und kann leicht 3D in Java einbinden.
- Zur offiziellen Websiete von jME (englisch) ->
Tutorial zur Installation von jME mit Physik Engine
This Tutorial shows, how to install Subclise and setup jMonkeyEngine and jMEPhyscs in a fresh Eclipse 3.5.
Used URLs:
subclipse:http://subclipse.tigris.org/update_1.6.x
jMonkeyEngine:http://jmonkeyengine.googlecode.com/svn/trunk
jMEPhysics: http://jmephysics.googlecode.com/svn/trunk
Mittels diesem Video ist das Installieren kein Problem mehr.
Probleme mit Java und der 3D-Welt
Java ist bei weitem keine 100% geeignete Spielesprache, ihr nicht direkter Hardwarezugriff sorgt für Performanceschwäche und somit wären solche Spiele wie FarCry2 und GTA4 niemals möglich.
Jedoch für kleine Spielereien und Minigames ist dieses Paket Gold wert.
Pulsar – Java Handy Entwicklung
Entwicklung für mobile Geräte
Für jeden, der sich mit der Entwicklung für mobile Geräte befasst hat, kennt die Problematik: Für jeden Typ brauch man spezielle SDKs, Entwicklungsumgebungen sind meist bescheiden und vor allem Typ abhängig.
Das Pulsar (Eclipse) packt alles unter ein Dach, sodass die Entwicklung einfach ist. Pulsar war zuerst ein kleines Eclipse Plug-In mit dem es möglich war, mit SDKs von Drittanbietern unter Eclipse zu programmieren. Heute gibt es Pulsar auf der Eclipse Webseite zum Download als eigenständiges Programm, natürlich auf Eclipse basierend und erleichtert die mobile Entwicklung.
SDKs können schnell und unkompliziert über Pulsar (Eclipse) heruntergeladen werden und somit können unerfahrene Benutzer, ohne großartig zu Suchen, schnell die SDKs verwenden für volle Komplexität.
Optisch unterscheiden sich Eclipse und Pulsar nur sehr gering, somit fällt die Umstellung von Eclipse auf Pulsar überhaupt nicht schwer. Zusätzlich können eigene Konfigurationen zum erstellen von den Java-Programmen geschrieben werden, um das Programm für das jeweilige Gerät 100 prozentig anpassen zu können.
VHPD startet Tutorials
Erste Java Tutorials veröffentlicht
Heute Abend haben wir auf unserer Seite Tutorials zu Java und dem Binären-System veröffentlicht. Damit ein theoretischer Einstieg in Java leichter wird
.
Tutorials die heute Abend veröffentlicht worden sind:
JVM - Java Virtual Machine
Algorithmus - Nassi Schneidermann
Phasen der Programmübersetzung
Komplement durch Uz
Compiler und Interpreter
oder die Übersicht:
Tutorial Seite
Viel Spaß beim Anschauen,
VHPD-Team.
Leichter Start beim Tracking mit Open Street Maps und Google Maps
Einfacher Start mit dem Tracking, für Open Street Maps und Google Maps
Benötigt werden:
Handy, das Java (J2ME) unterstützt,
Eine Bluetooth GPS-Maus
und gute Laune
Erste schritte:
Herunterladen des Handyprogramms "Mobile Trail Explorer" auf der Entwicklerseite, oder direkt als .JAR oder .JAD downloaden. Das Hadyprogramm ist unter der GPL (General Public Licence) veröffentlicht und ist somit kostenlos.
Ich benutze dieses Programm, da es nach meiner Meinung das stabilste und einfachste war, auf meinem Nokia 5300 Xpress Music.
Die heruntergeladene Java-Datei auf das Handy kopieren.
Erste Einstellungen:
Sollte die neuere mobile Javaumgebung installiert sein, muss man die Sicherheitseinstellungen verändert, dass das Programm die Trackings auch auf der Speicherkarte speichern kann.
Das geht in den man die Javadatei "TrailExplorer" markiert und dann auf Optionen->Programmzugriff->Datenzugriff-> Dat. hinzufüg./bearb. es erlaubt, bzw. auf "jedes Mal fragen" stellt.
Erster Programmstart:
Wenn man den roten Punkt in der mite seiht, drückt man auf die mittlere Taste und kommt somit in das Menü. Danach geht man auf Settings->GPS und das Handy verlangt nun, das Bluetooth zu aktivieren und möchte damit eine Verbindung aufbauen. Dann einfach seine Bluetooth GPS-Maus auswählen.
Leichter geht es, wenn man die Bluetooth GPS-Maus schon vorab mit dem Handy im Bluetooth Menü gekoppelt hat. Der Sicherheitscode ist bei den meisten Bluetooth GPS-Mäusen "0000".
Sollte das Handy die Bluetooth GPS-Maus nicht finden, liegt es daran, dass die Java-Sicherheitseinstellungen dies verwehren, somit muss man wie mit dem Datenzugriff auch den Verbingunszugriff bestätigen.
In Java einen String überprüfen auf unzulässige Zeichen (Char) - nur von 'A' bis 'Z'






Abbonieren