microsoft client applications and enterprise javabeans: can’t we all just get along? kurt...

44
Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation [email protected] John Valesano Software Engineer Seleriti Corporation [email protected]

Upload: brian-taylor

Post on 28-Dec-2015

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

Microsoft Client Applications and

Enterprise JavaBeans:Can’t We All Just Get Along?

Kurt ChristensenSoftware EngineerSeleriti [email protected]

John ValesanoSoftware EngineerSeleriti [email protected]

Page 2: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

The Agenda Historical Perspective Visual Basic EJB Integration Options

1. Visual J++ COM Proxy 2. JNI COM Proxy 3. CORBA COM Proxy 4. XML-RPC

Code Samples Visual J++ COM Object SOAP and XML-RPC

Page 3: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

The History… Why a middle tier? Desire for a business logic middle

tier Why?

Web client and internal VB client produced inconsistent (financial) data

Expansion into online trading would only exacerbate the problem

Code maintenance was already a growing concern due to multiple algorithms and mediocre design

Page 4: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

The History… Why EJBs? JAVA!!!

Increased productivity and reliability based on pilot project results.

IBM Mainframe shop Single vendor solution from IBM Integrated development tool for an

end to end solution. Easier and better designed than

MTS

Page 5: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

The History… Where were we? Local Brokers

VB >> COM/C++ >> CICS/Mainframe Remote Brokers

Citrix Server to access the VB app Web Clients (Customer Account

Info) ASP >> JAVA >> CICS/Mainframe

Page 6: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

The Project Build a web based online trading

program. Use EJBs for the business logic middle

tier Use a Java type solution for the front end

Demonstrate the feasibility of integrating the new EJB application with the existing (VB) client broker apps and (ASP) customer apps

Page 7: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

Step One We were charged with

demonstrating the feasibility of connecting the existing VB broker app with the proposed EJB business object middle tier.

Note: for political reasons this was a very important (crucial) first step.

Page 8: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

Digressing: VB + EJB??? The J2EE application program

model recommends a thin client tier (JSPs)

The reality: many companies still have client applications based on Microsoft technologies (usually Visual Basic, could also be Visual C++ or Active Server Pages)

Page 9: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

Why Are We Stuck With VB? End users may not want to learn a new

application VB apps often have more responsive

GUIs Management may not want to throw

away their investment in VB apps VB programmers may not want to give

up their jobs or learn a new language New technologies might have to be

phased in over time

Page 10: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

VB/EJB: The Issues Sun BluePrints Design Guidelines

for J2EE points out three issues: Security Client-managed transactions Deployment

Issue number zero: What are the communication mechanics between a VB app and an EJB?

Page 11: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

VB/EJB: Connectivity Information on COM / EJB

integration is not overly abundant Why?

New technologies make this a new problem

Corporate politics: Sun says “use JSPs!”; Microsoft says, “use MTS!”

VB programmers use VB, Java programmers use Java

Page 12: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

The Connectivity Pilot Project

Create a simple VB application that communicates with an EJB server.

We know we need some sort of proxy between our client app and the EJB server… but what?

Page 13: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

The Caveat Out task was to demonstrate

connectivity i.e., that the new EJB objects could be accessed by the existing VB apps

Consequently, we did not have to deal with real-world issues associated with transactions and security.

Page 14: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

The Attack Initial try: simple Java client

packaged as a COM DLL using Visual J++

Small problem: this doesn’t work!

Page 15: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

VJ++ Proxy: What’s Involved Create the necessary class in

Visual J++ In your Visual J++ project settings,

export your class as a COM object, and package your output in a COM DLL

Access your new COM object from VB, just like any other COM object

Page 16: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

The Retreat Exactly why can’t we do it the easy

way? The J2EE platform is based on JDK 1.2 Visual J++ only supports JDK 1.1

For example, RMI-IIOP is not supported

Page 17: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

The Attack, Part 2 Adding a second proxy object achieves

the objective:

It may be ugly, but it works… Note: Visual J++ does not ship with RMI,

it must be downloaded from Microsoft

Page 18: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

Proxy-Proxy: What’s Involved Save a copy of your Visual J++ code; this is

the second proxy that will run on a Sun (or IBM or whatever) JVM

Modify this class to be an RMI server Modify the original Visual J++ code so that

all method calls delegate to the corresponding methods on the second proxy via RMI

Use Visual J++ to package this latter class as a COM DLL

Access your new COM object from VB, just like any other COM object

Page 19: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

The Proxy-Proxy Solution: What’s Right It may be ugly, but it’s not as ugly

as you think: Performance compares somewhat

favorably to other solutions Proxy objects are thin and simple; can

be automatically generated Thin + simple = easy to understand

Page 20: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

The Proxy-Proxy Solution: What’s Wrong Ok, its ugly… Configuration can be a pain:

Must set up the MS JVM to use RMI Multiple VMs from different vendors on

each client machine Microsoft could pull the plug on Java

support Performance may not be

acceptable, (multiple) remote calls are expensive

Page 21: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

VB/JNI/Java Proxy/EJB Instead of using the MS JVM to

present our proxy as a COM object, we can wrap our proxy with a COM DLL using JNI:

Page 22: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

JNI: What’s Involved Similar to the first (failed) solution,

but adding a JNI wrapper written in C++ that delegates methods calls to the original Java object

Present the JNI wrapper as a COM object (the ATL wizard in Visual C++ can be useful here)

Access your new COM object from VB, just like any other COM object

Page 23: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

VB/JNI/Java Proxy/EJB : What’s Right It’s a more elegant solution… Performance is better than proxy-

proxy (a remote call was eliminated; the need for a second VM was eliminated)

Proxy object generation can be very simple (possibly even automated)

Page 24: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

VB/JNI/Java Proxy/EJB : What’s Wrong Will Microsoft always support JNI?

It took a court decision to force Microsoft to replace their proprietary native interface with JNI

Perceived/real complexity of JNI could make it difficult to find programmers to develop or maintain the infrastructure Requires C/C++ programming skills

Page 25: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

VB/CORBA/EJB Since EJBs are accessed via RMI-

IIOP, we can use a CORBA client:

Page 26: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

CORBA: What’s Involved (1) Generate CORBA IDL interfaces

that correspond to your EJB interfaces. Either (a) Write the IDL yourself, or (b) Use the RMI-IIOP RMIC compiler

with the –IDL option to automatically generate IDL files from your EJB interfaces

Page 27: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

CORBA: What’s Involved (2) Use your ORB’s IDL compiler to

generate stubs and skeletons for each of your IDL files

Note: Your IDL compiler will probably not work if the ORB does not support CORBA 2.3

Page 28: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

CORBA: What’s Involved (3) Implement your CORBA client code Make your CORBA client available

as a COM object. Two options: Do it yourself (the ATL wizard is

handy here…) Use a third-party COM/CORBA bridge

(such as OrbixCOMet from Iona) Access your new COM object from

VB, just like any other COM object

Page 29: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

VB/CORBA/EJB: What’s Right Performance is relatively good,

only one remote method call is required

If developers are familiar with ATL, or a particular COM/CORBA bridge, COM object generation can be very simple (possibly even automated)

Page 30: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

VB/CORBA/EJB: What’s Wrong Must have an ORB on the client

Client configuration Expense?

Perceived/real complexity of CORBA could make it difficult to find programmers to develop or maintain the infrastructure

Management’s reluctance to simultaneously take on two new technologies: EJBs and CORBA.

Page 31: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

VB/XML over HTTP/EJB The VB app can exchange data

with EJBs via XML over HTTP, using servlets and/or JSPs as the intermediary:

Page 32: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

VB/XML: What’s Involved COM proxy object to hide the

XML/HTTP details from the VB programmer.

Client side XML parser Server side XML parser Protocol to translate an XML

document into a method call or return value.

Page 33: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

VB/XML over HTTP/EJB: What’s Right

Provides the greatest decoupling between client and EJB server: Uniform layer of abstraction for

both internal and external clients Greater flexibility to migrate to new

technologies for the client (proxy object can be made using anything)

Works well over the Internet

Page 34: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

VB/XML over HTTP/EJB: What’s Wrong XML parsing increases

overhead XML parsing and message

handling add complexity No remote object references!

(At least not without a lot of work…) Basically a stateless protocol

Page 35: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

VB/Magic Bullet/EJB Certain third-party products can solve

the problem for you:

For example, IBM’s Component Broker

Page 36: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

VB/Magic Bullet/EJB: What’s Right

Good products can simplify development

Performance might be better than with some homegrown solutions

Page 37: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

VB/Magic Bullet/EJB: What’s Wrong

Learning curve can be steep; may not be any simpler than doing it yourself

Vendor lock-in Can be too costly

Page 38: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

Performance Considerations If its not worth measuring, its

probably not worth optimizing How much performance do you

need? Where is the bottleneck?

Database? EJB server? Network? Java VM?

Page 39: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

Comparing the Alternatives: Performance VB/MS Proxy/Sun Proxy/EJB

Good enough? VB/JNI/Java Proxy/EJB

A little better VB/CORBA/EJB

Better yet VB/XML over HTTP/EJB

Slower VB/Magic Bullet/EJB

Varies

Page 40: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

Comparing the Alternatives: Cost VB/MS Proxy/Sun Proxy/EJB

Cheap (free!) VB/JNI/Java Proxy/EJB

Cheap (free!) VB/CORBA/EJB

Cheap, if ORB client is free VB/XML over HTTP/EJB

Cheap, except for programming time VB/Magic Bullet/EJB

Can be very expensive

Page 41: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

Comparing the Alternatives: Complexity VB/MS Proxy/Sun Proxy/EJB

Very easy (but ugly!) VB/JNI/Java Proxy/EJB

Not too bad, IF you know JNI… VB/CORBA/EJB

Not too bad, IF you know CORBA Configuration issues, you need a Client ORB

VB/XML over HTTP/EJB Complicated – many pieces in the puzzle

VB/Magic Bullet/EJB Potentially complicated – configuration issues

Page 42: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

Recommendations VB/MS Proxy/Sun Proxy/EJB

Quick, easy, dirty VB/JNI/Java Proxy/EJB

If you have the people, you can do it VB/CORBA/EJB

If you have the people, you can do it VB/XML over HTTP/EJB

If you need Internet support VB/Magic Bullet/EJB

If you have the cash, and don’t mind vendor lock-in

Page 43: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

Conclusion This issue is disappearing, slowly

but surely: J2EE platform is gaining in popularity J2EE and CORBA are becoming more

friendly Increasing number of COM/CORBA

bridges and COM-friendly app servers

For now, we’re still on our own…

Page 44: Microsoft Client Applications and Enterprise JavaBeans: Can’t We All Just Get Along? Kurt Christensen Software Engineer Seleriti Corporation kurtc@seleriti.com

Q & A