This essay has been submitted by a student. This is not an example of the work written by our professional essay writers.
More and more companies today want to develop distributed enterprise applications for leveraging the organizational performance. Achieving this goal depends upon the products and components used to build the application as they have to satisfy both the business and technology demands of the organizations. Choosing the right, well-known and mature technology platform is the key to successful deployment of distributed enterprise applications. Currently, the enterprise application development platform is predominated by contemporary technologies JEE, Microsoft .NET and PHP. This paper discusses these technologies with emphasis to their philosophy, performance and reliability for choosing the right platform for developing corporative applications.
In the corporate computing world, the demand for enterprise applications is growing quickly. Enterprise applications are mission-critical large scale business applications that are complex, distributed and component-based. Some enterprise applications are meant to be distributed as they can be accessed through intranet, internet or extranet. These data centric applications need to satisfy both business and technical demands of the organization. Enterprise applications identify the main components of organizations, information systems and how the components including staff, technology, business and resources work together to achieve business objectives . Enterprise applications are very complex systems that are hard to design and implement.
Enterprise applications are developed with development platforms. A development platform includes programming language/s, run-time environment, and reusable class libraries. Using the right application development platform is very significant. If there exist troubles related to the development platform, changing the development platform may be expensive or impossible. It is a well known fact that most of the computing platforms are Turing Complete, so software developed with one platform can be developed with other platforms in theory. Although the development platforms facilitate solutions of the problems, accumulations of one platform may be more improved than the others. Therefore, selecting the true platform is considerable for the success of the project.
The most mature and well-known technologies which offer component method of approach to the development of distributed enterprise systems are Microsoft.NET and Oracle Sun's JEE. Few are looking out for the "third way" of using Linux, Apache, MySQL and PHP (LAMP) too. But LAMP based applications have very little market share compared to those two giants. Both JEE and .NET are widely adopted and these platforms are offering huge array of elements designed to simplify and strengthen the development process apart from the fact that they have very much in common. But it's evident that all of them have their own set of advantages and disadvantages. Making that all-important development choice among J2EE, PHP and .NET can be a critical defining decision for an organization. This paper concentrates on the factors that are to be evaluated while choosing the platform by exploring the philosophy, implementation and impact of these three technologies.
Enterprise Application Development Platforms at a glance
There are many platforms with design tools, frameworks and design patterns are available to develop enterprise applications. The two leading technologies in enterprise-level application development are .NET and Java EE as these two platforms have managed to capture a sustainable share of enterprise application market. In addition, there are alternative technologies like PHP (Hypertext Preprocessor), WebObjects and Coldfusion. The following sections give a clear overview of these technologies.
Java EE (JEE)
Java EE is a set of specifications for developing enterprise-level applications, created by the Java Community Process (JCP). JEE is a platform that is widely used to develop multitier enterprise applications with reduced costs and complexities. It is not only used for developing applications, but also to deploy and maintain them. Java EE represents a single standard for the development and deployment of various enterprise applications. It provides both server and client side support for building distributed and multitier applications. In such applications, client-side refers to the user interface and the server-side is mainly the back-end data storage and support. The middle-tier is designed for the business logic based on the application requirements. There are a set of related specifications for the Java EE, among which the most important ones are
Enterprise Java Beans specification
Java Servlet specification
Java Server Pages specifications
The client side is normally brought out using plain HTML through the web or HTML generated dynamically with the help of Java Server Pages (JSP), assuming that clients access the middle tier through known Web standard such as XML, HTTP or HTML. It can also be designed using applets. There may be some cases where enterprise applications are complex to design by logic, hence requiring complex client interactions. In such cases, the applications can be developed using Enterprise Java Beans (EJB). The Java EE includes API specifications such as XML, RMI, JDBC and several others too. These technologies will be seen in detail in the further sections.
PHP is an open source programming for the web and is knows for creating dynamic web applications and business-critical web systems. Apache, MySQL and PHP/Python/Perl are cornerstones of all Linux distributions. PHP was not originally designed for building enterprise applications, but has evolved to. The newer versions of PHP support SOAP, XML-RPC and even any other database platforms. In order to build successful enterprise applications, there are a few requirements that have to be ensured that the programming language can satisfy. Few such requirements are scalability, security and user interface functionalities. PHP has started evolving into the enterprise applications development stream few years back and is now one of the competing technologies. Few and famous online enterprise applications that use PHP are Facebook, Yahoo and Lufthansa Online Ticketing.
Enterprise LAMP also took a step forward with the release of ActiveGrid Application Builder and LAMP Application Server. The LAMP application stack has long been a favorite of open source developers, and ActiveGrid's LAMP releases aim to take the open source stack up to the enterprise level to compete with J2EE and .NET.
Microsoft .NET is the term that covers Microsoft's latest programming and development environment for creating distributed enterprise applications. .Net provides developers all the components including smart clients, Web Services, servers, and developer tools to build enterprise applications. It is a development and execution environment that allows different programming languages & libraries to work together seamlessly to create Windows-based applications that are easier to build, manage, deploy, and integrate with other networked systems. The main component of this is the .NET Framework, which consists of an array of elements designed to simplify and strengthen this process. The .NET Framework includes components such as the common language runtime (CLR), ASP.NET, ADO.NET, enterprise services, and .NET Remoting.
Comparing the stacks
Each platform has its own set of advantages and disadvantages. This section evaluates the performance of these platforms based on few vital parameters.
Developers prefer .NET because it reduces the development time with its pre-implemented controls, components and APIs. With a right framework, PHP development can be quick but not as quick as .NET. JEE is not preferred much by the developers as every modification required in the EJB results in repackaging and redeploying the entire application.
Programming Language Support
The .Net framework is language independent and makes the programmers to use different programming languages like C#, VB.NET, J# (Java for .Net) etc. The JEE allows only java to be used as programming language. LAMP platform supports PHP, Perl and now its supports python. It is not possible to compare PHP with .NET. and JEE. .NET is an application framework and JEE is a specification. PHP is a mere programming language. PHP can be compared to languages which run under .NET, such as ASP+ or C#.
Operating System Support
.NET is tied closely to the Windows operating system. It is possible to say that if Windows-only environment is being used then Microsoft.Net provides good solutions for enterprise applications (with limited choice and limited influence on future directions but the benefits of one source and a known supplier). Java EE is platform independent that runs on any operating system. Unlike the Common Language Runtime (CLR) of .NET (which is language independent) the Java Virtual Machine (JVM) is platform independent. . This property of Java EE provides an advantage in heterogeneous environments that include different platforms. In short, JEE is single language on multiple operating systems and .NET is about multiple languages and single operating system. Despite the fact that PHP works best on Linux environments, it is possible to deploy PHP applications on other platforms such as Windows, Solaris, etc.
The real scenario is that JEE is preferred over .NET and PHP when organizations have to run the application on systems other than windows platforms such as Linux, Mainframe or Sun Solaris. In situations where the organization already has a large implementation of systems in the UNIX platform, they will obviously opt for JEE or LAMP. Since LAMP does not have a huge array of specifications for all the requirements needed to build a comprehensive enterprise application, JEE has become the de facto standard in this case. But soon this situation might change as Microsoft is going to launch CLR for all platforms which right now work only on windows.
Web Services Support
Web Services have not only changed the way how we develop software systems, but also changed how we do business. Web services define applications that deliver a service using Internet standards. External consumers or applications communicate with Web services by means of XML formatted messages, usually using XML over HTTP. Both .NET-based and J2EE-based applications can implement XML Web services.
While comparing JEE, .NET and PHP in terms of their support to web services, we can find that .NET has the integrated support for web services. The key advantage behind using the .NET approach to Web Services is that it has been designed for that purpose, whereas the webs service support has been added to JEE with the help of further APIs. There is no integrated architecture for web services in JEE as it was developed long before web service standards evolved.
But this factor has its own advantage too. Using JEE will give the enterprises a much wider choice of vendor for their pre-built software (application servers mostly). In many ways, open source J2EE application servers are closer to the standard laid down by Sun, because they don't add proprietary extensions to overcome problems.
Security can't be an afterthought in enterprise application development. The application development platforms and runtime environments must provide security features such as authentication and authorization, data integrity, non-repudiation and privacy of data. Both JEE and .NET provide comprehensive security services with a different focus. While .NET provides a solid security model with CLR managed code, JEE provides the same with the Java Virtual Machine. They both use the concept of "Sandbox" where the code is protected. Microsoft defines its sandbox as an "application domain" while the Java term is "protection domain." The code being protected is called an "assembly" in .NET and a "JAR" (Java Archive) in JEE. JEE supports Java Authentication and Authorization Service (JASS), a user-centric security framework along with the code based security. .NET suffers from tight integration with IIS, without which it is not really capable of performing authentication. In terms of access control, .NET provides a powerful and simple Code Acccess Security (CAS) mechanism. PHP on the other hand is secured if used with Linux server environment. But this option is considered due to platform issues.
Overall, .NET and Java have got robust security mechanism. .NET is very convenient and powerful for a full-Microsoft windows network of closed homogeneous environments while JEE stands well suited for mixed heterogeneous environments.
Development Tools and Vendor Neutrality
Development tools are used to simplify the complex processes and to speedup the application development process. The Sun JEE has eclipse and NetBeans, where Microsoft has the Visual Studio.NET which supports all languages supported by earlier releases of Visual Studio. PHP has Zend Framework which is widely used by developers. As far as vendor neutrality is concerned, JEE has the advantages as it is standards compliant. JEE standards compliance allows the enterprise to discard a non responsive vendor support and to plug in a better, more responsive vendor. Unlike .NET framework, JEE is a specifications so that the Java Community rely on vendors to create products that adhere to the specification. This makes JEE an extremely well-marketed platform because it is being marketed by an entire industry of 50+ assorted vendors. This network of interdependent businesses form a virtual marketing machine and as result of it JEE has a huge market.
The cost is another key factor an organization has to take into account when choosing the technology. Infrastructure costs are fairly close regardless of the platform chosen. For example, deploying the application on standard application servers are either the built-in Windows server or a free of cost Jboss or Apache. If any servers are used as additional requirements such as Microsoft Commerce server, then .NET based architecture becomes an expensive solution. Similarly in the JEE platform a different application server such as BEA is chosen, then JEE based architecture will become a more expensive solution. As far as developer's costs are concerned, very highly skilled resources are available for both platforms. The resources are abundant for J2EE more than .NET the platform due to its maturity. As far as LAMP based application deployment is concerned, the cost of the servers is very less compared to the expensive servers of JEE and .NET platforms.
The maturity of the development plays a key role in the success of the application. The current JEE deployments are sound and perfect for a variety of mission critical applications. Java/EJB has a commanding lead in the enterprise marketplace over .NET. Since JEE has a three year lead over .NET this is expected. Many developers have documented the best practices as design patterns too have evolved. .NET is catching up very high with its high web services support. The problem with JEE is it includes several technologies that are no longer in use. But for PHP, the enterprise application platform support came with ActiveGrid Enterprise LAMP, which has less support and usage compared to .NET and JEE.
Migration from Previous Platform
Migration is has been an essential point of concern when an new enterprise application is to be developed. Managing the legacy systems is the issue of concern in migration. The JEE has the supports smooth migration with the Java Connector Architecture (JCA) as well with its support for the web services. In the case of .NET, it has CLR which by nature supports migration along with its XML support for web services. The real world case of The Central Bank of Costa Rica is a perfect example of .NET migration. Over 1.3 million lines Visual Basic 6.0 code was migrated to .NET by using the XML standards .
The platforms that are discussed here in this paper are the three platforms which are the most popular platforms for enterprise application development (Platforms such as Ruby On Rails, Django and few more are out of the scope of this paper) and they all have some advantages and disadvantages against each others. The general comparison of the basic abilities of all the above platforms is carried out here. In terms of interoperability JEE and .NET are way ahead of PHP based applications as both platforms have a wide collection of class libraries cross platform integration. As for as performance is concerned, JEE offers many tactics to cope with performance issues altought this flexibility requires well-educated developers. .NET's performance too is good as its framework has been customized to a well aware deployment infrastructure.
In the .NET platform the enterprises have the liberty to choose their programming language but not the platform. Where as in JEE the enterprise can choose their platform but the programming language is restricted to java. But JEE allows the cushion to choose the hardware platform, operating systems and application servers according the requirements of the enterprise. The LAMP platform supports a variety of operating systems but is restricts enterprises with limited programming language and application server support.
.NET is far ahead with inherent web services components, simple programming model and has an awesome development tool of Visual Studio. But JEE has its APIs for web services support and a programming model which is more advanced and appropriate for well trained developers.
The LAMP platform is considered good for applications that are to be completed with stringent budgets. With free of cost IDE, Web Server, Operating System and a Database LAMP is definitely a good choice. But for .NET, the enterprises have to invest on Visual Studio, Windows Server and for Microsoft SQL Server. JEE has a variety of choices where enterprise can reduce cost if they go with Tomcat or JBoss for server and MySQL as database. If the enterprise opts for other servers and databases then the cost is very high.
Its quiet hard to pick a clear winner out of the three platforms discussed above. LAMP is not much used like the other two platforms and it stays low in the comparison scale. But both JEE and .NET are so similar in their philosophies. Selection of one among the two platforms must be based less upon their intrinsic merits and more on the enterprise's existing environment. The decision can be made on few vital bottom line factors such as hardware, software & middleware infrastructure and the level of experience and expertise of people who know about the enterprise's technology-business requirements. The philosophy of the platforms provides options and time to choose the one that adds greater stability and brings ROI.
(for the whole paper, don't confuse with the one given above)