Why does this API have case-sensitive keys and node-names, while other APIs playing in a similar space (such as the Win32 Registry and LDAP) do not?
In the Java programming universe, case-sensitive String keys are ubiquitous. In particular, they are provided by the Properties class, which this API is intended to replace. It is not uncommon for people to use Properties in a fashion that demands case-sensitivity. For example, Java package names (which are case-sensitive) are sometimes used as keys. It is recognized that this design decision complicates the life of the systems programmer who implements Preferences atop a backing store with case-insensitive keys, but this is considered an acceptable price to pay, as far more programmers will use the Preferences API that will implement it. • Why doesn’t this API use the Java 2 Collections Framework? This API is designed for a very particular purpose, and is optimized for that purpose. In the absence of generic types (see JSR-14), the API would be less convenient for typical users, and would lack compile-time type safety, if were forced to conform to the Map API. Further, it is not antic