<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-20685163</id><updated>2011-04-21T20:36:18.403-07:00</updated><category term='Touch down to the West'/><title type='text'>Raghavan's Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sriraghavanv.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20685163/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sriraghavanv.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>raghavan</name><uri>http://www.blogger.com/profile/00621325900207050521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_4qII2km2_7k/Rv7v5jsIrxI/AAAAAAAAAC0/Px1XBcSnx_M/s320/IMG_0381.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-20685163.post-1845157106535619711</id><published>2008-11-15T07:48:00.000-08:00</published><updated>2008-11-15T08:12:37.256-08:00</updated><title type='text'>WCF For Starters</title><content type='html'>Folks,&lt;br /&gt;Here are few points about WCF&lt;br /&gt; To create a wcf service &lt;br /&gt;  1) Create a Service Contract [ Implement ServiceContract from Service Model namespace]. Basicaly its creating an Interface through which tells what type of operations the web service can perform.  Also add [OperationContract] attribute to all the interface methods.&lt;br /&gt;  2) If you have any specific data to be passed, create a Data contract by adding DataContract attribute.&lt;br /&gt;  3) Create your Service Implementation.  Make sure you mention the service behaviour, whether it is a singleton/singlecall.&lt;br /&gt;  &lt;br /&gt;Thats it, we are ready with the service. &lt;br /&gt;Now its now in creating your end-points.  You can have the basic http binding, TCP binding, and named pipes(new in IIS-7)&lt;br /&gt;A single WCF service can be exposed through different end points.&lt;br /&gt;&lt;br /&gt;There is a built in WCF Client which finds the hosted services at different end points.  The WCF Client by itself uses the IMetaDataExchange service. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fix for a intermediate problem you face in Windows Vista with low priveleges :&lt;br /&gt;&lt;br /&gt;When you change the default port from :8731 to any other port, you would get error like below :&lt;br /&gt;HTTP could not register URL http://+:8000/. Your process does not have access rights to &lt;br /&gt;this namespace (see http://go.microsoft.com/fwlink/?LinkId=70353 for details).&lt;br /&gt;&lt;br /&gt;To get fix for that you have start cmd and run as administrator(Type cmd and press CTRL+SHIFT+ENTER) to run Command prompt as administrator.&lt;br /&gt;&lt;br /&gt;Use netsh http show urlacl to view list of ports that are usable by &lt;machinename&gt;\&lt;username&gt;.&lt;br /&gt;Now to add your custom port, you have do like below :&lt;br /&gt;netsh http add urlacl url=http://+:8000/ user=MYMACHINE\UserName&lt;br /&gt;This resolves the issue :-)&lt;br /&gt;&lt;br /&gt;Next is creating your Test project for consuming your wcf service. In thenext post.&lt;br /&gt;&lt;br /&gt;Any issues, pls feel free to give a call or drop an email :&lt;br /&gt;Sriraghavan&lt;br /&gt;Office : sriraghavan_venkataraman@ml.com&lt;br /&gt;Personal : raghavan_17@yahoo.com&lt;br /&gt;Phone : +91 9962456279&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20685163-1845157106535619711?l=sriraghavanv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sriraghavanv.blogspot.com/feeds/1845157106535619711/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20685163&amp;postID=1845157106535619711' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20685163/posts/default/1845157106535619711'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20685163/posts/default/1845157106535619711'/><link rel='alternate' type='text/html' href='http://sriraghavanv.blogspot.com/2008/11/wcf-for-starters.html' title='WCF For Starters'/><author><name>raghavan</name><uri>http://www.blogger.com/profile/00621325900207050521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_4qII2km2_7k/Rv7v5jsIrxI/AAAAAAAAAC0/Px1XBcSnx_M/s320/IMG_0381.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20685163.post-9019309256941357372</id><published>2007-09-29T16:38:00.000-07:00</published><updated>2007-09-29T17:27:42.721-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Touch down to the West'/><title type='text'>&lt;!--Journey to the western part of the world --&gt;</title><content type='html'>Its Friday early morning the 3rd of August.  The sky was clear and climate &lt;br /&gt;absolutely refreshing... awaiting for a long journey.  Yes tonight its my journey to the west, the land of opportunities, land of whatever you wished for, yes, its -united states of america. &lt;br /&gt;&lt;br /&gt;This would be first flight experience, travelling in the air. so it was quite new for me and i got bizarre feelings of how i will be travelling at 30,000 ft in the air. hmm...it was quite so ordinary as what i exaggerated myself.&lt;br /&gt;&lt;br /&gt;Well i was so busy that day, packing my things up and browsing through my requirement&lt;br /&gt;catalog and running to the grocery shops to get things here as far as possible. coz as u know u might not get easy access to buying things in america. i ll delve with it the further posts.  I forgot one of the most alarming fact. my family and i would travel to the airport in a cab and i ll boarding the flight in the midnight. so they gotta return back alone. i did not call any of my friends to accompany me, as i din wanna disturb their sleep.&lt;br /&gt;But i was so lucky in getting one of my old school mate A, to accompany us.&lt;br /&gt;Well the time has come for me to leave the land where i ve been there for 23 years.&lt;br /&gt;Its a short visit ,but still, i am leaving my mother country. so i had blood rushing during my exit. Anyways, i ve to take things as it comes to me and live the way it takes you. &lt;br /&gt;I bid adeiu to my parents and my friend and went for the security check. i had to undergo certain process which i did. my luggage got scanned and checked in.  My immigration check in went on went upstairs and i was amazed to see the place. was that chennai? i was wondering!! It was cool and so cold. i had to board at the Gate No.2. I sat near a guy aged average, was talkin to him.he was heading to djakarta. got some cool tips from him regarding the travel.  I am taking the emirates airlines. Chennai-dubai-newyork,jfk.  Well imagine how will be my later part of the journey!! thast 15 hrs man....!! As usual flight to dubai is late by 40 mins. After a short while there was announcement for boarding flight to dubai. i stood up in the queue and ready to fly. It was a medium sized flight. it had nice facilities and had some cool air-hostesses.  it was approximately 5 hrs journy from chennai - dubai.&lt;br /&gt;Dubai is one hell of a place. Trees,buildings amidst of sands and bricks. Oh my god, there are lots of buildings under construction!!&lt;br /&gt;&lt;br /&gt;I got landed at the dubai airport and being escorted by a cool airbus, circling around the dubai airport taking me to the transit area.  &lt;br /&gt;&lt;br /&gt;My next flight is scheduled at 8 05 am. but the time is 7 15. I ve to board the flight before 30 an hr at least. I asked the dubai officials, they least care abt you.  They were jus talking inspite of my request for Gate No. XX.  And one guy told me get to the top. Ah Voila, found out Gate no.XX and b4 i wanted to go to the restrooms and oh my god, it had a queue. hmm...after that i checked in the Gate headed for New york. Now my actual journey starts.  &lt;br /&gt;The flight took off shortly and you know, a bangladeshi near by me.  He is one such a**h***.  He was totally talking crap.  he talked abt his country. he said he is working for nyse.. Oh  he din even a good english, how come he is workin in NYSE?! may be he had found exact clown[me] to blow his horns. &lt;br /&gt;I din care, as once again the air hostesses were really cool and very serving..&lt;br /&gt;so initially i concentrated on them.. then i loose interest. what to do for 15 hrs!!?! The flight route is like this, Dubai-iraq,tehran, turkey, moscow,iceland, atlantic, greenland, canada and landed JFK.&lt;br /&gt;&lt;br /&gt;So finaly i woke up to see that i am flying above Albany,NY, its were yet another school mate lives and studies.hmmm...wished i see him b4 going anywhere. &lt;br /&gt;Well then came new york. The plane was shuttling over JFK for an hr coz of AIR TRAFFIC. Wow, i am hearing that word, jus now in my life time.  As u might John F.Kennedy airport is the busies one in the world. So our flight was finding so difficult to land.  &lt;br /&gt;&lt;br /&gt;Ah!! Finally it landed, wow,its so rough landing., i thought its going to dash somewhere. I disembarked from the plane and went to immigration check.&lt;br /&gt;Usually the officer asks how long he/she is gonna stay. surprising, he din ask anything and stamped 6 months. I don know what s goin on in his mind!!&lt;br /&gt;&lt;br /&gt;Went to the baggage claiming area to pull off my baggages. i got my bags so soon. &lt;br /&gt;My travel was sooo smooth. i never imagined i would take off and touch down so easily.  Guess it was my mom and dad 's prayer made my journey simple as it is.&lt;br /&gt;&lt;br /&gt;Thats it, i will come up with exciting incidents during my stay &lt;br /&gt;Ossining,New york.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20685163-9019309256941357372?l=sriraghavanv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sriraghavanv.blogspot.com/feeds/9019309256941357372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20685163&amp;postID=9019309256941357372' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20685163/posts/default/9019309256941357372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20685163/posts/default/9019309256941357372'/><link rel='alternate' type='text/html' href='http://sriraghavanv.blogspot.com/2007/09/its-friday-early-morning-3rd-of-august.html' title='&lt;!--Journey to the western part of the world --&gt;'/><author><name>raghavan</name><uri>http://www.blogger.com/profile/00621325900207050521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_4qII2km2_7k/Rv7v5jsIrxI/AAAAAAAAAC0/Px1XBcSnx_M/s320/IMG_0381.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20685163.post-113783824046805478</id><published>2006-01-21T02:07:00.000-08:00</published><updated>2006-03-08T07:28:58.060-08:00</updated><title type='text'>J2EE Vs Microsoft .NET Architectures</title><content type='html'>In this whitepaper, we will make a powerful comparison between the two choices that businesses have for&lt;br /&gt;building XML-based web services: the Java 2 Platform, Enterprise Edition (J2EE)1, built by Sun&lt;br /&gt;Microsystems and other industry players, and Microsoft.NET2, built by Microsoft Corporation.&lt;br /&gt;Some of the statements we make will offend you, and hopefully more of them will agree with you. So as&lt;br /&gt;you read this paper, please remember our three promises:&lt;br /&gt;1. We promise to compare these choices at a logical, neutral, and unbiased level.&lt;br /&gt;2. We promise to tell the tale about how we really do feel about these technologies.&lt;br /&gt;3. We promise to dispel the Fear, Uncertainty, and Doubt (FUD) that exists in the marketplace today.&lt;br /&gt;Although both J2EE and .NET cover a great deal of technologies and standards, we will focus specifically&lt;br /&gt;on building server-side systems as web services using these architectures (for example, we will not be&lt;br /&gt;mentioning Jini or Office XP). After reading this white paper, you will have a solid understanding of how&lt;br /&gt;these architectures compare, and be empowered to make intelligent decisions in new web services&lt;br /&gt;initiatives.&lt;br /&gt;The first half of this whitepaper is background information about web services, J2EE, and .NET. If you&lt;br /&gt;already understand these technologies, feel free to skip ahead to the 2nd half of the paper, which is the&lt;br /&gt;juicy comparison.&lt;br /&gt;II. Introduction&lt;br /&gt;The next generation of distributed computing has arrived. Over the past few years, XML has enabled&lt;br /&gt;heterogeneous computing environments to share information over the World-Wide Web. It now offers a&lt;br /&gt;simplified means by which to share process as well. From a technical perspective, the advent of web&lt;br /&gt;services is not a revolution in distributed computing. It is instead a natural evolution of XML application&lt;br /&gt;from structured representation of information to structured representation of inter-application messaging.&lt;br /&gt;The revolution is in the opportunities this evolution affords.&lt;br /&gt;Businesses have been offering products and services on the World-Wide Web for the past few years.&lt;br /&gt;Have they not then been offering web services? In what way are web services actually new? In an article&lt;br /&gt;entitled The Web Services (R)evolution - Applying Web Services to Applications” Graham Glass, the&lt;br /&gt;CEO and Chief Architect of The Mind Electric defines a web service as:&lt;br /&gt;“A collection of functions that are packaged as a single entity and published to the network for use&lt;br /&gt;by other programs. Web services are building blocks for creating open distributed systems, and&lt;br /&gt;allow companies and individuals to quickly and cheaply make their digital assets available&lt;br /&gt;worldwide.”3&lt;br /&gt;Prior to the advent of web services, enterprise application integration was very difficult due to differences&lt;br /&gt;in programming languages and middleware used within organizations. The chances of any two business&lt;br /&gt;systems using the same programming language and the same middleware was slim to none, since there&lt;br /&gt;has not been a de-facto winner. These 'component wars' spelled headaches for integration efforts, and&lt;br /&gt;resulted in a plethora of custom adapters, one-off integrations, and integration 'middlemen'. In short,&lt;br /&gt;interoperability was cumbersome and painful.&lt;br /&gt;With web services, any application can be integrated so long as it is Internet-enabled. The foundation of&lt;br /&gt;web services is XML messaging over standard web protocols such as HTTP. This is a very lightweight&lt;br /&gt;communication mechanism that any programming language, middleware, or platform can participate in,&lt;br /&gt;easing interoperability greatly. These industry standards enjoy widespread industry acceptance, making&lt;br /&gt;them very low-risk technologies for corporations to adopt. With web services, you can integrate two&lt;br /&gt;businesses, departments, or applications quickly and cost-effectively.&lt;br /&gt;The vision for web services predicts that services will register themselves in public or private business&lt;br /&gt;registries. Those web services will fully describe themselves, including interface structure, business&lt;br /&gt;requirements, business processes, and terms and conditions for use. Consumers of those services read&lt;br /&gt;these descriptions to understand the abilities of those web services. Web services will be smart, in that&lt;br /&gt;once a service has been invoked, it will spontaneously invoke other services to accomplish the task and to&lt;br /&gt;give users a completely personal, customized experience. In order for these services to dynamically&lt;br /&gt;interact, they need to share information about the user's identity, or context information. That context&lt;br /&gt;information should only need to be typed in once, and then made available at the user's discretion to&lt;br /&gt;selected web services.&lt;br /&gt;Building web services with technologies that have gained the most acceptance&lt;br /&gt;Now that we've seen the general philosophy behind web services, let's look at how to build and use a web&lt;br /&gt;service. Web services are in reality simply XML-based interfaces to business, application, and system&lt;br /&gt;services, and are really old technologies wearing a new hat. The following technologies that have gained&lt;br /&gt;the most industry acceptance, and is one possible way to perform web services:&lt;br /&gt;• A provider creates, assembles, and deploys a web service using the programming language,&lt;br /&gt;middleware, and platform of the provider’s own choice.&lt;br /&gt;• The provider defines the web service in WSDL (the Web Services Description Language4).&lt;br /&gt;A WSDL document describes a web service to others5.&lt;br /&gt;• The provider registers the service in UDDI (Universal Description, Discovery, and&lt;br /&gt;Integration6) registries. UDDI enables developers to publish web services and that enables&lt;br /&gt;their software to search for services offered by others.&lt;br /&gt;• A prospective user finds the service by searching a UDDI registry.&lt;br /&gt;• The user’s application binds to the web service and invokes the service’s operations using&lt;br /&gt;SOAP (the Simple Object Access Protocol7). SOAP offers an XML format for representing&lt;br /&gt;4 The Web Services Description Language (WSDL) 1.1 specification is available at http://www.w3.org/TR/wsdl&lt;br /&gt;5 Visit http://www.xmethods.com/ for a listing of some interesting web services, and links to their accompanying WSDL&lt;br /&gt;documents.&lt;br /&gt;6 More information regarding the UDDI initiative is available at http://www.uddi.org/&lt;br /&gt;7 The SOAP specification is available at http://www.w3.org/TR/SOAP/&lt;br /&gt;J2EE vs. Microsoft .NET Page 5&lt;br /&gt;© 2001 The Middleware Company · http://www.middleware-company.com/&lt;br /&gt;parameters and return values over HTTP. It is the communications protocol that all web&lt;br /&gt;services use.&lt;br /&gt;Note that the above technologies are only sufficient for simple web services. Extended business&lt;br /&gt;exchanges require an agreed-upon structure for business transactions, multi-request transactions, schemas,&lt;br /&gt;and document flow. These application requirements often stretch the limits of a purely SOAP based&lt;br /&gt;implementation. This is the motivation for ebXML, which is a suite of XML specifications and related&lt;br /&gt;processes and behavior designed to provide an e-infrastructure for B2B collaboration and integration.&lt;br /&gt;Note that the above approach is but one way of making web services work. There are other choices as&lt;br /&gt;well, but we feel that these technologies are the most important and will achieve the widest industry&lt;br /&gt;adoption. Because of this, in reality, we really haven’t reached complete consensus on building web&lt;br /&gt;services, and there are still a lot of issues to be resolved. For example, there is vendor disagreement on&lt;br /&gt;SOAP extensions, ebXML, and service flow descriptions. The good news is that:&lt;br /&gt;• For once, all major players, including Sun and Microsoft, generally agree that SOAP, WSDL, and&lt;br /&gt;UDDI are good things and that they (or their standard derivatives) will provide a foundation for the&lt;br /&gt;future.&lt;br /&gt;• All the vendors are working together to establish web services standards, and a foundation is&lt;br /&gt;emerging.&lt;br /&gt;The J2EE and Microsoft.NET approach to Web Services&lt;br /&gt;If you want to build a usable web services system, there is more than meets the eye. Your web services&lt;br /&gt;must be reliable, highly available, fault-tolerant, scalable, and must perform at acceptable levels. These&lt;br /&gt;needs are no different than the needs of any other enterprise application.&lt;br /&gt;J2EE and .NET are evolutions of existing application server technology used to build such enterprise&lt;br /&gt;applications. The earlier versions of these technologies have historically not been used to build web&lt;br /&gt;services. Now that web services has arrived, both camps are repositioning their solutions as platforms&lt;br /&gt;that you can also use to build web services.&lt;br /&gt;The shared vision between both J2EE and .NET is that there is an incredible amount of 'plumbing' that&lt;br /&gt;goes into building web services, such as XML interoperability, load-balancing, and transactions. Rather&lt;br /&gt;than writing all that plumbing yourself, you can write an application that runs within a container that&lt;br /&gt;provides those tricky services for you.&lt;br /&gt;This paradigm allows you to specialize in your proficiencies. If you were a financial services firm, for&lt;br /&gt;example, you'd have proficiency in financial services, but likely very little proficiency in web services&lt;br /&gt;plumbing compared to a specialist such as Sun, IBM, BEA, Oracle, or Microsoft. By purchasing the&lt;br /&gt;container off-the-shelf, you won't need to be an expert at plumbing to build a financial services-based web&lt;br /&gt;service. Rather you just need to understand their business problem at hand, and leave the web service&lt;br /&gt;plumbing to the container.&lt;br /&gt;With that said, let's take a look at the details of each vision.&lt;br /&gt;III. J2EE&lt;br /&gt;The Java 2 Platform, Enterprise Edition (J2EE) was designed to simplify complex problems with the&lt;br /&gt;J2EE vs. Microsoft .NET Page 6&lt;br /&gt;© 2001 The Middleware Company · http://www.middleware-company.com/&lt;br /&gt;development, deployment, and management of multi-tier enterprise solutions. J2EE is an industry&lt;br /&gt;standard, and is the result of a large industry initiative led by Sun Microsystems.&lt;br /&gt;It's important for you to realize that J2EE is a standard, not a product. You cannot "download" J2EE.&lt;br /&gt;Rather you download a set of Adobe Acrobat PDF files which describe agreements between applications&lt;br /&gt;and the containers in which they run. So long as both sides obey the J2EE contracts, applications can be&lt;br /&gt;deployed in a variety of container environments.&lt;br /&gt;The J2EE camp's goal is to give customers choice of vendor products and tools, and to encourage best-ofbreed&lt;br /&gt;products to emerge through competition. The only way this would ever happen is if the industry as&lt;br /&gt;a whole were bought-into J2EE. To secure buy-in, Sun collaborated with other vendors of eBusiness&lt;br /&gt;platforms, such as BEA, IBM, and Oracle, in defining J2EE. Sun then initiated the Java Community&lt;br /&gt;Process (JCP) to solicit new ideas to improve J2EE over time. The reason Sun did this is because they&lt;br /&gt;had to do so to achieve success--the best way to secure buy-in to an idea is to involve others in defining&lt;br /&gt;that idea.&lt;br /&gt;Java: The foundation for J2EE&lt;br /&gt;The J2EE architecture is based on the Java programming language. What's exciting about Java is that it&lt;br /&gt;enables organizations to write their code once, and deploy that code onto any platform. The process is as&lt;br /&gt;follows:&lt;br /&gt;1. Developers write source code in Java.&lt;br /&gt;2. The Java code is compiled into bytecode, which is a cross-platform intermediary, halfway&lt;br /&gt;between source code and machine language.&lt;br /&gt;3. When the code is ready to run, the Java Runtime Environment (JRE) interprets this bytecode and&lt;br /&gt;executes it at run-time.&lt;br /&gt;J2EE is an application of Java. Your J2EE components are transformed into bytecode and executed by a&lt;br /&gt;JRE at runtime. Even the containers are typically written in Java.&lt;br /&gt;J2EE and Web Services&lt;br /&gt;J2EE has historically been an architecture for building server-side deployments in the Java programming&lt;br /&gt;language. It can be used to build traditional web sites, software components, or packaged applications.&lt;br /&gt;J2EE has recently been extended to include support for building XML-based web services as well. These&lt;br /&gt;web services can interoperate with other web services that may or may not have been written to the J2EE&lt;br /&gt;standard.&lt;br /&gt;J2EE web services development model is shown in Figure 1.&lt;br /&gt;J2EE vs. Microsoft .NET Page 7&lt;br /&gt;© 2001 The Middleware Company · http://www.middleware-company.com/&lt;br /&gt;Figure 1 Developing web services with J2EE&lt;br /&gt;Briefly, Figure 1 is explained as follows:&lt;br /&gt;J2EE application is hosted within a container, which provides qualities of service necessary for&lt;br /&gt;enterprise applications, such as transactions, security, and persistence services.&lt;br /&gt;The business layer performs business processing and data logic. In large-scale J2EE applications,&lt;br /&gt;business logic is built using Enterprise JavaBeans (EJB) components. This layer performs business&lt;br /&gt;processing and data logic. It connects to databases using Java Database Connectivity (JDBC) or SQL/J,&lt;br /&gt;or existing systems using the Java Connector Architecture (JCA). It can also connect to business&lt;br /&gt;partners using web services technologies (SOAP, UDDI, WSDL, ebXML) through the Java APIs for&lt;br /&gt;XML (the JAX APIs).&lt;br /&gt;Business partners can connect with J2EE applications through web services technologies (SOAP,&lt;br /&gt;UDDI, WSDL, ebXML). A servlet, which is a request/response oriented Java object, can accept web&lt;br /&gt;service requests from business partners. The servlet uses the JAX APIs to perform web services&lt;br /&gt;J2EE vs. Microsoft .NET Page 8&lt;br /&gt;© 2001 The Middleware Company · http://www.middleware-company.com/&lt;br /&gt;operations. Shared context services will be standardized in the future through shared context standards&lt;br /&gt;that will be included with J2EE.&lt;br /&gt;Traditional 'thick' clients such as applets or applications connect directly to the EJB layer through the&lt;br /&gt;Internet Inter-ORB Protocol (IIOP) rather than web services, since generally the thick clients are&lt;br /&gt;written by the same organization that authored J2EE application, and therefore there is no need for&lt;br /&gt;XML-based web service collaboration.&lt;br /&gt;Web browsers and wireless devices connect to JavaServer Pages (JSPs) which render user interfaces&lt;br /&gt;in HTML, XHTML, or WML.&lt;br /&gt;Reference Implementation&lt;br /&gt;In addition to the specifications, Sun also ships a reference implementation of J2EE. Developers write&lt;br /&gt;applications to this to ensure portability of their components. This implementation should not be used for&lt;br /&gt;production, but rather just for testing purposes.&lt;br /&gt;Additional Services&lt;br /&gt;All vendors that offer J2EE platforms provide additional features not found in the standard. Some of&lt;br /&gt;them impact portability, such as extended EAI functionality, E-Commerce components, or advanced B2B&lt;br /&gt;integration. Other features, such as load-balancing, transparent fail-over, and caching, do not affect&lt;br /&gt;portability of application code, because they are implicit services which are provided behind-the-scenes&lt;br /&gt;by the container.&lt;br /&gt;IV. Microsoft’s .NET Platform&lt;br /&gt;Microsoft.NET8 is product suite that enables organizations to build smart, enterprise-class web services.&lt;br /&gt;Note the important difference: .NET is a product strategy, whereas J2EE is a standard to which products&lt;br /&gt;are written.&lt;br /&gt;Microsoft.NET is largely a rewrite of Windows DNA, which was Microsoft's previous platform for&lt;br /&gt;developing enterprise applications. Windows DNA includes many proven technologies that are in&lt;br /&gt;production today, including Microsoft Transaction Server (MTS) and COM+, Microsoft Message Queue&lt;br /&gt;(MSMQ), and the Microsoft SQL Server database. The new .NET Framework replaces these&lt;br /&gt;technologies, and includes a web services layer as well as improved language support.&lt;br /&gt;The developer model for building web services with Microsoft.NET is shown in Figure 4.&lt;br /&gt;8 For further information regarding Microsoft .NET, please see the .NET homepage at http://www.microsoft.com/net/&lt;br /&gt;J2EE vs. Microsoft .NET Page 9&lt;br /&gt;© 2001 The Middleware Company · http://www.middleware-company.com/&lt;br /&gt;Figure 4 Developing web services with Microsoft.NET&lt;br /&gt;Briefly, Figure 4 is explained as follows:&lt;br /&gt;The .NET application is hosted within a container, which provides qualities of service necessary for&lt;br /&gt;enterprise applications, such as transactions, security, and messaging services.&lt;br /&gt;The business layer of the .NET application is built using .NET managed components. This layer&lt;br /&gt;performs business processing and data logic. It connects to databases using Active Data Objects&lt;br /&gt;(ADO.NET) and existing systems using services provided by Microsoft Host Integration Server 2000,&lt;br /&gt;such as the COM Transaction Integrator (COM TI). It can also connect to business partners using web&lt;br /&gt;services technologies (SOAP, UDDI, WSDL).&lt;br /&gt;Business partners can connect with the .NET application through web services technologies (SOAP,&lt;br /&gt;UDDI, WSDL, BizTalk).&lt;br /&gt;J2EE vs. Microsoft .NET Page 10&lt;br /&gt;© 2001 The Middleware Company · http://www.middleware-company.com/&lt;br /&gt;Traditional 'thick' clients, web browsers, wireless devices connect to Active Server Pages&lt;br /&gt;(ASP.NET) which render user interfaces in HTML, XHTML, or WML. Heavyweight user interfaces&lt;br /&gt;are built using Windows Forms.&lt;br /&gt;The .NET Framework&lt;br /&gt;Microsoft.NET offers language-independence and language-interoperability. This is one of the most&lt;br /&gt;intriguing and fundamental aspects of the .NET platform. A single .NET component can be written, for&lt;br /&gt;example, partially in VB.NET, the .NET version of Visual Basic, and C#, Microsoft’s new objectoriented&lt;br /&gt;programming language.&lt;br /&gt;How does this work? First, source code is translated into Microsoft Intermediate Language, sometimes&lt;br /&gt;abbreviated MSIL, sometimes IL. This IL code is language-neutral, and is analogous to Java bytecode.&lt;br /&gt;The IL code then needs to be interpreted and translated into a native executable. The .NET Framework&lt;br /&gt;includes the Common Language Runtime (CLR), analogous to the Java Runtime Environment (JRE),&lt;br /&gt;which achieves this goal. The CLR is Microsoft’s intermediary between .NET developers’ source code&lt;br /&gt;and the underlying hardware, and all .NET code ultimately runs within the CLR.&lt;br /&gt;This CLR provides many exciting features not available in earlier versions of Windows DNA, such as&lt;br /&gt;automatic garbage collection, exception handling, cross-language inheritance, debugging, and “side-byside”&lt;br /&gt;execution of different versions of the same .NET component.&lt;br /&gt;.NET Servers&lt;br /&gt;The .NET platform includes the following .NET Enterprise Servers. Many of these are repackagings of&lt;br /&gt;existing products under a common marketing term:&lt;br /&gt;SQL Server 2000 is Microsoft's relational database.&lt;br /&gt;Exchange 2000 Server is a messaging and collaboration platform useful in developing and running&lt;br /&gt;core business services and is now tightly integrated with Windows 2000.&lt;br /&gt;Commerce Server 2000 offers you quicker and less complicated development and deployment of&lt;br /&gt;customizable online e-commerce solutions.&lt;br /&gt;Application Center Server 2000. Application Center Server 2000 lets you manage clustered servers.&lt;br /&gt;Host Integration Server 2000. Host Integration Server 2000 gives you access to selected legacy&lt;br /&gt;systems running on other platforms (primarily IBM-based).&lt;br /&gt;Internet Security and Acceleration (ISA) Server 2000 offers firewall and Web caching capabilities.&lt;br /&gt;BizTalk Server 2000 is Microsoft’s XML-based collaborative e-business solution for integrating&lt;br /&gt;applications, trading partners and business processes via the Internet.&lt;br /&gt;Other .NET Products and Services&lt;br /&gt;J2EE vs. Microsoft .NET Page 11&lt;br /&gt;© 2001 The Middleware Company · http://www.middleware-company.com/&lt;br /&gt;A new version of Visual Studio, another of Microsoft’s flagship products, has been released as Visual&lt;br /&gt;Studio.NET, an integrated development environment for the .NET platform. All languages supported by&lt;br /&gt;Visual Studio prior to the release of .NET (except for Java) are still supported by Visual Studio.&lt;br /&gt;Visual Studio.NET also provides support for Microsoft’s new C# language which is semantically&lt;br /&gt;equivalent to Java, with just a few minor syntactical differences.&lt;br /&gt;Hailstorm9 is Microsoft’s portfolio of building block web services. Microsoft and possibly Microsoft&lt;br /&gt;partners will host the Hailstorm web services. Some Hailstorm web services will be available on a&lt;br /&gt;subscription basis, and others will be free. For example, Microsoft’s Passport service is now freely&lt;br /&gt;available as a web service-oriented universal identification mechanism.&lt;br /&gt;Web services such as Microsoft’s Passport offer a shared context in that many other web services can&lt;br /&gt;depend upon Passport for identity and security credentials. User’s need not have their contextual&lt;br /&gt;information spread across and possibly duplicated across multiple web sites. “Islands” of information can&lt;br /&gt;now be located in a single repository and then shared by user-centric web services regardless of the&lt;br /&gt;invoking client device.&lt;br /&gt;Privacy of information is focal point in Hailstorm web servicing. In fact, users of Hailstorm web services&lt;br /&gt;are empowered to manage the availability of their personal information through “affirmative consent”.&lt;br /&gt;Understanding J2EE and .NET by analogy&lt;br /&gt;To help you understand both models, we offer analogies between J2EE and .NET technologies in Table 1.&lt;br /&gt;This table only showcases the similarities--we will get to the differences in a few moments.&lt;br /&gt;9 Information regarding Hailstorm is available at http://www.microsoft.com/net/hailstorm.asp&lt;br /&gt;J2EE vs. Microsoft .NET Page 12&lt;br /&gt;© 2001 The Middleware Company · http://www.middleware-company.com/&lt;br /&gt;Feature J2EE .NET&lt;br /&gt;Type of technology Standard Product&lt;br /&gt;Middleware Vendors 30+ Microsoft&lt;br /&gt;Interpreter JRE CLR&lt;br /&gt;Dynamic Web Pages JSP ASP.NET&lt;br /&gt;Middle-Tier&lt;br /&gt;Components EJB .NET Managed Components&lt;br /&gt;Database access JDBC, SQL/J ADO.NET&lt;br /&gt;SOAP, WSDL, UDDI Yes Yes&lt;br /&gt;Implicit middleware&lt;br /&gt;(load-balancing, etc) Yes Yes&lt;br /&gt;Table 1 Analogies between J2EE and .NET&lt;br /&gt;V. Comparative Analysis&lt;br /&gt;Time-to-Market Features&lt;br /&gt;When developing a commerce solution in today's marketplace, a few months of time is an&lt;br /&gt;eternity. Missing a small window of opportunity is the difference between a corporation that is first to&lt;br /&gt;market, and a corporation that must play catch-up for years.&lt;br /&gt;One way to speed time to market is to choose a Web services platform that allows rapid&lt;br /&gt;application development. This enables developers to write and maintain code quickly, lowering&lt;br /&gt;development time.&lt;br /&gt;Both Sun J2EE and Microsoft .NET provide runtime mechanisms that insulate software&lt;br /&gt;developers from particular dependencies. In addition to a web service-oriented XML layer of indirection&lt;br /&gt;between platforms, languages, and enterprise architectures, Sun J2EE and .NET offer language-level&lt;br /&gt;intermediation via the Java Runtime Environment (JRE) and the Common Language Runtime (CLR)&lt;br /&gt;respectively.&lt;br /&gt;J2EE offers several features that accelerate time-to-market which are not found in .NET. For&lt;br /&gt;example, state management services enable developers to write less code and not worry about managing&lt;br /&gt;state, resulting in a higher degree of rapid application development. State management services enable&lt;br /&gt;you to build components that hold state. Persistence services (entity beans) enable developers to write&lt;br /&gt;applications without coding data access logic, resulting in leaner, database-independent applications that&lt;br /&gt;are easier to build and maintain. Programmatic transactions allow you to have greater transactional&lt;br /&gt;control. And custom tags are extremely powerful, and empower developers and web designers to easily&lt;br /&gt;collaborate.&lt;br /&gt;In addition to these features that enable rapid application development, there are several features&lt;br /&gt;that specific vendors offer which aid time-to-market, such as business process management, E-Commerce&lt;br /&gt;components, XML-based legacy integration, and enhanced B2B collaboration. A warning: Customers&lt;br /&gt;who elect to leverage these features will sacrifice portability. This is a consequence of J2EE architecture&lt;br /&gt;J2EE vs. Microsoft .NET Page 13&lt;br /&gt;© 2001 The Middleware Company · http://www.middleware-company.com/&lt;br /&gt;not being all things to all people. However, it should be noted that even after taking advantage of such&lt;br /&gt;proprietary features, there would still be a great deal more portability in the end solution than the .NET&lt;br /&gt;alternative.&lt;br /&gt;Microsoft.NET offers a variety of time-to-market features not found in J2EE as well. Most&lt;br /&gt;notably, ASP.NET is independent of client device, and allows for user interfaces to be rendered to&lt;br /&gt;alternative user interfaces without rewriting code. Microsoft also offers Queued Components which are&lt;br /&gt;superior to MessageDriven Beans. It should be noted here that Microsoft has tried to simplify server-side&lt;br /&gt;programming greatly by removing support for features found in traditional enterprise applications, such as&lt;br /&gt;stateful servers and simple transactions. If developers need to go outside this box, their code must be&lt;br /&gt;made to be non-managed and reside outside the .NET Framework rather than take advantage of it.&lt;br /&gt;Microsoft also provides business process management and E-Commerce capabilities, which are available&lt;br /&gt;in some J2EE implementations but not all.&lt;br /&gt;In conclusion, we feel the ability to achieve rapid application development offered by both J2EE&lt;br /&gt;and .NET is definitely not equal. It is, however, comparable. The feature differences are minor and it is&lt;br /&gt;very difficult to make a compelling argument either way. We do not recommend organizations make&lt;br /&gt;their platform decision based upon them. There are larger business issues at hand that dictate the platform&lt;br /&gt;choice.&lt;br /&gt;Single-Vendor Solution&lt;br /&gt;When building web services, in general you should always prefer to have a single-vendor solution. A&lt;br /&gt;single vendor solution is usually more reliable, interoperable, and less error-prone than a two-vendor&lt;br /&gt;bridged solution.&lt;br /&gt;One of J2EE's strengths is that it has spawned a wide variety of tools, products, and applications in the&lt;br /&gt;marketplace, which provide more functionality in total than any one vendor could ever provide.&lt;br /&gt;However, this strength is also a weakness. J2EE tools are often-times not interoperable, due to&lt;br /&gt;imperfections in portability. This limits your ability to mix and match tools without substantial low-level&lt;br /&gt;hacking. With lower-end J2EE implementations, you need to mix and match to get a complete solution,&lt;br /&gt;and this is the tradeoff when choosing a less complete package. Larger vendors, such as IBM, Oracle,&lt;br /&gt;BEA, and iPlanet, each offer a complete web services solution.&lt;br /&gt;.NET provides a fairly complete solution from a single vendor--Microsoft. This solution may lack some&lt;br /&gt;of the higher end features that J2EE solutions offer, but in general, the complete web services vision that&lt;br /&gt;Microsoft will be providing is equal in scope to that of a larger J2EE vendor.&lt;br /&gt;Another way to look at a single-vendor solution is from a legacy perspective. Many legacy systems are&lt;br /&gt;written by J2EE vendors, such as IBM or BEA. J2EE offers a single-vendor solution from the legacy&lt;br /&gt;integration perspective, since you can re-use existing relationships with those vendors. A J2EE solution&lt;br /&gt;would therefore be a single-vendor solution, since you can stay with that legacy system vendor rather than&lt;br /&gt;inject a new vendor such as Microsoft. For users with existing Microsoft-based systems, the reverse&lt;br /&gt;argument applies.&lt;br /&gt;Support for Existing Systems&lt;br /&gt;Most large corporations have existing code written in a variety of languages, and have a number of legacy&lt;br /&gt;systems, such as CICS/COBOL, C++, SAP R/3, and Siebel. It is vital that corporations be given an&lt;br /&gt;efficient, rapid path to preserve and reuse these investments. After all, it is likely that businesses will&lt;br /&gt;have neither the funds nor the time to reinvent all existing systems. This legacy integration often is one of&lt;br /&gt;the most challenging (if not the most challenging) tasks to overcome when building a web service.&lt;br /&gt;J2EE vs. Microsoft .NET Page 14&lt;br /&gt;© 2001 The Middleware Company · http://www.middleware-company.com/&lt;br /&gt;There are several ways to achieve legacy integration using J2EE, including&lt;br /&gt;• The Java Message Service (JMS) to integrate with existing messaging systems&lt;br /&gt;• Web services to integrate with any system&lt;br /&gt;• CORBA for interfacing with code written in other languages that may exist on remote machines.&lt;br /&gt;• JNI for loading native libraries and calling them locally.&lt;br /&gt;But by far, the most important part of the J2EE vision for integration is the J2EE Connector Architecture&lt;br /&gt;(JCA). The JCA is a specification for plugging in resource adapters that understand how to communicate&lt;br /&gt;with existing systems, such as SAP R/3, CICS/COBOL, Siebel, and so-on. If such adapters are not&lt;br /&gt;available, you can write your own adapter. These adapters are reusable in any container that supports the&lt;br /&gt;JCA. The major vendors of existing systems are bought into the JCA.&lt;br /&gt;.NET also offers legacy integration through the Host Integration Server 2000. COM Transaction&lt;br /&gt;Integrator (COM TI) can be used for collaborating transactions across mainframe systems. Microsoft&lt;br /&gt;Message Queue (MSMQ) can integrate with legacy systems built using IBM MQSeries. Finally, BizTalk&lt;br /&gt;Server 2000 can be used to integrate with systems based on B2B protocols, such as Electronic Data&lt;br /&gt;Interchange (EDI) (the reader should note, however, that BizTalk does not serve as an access point to a&lt;br /&gt;proprietary network on which EDI takes place).&lt;br /&gt;In conclusion, we believe that the legacy integration features offered by J2EE are superior to those&lt;br /&gt;offered by .NET. The JCA market is producing a marketplace of adapters that will greatly ease enterprise&lt;br /&gt;application integration. Integration with packaged applications and legacy systems will become much&lt;br /&gt;easier--imagine integrating with a system such as Siebel, Oracle, or SAP without ever leaving the Java&lt;br /&gt;programming environment. There is no analog to this in the Microsoft domain; rather, there is limited&lt;br /&gt;connectivity to select systems provided off-the-shelf through the Host Integration Server.&lt;br /&gt;Market Perception&lt;br /&gt;When comparing two platforms, your first instinct is probably to compare the technologies. The&lt;br /&gt;unfortunate reality is that good technology rarely succeeds in the marketplace because it's good&lt;br /&gt;technology. Usually it's the technology with the best marketing that wins.&lt;br /&gt;J2EE is an extremely well-marketed platform because it is being marketed by an entire industry of 50+&lt;br /&gt;assorted vendors. This network of interdependent businesses form a virtual marketing machine, and the&lt;br /&gt;result is a fantastic market perception for J2EE.&lt;br /&gt;.NET's marketing strength stems from the fact that Microsoft knows how to market a platform. They&lt;br /&gt;have put their "A" team on marketing .NET, as is apparent in the industry hype surrounding the platform.&lt;br /&gt;This is a powerful force not to be reckoned with. Microsoft's advantage is also that it announced it's web&lt;br /&gt;services strategy before the J2EE players, which gave it market perception. So in the marketing front, we&lt;br /&gt;give the nod to Microsoft for doing the best job in hyping their platform--so far.&lt;br /&gt;Maturity of Platform&lt;br /&gt;Organizations that adopt a web services platform must consider the maturity of the underlying platform.&lt;br /&gt;A less mature, earlier-generation platform is more prone to errors and problems.&lt;br /&gt;J2EE vs. Microsoft .NET Page 15&lt;br /&gt;© 2001 The Middleware Company · http://www.middleware-company.com/&lt;br /&gt;J2EE is a veneer atop existing J2EE solutions. J2EE deployments are alive and healthy, running a variety&lt;br /&gt;of mission-critical business problems today. However, when looking past the surface, it should be noted&lt;br /&gt;that there are some identifiable areas of risk where J2EE lacks maturity:&lt;br /&gt;• The automatic persistence provided EJB is still immature.&lt;br /&gt;• The Java Connector Architecture (JCA) is new.&lt;br /&gt;• All web service support is new.&lt;br /&gt;For Microsoft.NET, the story is a bit different. Some of .NET is based on Windows DNA, which also&lt;br /&gt;runs a variety of mission-critical web sites today and enjoys success. However:&lt;br /&gt;• With the new CLR, a good portion of the underlying .NET platform has been substantially&lt;br /&gt;rewritten. Indeed, the platform itself is currently only available in a beta version.&lt;br /&gt;• C# is new.&lt;br /&gt;• All web service support is new.&lt;br /&gt;In conclusion, we must find that J2EE is the more mature platform. It is true that certain new features in&lt;br /&gt;J2EE are new and risky. However, the very underlying fabric of .NET, is an overhauled rewrite, and the&lt;br /&gt;entire C# language is brand new. This represents enormous risk compared to the new J2EE features.&lt;br /&gt;This best thing about .NET is that it removes the dependency on the COM Registry -- .NET will do away&lt;br /&gt;with DLL Hell. But the worst thing about .NET is that it tosses out the existing infrastructure. We&lt;br /&gt;recommend that the risk averse take a 'wait and see' approach with first-generation software such as this.&lt;br /&gt;Language Support&lt;br /&gt;J2EE promotes Java-centric computing, and as such all components deployed into a J2EE deployment&lt;br /&gt;(such as EJB components and servlets) must be written in the Java language. To use J2EE, you must&lt;br /&gt;commit to coding at least some of your eBusiness systems using the Java programming language. Other&lt;br /&gt;languages can be bridged into a J2EE solution through web services, CORBA, JNI, or the JCA, as&lt;br /&gt;previously mentioned. However, these languages cannot be intermixed with Java code. In theory, JVM&lt;br /&gt;bytecode is language-neutral, however in practice, this bytecode is only used with Java.&lt;br /&gt;By way of comparison, .NET supports development in any language that Microsoft's tools support due to&lt;br /&gt;the new CLR. With the exception of Java, all major languages will be supported. Microsoft has also&lt;br /&gt;recently introduced its new C# language which is equivalent (with the exception of portability) to Java&lt;br /&gt;and is also available as a programming language within the Visual Studio.NET environment. All&lt;br /&gt;languages supported by the CLR are interoperable in that all such languages, once translated to IL, are&lt;br /&gt;now effectively a “common” language. A single .NET component can therefore be written in several&lt;br /&gt;languages.&lt;br /&gt;The multiple language support that Microsoft has introduced with the CLR is an exciting innovation for&lt;br /&gt;businesses. It is clearly a feature advantage that .NET has over J2EE. But is the CLR a business&lt;br /&gt;advantage for you? This is a more interesting discussion. We are a bit concerned that the CLR may&lt;br /&gt;represent a poor design choice for you if more than one language is used. This is for the following&lt;br /&gt;reasons:&lt;br /&gt;Risk. Many existing systems are internally convoluted. Disrupting such existing systems is a&lt;br /&gt;risky proposition, since knowledgeable engineers, original source code, and a general&lt;br /&gt;understanding of the existing system are often-times unavailable. The old adage, "if it ain't broke,&lt;br /&gt;don't fix it" applies here.&lt;br /&gt;J2EE vs. Microsoft .NET Page 16&lt;br /&gt;© 2001 The Middleware Company · http://www.middleware-company.com/&lt;br /&gt;Maintainability. We speculate that a combination of languages running in the CLR may lead to&lt;br /&gt;a mess of combination spaghetti code that is very difficult to maintain. If you have an application&lt;br /&gt;written in multiple languages, then to fully develop, debug, maintain, and understand that&lt;br /&gt;application, you will need experts in different languages. The need to maintain code written in&lt;br /&gt;several languages equates to an increase in developer training expenditures which contributes&lt;br /&gt;further to an increased total cost of ownership.&lt;br /&gt;Knowledge building. With combination language code, your developers are unable to share best&lt;br /&gt;practices. While individual productivity may increase, communication breaks down, and team&lt;br /&gt;productivity decreases.&lt;br /&gt;Skills transfer. While developers using different languages may have very quickly coded a&lt;br /&gt;.NET system using VB.NET and C#, what happens if the new C# developers leave your&lt;br /&gt;organization? You have two choices. Train your VB.NET developers to understand and write&lt;br /&gt;code with C#, or hire other C# developers who know nothing about your code base. The&lt;br /&gt;resulting lack in productivity equates to a reduced time to market and a higher total cost of&lt;br /&gt;ownership.&lt;br /&gt;In most cases, we feel that it's much better design to standardize on a single language, and to treat legacy&lt;br /&gt;systems as legacy systems and integrate with them by calling them through legacy APIs, which can be&lt;br /&gt;achieved using either J2EE or .NET.&lt;br /&gt;We do feel the CLR still adds significant value. The value is that a new eBusiness application can be&lt;br /&gt;written in a single language of choice other than Java. This is useful for organizations that are not ready&lt;br /&gt;to embrace Java. However, again we must provide words of caution.&lt;br /&gt;• It will not be seamless to transition existing developers from their familiar language into&lt;br /&gt;productive .NET developers. Procedural languages such as COBOL and VB are being&lt;br /&gt;rewritten for .NET to be object-oriented. Teaching developers object-oriented programming&lt;br /&gt;is much more of a stepping stone than understanding syntactical rules.&lt;br /&gt;• Languages such as COBOL or VB were never intended to be object-oriented. Legacy code&lt;br /&gt;will not seamlessly transition into .NET. The resulting code is forever bound to .NET and&lt;br /&gt;can never be taken from its .NET home.&lt;br /&gt;• We question the general wisdom in reinvesting in outdated technologies, such as COBOL,&lt;br /&gt;with new eBusiness or web services initiatives.&lt;br /&gt;In summary, there are pros and cons to both approaches to language support. Use the approach that best&lt;br /&gt;suits your business needs, but at least be aware of the consequences of your decision.&lt;br /&gt;Migration from Previous Platform&lt;br /&gt;For organizations who have an existing deployment using either J2EE-based technologies or Windows&lt;br /&gt;DNA-based technologies, an interesting discussion is the ease of migration from the previous platform to&lt;br /&gt;the new platform.&lt;br /&gt;J2EE does not impose many migration problems. As previously mentioned, the Java Connector&lt;br /&gt;Architecture (JCA) as well as the web services support in J2EE is brand new and will require new code,&lt;br /&gt;but those are minor overall.&lt;br /&gt;Although Microsoft.NET is based on MTS and COM+, we are concerned that the migration to .NET will&lt;br /&gt;be taxing compared to J2EE. First off, .NET is based on the “managed code” framework, which steals a&lt;br /&gt;J2EE vs. Microsoft .NET Page 17&lt;br /&gt;© 2001 The Middleware Company · http://www.middleware-company.com/&lt;br /&gt;lot of ideas from COM+ and MTS, but it’s still an entirely new infrastructure based on an entirely new&lt;br /&gt;code base – CLR. Taking advantage of the most valuable aspects of the CLR impose one-time frictions.&lt;br /&gt;For example to accommodate a Common Type System (CTS) which standardizes on data types used&lt;br /&gt;between languages, the original Visual Basic data types have been dismissed. Consequently, code&lt;br /&gt;dependent upon those original Visual Basic data types will break, and there is currently no migration tool.&lt;br /&gt;Another example is the COM+ migration path. In .NET terminology, code that runs within the CLR is&lt;br /&gt;referred to as managed code, while code running outside the CLR is called unmanaged code. If you're a&lt;br /&gt;COM+ developer and want to take advantage of the new CLR, then you have two options for migration:&lt;br /&gt;Rewrite existing code as CLR code. COM+ code needs to be rewritten to accommodate the&lt;br /&gt;CLR’s automatic garbage collection mechanism and its deprecation of pointers. Dependencies&lt;br /&gt;also need to be removed to the COM registry.&lt;br /&gt;Keep your existing code as unmanaged. To collaborate between managed and unmanaged&lt;br /&gt;code, special measures must be taken.&lt;br /&gt;So as you can see, migration is not free. But to Microsoft's credit, we do understand that with the&lt;br /&gt;innovation of the CLR, that this is a necessary step for their customers to evolve into their new platform,&lt;br /&gt;and with such a radical change nothing less could be expected. However, we feel obligated to warn users&lt;br /&gt;that the migration path will not be easy compared to J2EE migration path, as some might have you&lt;br /&gt;believe. Consider these statements from a recent Gartner report:&lt;br /&gt;“‘This is fundamentally a brand new platform,’ said Gartner Analyst Mark Driver, comparing the&lt;br /&gt;migration to .NET as more drastic than the switch from MS-DOS to Windows. ‘This is the tiger&lt;br /&gt;changing its stripes...the migration to .NET will be a difficult one for IT departments because it&lt;br /&gt;represents such a major shift from the current Microsoft platforms. For instance, developers will&lt;br /&gt;have to rewrite as much as 60 percent of the code for some existing Windows applications if they&lt;br /&gt;want them to take advantage of Microsoft's .NET platform, Gartner analysts predicted. That's a&lt;br /&gt;frightening prospect for companies who are currently switching to Windows 2000, or for those&lt;br /&gt;who still run Windows 98 and NT.”&lt;br /&gt;Portability&lt;br /&gt;A key difference between J2EE and .NET is that J2EE is platform-agnostic, running on a variety of&lt;br /&gt;hardware and operating systems, such as Win32, UNIX, and Mainframe systems. This portability is an&lt;br /&gt;absolute reality today because the Java Runtime Environment (JRE), on which J2EE is based, is available&lt;br /&gt;on any platform.&lt;br /&gt;There is a second, more debatable aspect of portability as well. J2EE is a standard, and so it supports a&lt;br /&gt;variety of implementations, such as BEA, IBM, and Sun. The danger in an open standard such as J2EE is&lt;br /&gt;that if vendors are not held strictly to the standard, application portability is sacrificed. CORBA, for&lt;br /&gt;example, did not have any way to enforce that CORBA middleware did indeed comply with the standard,&lt;br /&gt;and thus there were numerous problems with portability. In the early days of J2EE there were the same&lt;br /&gt;problems.&lt;br /&gt;To help with the situation, Sun has built a J2EE compatibility test suite, which ensures that J2EE&lt;br /&gt;platforms comply with the standards. This test suite is critical because it ensures portability of&lt;br /&gt;J2EE vs. Microsoft .NET Page 18&lt;br /&gt;© 2001 The Middleware Company · http://www.middleware-company.com/&lt;br /&gt;applications. At the time of this writing, there were 18 application server vendors certified as J2EEcompatible.&lt;br /&gt;There are a myriad of other vendors as well that are not certified10.&lt;br /&gt;Our opinion is that in reality, J2EE portability will never be completely free. It is ridiculous to think that&lt;br /&gt;complex enterprise applications can be deployed from one environment to the next without any effort,&lt;br /&gt;because in practice, organizations must occasionally take advantage of vendor-specific features to achieve&lt;br /&gt;real-world systems. However--and this is important--portability is exponentially cheaper and easier with&lt;br /&gt;J2EE and the compatibility test suite than with proprietary solutions, and that is a fact we stand behind&lt;br /&gt;through years of consulting with customers using a variety of J2EE solutions. Over time, as the J2EE&lt;br /&gt;compatibility test suite becomes more and more robust, portability will become even easier.&lt;br /&gt;By way of comparison, .NET only runs on Windows, its supported hardware, and the .NET environment.&lt;br /&gt;There is no portability at all. It should be noted that there have been hints that additional implementations&lt;br /&gt;of .NET will be available for other platforms. However, a question remains – how much of the complete&lt;br /&gt;.NET framework will be (or even can be) supplied on other platforms? History has taught us to be&lt;br /&gt;skeptical of Microsoft's claims of multiple platform support. Microsoft ported COM to other platforms,&lt;br /&gt;but never ported the additional services associated with COM that were necessary to make COM useful.&lt;br /&gt;We find it hard to believe that .NET portability will ever become a reality given Microsoft's historically&lt;br /&gt;monopolistic stance.&lt;br /&gt;So how important is portability to you? This is the key question businesses must ask themselves. When&lt;br /&gt;evaluating the importance of portability, there are three scenarios worth considering.&lt;br /&gt;• If your firm is selling software to other businesses, or if you are a consulting company, and your&lt;br /&gt;customers are on a variety of platforms, we recommend specializing in J2EE architecture. Unless&lt;br /&gt;you can guarantee that every one of your customers will accept a Windows/.NET solution, you&lt;br /&gt;are restricting your salespeople from major accounts that may have solutions deployed on UNIX&lt;br /&gt;or mainframes. This is rarely acceptable at most ISVs or consulting firms.&lt;br /&gt;• If, on the other hand, your customers are on the Windows platform, then either J2EE or .NET will&lt;br /&gt;suffice, since they both run on Windows. You should then ask your sales force and consultants&lt;br /&gt;what middleware your customers are using on that platform, and make your architecture decision&lt;br /&gt;from there. It's important to really be proactive and get this information--the more data you have,&lt;br /&gt;the better.&lt;br /&gt;• If you host your own solutions, then you control the deployment environment. That enables you&lt;br /&gt;to pick J2EE as well as .NET. If you are willing to standardize on the Win32 platform, and live&lt;br /&gt;with the advantages and disadvantages of that platform exclusively, then platform neutrality is&lt;br /&gt;irrelevant, and you should consider other factors when deciding on J2EE or .NET. But we offer a&lt;br /&gt;word of caution: you can never predict the future. Business goals might change, new vendors&lt;br /&gt;might be introduced into the picture, and mergers and acquisitions might happen. All of these&lt;br /&gt;may result in a heterogeneous deployment environment. Your applications will not be portable to&lt;br /&gt;those platforms in this scenario.&lt;br /&gt;We offer a final opinion to end the debate about just how important is portability. Although both J2EE&lt;br /&gt;and .NET will each have their audiences, think about what platform you would choose if you were an&lt;br /&gt;ISVs or a consulting company. Most likely you'd have customers on a variety of platforms, and therefore,&lt;br /&gt;you'd probably adopt the architecture behind J2EE because you don't want to lock yourself out of deals.&lt;br /&gt;10 Check out http://www.flashline.com/for a matrix of J2EE offerings, and http://www.theserverside.com/ for&lt;br /&gt;reviews of these vendor products.&lt;br /&gt;J2EE vs. Microsoft .NET Page 19&lt;br /&gt;© 2001 The Middleware Company · http://www.middleware-company.com/&lt;br /&gt;Indeed, we are noticing today that an incredible number of consulting firms and ISVs are standing behind&lt;br /&gt;J2EE, such as Vignette, Broadvision, Chordiant, Kana, NaviSys, and Versata.&lt;br /&gt;What does this mean? It's not about the platform, it's about the applications. As time goes on, customers&lt;br /&gt;will likely choose the solution that not only provides the web services infrastructure, but the most&lt;br /&gt;consulting support and ISV applications as well.&lt;br /&gt;This makes the future of J2EE very bright in our minds, and is one of the critical differentiators between&lt;br /&gt;J2EE and .NET.&lt;br /&gt;Web Services Support&lt;br /&gt;The future of eBusiness collaboration is undoubtedly web services. For organizations that are pursuing a&lt;br /&gt;web services strategy, or are preparing for the future of web services, their underlying eBusiness&lt;br /&gt;architecture must have strong web services support.&lt;br /&gt;Today, J2EE supports web services through the Java API for XML Parsing (JAXP). This API allows&lt;br /&gt;developers to perform any web service operation today through manually parsing XML documents. For&lt;br /&gt;example, you can use JAXP to perform operations with SOAP, UDDI, WSDL, and ebXML.&lt;br /&gt;Additional APIs are also under development. These are convenience APIs to help developers perform&lt;br /&gt;web services operations more rapidly, such as connecting to business registries, transforming XML-to-&lt;br /&gt;Java and Java-to-XML, parsing WSDL documents, and performing messaging such as with ebXML.&lt;br /&gt;A variety of J2EE-compatible 3rd party tools are available today that enable rapid development of web&lt;br /&gt;services. There are at least sixteen SOAP implementations that support Java. Almost all of these&lt;br /&gt;implementations are built on J2EE (servlets or JSP). There are only five UDDI API implementations&lt;br /&gt;available, and four of them support Java (IBM UDDI4J, Bowstreet jUDDI, The Mind Electric GLUE, and&lt;br /&gt;Idoox WASP). Third-party software vendors such as Tradia (www.tradia.com), CapeClear&lt;br /&gt;(www.capeclear.com) and The Mind Electric (www.themindelectric.com) also offer tools for creating&lt;br /&gt;web services.&lt;br /&gt;The preview release of Microsoft.NET also enables organizations to build web services. The tools that&lt;br /&gt;ship with Microsoft.NET also offer rapid application development of web services, with automatic&lt;br /&gt;generation of web service wrappers to existing systems. You can perform operations using SOAP,&lt;br /&gt;UDDI, and SDL (the precursor to WSDL). Visual Studio.NET provides wizards that generate web&lt;br /&gt;services.&lt;br /&gt;Our conclusions from our web services comparison are as follows.&lt;br /&gt;With J2EE, you can develop and deploy web services today using JAXP. However, this is not the ideal&lt;br /&gt;way to build web services, since it requires much manual intervention. An alternative is for organizations&lt;br /&gt;to leverage 3rd party libraries to accelerate their development. In the future these libraries will be&lt;br /&gt;standardized through the JAX APIs. For now, if you develop web services rapidly, you'll need to bundle&lt;br /&gt;these libraries with your application.&lt;br /&gt;With .NET, you can develop web services today using the partial release of .NET. However, since this is&lt;br /&gt;only a beta implementation, it does not represent a realistic deployment platform. Another issue with&lt;br /&gt;.NET is that it does not support true web services because of a lack of support for ebXML. ebXML is a&lt;br /&gt;very important standard for eBusiness collaboration, and is experiencing broad adoption from around the&lt;br /&gt;J2EE vs. Microsoft .NET Page 20&lt;br /&gt;© 2001 The Middleware Company · http://www.middleware-company.com/&lt;br /&gt;world. Thousands of vendor and non-vendor companies, government institutions, academic and research&lt;br /&gt;institutions, trade groups, standards bodies, and other organizations have joined the ebXML community.&lt;br /&gt;This includes HL7 (Health Care), OTA (Open Travel Alliance), RosettaNet, OAG (Open Applications&lt;br /&gt;Group), GCI (Global Commerce Initiative), and DISA (Data Interchange Standards Association).&lt;br /&gt;Undoubtedly, ebXML is going to be an important force in web services, and we hope that Microsoft&lt;br /&gt;chooses to embrace it. Microsoft is still clinging to their BizTalk proprietary framework which has&lt;br /&gt;proprietary SOAP extensions. This evidence makes us question Microsoft's true commitment to open and&lt;br /&gt;interoperable web services.&lt;br /&gt;Tools&lt;br /&gt;The Sun J2EE Product Portfolio includes Forte, a modular and extensible Java-based IDE that pre-dates&lt;br /&gt;both Sun J2EE and .NET. Developers who prefer other IDEs for Java development are free to use&lt;br /&gt;WebGain’s Visual Café, IBM’s VisualAge for Java, Borland’s JBuilder, and more. Numerous 3rd party&lt;br /&gt;tools and open source-code products are available.&lt;br /&gt;Microsoft has always been a strong tools vendor, and that has not changed. As part of its launch of .NET,&lt;br /&gt;Microsoft released a beta version of the Visual Studio.NET integrated development environment. Visual&lt;br /&gt;Studio.NET supports all languages supported by earlier releases of Visual Studio - with the notable&lt;br /&gt;exception of Java. In its place, the IDE supports C#, Microsoft’s new object-oriented programming&lt;br /&gt;language, which bears a remarkable resemblance to Java. Visual Studio.NET has some interesting&lt;br /&gt;productivity features including Web Forms, a web-based version of Win Forms, .NET’s GUI component&lt;br /&gt;set. Visual Studio.NET enables developers to take advantage of .NET’s support for cross-language&lt;br /&gt;inheritance.&lt;br /&gt;Our conclusion is that Microsoft has the clear win when it comes to tools. While the functionality of the&lt;br /&gt;toolset provided by J2EE community as a whole supercedes the functionality of the tools provided by&lt;br /&gt;Microsoft, these tools are not 100% interoperable, because they do not originate from a single vendor.&lt;br /&gt;Much more low-level hacking is required to achieve business goals when working with a mixed toolkit,&lt;br /&gt;and no single tool is the clear choice, nor does any single tool compare with what Microsoft offers in&lt;br /&gt;Visual Studio.NET. Microsoft's single-vendor integration, the ease-of-use, and the super-cool wizards are&lt;br /&gt;awesome to have when building web services.&lt;br /&gt;Shared Context&lt;br /&gt;A key element of smart web services is shared context. To understand shared context, think about how&lt;br /&gt;many usernames, passwords, credit card information, and so-on that you need to remember and re-type in&lt;br /&gt;every time you visit a web site. The vision for shared context is that you type this information in once,&lt;br /&gt;and that information is then accessible to all web services that you choose to give access to that&lt;br /&gt;information. The information is under your control, rather than the control of the web services, and is&lt;br /&gt;protected using security rules that you define.&lt;br /&gt;The Sun J2EE vision for shared context is a decentralized, distributed suite of shared context services that&lt;br /&gt;live on the Internet. Each user might have a list of one or more of their preferred shared context services,&lt;br /&gt;with each repository storing select information about that user. You would point the web service to your&lt;br /&gt;preferred shared context service when you connect.&lt;br /&gt;Today, developers are empowered to create shared context services by writing a servlet that exposes itself&lt;br /&gt;as a web service using JAXP, and by using JDBC to access a relational storage.&lt;br /&gt;J2EE vs. Microsoft .NET Page 21&lt;br /&gt;© 2001 The Middleware Company · http://www.middleware-company.com/&lt;br /&gt;In the future, Sun J2EE will include standards to access shared context services. This will enable the&lt;br /&gt;context repositories to act as web services using a standard interface, empowering other web services to&lt;br /&gt;connect with and tap into the shared context service in standard ways.&lt;br /&gt;By way of comparison, Microsoft.NET achieves shared context via the Passport.NET service.&lt;br /&gt;Passport.NET is a repository hosted by Microsoft that contains user identity information. It is the&lt;br /&gt;cornerstone to Microsoft's Hailstorm services, which is their vision for creating user-centric web services&lt;br /&gt;experiences.&lt;br /&gt;In conclusion, we have found that both Sun J2EE and Microsoft.NET support shared context, and each&lt;br /&gt;have their own advantages and drawbacks. The noticeable difference is that the Sun J2EE approach of a&lt;br /&gt;shared context standard will spawn a marketplace of shared context repositories on the Internet, whereas&lt;br /&gt;the Microsoft.NET solution is a single shared context repository approach.&lt;br /&gt;The advantages of the Sun J2EE approach are:&lt;br /&gt;• Each shared context repository can be specialized for different needs. For example, there could&lt;br /&gt;be medical repositories that store medical history information, or financial repositories that store&lt;br /&gt;credit card and banking information. It is unlikely that a single repository approach such as&lt;br /&gt;Passport.NET would be specialized enough to cover all the bases of shared context information&lt;br /&gt;that the industry demands when smart web services become widely used.&lt;br /&gt;• There is no 'big brother' effect. Businesses and individuals do not need to trust their data to any&lt;br /&gt;individual firm. Local shared context repositories can be created within a trusted few partners in&lt;br /&gt;a business web, which means data can be contained.&lt;br /&gt;• We believe the J2EE solution will will scale to handle the needs of the masses. The needs of the&lt;br /&gt;many better then Passport.NET. Shared context is a more important phenomenon than any one&lt;br /&gt;organization.&lt;br /&gt;• There is no single point of failure.&lt;br /&gt;• There is no control being enforced by a single organization. Can you envision a time when AOL&lt;br /&gt;agrees to use Passport? Or when VISA, MasterCard, or American Express agree to let Microsoft&lt;br /&gt;control their customers’ information? It is difficult to imagine just one vendor-controlled identity&lt;br /&gt;service succeeding for all.&lt;br /&gt;The advantages of the Microsoft.NET approach are:&lt;br /&gt;• There is no question of what is the 'official' shared context repository. There is one place to find&lt;br /&gt;identity information. This is a very important point. J2EE runs the risk of a fragmented shared&lt;br /&gt;context repositories, eliminating the usefulness of such systems, unless care is used.&lt;br /&gt;• Passport is an established and active system.&lt;br /&gt;• Until Sun J2EE standardizes on a schema and API for accessing web services that are shared&lt;br /&gt;context services, we do not predict any real usage of J2EE-based shared context services.&lt;br /&gt;Given that almost no web services use shared context yet, it is too early to tell which approach is the best.&lt;br /&gt;Fortunately most organizations are barely getting up to speed with the basics of web services, and shared&lt;br /&gt;context is in the distance. For most organizations, this debate is likely to be important when choosing&lt;br /&gt;J2EE or .NET.&lt;br /&gt;System Cost&lt;br /&gt;A wide variety of implementations based on J2EE architecture are available for purchase, with price&lt;br /&gt;points varying dramatically, enabling a corporation to choose the platform that meets its budget and&lt;br /&gt;J2EE vs. Microsoft .NET Page 22&lt;br /&gt;© 2001 The Middleware Company · http://www.middleware-company.com/&lt;br /&gt;desired service level. Costs are typically in the single-digit thousands of dollars per processor, although&lt;br /&gt;there are higher-end implementations and lower-end ones. At the time of this writing, Microsoft had not&lt;br /&gt;released pricing information for the .NET platform.&lt;br /&gt;As far as hardware, J2EE supports UNIX and Mainframe systems, while both J2EE and .NET support the&lt;br /&gt;Win32 platform, which is generally the less expensive alternative. There is a level playing field for&lt;br /&gt;hardware costs, and the hardware cost debate becomes a moot point.&lt;br /&gt;The takeaway point is that you can get low-cost solutions with both Microsoft and J2EE architecture.&lt;br /&gt;Microsoft's solution has an aggressive price, whereas J2EE architecture allows you choose your service&lt;br /&gt;level. For example, with J2EE you can have a high-end, expensive solution (iPlanet running on Sun&lt;br /&gt;Solaris in an E-10000 server), or a low-end, inexpensive solution (jBoss running on Linux on a Cobalt&lt;br /&gt;RAQ server). There's also an assortment of free and/or open source tools and services that support Java&lt;br /&gt;and XML11. It should be noted that you pay for what you get, and most organizations will not go for this&lt;br /&gt;low-end solution, but rather will embrace a midrange solution as a happy medium.&lt;br /&gt;If you are trying to make heads or tails out of the price wars, we recommend that you consider this: the&lt;br /&gt;price of the platform is always a drop in the bucket compared to the total cost of the project. This is&lt;br /&gt;defined as the price of the server platform, the cost to train developers, the cost to build and evolve a&lt;br /&gt;solution on that platform, the cost to maintain the solution, and any business opportunity costs from&lt;br /&gt;picking the 'wrong' platform.&lt;br /&gt;We hope that firms realize that the total cost of ownership of a project dwarfs any short-term cost&lt;br /&gt;differences between underlying platforms. We recommend you do not consider the price of the platform&lt;br /&gt;when selecting between J2EE, .NET, or any other platform, but rather consider the more important other&lt;br /&gt;factors.&lt;br /&gt;Performance&lt;br /&gt;A platform performs if it yields an acceptable response time under a specified user load. The definition of&lt;br /&gt;what is 'acceptable' changes for each business problem. To achieve acceptable performance, it is&lt;br /&gt;important that the underlying web services infrastructure empowers you to build high-performing&lt;br /&gt;systems.&lt;br /&gt;The primary bottleneck when building web services is usually integration with back-end database&lt;br /&gt;systems. The reason for this is that most enterprise applications are data-driven systems with much more&lt;br /&gt;data logic than business logic. Given that the database is usually the bottleneck, any possible tactics for&lt;br /&gt;reducing database load will result in a significant wins.&lt;br /&gt;J2EE reduces database traffic through two tactics:&lt;br /&gt;Stateful business processes allow you to maintain business process state in memory, rather than&lt;br /&gt;writing that state out to the database on each request.&lt;br /&gt;Long-term caching (provided by some implementations) allow for database data to be cached&lt;br /&gt;for long periods of time, rather than re-reading database data upon each request.&lt;br /&gt;11 For examples, check out www.apache.org, www.netbeans,org, www.jboss.org, www.enhydra.org, www.zvon.org,&lt;br /&gt;www.juddi.org, www.develop.com/soap, www.alphaworks.ibm.com, or www.themindelectric.com.&lt;br /&gt;J2EE vs. Microsoft .NET Page 23&lt;br /&gt;© 2001 The Middleware Company · http://www.middleware-company.com/&lt;br /&gt;It should be noted that both maintaining business state in-memory and caching must be used with caution,&lt;br /&gt;and may result in problems if developers are not properly trained on when to (and when not to) use these&lt;br /&gt;features. This is a fundamental difference between the J2EE and .NET approaches to building web&lt;br /&gt;services: J2EE's advantage is that it gives programmers more control over lower-level services such as&lt;br /&gt;state management and caching. Well-educated developers can tap into these features to improve the&lt;br /&gt;quality of their deployment. But it is of vital importance that developers are properly educated on when&lt;br /&gt;to make these tradeoff decisions, or error may be introduced into systems.&lt;br /&gt;By way of comparison, Microsoft.NET does not offer these tactics for improving performance. There are&lt;br /&gt;no opportunities for performance wins, but at the same time, there are no opportunities for developers to&lt;br /&gt;introduce errors into systems.&lt;br /&gt;When trying to choose between whether these features are important for your organization, consider the&lt;br /&gt;quality of your developers. If they are well-educated and do not require much hand-holding, then they&lt;br /&gt;will likely find the flexibility and performance gains from a J2EE system as valuable. If your developers&lt;br /&gt;require more hand-holding, then the Microsoft approach is clearly superior.&lt;br /&gt;Scalability&lt;br /&gt;Scalability is essential when growing a web services deployment over time, because one can never predict&lt;br /&gt;how new business goals might impact user traffic.&lt;br /&gt;A platform is scalable if an increase in hardware resources results in a corresponding linear increase in&lt;br /&gt;supported user load while maintaining the same response time. By this definition, the underlying&lt;br /&gt;hardware (Win32, UNIX, or Mainframe) is irrelevant when it comes to scalability, because both J2EE and&lt;br /&gt;.NET allow one to add additional machines to increase user load while maintaining the same response&lt;br /&gt;time. The major implementations based on J2EE architecture, as well as .NET, provide load-balancing&lt;br /&gt;technology that enable a cluster of machines to collaborate and service user load that scales over time.&lt;br /&gt;The significant difference between J2EE and .NET scalability is that since .NET supports Win32 only, a&lt;br /&gt;greater number of machines are needed than a comparable J2EE deployment due to processor limitations.&lt;br /&gt;This multitude of machines may be difficult for organizations to maintain.&lt;br /&gt;VI. Conclusions&lt;br /&gt;The J2EE verses .NET battle will be the soap opera of the decade for geeks to watch. But there are&lt;br /&gt;promises and realities about both platforms. For example, J2EE is a rather brilliant move on the vendors'&lt;br /&gt;part, but should not be seen as an altruistic initiative. All vendors that participate in J2EE are after&lt;br /&gt;financial gains, as well as an effective weapon against Microsoft. J2EE enables these vendors to&lt;br /&gt;collaborate together and stand ground. Many of these vendors have undergone recent mergers and&lt;br /&gt;acquisitions themselves, and so organizations must exercise good judgment when choosing such a&lt;br /&gt;platform.&lt;br /&gt;As far as Microsoft.NET, that is far from an altruistic initiative. It is a monopolistic initiative dressed in altruism. Microsoft has been claiming that .NET is about open and interoperable web services, when in reality Microsoft is already making their web services closed and proprietary. Microsoft will likely increase the costs of their solutions if a monopoly can be achieved, and innovation will be slowed down significantly.&lt;br /&gt;So what's a company like yours to do? Both platforms are useful, and both can lead you to the same&lt;br /&gt;destination. Which platform is right for you? When deciding, we recommend you concentrate on the&lt;br /&gt;larger business issues. Think about your existing developer skillsets, your existing systems, your existing&lt;br /&gt;vendor relationships, and your customers. Those almost always drive the decision, not the minor features.&lt;br /&gt;Arguments supporting both platforms&lt;br /&gt;• Regardless of which platform you pick, new developers will need to be trained (Java training for&lt;br /&gt;J2EE, OO training for .NET)&lt;br /&gt;• You can build web services today using both platforms&lt;br /&gt;• Both platforms offer a low system cost, such as jBoss/Linux/Cobalt for J2EE, or Windows/Win32&lt;br /&gt;hardware for .NET.&lt;br /&gt;• Both platforms offer a single-vendor solution.&lt;br /&gt;• The scalability of both solutions are theoretically unlimited.&lt;br /&gt;Arguments for .NET and against J2EE&lt;br /&gt;• .NET has Microsoft's A-team marketing it&lt;br /&gt;• .NET released their web services story before J2EE did, and thus has some mind-share&lt;br /&gt;• .NET has a better story for shared context today than J2EE&lt;br /&gt;• .NET has an awesome tool story with Visual Studio.NET&lt;br /&gt;• .NET has a simpler programming model, enabling rank-and-file developers to be productive&lt;br /&gt;without shooting themselves in the foot&lt;br /&gt;• .NET gives you language neutrality when developing new eBusiness applications, whereas J2EE&lt;br /&gt;makes you treat other languages as separate applications&lt;br /&gt;• .NET benefits from being strongly interweaved with the underlying operating system&lt;br /&gt;Arguments for J2EE and against .NET&lt;br /&gt;• J2EE is being marketed by an entire industry&lt;br /&gt;• J2EE is a proven platform, with a few new web services APIs. .NET is a rewrite and introduces&lt;br /&gt;risk as with any first-generation technology&lt;br /&gt;• Only J2EE lets you deploy web services today&lt;br /&gt;• Existing J2EE code will translate into a J2EE web services system without major rewrites. Not&lt;br /&gt;true for Windows DNA code ported to .NET.&lt;br /&gt;• .NET web services are not interoperable with current industry standards. Their BizTalk&lt;br /&gt;framework has proprietary SOAP extensions and does not support ebXML.&lt;br /&gt;• J2EE is a more advanced programming model, appropriate for well-trained developers who want&lt;br /&gt;to build more advanced object models and take advantage of performance features&lt;br /&gt;• J2EE lets you take advantage of existing hardware you may have&lt;br /&gt;• J2EE gives you platform neutrality, including Windows. You also get good (but not free)&lt;br /&gt;portability. This isolates you from heterogeneous deployment environments.&lt;br /&gt;• J2EE has a better legacy integration story through the Java Connector Architecture (JCA)&lt;br /&gt;• J2EE lets you use any operating system you prefer, such as Windows, UNIX, or mainframe.&lt;br /&gt;Developers can use the environment they are most productive in.&lt;br /&gt;• J2EE lets you use Java, which is better than C# due to market-share and maturity. According to&lt;br /&gt;Gartner, there are 2.5 million Java developers. IDC predicts this will grow to 4 million by 2003.&lt;br /&gt;78% universities teach Java, and 50% of universities require Java.&lt;br /&gt;J2EE vs. Microsoft .NET Page 25&lt;br /&gt;• We would not want to use any language other than C# or Java for development of new missioncritical&lt;br /&gt;solutions, such as a hacked object-oriented version of C, VB, or COBOL.&lt;br /&gt;• We are finding most ISVs and consulting companies going with J2EE because they cannot&lt;br /&gt;control their customers' target platforms. We believe this application availability will result in&lt;br /&gt;J2EE beginning to dominate more and more as time goes on.&lt;br /&gt;In conclusion, while both platforms will have their own market-share, we feel most customers will reap&lt;br /&gt;greater wins with J2EE. We feel the advantages outweigh those offered by Microsoft.NET. That is our&lt;br /&gt;preferred architecture, and we stand behind it.&lt;br /&gt;The Middleware Company is a unique group of server-side Java&lt;br /&gt;experts. We provide the industry's most advanced training,&lt;br /&gt;mentoring, and advice in EJB, J2EE, and XML-based Web Services&lt;br /&gt;technologies. Services offered include:&lt;br /&gt;• Build experts through advanced, interactive training.&lt;br /&gt;• On-site mentoring and consulting&lt;br /&gt;• Guidance when making product or tool selection&lt;br /&gt;• A project jumpstart package designed to get a corporation upand-&lt;br /&gt;running with server-side Java in a matter of weeks&lt;br /&gt;• Development of full-scale enterprise applications&lt;br /&gt;• Business and technical whitepaper development&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20685163-113783824046805478?l=sriraghavanv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sriraghavanv.blogspot.com/feeds/113783824046805478/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20685163&amp;postID=113783824046805478' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20685163/posts/default/113783824046805478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20685163/posts/default/113783824046805478'/><link rel='alternate' type='text/html' href='http://sriraghavanv.blogspot.com/2006/01/j2ee-vs-microsoft-net-architectures.html' title='J2EE Vs Microsoft .NET Architectures'/><author><name>raghavan</name><uri>http://www.blogger.com/profile/00621325900207050521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_4qII2km2_7k/Rv7v5jsIrxI/AAAAAAAAAC0/Px1XBcSnx_M/s320/IMG_0381.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20685163.post-113670920345501591</id><published>2006-01-07T23:53:00.000-08:00</published><updated>2006-01-08T00:33:23.466-08:00</updated><title type='text'>SmartClient Architecture for .net 2003</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/436/2082/1600/MSG7800102_L.jpg"&gt;&lt;img style="FLOAT: left; MARGIN: 0px 10px 10px 0px; CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/436/2082/320/MSG7800102_L.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;i jus tried out the smart client application for .net 2003.&lt;br /&gt;It has client and a server. A client being a Class Library and the server a windows application.&lt;br /&gt;The client downloads the Assembly using the http protocol from the target machine.&lt;br /&gt;&lt;br /&gt;By using System.Reflection, you can executed Methods (Connect to Remote Database) from the Server. You need a ApplicationStart.exe to launch the application at the client site.&lt;br /&gt;&lt;br /&gt;At first time, it takes time to download to your local machine, for the subsequent requests for the Dll(or .exe) it takes from its cache.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20685163-113670920345501591?l=sriraghavanv.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sriraghavanv.blogspot.com/feeds/113670920345501591/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=20685163&amp;postID=113670920345501591' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20685163/posts/default/113670920345501591'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20685163/posts/default/113670920345501591'/><link rel='alternate' type='text/html' href='http://sriraghavanv.blogspot.com/2006/01/smartclient-architecture-for-net-2003.html' title='SmartClient Architecture for .net 2003'/><author><name>raghavan</name><uri>http://www.blogger.com/profile/00621325900207050521</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_4qII2km2_7k/Rv7v5jsIrxI/AAAAAAAAAC0/Px1XBcSnx_M/s320/IMG_0381.JPG'/></author><thr:total>0</thr:total></entry></feed>
