This document reviews security features of two most popular modern development platforms--Java and .NET (Java v1.4.2/J2EE v1.4 and .NET v1.1). The platform choice is not random, because they represent, to a certain extent, competition between UNIX-like and Windows systems, which largely defined software evolution over the last decade. Although Java applications run on Windows, and there exist UNIX bridges for .NET, the Java/UNIX and .NET/Windows combinations are used for development of a significant portion (if not majority) of applications on their respective operating systems, so both platforms deserve a careful examination of their capabilities.
Such an examination is especially important since different aspects of UNIX/Windows and Java/.NET competition have been flaming endless heated debates between proponents of both camps, which often blindly deny merits of the opposite side while at the same time praising their preferred solution. The material here is purposely structured by general categories of protection mechanism and reviewing each platform$B!G(Bs features in those areas. This allows starting each topic with a platform-neutral security concept and performing relatively deep drill-downs for each technology without losing track of the overall focus of providing an unbiased side-by-side comparison.
The document is based on the research material that was used as a foundation of the feature article, "Securing .NET and Enterprise Java: Side by Side", which was written by Vincent Dovydaitis and myself and appeared in Numbers 3-4 of Computer Security Journal in 2002. The following areas will be considered:
- Security Configuration and Code Containment
- Cryptography and Communication
- Code Protection and Code Access Security, or CAS
- Authentication and User Access Security, or UAS