The source code in CVS currently represents a later version than what is in the archive. To use test code from CVS you need to get the implementation code from CVS and build it into a jar file yourself. The build scripts are in CVS too.
Typically on startup of a device it sends out an IAm message, which announces its presence to all other existing devices. It optionally may then send a WhoIs request to discover all other existing devices (if it happens to care). I recommend you look further into these two messages for more information.
is it really necessary to set localDevice in the constructor of com.serotonin.bacnet4j.obj.BAcnetObject, doing this in localDevce.add() should be the better way?
Check out LocalDevice. It is an example of where a BACnetObject is created without being added to the localDevice instance. It's debatable whether it needs to know the localDevice instance i suppose, but it is possible to send a message to "yourself", so i'd prefer to leave it the way it is.
Create wrappers for the base Objects (BAchnetObject)
that implement the required and optional properties?
This was considered at the time of original development. It's a reasonable suggestion, but considering how BACnet attempts to normalize all object properties, how much would this really help? (Of course, at the same time BACnet goes to the trouble to define in detail all object properties, so i suppose the argument could go either way.)
And last but noit least create a library of proxies for real Devices that encapsulates the readProperty process and act as "normal" java classes with properties?
Kind of like EJBs? I suppose, but it sounds like 6 of one, half dozen of the other.
You can download the jar of compiled classes to save yourself from having to compile the sources if you want. Otherwise, compilation is really just a matter of running javac (making sure seroUtils.jar is in your classpath). If you don't understand this it's because you are new to Java. Once you understand Java compilation, building BACnet4J will be trivial. You might also look into ANT too.