Comparing .NET and Java:The View From 2006 : Comparing .NET and Java: The View From 2006 David Chappell Chappell & Associates www.davidchappell.com Copyright © 2006 David Chappell
Application Platforms Today : Application Platforms Today Data Access
.NET Framework 2.0 : .NET Framework 2.0 Defining Logic Containing and Connecting Logic Accessing Data Using Logic ADO.NET
J2EE 1.4 : J2EE 1.4 Defining Logic Containing and Connecting Logic Accessing Data JDBC Using Logic
How We Got HereThe Last Ten Years : How We Got Here The Last Ten Years Java Microsoft 1996 Java, Java VM Windows DNA
- ASP, ADO, MTS Key
What’s Next : What’s Next .NET Framework 2.0
Application Platforms in 2008 : Application Platforms in 2008 Defining Logic Containing and Connecting Logic Logic to Web Browser Accessing Data Data Access Using Logic Web Browser Standalone Client Remote Logic
.NET Framework 3.0 : .NET Framework 3.0 Defining Logic Containing and Connecting Logic ASP.NET Accessing Data Using Logic Browser/AJAX/ XBAPs Windows Presentation Foundation (WPF) Remote Logic ADO.NET
Java EE 5 : Java EE 5 Defining Logic Containing and Connecting Logic Accessing Data Using Logic Remote Logic Servlets/Java Server Pages (JSP) Browser/AJAX Standalone Client
Open SOA : Open SOA Defining Logic Containing and Connecting Logic Accessing Data Using Logic Remote Logic Service Data Objects (SDO) Servlets/
Java Server
Pages (JSP) Browser/AJAX Standalone Client
What Will Succeed J2EE 1.4?Some Observations : What Will Succeed J2EE 1.4? Some Observations “We’re moving away from slavish devotion to J2EE to a blended source model.”
– Bill Roth, Vice President, BEA
“Organizations should look elsewhere when considering new enterprise development and should plan for the eventual sunset of Java EE as an enterprise solution.”
– Burton Group, July 2006
What Will Succeed J2EE 1.4?Divining the Future : What Will Succeed J2EE 1.4? Divining the Future Major J2EE vendors have announced plans to support both Java EE 5 and Open SOA
But they’re unhappy with Sun’s stewardship of Java
Sun’s decision to open source Java should help
Going forward, a combination of Java EE 5 and Open SOA is likely to dominate
A Plausible Successor to J2EE 1.4 : A Plausible Successor to J2EE 1.4 Defining Logic Containing and Connecting Logic Accessing Data Using Logic Remote Logic Servlets/
Java Server
Pages (JSP) Browser/AJAX Swing/Eclipse Client
Defining Logic: A Closer Look : Defining Logic: A Closer Look Defining Logic Containing and Connecting Logic Accessing Data Using Logic Objects Workflows If … Then … Rules If … Then … If … Then …
Defining Logic: Objects : Defining Logic: Objects The main .NET languages (C#/VB) and Java are advancing along similar paths, e.g.,
Both now have generics
Java has added annotations (analogous to .NET’s attributes)
Both worlds are adding support for dynamic languages
.NET: CLR-based IronPython
Java: JVM-based Jython, Groovy, etc.
Defining Logic: Workflows : Defining Logic: Workflows Workflow Engine
Creating Workflow LogicTwo Approaches : Creating Workflow Logic Two Approaches A workflow language: Business Process Execution Language (BPEL)
An XML-based language for defining process logic
Originally created by Microsoft and IBM
Now owned by OASIS
Generalized activities: Windows Workflow Foundation (WF)
Each activity is defined as a class
Can also support BPEL with appropriate activities
BPELExample Activities : BPEL Example Activities sequence: executes one or more activities sequentially
flow: executes one or more activities in parallel
switch: executes one of several paths based on the value of a condition
while: executes a specified activity as long as a condition is true
invoke: calls a web service
receive: receives an incoming web service call
compensationHandler: defines a compensation handler
BPELA Simplified Example (1) : BPEL A Simplified Example (1)
...
...
BPELA Simplified Example (2) : BPEL A Simplified Example (2)
...
Defining a Graphical Process NotationAn Aside : Defining a Graphical Process Notation An Aside The Business Process Modeling Notation (BPMN) aims at defining a standard graphical notation for defining process logic
It’s owned by the Object Management Group (OMG)
BPELIllustrating a Typical Implementation : BPEL Illustrating a Typical Implementation BPEL Execution Engine Workflow Graphical Process Design Tool
WFIllustrating Its Components : WF Illustrating Its Components Workflow
WFExample BAL Activities : WF Example BAL Activities Sequence: executes one or more activities sequentially
Parallel: executes one or more activities in parallel
IfElse: executes one of several paths based on the value of a condition
While: executes a specified activity as long as a condition is true
InvokeWebService: calls a web service
Compensate: defines a compensation handler
PerspectiveBPEL and WF : Perspective BPEL and WF BPEL
The standard allows some portability
Although vendors typically add proprietary extensions to the language, e.g., for human workflow
But it’s a rigid approach
And most developers don’t like XML-based languages
WF
It’s a more general, extensible approach
Allowing creation of reusable activities
But it’s a Windows-only technology
And learning to write effective WF workflows takes time
Defining Logic: Rules : Defining Logic: Rules A business rules engine (BRE) lets developers express rules in a standard way, then have them executed by a common engine
A business rules management system (BRMS) typically includes:
A BRE
Developer tools
Business analyst tools
Rules management tools
Rules in the .NET Framework 3.0 : Rules in the .NET Framework 3.0 WF includes a basic rules engine
The engine can be used with a WF workflow or separately
The WF rules engine targets developers
It’s not a full BRMS
The goal is to help developers more easily create rule-based applications
Rules in Java EE/Open SOA : Rules in Java EE/Open SOA Vendors use a range of diverse rules engines
Including integration with third parties such as ILOG
The Object Management Group is working on some standards for rules
PerspectiveRules : Perspective Rules Rules are becoming part of the standard development platform
Although business rules engines aren’t yet a mainstream technology for developers
Expect changes here
Even Microsoft’s plans aren’t completely clear
Containing Logic: A Closer Look : Containing Logic: A Closer Look Defining Logic Containing and Connecting Logic Logic to Logic Logic to Web Browser Accessing Data
Using Logic
Containing and Connecting LogicLogic to Web Browsers : Containing and Connecting Logic Logic to Web Browsers .NET Framework 3.0
ASP.NET 2.0
Java EE 5 and Open SOA:
Both use Servlets/JSPs
Java EE 5 also includes Java Server Faces (JSF)
A JSP tag library implementing a model/view/controller (MVC) architecture for HTML interfaces
Various open source options are also used, e.g., Struts
Containing and Connecting LogicLogic to Logic : Containing and Connecting Logic Logic to Logic Java EE 5 tries to improve the existing containers and communication mechanisms
With JAX-WS and EJB 3.0
.NET Framework 3.0 and Open SOA instead provide a new unified foundation
.NET Framework: WCF
Open SOA: SCA
Microsoft vs. EJBThe Last Ten Years : Microsoft vs. EJB The Last Ten Years Java Microsoft
Unifying CommunicationWCF : Unifying Communication WCF
Unifying CommunicationSCA : Unifying Communication SCA
An Example ServiceWCF : An Example Service WCF using System.ServiceModel;
[ServiceContract]
interface IAdder
{
[OperationContract]
int Add(int a, int b);
}
class Adder : IAdder
{
public int Add(int a, int b)
{
return a + b;
}
}
An Example ServiceSCA (Java) : An Example Service SCA (Java) import org.osoa.sca.annotations.*
@Remotable
public interface IAdder
{
int Add(int a, int b);
}
public class Adder implements IAdder
{
public int Add(int a, int b)
{
return a + b;
}
}
Describing an Exposed Service WCF : Describing an Exposed Service WCF ...
...
Describing an Exposed ServiceSCA : Describing an Exposed Service SCA ...
...
More WCF/SCA Similarities : More WCF/SCA Similarities Both allow a service to maintain state between calls:
WCF: [ServiceContract(Session=true)]
SCA (Java): @Scope(“session”)
Both allow one-way methods:
WCF: [OperationContract(IsOneWay=true)]
SCA (Java): @OneWay
Both allow bidirectional communication via callbacks
Illustrating Assembly: A CompositeSCA : Illustrating Assembly: A Composite SCA
Describing a CompositeSCA : Describing a Composite SCA A XML element can specify:
The components in a composite
The services each component exposes
The references each component makes to other services
The wires that connect references to services
Any properties that can be set on this composite
Some things this allows:
Dependency injection, where SCA locates the matching service for a component’s reference
Although how this is done isn’t specified
Graphical tools for assembling an application’s components
PerspectiveWCF and SCA : Perspective WCF and SCA Problems addressed:
WCF: Implementing services and remote clients
SCA: Implementing services and remote/local clients; defining composite assembly
Language support:
WCF: Any .NET language
SCA: Java, BPEL, C++, others
Availability:
WCF: Implementation available now
SCA: Specs in progress
Various implementations, e.g., open source Tuscany, are also in progress
Accessing Data: A Closer Look : Accessing Data: A Closer Look Defining Logic Containing and Connecting Logic Accessing Data Data Access Using Logic
Data Access TechnologyThe Last Ten Years : Data Access Technology The Last Ten Years Java EE Open SOA Microsoft Key
Illustrating ADO.NET : Illustrating ADO.NET .NET Framework Data Provider .NET Framework Data Provider Application DBMS
Illustrating SDO : Illustrating SDO .NET Framework Data Provider XML Document XML Document Application DBMS Data Access Service Data Access Service XML Document Other Data Source Data Access Service JDBC
PerspectiveData Access : Perspective Data Access Data access is a hard problem
Both camps have gone through many iterations
The Java world has placed more emphasis on O/R mapping technology
Microsoft’s forthcoming Language Integrated Query (LINQ) introduces a new perspective
LINQ for SQL addresses O/R mapping
LINQ for XML allows access to XML documents
More . . .
A Projection for 2008A Mainstream .NET Framework Application : WCF
Service A Projection for 2008 A Mainstream .NET Framework Application WF Workflow ASP.NET AJAX WCF
Service LINQ ADO.NET
A Projection for 2008A Mainstream Java EE/Open SOA Application : Java SCA
Component A Projection for 2008 A Mainstream Java EE/Open SOA Application JSP/
AJAX Java SCA
Component BPEL SCA Component SDO JPA
Summary : Summary Both camps tend to move in similar directions
The platforms will remain functionally similar
The approaches sometimes differ in significant ways, however
There are pros and cons
Competition benefits everybody
About the Speaker : About the Speaker David Chappell is Principal of Chappell & Associates in San Francisco, California. Through his speaking, writing, and consulting, he helps IT professionals understand, use, and make better decisions about enterprise software.
David has been the keynote speaker for dozens of conferences and events in the U.S., Europe, Asia, and Latin America. His popular seminars have been attended by tens of thousands of developers, architects, and decision makers in forty countries.
David’s books have been published in ten languages and used in courses at MIT, ETH Zurich, and many other universities. He is Series Editor for Addison-Wesley’s award-winning Independent Technology Guides, and he has been a regular columnist for several publications. In his consulting practice, David has helped clients such as Hewlett-Packard, IBM, Microsoft, Stanford University, and Target Corporation adopt new technologies, market new products, train their sales staffs, and create business plans.
David’s comments have appeared in The New York Times, CNN.com, and various other publications. Earlier in his career, he wrote software for supercomputers, chaired a U.S. national standardization working group, and played keyboards with the Peabody-award-winning Children’s Radio Theater. David holds a B.S. in Economics and an M.S. in Computer Science, both from the University of Wisconsin-Madison.