Posted By: admin
Date: 2002-04-16 12:19
Summary:JavaTM 2, Enterprise Edition (J2EETM) 和 .Net
March 28, 2002 -- In the corporate IT realm, the development of web services continues to increase in importance, as web services establish remote access to both enterprise data and enterprise process. While some might see Sun's JavaTM 2, Enterprise Edition (J2EETM) and Microsoft's .NET technology as mutually exclusive solutions toward that goal, Noel Clarke, Senior eBusiness Strategist for SilverStream Software, Inc., believes that they very well can and must live together. In his Thursday technical session (TS-3154) at the March 2002 JavaOneSM Developers Conference, Clarke outlined the pros and cons of each technology in terms of delivering and consuming web services.
The eBusiness Paradox
According to Clarke, the need for web services is primarily due to what is sometimes referred to as the "eBusiness Paradox." "eBusiness success is blocked by the massive changes triggered by eBusiness," he said. "The promise of networked businesses will not be realized until we can rapidly and dynamically interoperate both within our enterprises, and between our enterprises."
In order to achieve this integration, it's necessary to make business functions readily sharable, to link them together in a flexible process flow, to deliver them in the proper format (to accommodate diverse client devices), and to make them discoverable and available to others anywhere.
The Trinity -- SOAP, WSDL, UDDI
True web services provide reusable units of business work and remote access to business data. They are devoid of presentation, and they can be consumed by either API or GUI. The results, meanwhile, can be displayed in any fashion required by the consumer of the service -- HTML, Swing, WML, HDML, XML, and so on. And finally, the service uses protocols and data representations that are ubiquitous and Internet friendly.
Providing Web Services Using XML, SOAP, WSDL, and UDDI
The current infrastructure trinity of web services access is SOAP (Simple Object Access Protocol), WSDL (Web Services Description Language), and UDDI (Universal Description, Discovery and Integration). "We want to build an XML front end to these services," said Clarke. "Then we need to take that XML information, describe it using WSDL, and wrap it in a SOAP message. Once we have it as a SOAP message, we can call it from any platform, and using any kind of technology -- Perl, Python, Java, .NET. And then we can publish these WSDL definitions in our UDDI registry so we can make these business processes available to our customers and partners."
.NET
When it comes to web services, many see the two technology camps of J2EE and .NET as akin to the famous cola wars. "Some people think it's like a taste test," said Clarke, "where you have to make a choice between one or the other. But we believe that web services are really about coexistence. And we believe that this coexistence is part of the interoperability promise of web services."
Clarke went on to detail the basic elements of the .NET infrastructure:
"Smart" client software applications that enable PCs and other devices to act on XML web services
XML web services comprised of small reusable component applications that can be connected together
.NET servers for deploying, managing, and orchestrating XML web services
development tools -- including Visual Studio .NET, and the .NET Framework, -- for building, deploying and running XML web services
.NET offers a single development environment for all of its supported languages -- Visual Basic (VB), C++, and the new C#. C# has language constructs similar to the Java language, and similarly includes garbage collection. "A lot of the people in this room will say -- 'Hey, we already have that, it's called Java,'" said Clarke.
The .NET environment lets developers enable applications as web services. And developers can then aggregate the web services into larger applications, which can be called from any platform running a web services stack. Meanwhile, .NET My Services takes some of the traditional Microsoft client applications -- like Wallet, Inbox, Calendar, and Profile -- and breaks them down into individual web services.
Applications written in VB, C++, and C# all use the same system libraries under .NET, and they are compiled into pseudo-code, the Microsoft Intermediate Language (MSIL), which is interpreted at execution time by a Common Language Runtime (CLR). "That's all very similar to the Java language's byte code and virtual machine," said Clarke.
J2EE -- In Comparison
J2EE is a set of standards and specifications for Java technology-based enterprise application development, as well as a hardware-independent runtime environment. J2EE offers portability, scalability, stability, security, and manageability. "One of the important aspects of the platform is that it has been around for five years, and there have been multiple implementations on multiple hardware platforms," said Clarke. "Contrast that to Microsoft (.NET), which has one CLR (Common Language Runtime), and which has only been implemented once."
The J2EE platform was developed through the Java Community ProcessSM (JCPSM), with the input and participation of a broad range of major technology companies. As a result, a range of tool vendors target the web services realm under J2EE -- Sun's ForteTM for JavaTM (FFJTM), Eclipse (an open-source development tool contributed by IBM), Borland's JBuilder, and SilverStream's eXtend product line. Meanwhile, Systinet provides a set of tools that plug into Forte, JBuilder, and Eclipse, to provide additional web services functionality. "This is not just Microsoft driving the show," said Clarke. "This is a whole consortium of companies getting together to build these Java specifications, standards, and tools."
The Java Community Process is also forging ahead on a number of web-services-related fronts, including a number of JSRs (Java Specification Request) pertaining to XML processing. These outstanding APIs are slated for either the JDK 1.4 or 1.5 releases:
JSR-031 -- Java API for XML Binding (JAXB)
JSR-067 -- Java APIs for XML Messaging 1.0 (JAXM)
JSR-093 -- Java API for XML Registries 1.0 (JAXR)
JSR-101 -- Java API for XML-based RPC (JAX-RPC)
JSR-109 -- Implementing Enterprise Web Services
JSR-110 -- Java APIs for WSDL
JSR-111 -- Java Services Framework
JSR-155 -- Web Services Security Assertions
JSR-156 -- XML Transactioning API for Java (JAXTX)
JSR-159 -- Java Process Component API (JPC)
The Road Ahead
The effective building of service-oriented applications requires XML integration, legacy connectivity, business process management, UDDI registry, content management, personalization, business logic, and front-end development. "It's a complex process," said Clarke, "with many parts."
Because of the complexity of the task, technology architects envision a new category of products called an Integrated Services Environment (ISE). An ISE will bring the complexity of web services development down to the level of the business application developer -- offering a convergence of platform vendors, framework vendors, and IDE/toolkit vendors, while providing design environments, runtime executables, and deployment platforms.
With this evolution in web services development, it's important that innovations and products come from a broad range of technology companies, as occurs with the Java platform specification, and the JCP.
This industrywide participation is particularly valuable in the realms of security and identity. Identity in the world of web services refers to personal information such as phone numbers, addresses, credit card numbers, and so on.
The .NET identity infrastructure, called Passport, stores personal information on Microsoft servers. "Microsoft calls that an advantage," said Clarke, "but there have been various security exploits, using Hotmail and scripts, to get people's credit card numbers."
The Liberty Alliance Project, a partnership of more than 30 businesses, is formulating the identity implementation for the Java platform. The project aims to produce an open and federated solution for network identity. Members of the management board of the Liberty Alliance, representing over a billion customers, include: American Express, AOL Time Warner, Bell Canada, Citigroup, France Telecom, General Motors, Global Crossing, Hewlett-Packard Company, MasterCard International, Nokia, NTT DoCoMo, Openwave Systems, RSA Security, Sony Corporation, Sun Microsystems, United Airlines, and Vodafone. The Liberty Alliance Project takes the approach of keeping user accounts in the hands of the institutions that currently own the information. Users administer the accounts rather than a central authority, and the users choose which organizations will securely share the identity information.
Common Ground
Already cross-compiling projects have emerged to provide for compilation from the Java language to Microsoft Intermediate Language, and from Microsoft Intermediate Language to the Java language.
Meanwhile, there's nothing stopping J2EE developers from using web services developed using .NET, because they are standards based. In fact, Clarke demonstrated such interoperability between the two technologies, calling a .NET generated web service from a Java technology-based client.
Recommendations
When asked by customers to recommend whether to use J2EE or .NET to build web services, Clarke suggested leveraging the relative strengths of each technology.
Microsoft/.NET has historically been strong in the PC desktop GUI and operating-systems realm, targeting small office, home office, and corporate desktop users. But the population of guru-level developers on that platform is relatively small. Also, according to Clarke, .NET is not truly enterprise class, and it comes with the inherent single vendor lock-in of Microsoft products. Perhaps most importantly, Microsoft has been known to engage in radical shifts of direction in order to accommodate new technologies and trends. "That can be a problem," said Clarke. "Sometimes, you're left in the lurch."
The J2EE platform, on the other hand, is based on command line UNIX, is targeted at developers, and has a user base in the large enterprise system market. The platform's population of guru-level developers is quite large. Meanwhile, J2EE is well established, having been developed by the JCP, and has been implemented by a range of major technology companies. And of course, it is cross-platform compatible. On the other hand, the very fact that J2EE is standards based and evolves by the input of a cross-section of industry participants means that refining the technology requires time for this input to occur. In compensation, J2EE tool vendors collectively have greater facility for innovation and competition, and the specification tends to be more thoroughly and solidly evolved.
In summary, Clarke suggested using .NET where Microsoft technology is already in use -- to enable web services with small or medium information and process assets, to aggregate basic web services into functioning applications, and to build Windows-specific thick client applications for consuming web services. He recommended using J2EE to enable and deploy web services for large enterprises, for server-side aggregation of web services, for thick client (JFC/Swing) applications to consume web services, and for Internet and Extranet web services clients that require platform independence.
See Also
Java 2 Platform, Enterprise Edition
(http://java.sun.com/j2ee/)
Java Web Services Developer Pack
(http://java.sun.com/webservices/webservicespack.html)
Borland Web Services Kit for Java
(http://www.borland.com/jbuilder/webservices/)
Forte for Java, Enterprise Edition
(http://www.sun.com/forte/ffj/features.html#ee)
SilverStream eXtend Product Suite
(http://www.silverstream.com/Website/app/en_US/Extend)
Systinet
(http://www.systinet.com/)
Microsoft Passport Security Hole
(http://www.wired.com/news/technology/0,1282,48105,00.html)
Eclipse.org
(http://eclipse.org/)
IBM developerWorks Web services zone
(http://www-106.ibm.com/developerworks/webservices/)
|
|