[Maven] Lokale JAR Library einbinden, die nicht im Maven Central liegt

Maven JAR Library

Maven JAR Library

Manchmal ist eine JAR Library nicht im Maven Central verfügbar, sondern man will die JAR Library lokal einbinden

Dies kann z.B. vorkommen, wenn man einen Mob für ein Spiel schreiben will und die Api JAR nicht online verfügbar ist.

Wer mit Maven noch nichts anfangen kann, sollte sich zuerst mein Tutorial dazu, Teil 1 & Teil 2 anschauen.

Continue reading

[Java 9] Jigsaw wurde abgelehnt

Bis gestern hatten die Mitglieder des JCP (Java Community Process) Zeit um über das am heftigsten umstrittene Feature von Java 9 – Projekt Jigsaw (das geplante Modulsystem von Java, JSR 376) – abzustimmen. Jigsaw sollte das wichtigste neue Feature von Java 9 werden, nun aber steht es fest: Jigsaw wurde abgelehnt.

Java 9 wurde aufgrund dieses Features und der dazugehörigen Kritik schon mehrfach verschoben und es bleibt abzuwarten, ob Java 9 nicht sogar noch einmal verschoben werden muss.

Java Logo

Continue reading

[Java] Test RPG mit libGDX – Entwicklung

Test RPG mit libGDX – Version 1.0.0 pre-alpha

Dank Pentaquin (wir setzen dort libGDX ein) durfte ich mich wieder einmal in eine neue Game Libraries rein fuchsen, diesmal libGDX.

Um mein eigenes Wissen über libGDX zu erweitern habe ich kurzerhand ein kleines Test RPG (Role Playing Game) angefangen zu programmieren, auch um die Performance & Möglichkeiten von der Gaming Library libGDX einmal genauer auszutesten.

Dabei habe ich versucht nur Open Source Grafiken einzubinden, dessen Autoren findet ihr in der CONTRIBUTORS Datei sowie in den jeweiligen Asset Verzeichnissen.

 

Test RPG mit libGDX

Test RPG Game, die Grafiken stammen nicht von mir, eine Liste mit allen Grafik Urhebern findet ihr hier: CONTRIBUTORS und LICENSE (free Open Source Assets unter individuellen Lizenzen)

Continue reading

[Maven] Eine JAR mit allen dependencies

Wenn man mit Maven eine einfache JAR Datei buildet, enthält diese nur den eigenen Code, die Libraries sind nicht enthalten, sondern im lib Ordner versteckt.

Manchmal will man aber diese libraries gleich mit in der JAR haben, um nur diese eine JAR Datei ausliefern zu müssen. Dies nennt sich dann “JAR mit allen dependencies” oder in Original Sprache: “jar-with-dependencies”.

In diesem kurzen Artikel wird erklärt, wie es funktioniert.

Wer sich noch nicht mit Maven beschäftigt hat, sollte sich mit meinem Tutorial zu Maven Teil 1 und Teil 2 einmal auseindersetzen.

Continue reading

[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