[Maven] Mit Maven ZIP Archiv erstellen / deployen Tutorial

Mit Maven ZIP Archiv erstellen

Wer kennt es nicht? Man hat eine Software (eine JAR Datei), die man als ZIP Archiv ausliefern will (z.B. um sie auf einer Download Seite zur Verfügung zu stellen) und muss diese ZIP Dateien noch von Hand erstellen. Heute zeige ich euch, wie ihr diese ZIP Archive automatisch von Maven generieren lassen könnt.

ZIP Archiv (GPL Lizenz, Quelle: https://www.iconfinder.com/icons/7034/compressed_document_file_zip_icon)

ZIP Archiv, GPL Lizenz, Quelle: Link

Continue reading

[Java] Hazelcast JUnit Tests

Ich habe mich früher oft gefragt, wie man Hazelcast JUnit Test schreibt.

Heute will ich euch eine kurze, aber knackige Antwort darauf geben.

 

Wer Hazelcast nicht kennt:

Hazelcast ist eine In-Memory-Data Grid, also eine der schnellsten (angeblich sogar die schnellste) NoSQL Datenbanken, die es derzeit auf dem Markt gibt.

Allerdings speichert Hazelcast die Daten per Default nur “In Memory”, also nur im RAM. Da es aber mehrere Hazelcast Nodes (Server) im Cluster geben sollte, können mehrere Hazelcast Server ausfallen, ohne dass dabei Daten verloren gehen. Bei Pentaquin nutzen wir Hazelcast derzeit vorallem als Cache für schnelle Zugriffszeiten, die ein 2D MMORPG dringend benötigt.

Continue reading

[Java] Ist eine Java HashMap Thread Safe?

Ist eine Java HashMap Thread Safe?

HashMap Code

In diesem Artikel wollen wir uns einmal damit beschäftigen, ob die Map Implementierung HashMap<Key,Value> Thread Safe ist. Sicherlich habt ihr auch schon einmal von einer ConcurrentHashMap gehört und euch gefragt, was denn jetzt der Unterschied zwischen diesen beiden ist. Auch gibt es bei einigen immer wieder etwas Verwirrung, weil man immer mal was von 16 Locks im Zusammenhang mit einer HashMap gehört hat. Heute wollen wir das Rätsel einmal auflösen.

Continue reading

[Java] Neue 2D (RPG) Game Engine – Version 1.0.1 (Alpha) released!

Derzeit arbeite ich u.a. an einer neuen Java 2D Game Engine, da die alte Java Game Engine Slick2D leider schon lange nicht mehr weiterentwickelt wird.

Auf der Java Seite gibt es aktuell leider kaum wirkliche Alternativen im 2D Bereich (mir fallen spontan nur libGDX und jMonkeyEngine ein).

libGDX konnte mich dabei aktuell noch nicht wirklich überzeugen (vorallem was die Performance angeht – hier habe ich einige Blicke “unter die Haube”, also in den Code geworfen…) und sowohl libGDX als auch jMonkeyEngine 3D Game Engines sind, die zwar einen 2D Mode besitzen, aber eher für 3D und weniger für 2D ausgelegt und somit auch eher dafür optimiert wurden. Auf dem Markt habe ich daher schon lange nach einer guten und kostenlosen Java 2D Game Engine gesucht, aber bin bisher nicht fündig geworden.

Nun habe ich die Sache selbst in die Hand genommen und arbeite aktuell an einer neuen 2D Game Engine, in der Programmiersprache Java 8 geschrieben, die zwar vorrangig für 2D RPG Spiele ausgelegt sein soll, aber auch andere Spiele unterstützen wird. Diese soll quasi eine Alternative zu libGDX & jMonkeyEngine schaffen und für 2D & Computer Plattformen optimiert sein.

JuKuSoft Java 2D Game Engine

Continue reading

[Java] Shutdown Hook

Shutdown Button

Heute soll es einmal um Java Shutdown Hooks gehen, mit denen wir bestimmten Code beim Beenden der JVM ausführen können (z.B. Daten sichern usw.)

Der User kann eine Java Applikation auf mehrere Wege beenden oder abbrechen, z.B. auch über die Kommandozeile per STRG + C, was wir weder abfangen, noch beeinflussen können. Allerdings gibt es eine Möglichkeit, dass trotzdem ein bestimmter Code ausgeführt wird, wenn der User dies tut – die Shutdown Hooks.

Continue reading

[Tutorial Serie] LWJGL 3.1.0 & GLFW (mit OpenGL) – Teil 1

In dieser neuen Tutorial-Serie soll uns einmal um die Lightweight Java Game Library 3 (kurz: LWJGL 3) gehen, eine Library für Java um 3D und 2D Spiele entwickeln zu können. Dabei werden allerdings OpenGL oder Vulkan vorausgesetzt. LWJGL soll den Zugriff auf OpenGL, OpenAL und OpenCL, sowie seit neuestem auch auf Vulkan Funktionen erleichtern und euch eine Menge Arbeit abnehmen. In diesem Tutorial soll es uns aber nur um OpenGL gehen.

LWJGL Logo

Continue reading

[Tutorial] Sessions mit Spring nutzen

Heute habe ich mich gefragt, wie man Sessions mit Spring in Java nutzen kann und mit etwas Recherche erfahren, dass es in Spring um einiges einfacher ist, als ich anfangs gedacht habe. Auf die Maven Konfiguration werde ich hier nicht genauer eingehen.

 

Was ist eine Session?

Session heißt übersetzt “Sitzung” und ist auch wortwörtlich eine. Jedem User wird dabei eine eindeutige ID zugeordnet und als Cookie gespeichert und der Server weiß somit, dass es sich beim nächsten Seitenaufruf immer noch um den selben User handelt. Was nach Tracking klingt ist fürs moderne Web unentbehrlich! Wenn der Server nicht wüsste, dass es sich um den selben User handelt, wüsste er auch nicht, ob der User eingeloggt ist oder wie sein Benutzername lautet, man müsste sich also ohne immer auf jeder Seite neu einloggen! Damit kommen wir auch gleich zum nächsten Punkt:
Während der Client nur die sessionID besitzt, kann man auf Serverseite Daten zu dem User (z.B. userID, Username, Flag ob er eingeloggt ist usw.) speichern, die der Client nicht manipulieren kann. Ein Hacker könnte höchstens versuchen, die sessionID per Cookie zu manipulieren und eine richtige sessionID herauszufinden (sog. Session Hijacking), allerdings ist dies nicht so einfach möglich, wie es sich anhört, da die ID keine Zahl, sondern meist ein Hash ist. Diese wird übrigens erstellt, sobald der User entweder die Seite zum ersten Mal aufruft oder die alte Session abgelaufen ist (z.B. kann eine Session nur 15 Minuten gültig sein, damit ein Benutzer automatisch ausgeloggt wird, sobald er 15 Minuten nicht aktiv ist).

Continue reading

[Tutorial] Eine Einführung in Maven – Teil 2 / 2

Im 1. Teil des Tutorials haben wir bereits gelernt, wie man ein Maven Projekt erstellt. Auch was Maven ist, wissen wir bereits.

In diesem 2. Teil soll es nun darum gehen, wie wir Maven Projekte konfigurieren und richtig einsetzen.

Continue reading

[Tutorial] Ein Chat Server in Java – Teil 2 / 2

In diesem 2. Teil des Tutorials wollen wir uns um den Chat Client kümmern. Zum ersten Teil gehts hier.

In diesem Tutorial läuft der Client nur in der Console, allerdings ist es ein leichtes, den Client um ein GUI zu erweitern, da er dafür ausgelegt wurde.

Hier der volle Source Code: https://github.com/JuKu/chat-server-tutorial

Chat Client Version 1.0.0

Chat Client Version 1.0.0

Continue reading