Top Banner
Comparing J2EE Comparing J2EE with .NET with .NET - ACCU 2002 - - ACCU 2002 - Slides (mostly Slides (mostly ) by ) by Michael Stal, Senior Principal Michael Stal, Senior Principal Engineer Engineer SIEMENS AG, Dept. CT SE 2 SIEMENS AG, Dept. CT SE 2 E-Mail: E-Mail: mailto:[email protected]. mailto:[email protected]. Markus Voelter, CTO, MATHEMA Markus Voelter, CTO, MATHEMA AG AG [email protected] http://www.voelter.de
98

Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:[email protected].

Mar 31, 2015

Download

Documents

Sienna Wellmon
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Comparing J2EE Comparing J2EE with .NET with .NET - ACCU 2002 -- ACCU 2002 -

Slides (mostly Slides (mostly ) by) byMichael Stal, Senior Principal EngineerMichael Stal, Senior Principal EngineerSIEMENS AG, Dept. CT SE 2SIEMENS AG, Dept. CT SE 2E-Mail: E-Mail: mailto:[email protected]:[email protected]: Web: http://http://www.stal.dewww.stal.de

Markus Voelter, CTO, MATHEMA AGMarkus Voelter, CTO, MATHEMA [email protected]://www.voelter.de

Page 2: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 2

GoalGoal

This is intended to be an objective This is intended to be an objective comparisons of the two platformscomparisons of the two platforms

It will contain criteria to base a It will contain criteria to base a decision which platform to usedecision which platform to use

Interoperability issuesInteroperability issues

Page 3: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 3

AgendaAgenda

MotivationMotivation ComparisonComparison

• Visions: Sun ONE and .NETVisions: Sun ONE and .NET• Layer-by-Layer comparison of the Layer-by-Layer comparison of the

infrastructuresinfrastructures

SummarySummary LiteratureLiterature

Page 4: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 4

Web FrameworksWeb Frameworks

Workflow Engine

Web-based and -related Protocols (HTTP, SMTP, ...)

Service Description, Discovery, Integration (UDDI)

Service Description (WSDL)

Service Context (Who, Where, When, Why, ....)

Virtual Machine

Micro/Macro Services

IntegrationLayer

Legacy

Backend Server

MainframeFrontend

Layer(Web Server)

Web Service User/Provider

Core Services (Calendar, Preferences, Transactions, ...)

Core elements of Web Frameworks

Clients

Page 5: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 5

.NET – The Microsoft .NET – The Microsoft Way of LifeWay of Life

.NET Devices TabletPC, PocketPC, ....

.NET Servers SQL Server, Biztalk, Commerce, Exchange, Mobile Information,

Host Integration, Application Center

.NET Foundation Services (Hailstorm) Passport, Calendar, Directory & Search, Notification & Messaging,

Personalization, Web-Store/XML, Dynamic Delivery of Software and Services

Common Language Runtime (Memory Management, Common Type System, Lifecycle Monitor)

.NET Framework & Tools

Base Classes (ADO.NET, XML, Threading, IO, ....)

ASP.NET(Web Services, Web Forms,ASP.NET ApplicationServices)

Windows Forms(Controls, Drawing, Windows Application Services)

Page 6: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 6

Sun ONE (Open Net Sun ONE (Open Net Environment)Environment)

Service Interface

Service Container

(J2EE, EJB, JSP, J2SE, J2ME,

MIDP, Java Card)

Process Management

Service Integration

(SQL, JDBC, XML, XSLT, XP, JMS,

RMI, J2EE Connectors,...)

Service PlatformSmart Management

(SNMP, CIM, WBEM, JMX)

Smart Delivery(XML, HTML, XHTML,

WML, VoiceXML,XSLT, HTTP, SSL,XP, SOAP, WSDL,UDDI, ebXML, ...)

Web Services

Smart Process(ebXML, XAML)

Smart Policy(LDAP, Kerberos, PKI,

OASIS Security))

Service Creation and Assembly(JB, JSP, EJB)

Page 7: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 7

Layer-By-Layer Layer-By-Layer ComparisonComparison

Page 8: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 8

Hello World ExampleHello World Example

In C# and Java:In C# and Java:using System;

namespace MyNameSpace {public class MyClass {

public static void Main(String [] args) {Console.WriteLine(„Hello, C#!“);

}}

}

package MyPackage;

public class MyClass {public static void main(String [] args) {

System.out.println(„Hello, Java!“);}

}

Page 9: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 9

LayersLayers

Runtime SystemRuntime System Object model Object model Base classesBase classes

- Reflection, Reflection,

EnterpriseEnterprise- Component modelComponent model- Database accessDatabase access- XMLXML- Server PagesServer Pages- RemotingRemoting- Web ServicesWeb Services- More Enterprise APIsMore Enterprise APIs

Page 10: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 10

The Runtime SystemThe Runtime System

Page 11: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 11

.NET Runtime.NET Runtime

It is called the Common Language Runtime (CLR)It is called the Common Language Runtime (CLR) It is intended for any language compiled to the It is intended for any language compiled to the

MSILMSIL Provides integration for several languagesProvides integration for several languages Provides support for non-OO languages (e.g. tail Provides support for non-OO languages (e.g. tail

recursion)recursion)C#

VB.NET

C++

Perl

Com

piler

MSIL +Metadata

Loader/Verifier JIT

Managed Code

ExecutionGarbage

Collection,Security,

Multithreading,...

Page 12: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 12

Java Virtual MachineJava Virtual Machine

The JVM is intended for Java and interprets Java Byte The JVM is intended for Java and interprets Java Byte Code. Code.

Other languages can be compiled to Java bytecode, Other languages can be compiled to Java bytecode, however (e.g. Ada)however (e.g. Ada)

Just-in-Time compilers exist for different Just-in-Time compilers exist for different environments and OSsenvironments and OSs

Java

Com

piler

CLASS-Files

Classloader/Verifier JIT

NativeCode

Hotspot

InterpreterGarbage

Collection,Security ManagerCall-in+Call-out,Multithreading,

...

Page 13: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 13

Commonalities and Commonalities and DifferencesDifferences

Commonalities:Commonalities:• Basic concepts are similar Basic concepts are similar

Differences:Differences:• Java is intended for interpretation (e.g. type-Java is intended for interpretation (e.g. type-

dependent primitives i_add, ...)dependent primitives i_add, ...)• Java allows for custom class loaders and Java allows for custom class loaders and

security managerssecurity managers• .NET CLR provides a command set that also .NET CLR provides a command set that also

supports functional languagessupports functional languages

Page 14: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 14

The Object ModelThe Object Model

Page 15: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 15

Object Model (.NET)Object Model (.NET)

In .NET, everything is an object In .NET, everything is an object

Types

Value Types Reference Types

System ValueTypes

User ValueTypes

Enumerations

InterfacesPointers

Self-describingTypes

ArraysClasses

Delegates Boxed Values

User-Defined

Page 16: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 16

System.ObjectSystem.Object

The „mother of all .NET classes“The „mother of all .NET classes“public class Object { public virtual int GetHashCode(); public virtual bool Equals(); public virtual String ToString(); public static bool Equals(object a, object b); public static bool ReferenceEquals(object a, object b); public Type GetType(); protected object MemberWiseClone(); protected virtual Finalize()´;}

Page 17: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 17

Object Model (.NET)Object Model (.NET)

.NET distinguishes between values .NET distinguishes between values types and reference types:types and reference types:• value types reside on the stackvalue types reside on the stack• reference types reside on the heapreference types reside on the heap

In C#, there is no difference between In C#, there is no difference between primitive types and classesprimitive types and classes• Automatic boxing/unboxing provides Automatic boxing/unboxing provides

transparencytransparency

Special strongly-typed function Special strongly-typed function references references • called called delegatesdelegates • and and eventsevents))

Page 18: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 18

Object Model (Java)Object Model (Java)

Java has primitive types and Java has primitive types and classes.classes.• No automatic boxing/unboxingNo automatic boxing/unboxing

Types

Primitive Types Reference Types

InterfacesArrays

Classes

Page 19: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 19

java.lang.Objectjava.lang.Object

The „Mother of all Java classes“The „Mother of all Java classes“public class Object { public Object(); public boolean equals(Object obj); public final Class getClass(); public int hashCode(); public final void notify(); public final void notifyAll(); public String toString(); public final void wait() throws InterruptedException; public final void wait(long timeout) throws InterruptedException; public final void wait(long timeout, int nanos)

throws InterruptedException; protected Object clone() throws CloneNotSupportedException; protected void finalize() throws Throwable;}

Page 20: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 20

Object Model (Java)Object Model (Java)

Primitive types cannot be Primitive types cannot be transparently used as an object. transparently used as an object. Special Holder classes are Special Holder classes are necessary.necessary.

There are no special function There are no special function references. Java uses Observer references. Java uses Observer Pattern with callback interfaces and Pattern with callback interfaces and inner classesinner classes

Integer i_ref = new Integer(7);List l = ...l.add( i_ref );

Page 21: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 21

.NET-Types that are not .NET-Types that are not available in Javaavailable in Java

Delegates & Events:Delegates & Events:

class MyClass { ... public void somebodyTurnedOnTheLight( int which ) { ... }}

class AnotherClass { ... public delegate void LightTurnedOn(int which); public event LightTurnedOn OnLightTurnedOn; ... OnLightTurnedOn+= new LightTurnedOn(MyClass.somebodyTurnedOnTheLight);}

Page 22: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 22

.NET-Types that are not .NET-Types that are not available in Java cont‘davailable in Java cont‘d

Enumerations (value type):Enumerations (value type):

Jagged and unjagged Arrays:Jagged and unjagged Arrays:

Structs (value types):Structs (value types):• Structs are implicitly sealed Structs are implicitly sealed • they do not support inheritancethey do not support inheritance

public struct Name {public String First;public String Last;

}

int [2][] a; a[0] = new int[]{1}; a[1] = new int[]{1,2};int [,] a = new int[2,2];

enum Color : byte { RED = 1, BLUE = 2, GREEN = 3 };

Page 23: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 23

Commonalities and Commonalities and DifferencesDifferences

Commonalities:Commonalities:• Interfaces are „completely abstract classes“Interfaces are „completely abstract classes“• Support single inheritance for classes Support single inheritance for classes

(implementation inheritance) and multiple interface (implementation inheritance) and multiple interface inheritanceinheritance

• Default-Initialization of VariablesDefault-Initialization of Variables• Namespace-Concept (Java-Package and .NET-Namespace-Concept (Java-Package and .NET-

Namespace)Namespace)• Similar visibility attributes (public, private, ...)Similar visibility attributes (public, private, ...)• Future: Generic types in .NET and Java (Generics)Future: Generic types in .NET and Java (Generics)• Class Constructors (static initializer in Java)Class Constructors (static initializer in Java)

DifferencesDifferences• In .NET there is no difference between primitive types In .NET there is no difference between primitive types

and classes.and classes.• Multiple languages support in .NETMultiple languages support in .NET• In Java all methods are implicitly virtual. In .NET this In Java all methods are implicitly virtual. In .NET this

has to be made explicit virtual, override, new).has to be made explicit virtual, override, new).• Java maps packages to directories. .NET doesn‘t. Java maps packages to directories. .NET doesn‘t.

Page 24: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 24

MetainformationMetainformation

Java and .NET provide a reflection Java and .NET provide a reflection APIAPI• to load and instantiate classesto load and instantiate classes• and inspect classes (introspection).and inspect classes (introspection).

In addition, .NET allows to annotate In addition, .NET allows to annotate many aspects of a system (classes, many aspects of a system (classes, members, operations) with so-members, operations) with so-called called AttributesAttributes

Page 25: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 25

.NET Examples .NET Examples

Using an AtttributeUsing an Atttribute

• There are several predefined attributes There are several predefined attributes (WebService, WebMethod, ...)(WebService, WebMethod, ...)

Defining an AttributeDefining an Attribute

[AuthorIs(„Michael“)]class MyClass { ... }

[AttributeUsage(AttributeTargets.All)]public class AuthorIsAttribute : Attribute {

private string m_Name;public AuthorIsAttribute(string name) { m_Name = name;}

}

Page 26: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 26

.NET Examples cont‘d.NET Examples cont‘d

Accessing and using Type Accessing and using Type informationinformationusing System;

using System.Reflection;

namespace ComponentClient {class Client {

static void Main(string[] args) { Assembly a = Assembly.LoadFrom("Component.dll"); Type [] allTypes = a.GetTypes(); Type t = allTypes[0]; object o = Activator.CreateInstance(t); MethodInfo mi = t.GetMethod("algorithm"); double d = (double) mi.Invoke(o, new object[]{21.0});}

}}

Page 27: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 27

Java ExampleJava Example

Accessing and using Type Accessing and using Type information:information:• Note that packages are not the same as Note that packages are not the same as

assemblies!!assemblies!!import java.lang.reflect.*;

try {Class c = Class.forName(„MyPrintComponent“);Object o = c.newInstance();Method m = c.getMethod(„print“, new Class[]{ String.class });m.invoke(o, new Object[]{„Hallo, Java!“});

}catch (Exception e) {

// handle it here}

Page 28: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 28

Commonalities and Commonalities and DifferencesDifferences

Commonalities:Commonalities:• Very similar APIsVery similar APIs

Differences:Differences:• .NET allows additional, user-defined meta .NET allows additional, user-defined meta

information with attributesinformation with attributes• Java Reflection is sometimes a bit more Java Reflection is sometimes a bit more

clumsy (because of primitive types and clumsy (because of primitive types and classes)classes)

• .NET allows to actually create new artifacts .NET allows to actually create new artifacts at runtime and instantiate them or store at runtime and instantiate them or store them in assemblies.them in assemblies.

Page 29: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 29

StatementsStatements

Both platforms support basically Both platforms support basically the same statementsthe same statements

Differences:Differences:• switchswitch-Statement allows Strings, but no -Statement allows Strings, but no

fallthrough:fallthrough:string name = address.name;switch (name) {

case “Maier”: Console.WriteLine(“Nice to meet you, Hans!”);break;

case “Mueller”,case “Huber”: Console.WriteLine(“You owe me some money!”);

break;default: Console.WriteLine(“I don’t know you”);

break;}

Page 30: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 30

Statements (cont‘d)Statements (cont‘d)

Differences:Differences:• Iterators in .NET:Iterators in .NET:

• Note that these are still no „internal Note that these are still no „internal iterators“ as in Smalltalk, for example!iterators“ as in Smalltalk, for example!

foreach (Elem i in MyContainer) { Console.WriteLine(i); }...class MyContainer : IEnumerable, IEnumerator {

public IEnumerator GetEnumerator() {return (IEnumerator)this;

}public void Reset() { ... }public bool MoveNext() { ... }public object Current { get { ... } }

}

Page 31: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 31

Statements (cont‘d)Statements (cont‘d)

Differences:Differences:• Iterators in Java:Iterators in Java:

for (Iterator i = MyContainer.iterator(); i.hasNext();) doSomething(i.next());

...class MyContainer implements Iterator {

public boolean hasNext() {…}public Object next() {...}public void remove() {...}public Iterator iterator() { return this; }

}

Page 32: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 32

Statements (cont‘d)Statements (cont‘d)

Differences:Differences:• Properties in .NET, where Java uses Coding Properties in .NET, where Java uses Coding

conventionsconventionsClass MyClass { ...

public double x {set { if (x < 0)

throw new ArgumentException (“< 0”);m_x = value;

}get { return m_x; }

} ...

// User: MyClass m = new MyClass(); m.x = 22;

Page 33: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 33

Statements (cont‘d)Statements (cont‘d)

Differences:Differences:• .NET supports Indexers, Java does not..NET supports Indexers, Java does not.

• Indexers also work with non-integer keys, Indexers also work with non-integer keys, such as stringssuch as strings

object[17] = 22;

// In class:Int [] m_a;public double this[int pos] {

get { return m_a[pos]; }set { m_a[pos] = value; }

}

Page 34: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 34

Statements (cont‘d)Statements (cont‘d)

Differences:Differences:• .NET supports operator overloading!.NET supports operator overloading!

public static Point operator+(Point op1, Point op2) {return new Point(op1.x+op2.x,op1.y+op2.y);

}

...

Point p = new Point(1,2) + new Point(2,3);

Page 35: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 35

Statements (cont‘d)Statements (cont‘d)

Differences:Differences:• .NET allows pass-by-reference of method .NET allows pass-by-reference of method

argumentsargumentsclass Test {

public void Print(int i) { Console.WriteLine(i); }public void Inc(ref int i) { i++; }public int SetInitial(out int i) { i = 42; }...

}

Test t = ...; int i;t.SetInitial(out i);t.Inc(ref i);t.Print();

Page 36: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 36

Statements (cont‘d)Statements (cont‘d)

Exceptions in JavaExceptions in Java• Exceptions have to be declared in the throws-clauseExceptions have to be declared in the throws-clause

Exceptions in .NETExceptions in .NET• Exceptions are not declaredExceptions are not declared

public int insert(int i) throws OverLimitException;{ … }

// only way to tell you about // OverLimitException thrown below public int insert(int i) { … }

Page 37: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 37

Important Base ClassesImportant Base Classes

.NET.NET JavaJavaGUI Windows.Forms

Web.FormsSWING, AWT

Kommunikation

System.Net: Connection, HttpWebRequest, ...

Java.net: Sockets, URL, ...

Container System.Collections: ArrayList, BitArray, Maps, Queue, List, Stack

java.util: Lists, Maps, Sets, Trees, Vectors

No big conceptual differences here.

Page 38: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 38

MultithreadingMultithreading

Page 39: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 39

Multithreading in .NETMultithreading in .NET

.NET uses delegates for .NET uses delegates for multithreadingmultithreading• The „ThreadStart“ in the example belowThe „ThreadStart“ in the example below

There are monitors for There are monitors for synchronizationsynchronization• The “lock” in the example belowThe “lock” in the example below

class GlobalData {int m_Value;public int Value { set { lock(this) { m_Value = value; } } }

}class Worker {

GlobalData m_Global;public Worker(GlobalData global) {m_Global = global; }public void loop() { m_global.Value = 42; Thread.Sleep(100); }

}// somewhere else:GlobalData g = new GlobalData();Thread t = new Thread(new ThreadStart(new Worker().loop));t.Start(); t.Join(); 1

Page 40: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 40

Multithreading in JavaMultithreading in Java

In Java there is also a class In Java there is also a class „Thread“„Thread“

For synchronization there is the For synchronization there is the synchronizedsynchronized keyword keyword

class GlobalData {int m_Value;public synchronized int setValue { return m_Value; }

}class Worker implements Runnable {

GlobalData m_Global;public Worker(GlobalData global) { m_Global = global; }public void run() { m_Global.setValue(42); Thread.sleep(100); }

}// somewhere else:GlobalData g = new GlobalData();Thread t = new Thread(new Worker());t.start(); t.join(); 1

Page 41: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 41

Commonalities and Commonalities and DifferencesDifferences

Commonalities:Commonalities:• Threading is very similar!Threading is very similar!• Both use some forms of monitor for Both use some forms of monitor for

synchronizationsynchronization

Differences:Differences:• In Java, synchronization is better integrated In Java, synchronization is better integrated

into the Java languageinto the Java language• Java provides better synchronization and Java provides better synchronization and

thread communication (wait, notify, ...). thread communication (wait, notify, ...).

Page 42: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 42

DeploymentDeployment

Page 43: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 43

Assemblies in .NETAssemblies in .NET

Assembly=Set of TypesAssembly=Set of Types

Manifest

Module 1

Resources

Type 1IL-Code

Type 2IL-Code

Type 3IL-Code

name

version

Sharedname

Hash

Files

ReferencedAssemblies

Types

Security

CustomAttributes

ProductInformation

Metadata

Page 44: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 44

Assemblies in .NETAssemblies in .NET

Private Assemblies are typically only Private Assemblies are typically only useful by the owning applicationuseful by the owning application

Shared Assemblies are stored in a Shared Assemblies are stored in a common cache and can be used by common cache and can be used by several applications. several applications. • They are signed by a keyThey are signed by a key• They are versioned!!They are versioned!!

Runtime uses Application Domains as Runtime uses Application Domains as an abstraction for (potentially an abstraction for (potentially remote) processes.remote) processes.

Page 45: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 45

Java JAR filesJava JAR files

.jar files are similar to .NET‘s .jar files are similar to .NET‘s assembliesassemblies• They can be shared or privateThey can be shared or private• They can be signedThey can be signed

They contain They contain • types types • resourcesresources• optionally, metadata in manifest files.optionally, metadata in manifest files.

There is no versioning!There is no versioning!

Page 46: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 46

Commonalities and Commonalities and DifferencesDifferences

Commonalities:Commonalities:• Assemblies and JAR files provide Assemblies and JAR files provide

„deployment“ components„deployment“ components

Differences:Differences:• Much better versioning support in .NET Much better versioning support in .NET

(side-by-side execution)(side-by-side execution)

Page 47: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 47

Component ModelsComponent Models

Page 48: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 48

Server-Side Components Server-Side Components in .NETin .NET

Now Now ComponentComponent is used like in is used like in EJB/COM+EJB/COM+

To use container-provided services To use container-provided services like synchronisation or transactions like synchronisation or transactions COM+ services can be usedCOM+ services can be used

COM+-Interop provides these COM+-Interop provides these features.features.

Page 49: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 49

Java Component ModelsJava Component Models

Client Components and Server Client Components and Server Components Components

JavaBeans are Client ComponentsJavaBeans are Client Components• normal Java classes following some normal Java classes following some

conventionsconventions• optionally providing metainformation optionally providing metainformation

(BeanInfo class)(BeanInfo class)public class MyJavaBean {private int color;public void setColor(int v) { color = v; }public int getColor() { return color; }// a lot of more ...

}

// BeanInfo class not shown here!

Page 50: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 50

Server Components in JavaServer Components in Java

Enterprise JavaBeans (EJBs) always Enterprise JavaBeans (EJBs) always reside in a Container that provides reside in a Container that provides technical aspects (sep. of concerns)technical aspects (sep. of concerns)

Client

3) Use bean

NamingService

1) lookup home

JNDI

4) remove

Application Server (Container)

Remote BeanInterface

Remote BeanHome Interface

2”) find bean2) create bean

BeanInstance

EnterpriseBean

EJBContext

4

ejbCreateejb...

DeploymentDescriptor

EJBJar

bean-methods

EJBHome

EJBObject

new

EJB Run-time

Page 51: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 51

Server Components in Java Server Components in Java cont‘dcont‘d

4 Types of Beans4 Types of Beans• Stateless Session-Beans (Service Components)Stateless Session-Beans (Service Components)• Stateful Session Beans (Session Components)Stateful Session Beans (Session Components)• Entity-Beans (Entity Components)Entity-Beans (Entity Components)• Message-Driven Beans (asynch. Service Message-Driven Beans (asynch. Service

Components)Components)

A bean is (theoretically) portable A bean is (theoretically) portable across containers (Application across containers (Application Servers) from different vendors. Servers) from different vendors.

Page 52: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 52

Commonalities and Commonalities and DifferencesDifferences

Commonalities:Commonalities:• Server Components are available Server Components are available

(Assemblies + COM+, EJB).(Assemblies + COM+, EJB).• Interop with legacy components in .NET Interop with legacy components in .NET

using COM+, in Java using CORBA)using COM+, in Java using CORBA)

Differences:Differences:• EJB are a more mature and proven modelEJB are a more mature and proven model• Special APIs to connect to legacy systems Special APIs to connect to legacy systems

(Java Connector API)(Java Connector API)

Page 53: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 53

Database Access in .NETDatabase Access in .NET

In .NET there is ADO.NETIn .NET there is ADO.NET• ““connectionless”connectionless”

Data Source

DataSetCommandCommand

Connection

DataReader

DataSet

Client

Managed Provider

Page 54: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 54

.NET-Beispiel.NET-Beispiel

using System;using System.Data;using System.Data.SqlClient;

string myConnection = “server=myserver;uid=sa;pwd=;database=StockTickerDB”;string myCommand = “SELECT * from StockTable”;SqlDataSetCommand datasetCommand = new SqlDataSetCommand(myCommand, myConnection);DataSet myDataSet = new DataSet();datasetCommand.FillDataSet(myDataSet, “StockTable”);DataTable myTable =ds.Tables[“StockTable”];foreach (DataRow row in myTable.Rows) {

Console.WriteLine(“Value of {0} is {1}”, row[“LongName”], row[“Value”]);}

Page 55: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 55

ADO.NETADO.NET

ADO.NET is XML based (XML Infoset)ADO.NET is XML based (XML Infoset)• DataSet dynamically builds an XML schema DataSet dynamically builds an XML schema

inside to store the datainside to store the data• Relational data and XML data can be handled Relational data and XML data can be handled

in a similar way!!in a similar way!! ADO.NET works offline once the data ADO.NET works offline once the data

is fetchedis fetched• Updating is partly automatic using DataSetsUpdating is partly automatic using DataSets

Currently there are two Managed Currently there are two Managed Providers:Providers:• SQL ServerSQL Server• ADOADO

Page 56: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 56

Database Access in JavaDatabase Access in Java

Java provides JDBC to access Java provides JDBC to access relational datarelational data

ODBCDB

ODBC Driver

JDBC/ODBC Bridge

Driver ManagerConnection

Statement

PreparedStatement

CallableStatement

Resultset

Application

Page 57: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 57

Java ExampleJava Example

import java.sql.*;// without error handling:Class.forName(„sun.jdbc.odbc.JdbcOdbcDriver“);Connection con=DriverManager.getConnection(„jdbc:odbc:stocks,““,““);Statement stmt = con.CreateStatement();ResultSet rs = stmt.executeQuery(„SELECT * from stocks“);while (rs.next()) {

System.out.println(rs.getString(„COMPANYNAME“));}rs.close();stmt.close();con.close();

Page 58: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 58

Database Access in JavaDatabase Access in Java

There are several other APIs:There are several other APIs:• Embedded SQL in the form of SQLJ (uses Embedded SQL in the form of SQLJ (uses

JDBC internally)JDBC internally)• Proprietary ODBMS APIsProprietary ODBMS APIs• Standardized JDO API to provide (more or Standardized JDO API to provide (more or

less transparent) persistence for Java less transparent) persistence for Java ObjectsObjects

• XML is handled differently!XML is handled differently!• Java Connector API provides access to other Java Connector API provides access to other

„connection oriented“ legacy systems (such „connection oriented“ legacy systems (such as SAP R3)as SAP R3)

Page 59: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 59

Commonalities and Commonalities and DifferencesDifferences

Commonalities:Commonalities:• Decoupling of the concrete data model and Decoupling of the concrete data model and

the user (using DataSets and ResultSets)the user (using DataSets and ResultSets)

Differences:Differences:• ADO.NET uses XML extensively, JDBC has a ADO.NET uses XML extensively, JDBC has a

more relational flavormore relational flavor• JDBC is connection oriented, ADO.NET JDBC is connection oriented, ADO.NET

always works non-connected, or offlinealways works non-connected, or offline• .NET DataSets are a kind of In-Memory-.NET DataSets are a kind of In-Memory-

Database-Cache.Database-Cache.

Page 60: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 60

XMLXML

Page 61: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 61

XML and .NETXML and .NET

.NET is very XML-centric.NET is very XML-centric• Web Services (SOAP)Web Services (SOAP)• Configuration FilesConfiguration Files• Result sets of a database access (ADO.NET)Result sets of a database access (ADO.NET)• XML processing itselfXML processing itself

Note that formally, many .NET Note that formally, many .NET features are based on the XML features are based on the XML infoset („XML semantics“) and do infoset („XML semantics“) and do not necessarily require megabytes of not necessarily require megabytes of text data!!text data!!

Page 62: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 62

XML and .NET cont‘dXML and .NET cont‘d

The The System.XmlSystem.Xml Namespace provides Namespace provides a whole lot of classesa whole lot of classes• DOM processing using DOM processing using XmlNodeXmlNode & Sons & Sons• XPathXPath and and XslTransformXslTransform• XmlTextReaderXmlTextReader und und XmlTextWriterXmlTextWriter similar similar

to SAX in that they are both stream-based, to SAX in that they are both stream-based, but .NET uses a Pull-Modelbut .NET uses a Pull-Model

Page 63: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 63

XML und JavaXML und Java

There are several standards and tools availableThere are several standards and tools available• DOM, SAXDOM, SAX• Xerces/Xalan, JDOMXerces/Xalan, JDOM• JAX{M,B,R,RPC}JAX{M,B,R,RPC}• CastorCastor

However, Java‘s libraries have not been However, Java‘s libraries have not been designed with XML as a basis (Java‘s too old designed with XML as a basis (Java‘s too old ))

JAXP (Java API for XML Parsing) supports DOM JAXP (Java API for XML Parsing) supports DOM and SAX.and SAX.

Currently under developmentCurrently under development• JAXM (Java API for XML Messaging) JAXM (Java API for XML Messaging) • JAXB (Java API for XML Data Binding)JAXB (Java API for XML Data Binding)• JAXR (Java API for XML Registries)JAXR (Java API for XML Registries)• JAX/RPC (Java API for XML based RPC)JAX/RPC (Java API for XML based RPC)

Page 64: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 64

RemotingRemoting

Somebody knows Somebody knows a nice picture a nice picture here?here?

Page 65: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 65

Remoting in .NETRemoting in .NET

Application Domain B

Client

Formatters

Channels

Envoy Sinks

Real Proxy

Transparent Proxy

Servant

Formatters

Channels

Server Context Sinks

Object Context Sinks

Network

Application Domain A

Page 66: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 66

Remoting in .NET Remoting in .NET (cont‘d)(cont‘d) .NET Remoting provides pluggable .NET Remoting provides pluggable

transports and formatters transports and formatters • currently TCP and HTTP transport and currently TCP and HTTP transport and • binary and SOAP formattersbinary and SOAP formatters

Contexts are automatically Contexts are automatically propagated (very neat feature!!)propagated (very neat feature!!)

Only very simple lifecycle Only very simple lifecycle management options for servants management options for servants (compared to EJB or CORBA)(compared to EJB or CORBA)• Singleton (one object for all calls)Singleton (one object for all calls)• SingleCall (new instance for each call)SingleCall (new instance for each call)• Client-Activated based on leasesClient-Activated based on leases

Page 67: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 67

Remoting in .NET Remoting in .NET (cont‘d)(cont‘d) Objects can be marshalled by value Objects can be marshalled by value

(Serializable)(Serializable)

Asynchronous invocations are easily Asynchronous invocations are easily possible without touching the possible without touching the servantservant

Page 68: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 68

Stub/Skeleton-Layer

Remoting in JavaRemoting in Java

Several possibilities: RMI/CORBASeveral possibilities: RMI/CORBA• RMI can use JRMP or IIOP as a transport RMI can use JRMP or IIOP as a transport

protocolprotocol• Not pluggable – changes in the code are Not pluggable – changes in the code are

necessarynecessaryClient Server

Stub Skeleton

Remote Reference Manager

Transport Layer

Page 69: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 69

Commonalities and Commonalities and DifferencesDifferences

Commonalities:Commonalities:• Relatively easy to useRelatively easy to use

Unterschiede:Unterschiede:• .NET Remoting can be extended more .NET Remoting can be extended more

flexiblyflexibly• Java provides Interop with CORBAJava provides Interop with CORBA• Asynchronous invocations are not easily Asynchronous invocations are not easily

possible with Javapossible with Java

Page 70: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 70

WebWeb

Page 71: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 71

ASP.NET ASP.NET (Server-Side Scripting)(Server-Side Scripting)

ASP.NET Architecture:ASP.NET Architecture:

IIS 5Web

ServerClient

(1) get a.apx (2) process

.NETEngine

.NETAssembly

OtherAssemblies

Database

(3) result

(4) HTTP file

Page 72: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 72

ASP.NET ExampleASP.NET Example

A simple login A simple login screen:screen:

Page 73: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 73

ASP.NET Example ASP.NET Example (cont‘d)(cont‘d)

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="LoginPage.WebForm1" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML><body><form id="Form1" method="post" runat="server"><asp:Label id="TitleLabel" runat="server">Please specify your name and password</asp:Label> <br><asp:Label id="LoginLabel" runat="server">Login</asp:Label> <br><asp:TextBox id="LoginText" runat="server"></asp:TextBox><asp:RequiredFieldValidator id="RequiredFieldValidator" runat="server" ErrorMessage="You need to specify your name" ControlToValidate="LoginText"></asp:RequiredFieldValidator> <br><asp:Label id="PasswordLabel" runat="server">Password</asp:Label> <br><asp:TextBox id="PasswordText" runat="server" TextMode="Password"></asp:TextBox> <br><asp:Button id="EnterButton" runat="server" Text="Open the entrance" ToolTip="Press this after you have specified login and password"></asp:Button> <br><asp:Label id="MessageText" runat="server"></asp:Label></form></body></HTML>

Page 74: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 74

ASP.NET Example ASP.NET Example (cont‘d)(cont‘d)

// lot of details omittednamespace LoginPage { public class WebForm1 : System.Web.UI.Page { protected TextBox PasswordText, LoginText; protected Button EnterButton; protected Label MessageLabel; private void InitializeComponent() {

this.EnterButton.Click += new System.EventHandler(this.EnterButton_Click);this.Load += new System.EventHandler(this.Page_Load);

} private void EnterButton_Click(object sender, System.EventArgs e) { if (!(LoginText.Text.Equals("aladdin") &&

PasswordText.Text.Equals("sesam"))) { MessageLabel.Text = " Wrong name or password!";}else { Session["user"] = "aladdin"; Response.Redirect("UserArea.aspx");}

} }}

Page 75: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 75

Java Server Pages and Java Server Pages and ServletsServlets

Java also allows for server-side Java also allows for server-side scriptingscripting• JSPs are based on ServletsJSPs are based on Servlets

WebServerClient

(1) get a.jsp (2) process

JVM

JSP

OtherComponents

Database

(4) result

(5) HTTP file

Servlet

(3) gen. Servlet Servlet Impl.

Page 76: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 76

Java Example Java Example

Page 77: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 77

Java ExampleJava Example

Bean und JSP-Seite:Bean und JSP-Seite:

// Datei MyPerson.javapackage MyPackage;import java.lang.*;

public class MyPerson {public String getFirstName() { return "Michael"; }public String getLastName() { return "Stal"; }

}// Datei MyTest.jsp:<HTML> <BODY><jsp:useBean id="person" scope="session" class="MyPackage.MyPerson"/>Your name is: <br><jsp:getProperty name="person" property="firstName"/> <br><jsp:getProperty name="person" property="lastName"/></BODY> </HTML>

Page 78: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 78

Commonalities and Commonalities and DifferencesDifferences

Commonalities:Commonalities:• Pages are precompiled to accelerate accessPages are precompiled to accelerate access• Similar syntax and conceptsSimilar syntax and concepts• ASP.NET provides „GUI components“ using ASP.NET provides „GUI components“ using

Webcontrols, Java provides Taglibs.Webcontrols, Java provides Taglibs. Differences:Differences:

• All .NET languages can be used for ASP.NET All .NET languages can be used for ASP.NET scriptingscripting

• Servlets/JSP are available for a wide range of Servlets/JSP are available for a wide range of webserverswebservers

• Many open source implementations, Many open source implementations, frameworks and tools for Javaframeworks and tools for Java

Page 79: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 79

Web Services in .NETWeb Services in .NET

.NET provides a very comfortable .NET provides a very comfortable and well-integrated way to build and well-integrated way to build them:them:namespace WebService1 {public class Service1 : System.Web.Services.WebService {

// lot of stuff omitted[WebMethod]public double DM_to_Euro(double value) {

return value / 1.95583;}[WebMethod]public double Euro_to_DM(double value) {

return value * 1.95583;}

}}

Page 80: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 80

Web Services in .NET Web Services in .NET (forts.)(forts.)

Using it is also simpleUsing it is also simple• Some steps have been ommittedSome steps have been ommitted

Webservices are „just a special way Webservices are „just a special way of remoting“of remoting“

BUT:BUT:• Microsoft does not provide ebXML complianceMicrosoft does not provide ebXML compliance• Currently they can only be used with MS Currently they can only be used with MS

serverserver

localhost.Service1 s1 = new localhost.Service1();double result = s1.Euro_to_DM(200);

Page 81: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 81

Web Services in JavaWeb Services in Java

Sun ONE will provide a Web Service API Sun ONE will provide a Web Service API for Java, completely ebXML compliantfor Java, completely ebXML compliant

Currently there are many proprietary Currently there are many proprietary solutionssolutions• Some specific SOAP toolkits:Some specific SOAP toolkits:

- Apache SOAPApache SOAP- IBM Web Services ToolkitIBM Web Services Toolkit- GLUEGLUE

• Some integrated with the major application serversSome integrated with the major application servers- SilverstreamSilverstream- IONAIONA- WeblogicWeblogic- ......

Sun works at standard APIsSun works at standard APIs• JAXMJAXM

Page 82: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 82

Commonalities and Commonalities and DifferencesDifferences

Commonalities:Commonalities:• Both.NET and Java try to be standards-Both.NET and Java try to be standards-

compliant (SOAP, WSDL, UDDI).compliant (SOAP, WSDL, UDDI).• Handling very similar: WSDLbased Handling very similar: WSDLbased

generators that create proxiesgenerators that create proxies

Differences:Differences:• For Java there are different solutions, For Java there are different solutions,

whereas .NET provides only one, nativelywhereas .NET provides only one, natively• Currently, standards are interpreted Currently, standards are interpreted

differently, so Interop Java-.NET is only differently, so Interop Java-.NET is only limited. But this will hopefully change!!limited. But this will hopefully change!!

Page 83: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 83

More Enterprise APIsMore Enterprise APIs

Page 84: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 84

Enterprise APIsEnterprise APIs

Naming:Naming:• JNDI in Java (as an interface to JNDI in Java (as an interface to

CORBANaming, LDAP, ...)CORBANaming, LDAP, ...)• Active Directory in .NET (Windows-specific)Active Directory in .NET (Windows-specific)

Message-orientierte Middleware:Message-orientierte Middleware:• JMS in Java JMS in Java • JAXM is on the horizon (XML based JAXM is on the horizon (XML based

messaging)messaging)• .NET can use MSMQ, and remoting can be .NET can use MSMQ, and remoting can be

used asynchronouslyused asynchronously

Page 85: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 85

Legacy-IntegrationLegacy-Integration

In .NET using the Microsoft Host In .NET using the Microsoft Host Integration Server.Integration Server.

In Java using the Connector APIIn Java using the Connector API

Comparison: Java provides a much Comparison: Java provides a much simpler way. Connectors can be simpler way. Connectors can be implemented relatively straight implemented relatively straight forward.forward.

Page 86: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 86

InteroperabilityInteroperability

Java provides access to C/C++ using Java provides access to C/C++ using JNI (Java Native Interface). JNI (Java Native Interface). Relatively complex call-in, call-out.Relatively complex call-in, call-out.

.NET provides PInvoke: .NET provides PInvoke:

class PInvokeTest { [DllImport("user32.dll")] static extern int MessageBoxA(int hWnd, string m, string c, int t); static void Main(string[] args) {

MessageBoxA(0, "Hello DLL", "My Window", 0); }}

Page 87: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 87

Interoperability cont‘dInteroperability cont‘d

In .NET there is a way to interop In .NET there is a way to interop with COM+ and COM+ Services.with COM+ and COM+ Services.

Java provides CORBA interop Java provides CORBA interop JMS provides integration with MoMsJMS provides integration with MoMs In .NET, the interop between .NET In .NET, the interop between .NET

languages is almost perfect and languages is almost perfect and easyeasy• Use the same assemblies, class libraries…Use the same assemblies, class libraries…• Languages had to be adapted a little bit Languages had to be adapted a little bit

(e.g. Managed C++ does not provide (e.g. Managed C++ does not provide multiple inheritance)multiple inheritance)

Page 88: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 88

Mobile and EmbeddedMobile and Embedded

Page 89: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 89

Profiles and devicesProfiles and devices

There are the following variants of There are the following variants of JavaJava• J2SE (Java 2 Platform Standard Edition)J2SE (Java 2 Platform Standard Edition)• J2EE (Java 2 Platform Enterprise Edition)J2EE (Java 2 Platform Enterprise Edition)• J2ME (Java 2 Platform Micro Edition)J2ME (Java 2 Platform Micro Edition)

- Configurations,Configurations,- and Profilesand Profiles

• JavaCardJavaCard

Page 90: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 90

Profiles and devices Profiles and devices cont‘dcont‘d .NET Universe.NET Universe

• .NET: Framework for Standard und Enterprise.NET: Framework for Standard und Enterprise• .NET Compact Framework for Windows CE (and other .NET Compact Framework for Windows CE (and other

embedded OS)embedded OS)- Design Goals: Design Goals:

> Resource savingResource saving> Adaptability regarding device propertiesAdaptability regarding device properties> Compatibility with the standard IDEsCompatibility with the standard IDEs> Easy integrationEasy integration> Seamless connectivitySeamless connectivity

- No ASP.NET, Reflection.Emit, Optimized No ASP.NET, Reflection.Emit, Optimized JITJIT

- Depending on machine stackDepending on machine stack- Simplified versioning and security, but Simplified versioning and security, but

similar formatssimilar formats

Page 91: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 91

Profiles and devices Profiles and devices cont‘dcont‘d

.NET Mobile Web SDK.NET Mobile Web SDK• Abstraction for the developerAbstraction for the developer• Several markup languages (WML, HTML, ...)Several markup languages (WML, HTML, ...)• Configurable and extendibleConfigurable and extendible• ASP.NET can be usedASP.NET can be used• Emulators for devices are available for Emulators for devices are available for

testing and debugging purposestesting and debugging purposes

• Extends ASP.NET with special controlsExtends ASP.NET with special controls

Page 92: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 92

Selecting one of the twoSelecting one of the two

Page 93: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 93

.NET and/or Java ?.NET and/or Java ?

.NET is a product, Java and J2EE is a .NET is a product, Java and J2EE is a specificationspecification

Both adress the web (among other things) Both adress the web (among other things) For „real big systems“ J2EE is better suitedFor „real big systems“ J2EE is better suited

The rule-of-thumb „The rule-of-thumb „Java is platform-Java is platform-independent,´.NET is language independent,´.NET is language independentindependent“ must be considered carefully:“ must be considered carefully:• ECMA works on the standardization of C# and parts ECMA works on the standardization of C# and parts

of .NETof .NET• Other languages can be compiled to the JVMOther languages can be compiled to the JVM

Page 94: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 94

.NET and/or Java ?.NET and/or Java ?

.NET language independence is not for .NET language independence is not for free and not completely transparentfree and not completely transparent

In a real project you might want to use In a real project you might want to use only only oneone language language• But sometimes... But sometimes...

#pragma onceusing namespace System; // .NET mit C++namespace CPPBase { public __gc class CPPBaseClass { public: virtual System::String __gc* Echo(System::String __gc *s); };}System::String __gc * CPPBase::CPPBaseClass::Echo(System::String __gc *s) { return s; }

Page 95: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 95

.NET and/or Java ?.NET and/or Java ?

Windows Applications are probably better Windows Applications are probably better done with .NET than Java (maybe IBMs done with .NET than Java (maybe IBMs SWT changes this ?)SWT changes this ?)

Java should be used when platform (or Java should be used when platform (or vendor-) independence is necessaryvendor-) independence is necessary

Java is more matureJava is more mature There will also be Java for .NET (Rational)There will also be Java for .NET (Rational)

• But syntax is not the issue!But syntax is not the issue! Both can be used for web services - .NET Both can be used for web services - .NET

is „nicer“, J2EE is more scalableis „nicer“, J2EE is more scalable

Analysts proclaim a fifty/fifty situation for Analysts proclaim a fifty/fifty situation for Java and .NETJava and .NET

Page 96: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 96

Management Summary - Management Summary - 11

.NET Java

Controller/Owner Microsoft Sun + JCP-Partner

Status Product Line Specification and many implementations

Languages C#, C++, Eiffel#, VB, ....

Java + possibly others

Communication middleware (RPC, Messaging, Web)

.NET Remoting, MSMQ, Web Services (no ebXML)

RMI/CORBA, JMS, Web Services (standard compliant)

Server Components COM+ Enterprise JavaBeans

XML-Support Consistent Currently not yet completely integrated

Server Pages ASP.NET JSP/Servlets

Page 97: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 97

Management Summary - Management Summary - 22

.NET Java

Database access ADO.NET (ADO) JDBC / SQLJ and others

Base libraries Many many classes on System.*

Many many classes on java.*

GUI-Libs Windows.Forms Web.Forms

Swing/AWT

Runtime .NET CLR Java JVM

Interop (call-in/call-out)

PInvoke JNI

InteropMiddleware COM/COM+ (COM Interop)

CORBA, JMS

Legacy Integration Host Integration Server

JCA

Page 98: Comparing J2EE with.NET - ACCU 2002 - Slides (mostly ) by Michael Stal, Senior Principal Engineer SIEMENS AG, Dept. CT SE 2 E-Mail: mailto:Michael.Stal@mchp.siemens.de.

Markus Voelter/Michael Stal – Comparing J2EE with .NET Folie 98

The EndThe End

Thank you very much!!Thank you very much!!