Category Archives: Software Development

Java und Virtuelle Server (VPS)

Wer sich einen virtuellen Server gemietet hat und sich quält, Java vernünftig zum Laufen zu bringen, dem sei dieser Artikel ans Herz gelegt: Java Web Hosting HowTo – vServer memory and Java heap size trouble.

Java Virtual Machines and Linux virtual Servers do not play well with each other all the time. Some tweaking and configuration will be necessary to get it working and optimize the use of the (memory) resources.

Die VPS / Virtuellen Server haben leider die Angewohnheit, den Speicher als zu gross zu melden. Sie melden den Gesamtspeicher des Hosts und nicht den Speicher des Virtuellen Servers. Deswegen schlägt Java gnadenlos zu, und versucht sich reinzuoptimieren. Die einzige Lösung ist die Limitierung des Speichers schon beim Start von Java mit -Xms und -Xmx, um die Selbstoptimierung von Java zu umgehen.

Softreferenzen gehen jederzeit

Softreferenzen (soft references) in Java sind eine tolle Sache, denn es lassen sich tolle Caches und Notfallszenarien damit bauen. Was kaum jemand weiß, dass Softreferenzen nicht nur im Falle von akuter Speicherknappheit freigegeben werden, sondern durchaus auch früher. Letzteres kann zu unerwarteten Nebenwirkungen führen, speziell mit Blick auf Caching.

Soft references are kept alive longer in the server virtual machine than in the client. The rate of clearing can be controlled with the command line option -XX:SoftRefLRUPolicyMSPerMB=<N>, which specifies the number of milliseconds a soft reference will be kept alive (once it is no longer strongly reachable) for each megabyte of free space in the heap.

The default value is 1000 ms per megabyte, which means that a soft reference will survive (after the last strong reference to the object has been collected) for 1 second for each megabyte of free space in the heap. Note that this is an approximate figure since soft references are cleared only during garbage collection, which may occur sporadically.

Quelle: JDK 6 Garbage Collection Tuning Guide

Nachtrag: Erwähnenswert ist auch dieser Blogeintrag von Jeremy Manson.

Testedby

Heute habe ich einen interessanten Ansatz für eine Verbesserung von JUnit gefunden – TestedBy.

In a nutshell TestedBy aims to change the point of view regarding test classes and classes under test. What we would obtain is to put class under test (the most important classes of your projects) on the centre and link from there your test class and test method.

Ist einen Blick wert, da es scheinbar erstmal das Management der Tests verbessert.

Poetische Programmierer

Eben haben wir bei der Durchsicht der HtmlUnit-Änderungen im Subversion den folgenden Checkin-Kommentar gefunden.

– I have a dream, few tests to pass
– To help me cope with any class
– If you see the wonder of a fairy tale
– You can take next version even if you fail

– I believe in Java
– Something good in everything I see
– But sometimes hot as Lava
– When I know the time is right for me
– Ill cross the steam – I have a dream

Da scheint jemand seine Berufung nicht gehört zu haben ;)

Ein Zitat zum Lieben

Es gibt Zitate, die sind so erschreckend wahr, dass man sie einfach nur lieben muss und ihnen 100% Recht gibt. Das hier stammt von Bruce Schneier aus dem Crypto-Gram 1999/09/15 und gefunden habe ich es via  KeePass.

As a cryptography and computer security expert, I have never understood the current fuss about the open source software movement. In the cryptography world, we consider open source necessary for good security; we have for decades. Public security is always more secure than proprietary security. It’s true for cryptographic algorithms, security protocols, and security source code. For us, open source isn’t just a business model; it’s smart engineering practice.

Korrekte Telefonnummern sind nicht falsch

Ich finde es immer wieder sehr nervig, wenn Programmierer einfach nicht mit Telefonnummern und ihren korrekten Ausprägungen umgehen können. +491727900000 ist nun mal eine 100% korrekte Nummer, aber die meisten Internetläden nehmen sowas nicht an und nerven mit Korrekturaufforderungen.

Bitte klicken Sie auf zurück und geben Sie eine korrekte Telefonnummer ohne Sonderzeichen ein.

Die Nullen sind von mir fürs Posting eingesetzt. Soll mich ja nicht jeder gleich anrufen.

UUID gefällig?

Wenn jemand mal Bedarf an UUIDs hat und gerade keinen Generator zur Hand hat bzw. etwas mehr über das Thema wissen will, dann ist www.uuidgenerator.com ein Anlaufpunkt, um sich zumindest einiger UUIDs zu bemächtigen.

A Universally Unique Identifier is an identifier standard used in software construction, standardized by the Open Software Foundation (OSF) as part of the Distributed Computing Environment (DCE). The intent of UUIDs is to enable distributed systems to uniquely identify information without significant central coordination.

Thus, anyone can create a UUID and use it to identify something with reasonable confidence that the identifier will never be unintentionally used by anyone for anything else. Information labelled with UUIDs can therefore be later combined into a single database without needing to resolve name conflicts.

(Wikipedia.com)