Roman Numerals in Java
I like that you use an immutable map.  However I don't like the name map: you should give it a more descriptive name and it should be capitalized since it is a constant.  You should also declare the type of map as LinkedHashMap: it is important here since you do use the ordering property.  You can define map as private static final Map&lt;String, Integer&gt; map = new LinkedHashMap&lt;String, Integer&gt;() {{ this.put(x, y); ... }}.  

Your api should probably return an error on invalid roman numeral instead of: // calling representationOf() makes sure that "IIIII" becomes "V".

In method of (string to int), I think you don't have to use a StringBuilder and to invert it.  You can easily modify your algorithm to work forward and just use toCharArray.  You could use the Java 8 "functional" (Stream) features here instead of a for-loop.  I like functional programming since it makes for shorter and more readable code, but they really messed things up in Java 8 and I couldn't find an easy solution.  I could do it in Scala, but in Java 8 it would end up being longer than your code and completely unreadable.