Skip to main content


Showing posts from February, 2015

DCEVM - A JRebel free alternative

Dynamic Code Evolution VM


DCEVM - A JRebel free alternative Those of you who work with web application development on a daily basis know very well that reloading is annoying. With Tomcat and Eclipse for example, when you make just a small change in your Java class, it still takes at least a few seconds for the change to be reflected because the whole web app will need to be reloaded. This is because class hot-swapping in the JVM is severely limited. Only method body changes can be hot-replaced. All other changes (method signature, class members, etc) will require reloading the whole application.

If you work for a company that buys you a commercial hot-swap solution, like JRebel, you're lucky because usually they work out of the box and offer more functionalities. But if not, don't worry, there are free alternatives out there (DCEVMFakeReplaceSpring-loaded...). I hav…

When to use an assertion and when to use an exception

use exceptions when checking parameters passed to public or protected methods and constructorsuse exceptions when interacting with the user or when you expect the client code to recover from an exceptional situationuse exceptions to address problems that might occuruse assertions when checking pre-conditions, post-conditions and invariants of private/internal codeuse assertions to provide feedback to yourself or your developer teamuse assertions when checking for things that are very unlikely to happen otherwise it means that there is a serious flaw in your applicationuse assertions to state things that you (supposedly) know to be true In other words, exceptions address the robustness of your application while assertions address its correctness. Assertions are designed to be cheap to write, you can use them almost everywhere and I'm using this rule of thumb: the more an assertion statement looks stupid, the more valuable it is and the more information it embeds. When debugging a pr…