Using the Java 2 Platform, Standard Edition (J2SE) as a basis, Java 2 Platform, Enterprise Edition (J2EE) builds on top of this to provide the types of services that are necessary to build large scale, distributed, component based, multi-tier applications. Essentially, J2EE is a collection of APIs that can be used to build such systems, although this is only half of the picture. J2EE is also a standard for building and deploying enterprise applications, held together by the specifications of the APIs that it defines and the services that J2EE provides. In other words, this means that the "write once, run anywhere" promises of Java apply for enterprise applications too:
Enterprise applications can be run on different platforms supporting the Java 2 platform.
Enterprise applications are portable between application servers supporting the J2EE specification.
Selecting Java or .NET is still a difficult question nowadays. Most of the time, the selection is made by our customers, based on their familiarity and their existing platforms. Sometimes, the selection is driven by the selected database. And Java is chosen if the database is Oracle or DB2. With Java/J2EE, we had more than 10 projects and all of them are in medium or large size.