Would you like to learn and train morse code everywhere? Wherever you go, there you learn? Excellent
application for training Morse code... and with more features.
Try Damone, Italian checkers; uncommon and interesting checker flavour. Play against Android on one of five
dificulty levels from a beginner to an expert.
The silent presentation timer is the ultimate presentation timer ever - invisible with minimal distraction.
Just keep the phone in your pocket and be guided by discreet vibrations
indicating key phases of your presentation!
Dive into the world of ancient Summer and try your hand at governing city of Babylon for a ten year term of
office. Face natural disasters and unpredictable crop yield... and when all
this is OK, you will yet have to cope with the population explosion. Enjoy the eight bit classic game from the
old times when games were written in BASIC!
Below you can find links to some books, papers, blogs, .... which
I read and found interesting. I wish you a pleasant reading :-). The page is
under constant updating, come later and you will find more, here.
Robert Nystrom. Game Programming Patterns. A
catalogue of design patterns used during game development with lots of
interesting details on their implementation (speed, memory efficiency, ...). Useful reading even if you are
already familiar with common design patterns.
Martin
Fowler. Refactoring Catalogue of refactoring techniques
with examples; the book actually shows how to improve structure of an existing software system to achieve better
readability, ability to better accomodate changes and improve
maintainability. It is a must read for any programmer!
Roy Osherove. The Art of Unit
Testing. A great book on software testing, testability and on software
design in a way so as it is testable - including lots of examples.
Records Come to Java
- records as data containers with automatically generated methods like hashcode() or equals() are newly
available in Java 14.
12 recipes for using the Optional class as it’s meant to be used
Follow these dozen best practices to protect your applications against ugly null pointer exceptions—and make your code more readable and concise.
Actually, it is a kind of cookbook with examples, it is quite instructive.
Java and memory management (garbage collector is a great thing, but does not solve all issues)
Java has garbage collector... so you are safe from memory leaks, right? Wrong! Your application still
can leak memory and crash with out of memory exception. Some interesting
links related to this topic follow: Eight Ways Your Android App Can STOP
Leaking Memory. There
are more blog posts on this topic available at the internet, see e.g. this
one and maybe this one... and
many others, use Google :-). My
favourite memory leak is a reference to activity in a thread or inner class :-).
Speaking about memory allocations - when I was writing my Damone game, I was dealing a
lot with the speed optimizations of Java code. I needed the MiniMax algorithm calculating the next move of the
computer to be as fast as possible. One thing which helped a lot was to reduce the number of memory
allocations as much as possible using prepared pools of object and getting rid of
"unnecessary" complexity. Some hints on this can be found e.g. in Developing for
Android II The Rules: Memory.
Functional programming and multithreaded applications are relying on immutability. Modern garbage collectors are so fast that we (nearly always) can forget
of the object allocation cost and benefit from immutability.Why is Java making so many things immutable?
And on the topic of garbage collectors, I recently stumbled upon the following three blog posts
on the Java garbabe collectors:
Class Loaders - how can we modify the way in which Java loads classes?
A few days ago I found interesting the mechanism which is Java using to load classes. Class Loaders allow
e.g., the applet to load class over the internet, to decrypt encrypted
compiled classes during loading, or use namespaces to separate classes that much, that they do not share even
static varaibles. On top of that, studying it will let you dive deeper to
the Java philosophy and you will meet also some details of the virtual machine. Links to a series on Class
Loaders from one blog follows below. I read more resources on ClassLoader,
but these blog spots I found as the most interesting.