Archiv

Archiv für die Kategorie ‘Programmierung’

Schachspiel über WebSockets

9. November 2014 Kommentare ausgeschaltet

Hier ein kleines Beispiel, was mit dem HTML 5 WebSocket-Protkoll möglich ist, das von fast allen modernen Web-Browsern unterstützt wird.

Eine WebSocket ist eine bidirektionale Verbindung zwischen einem Browser und einem Server. Es ist möglich, Text-Nachrichten in beide Richtungen in “fast Echtzeit” zu empfangen und zu senden. Mit “fast Echtzeit” meine ich, dass die menschlichen Sinne bei einer schnellen und stabilen Netzwerkverbindung keine signifikanten Verzögerungen feststellen können. WebSockets sind geeignet für Web-Anwendungen, die eine hohe Interaktivität und kleine Datenvolumen haben, z.B. ein Chat-Programm oder ein Computerspiel.

Dieses Beispiel zeigt ein Schachprogramm, das auf meinem Server läuft und meine fehlerhafte und unvollständige Schach-Engine benutzt, die ich vor ein paar Jahren geschrieben habe.

Mehr…

Automatisches Ressourcenmanagement in Java 7

10. März 2009 Kommentare ausgeschaltet

Wenn in einem Java-Programm Ressourcen (Dateien, SQL-Verbindungen, usw.) geöffnet werden, muss der Programmierer darauf achten, die Ressourcen auch ordnungsgemäß wieder frei zu geben. Geschieht dies nicht, erzeugt das Programm ein “Ressourcen-Leck”. Die Folgen können unterschiedlich sein, von nicht spürbaren Performanceeinbußen bis hin zur Instabilität und Untauglichkeit des gesamten Programms.
Um diese Fehlerquelle im Vorfeld zu vermeiden, wäre es also wünschenswert, dass eine Programmierplattform das Ressourcenmanagement weitestgehend automatisch durchführen kann. In Java ist das bisher nicht möglich, aber für Java 7 gibt es einen Änderungsvorschlag dafür.

So sähe dann mit Java 7 z.B. das Kopieren einer Datei aus:

1
2
3
4
5
6
7
8
9
    static void copy(String src, String dest) throws IOException {
        try (InputStream in = new FileInputStream(src);
             OutputStream out = new FileOutputStream(dest)) {
            byte[] buf = new byte[8192];
            int n;
            while ((n = in.read(buf)) >= 0)
                out.write(buf, 0, n);
        }
    }

Mehr…

KategorienProgrammierung Tags: