printed magazine

Transcription

printed magazine
JDJEDGE CONFERENCE & EXPO BOSTON, MA
MARCH 18–20, 2003
Java
COM
FINAL CONFERENCE PROGRAM p.61
From the Editor
Alan Williamson pg. 5
Guest Editorial
Bernie Spang &
Dave Thomson pg. 6
J2EE Editorial
Ajit Sagar pg. 20
J2SE Editorial
Jason Bell pg. 40
J2ME Editorial
Jason R. Briggs pg. 54
RETAILERS PLEASE DISPLAY
UNTIL MAY 31, 2003
Interview: JDJ Asks...Borland
Tony de la Lama answers readers’ questions about Borland and Java
Feature: Alternative Approaches to
Marcia Gulesian
Architecting Logon and User Management A simpler route
28
Show Review: More Than Marketing
Steven Berkowitz
Digging for interesting facts
34
Show Review: Atlanta Java
Software Symposium ‘No Fluff, Just Stuff ’
JDO Basics: Java Data Object
Joey Gibson
36
Teresa Lau
42
Works transparently on any data store
Feature: Rebel Without a Clause
Six ways to misuse exception handling
Craig Dewalt & Max Tardiveau
48
J2ME vs WAP:The Mighty WAP Strikes Out!
And J2ME is batting for wireless application development
SYS-CON
MEDIA
22
Cubist Threads: Confessions of a
Procedural Programmer Imposing order upon thought
Chuck Gautney
56
Blair Wyman
82
Like most developers, you’re tired
of hearing “more productivity.”
So we disguised it as a chart .
Crystal Reports 9 Advanced Edition Product Features
Report Integration –
Integrate reports into web, wireless, and windows applications
using Java, .NET, and COM SDKs
* Data Access –
Access virtually any data with native, ODBC, OLE DB, and JDBC
connectivity to relational, OLAP, XML, legacy, and enterprise data sources
* Custom Data Access –
Access in-memory data through JavaBeans
✔
✔
100% Java SDK –
Deliver reports in Java applications within a J2EE environment
✔
✔
✔
Advanced Parameters –
Deliver reports with pre-defined parameters for processing
unique report data views at runtime
Report Creation and Modification APIs –
Use these rich APIs to extend runtime report manipulation
and customization to end users
✔
✔
* Custom Report Style Templates –
Eliminate redundant formatting by creating and
applying custom templates across multiple reports
✔
* Unicode Support –
Display data stored in virtually any language
in a single report
✔
* Repository –
Centrally store key report components in the Repository
for sharing across multiple reports and single point updating
✔
* Formula Workshop –
Use Crystal Reports’ extensive formula language for complete,
control over report formatting, complex logic, and data selection
✔
* Report Parts –
Specify existing key report elements, Report Parts, for access via
wireless applications and tight integration with web applications
✔
Java Viewer –
Render reports to pure HTML or WML for mobile clients
with a server-based Java report viewer
✔
EASE OF USE
POWER
Web Report Viewers –
Deploy reports over the web with interactive,
zero client viewer controls
✔
FLEXIBILITY
Report Designer –
Use intuitive visual interfaces and Wizards to create highly formatted
reports without any programming
Guided Navigation –
Establish seamless navigation paths between report
objects for an improved end user experience
Exports –
Integrate multiple export options including XML, PDF,
DHTML, Excel, Word, RTF, Text & email
✔
✔
* New or updated features
Crystal Reports is an 11th generation high-productivity reporting solution for tightly
integrating dynamic content into enterprise web applications using Java, .NET, and COM.
Allowing detailed control of end user report viewing, interaction, and runtime modification,
Crystal Reports is also a fundamental component of the Crystal Enterprise web-based information
delivery system. A world leader in reporting, chosen by technology partners including Microsoft
and SAP, Crystal Reports is also supported by a full range of online and onsite training and
technical support.
To learn more visit www.crystaldecisions.com/cr9/218 for free online seminars,
demos, and evaluation software. To purchase Crystal Reports, Call 1- 800 - 877- 2340, visit
our online store at www.crystaldecisions.com/store/218, or contact your reseller.
© 2003 Crystal Decisions, Inc. All rights reserved. Crystal Decisions, Crystal Reports, Crystal Enterprise, and the Crystal Decisions logo are either a trademark or registered
trademark of Crystal Decisions, Inc. in the U.S and/or other countries. All other trademarks or registered trademarks referenced are the property of their respective owners.
Why do industry leaders
choose Zero G?
Developers already know that Zero G’s InstallAnywhere® and PowerUpdate®
are critical for their software installation and updating needs. But, buying
from us means you get more than just our award-winning multi-platform
software deployment solutions. You also get our customer service, our
world-class technical support, and best of all, our people – a team of skilled
professionals who are committed to the partnership that starts the minute
you download one of our products. That’s why industry leaders like
Sun Microsystems, Novell and Borland choose us.
Your software deployment partner
www.ZeroG.com
© 2003 Zero G Software, Inc. Zero G, Zero G Software, and InstallAnywhere are trademarks or registered trademarks of Zero G Software, Inc. All other trademarks are property of their respective owners.
FROM THE EDITOR
J2ME
INTERNATIONAL ADVISORY BOARD
CALVIN AUSTIN (Lead Software Engineer, J2SE Linux Project, Sun Microsystems)
JAMES DUNCAN DAVIDSON (JavaServlet API/XMP API, Sun Microsystems)
JASON HUNTER (Senior Technologist, CollabNet)
JON S. STEVENS (Apache Software Foundation)
BILLROTH (Group Product Manager, Sun Microsystems)
BILL WILLETT (CEO, Programmer’s Paradise)
BLAIR WYMAN (Chief Software Architect IBM Rochester)
ALAN WILLIAMSON
JEREMY GEELAN
NANCY VALENTINE
AJIT SAGAR
JASON R. BRIGGS
JASON BELL
JIM MILBERY
SEAN RHODY
SUBSCRIPTIONS
FOR SUBSCRIPTIONS AND REQUESTS FOR BULK ORDERS,
PLEASE SEND YOUR LETTERS TO SUBSCRIPTION DEPARTMENT
[email protected]
COVER PRICE: $5.99/ISSUE
DOMESTIC: $49.99/YR. (12 ISSUES)
CANADA/MEXICO: $79.99/YR. OVERSEAS: $99.99/YR.
(U.S. BANKS OR MONEY ORDERS)
BACK ISSUES: $10/EA., INTERNATIONAL $15/EA.
EDITORIAL OFFICES
SYS-CON MEDIA, 135 CHESTNUT RIDGE RD., MONTVALE, NJ 07645
TELEPHONE: 201 802-3000 FAX: 201 782-9600
JAVA DEVELOPER’S JOURNAL (ISSN#1087-6944) is published monthly
(12 times a year) for $49.99 by SYS-CON Publications, Inc.,
135 Chestnut Ridge Road, Montvale, NJ 07645.
Periodicals postage rates are paid at Montvale, NJ 07645
and additional mailing offices. POSTMASTER: Send address changes to:
JAVA DEVELOPER’S JOURNAL, SYS-CON Publications, Inc.,
135 Chestnut Ridge Road, Montvale, NJ 07645.
©COPYRIGHT
Copyright © 2003 by SYS-CON Publications, Inc. All rights reserved.
No part of this publication may be reproduced or transmitted in any
form or by any means, electronic or mechanical, including photocopy or
any information storage and retrieval system, without written permission.
For promotional reprints, contact reprint coordinator Carrie Gebert,
[email protected]. SYS-CON Media and SYS-CON Publications, Inc.,
reserve the right to revise, republish and authorize its readers
to use the articles submitted for publication.
Java and Java-based marks are trademarks or registered trademarks of
Sun Microsystems, Inc., in the United States and other countries. SYS-CON
Publications, Inc., is independent of Sun Microsystems, Inc. All brand and
product names used on these pages are trade names, service marks or
trademarks of their respective companies.
AUTHOR BIO
Did Larry get it wrong? He was assuring
the original person who asked the question
that Oracle9iAS would be using the latest VM
technology from JRockit to ensure it was the
fastest application server on the market.
I asked Oracle to comment on this with a
series of questions. In true politician style, 50%
of the answers I got back are definitely not in
response to any of my questions. The other
answers from their VP of app server marketing
appeared to contradict what Larry was saying
in his press conference, with quotes such as
“…Oracle’s internal tests show that JRockit has
performance and stability issues when compared with the currently available JDK 1.4.1
solution from Sun.” If this really is the case,
shouldn’t someone tell Larry that they aren’t
planning on using JRockit anymore? I am sure
BEA will be interested in seeing the tests
Oracle has conducted to see if this really is a
problem, and I would urge Oracle to share any
data they have that might help BEA address
any issues. Maybe there’s a configuration
problem that BEA could assist with.
I hope Oracle gets its message straight
sooner rather than later, because I feel it’s
important to the Java community not to
introduce any confusion. It is good validation for us as an industry and with such
heavyweights as Oracle and IBM, I feel very
confident that Java is here to stay no matter
what nonsense is being propagated from the
Seattle operating system company.
• • •
I knew this was going to happen at some
time: the moment when I would have to whip
out my hanky and wave goodbye to a dear friend
and wish him all the best. Fortunately that time
hasn’t come yet. Although that Jason Briggs boy
is leaving the post of J2ME editor, he’ll be contributing every so often, so we haven’t lost his wit
and charm completely! Yup, his life is about to
get a lot more complicated with the arrival of a
brand new Briggs v0.1. So on behalf of the JDJ
crew, we wish him all the best.
Home
WRITERS IN THIS ISSUE
JASON BELL, STEVEN BERKOWITZ, MICHAEL BIRKEN, JASON R. BRIGGS,
CRAIG DEWALT, CHUCK GAUTNEY, JOEY GIBSON, MARCIA GULESIAN,
TERESA LAU, AJIT SAGAR, BERNIE SPANG, MAX TARDIVEAU,
DAVE THOMSON, ALAN WILLIAMSON, BLAIR WYMAN
he Java space is not really unique in
this situation, as we contribute our
fair share to the computing buzzword
thesaurus. So it’s not really surprising when
someone trips up using the wrong word every
so often. They can be forgiven. However, this
month I’ve been researching one particular
boo-boo that Mr. Larry Ellison made in his
quarterly earnings press conference.
Oracle has always had a reputation of
being a rather bold and some would say bullish company. But their latest claim takes
them to new heights. One question posed to
Larry was about the performance of Java and
whether or not Oracle would be working
more closely with BEA and their JRockit virtual machine. Larry responded with, “JRockit
isn’t really BEA’s but Intel’s…and will be part
of Oracle’s app server.”
Wait a minute, doesn’t BEA own JRockit? I
am sure they did. Oh well, maybe I have it
wrong; it wouldn’t be the first time. I pinged an
e-mail over to BEA for confirmation; they did
indeed confirm that JRockit was 100% BEA
owned. BEA responded with, “[We] can assure
you that JRockit is owned by BEA.” JRockit,
originally developed by Appeal Virtual
Machines, was acquired by BEA in early 2002.
Maybe it was just a one-off slip from Larry.
But Larry continues the distancing of
JRockit from BEA: “BEA has no proprietary
rights to that whatsoever,” citing Intel as the
true owners of JRockit. Oh, maybe this wasn’t
a slip, but a clever subterfuge. Larry continues to reinforce Intel’s ownership, “…JRockit
technology that we have complete access to,
and we have had a meeting with Intel to confirm that.”
BEA and Intel have indeed pooled their
product engineering efforts to ensure the
best possible combination of BEA’s JRockit
technology on Intel processors, but as far as
BEA is concerned, Oracle has not entered
into any relationship with them for a similar
optimization effort.
J2EE
PRODUCTION
PRODUCTION CONSULTANT: JIM MORGAN
ASSOCIATE ART DIRECTOR: LOUIS F. CUFFARI
ASSOCIATE EDITORS: JAMIE MATUSOW
GAIL SCHULTZ
JEAN CASSIDY
JENNIFER STILLEY
ONLINE EDITOR: LIN GOETZ
TECHNICAL EDITOR: BAHADIR KARUV, PH.D.
Just Who Owns JRockit!
T
J2SE
EDITORIAL
EDITOR-IN-CHIEF:
EDITORIAL DIRECTOR:
EXECUTIVE EDITOR:
J2EE EDITOR:
J2ME EDITOR:
J2SE EDITOR:
PRODUCT REVIEW EDITOR:
FOUNDING EDITOR:
ALAN WILLIAMSON EDITOR-IN-CHIEF
[email protected]
When not answering your e-mails and working on the next issue of JDJ, Alan heads up a small team dubbed the “Thunderbirds of the Java
industry,” providing on- and offsite rescue for Java projects in trouble. For more information visit www.javaSOS.com.
You can also read his blog: http://alan.blog-city.com.
MARCH 2003
5
G
U
E
S
T
E
D
I
T
O
R
I
A
L
J2ME
Wanted:Java Application with
Native OS Look and Performance
PRESIDENT AND CEO
FUAT A. KIRCAALI [email protected]
COO/CFO
MARK HARABEDIAN [email protected]
VICE PRESIDENT,BUSINESS DEVELOPMENT
GRISHA DAVIDA [email protected]
ADVERTISING
WRITTEN BY BERNIE SPANG & DAVE THOMSON
n his editorial “Swing Is Swinging Java
out of the Desktop” (JDJ, Vol. 7, issue
10) Alan Williamson lamented the current state of Swing and AWT for building
competitive desktop applications. One
alternative he mentioned is a technology
called SWT (Standard Widget Toolkit) that
was developed as part of the Eclipse Project
(www.eclipse.org). If you’re wondering why
the Eclipse community, led by IBM, developed SWT instead of using J2SE’s AWT or
Swing classes, here’s the reason.
Eclipse is an open, universal platform
for building and integrating development
tools. The users of development tools are,
typically, developers and they are a
demanding lot. So Eclipse had to be
designed to deliver a high-performance
user experience and integrate well with
native operating systems. In the early
development phase of the project, the
Eclipse developers found that AWT was too
limited and Swing did not provide the
native integration and performance they
needed. Not to say that either is inherently
good or bad, just that they didn’t meet the
requirements of this particular Java application. And that’s an important point – the
Eclipse platform is a Java application that
runs on the J2SE platform.
As Alan pointed out in October, AWT
does not provide a satisfying solution for
most desktop applications. But Sun provides additional functions in the Swing
classes to give Java developers the power of
maximum user interface customization
and cross-operating system consistency.
The power of the Swing classes comes at a
price, however, paid in abstraction from
the operating system platform and its
effect on application performance. In the
case of Eclipse, it was not a priority to have
an identical user interface across different
platforms, but rather to maximize performance and integration and leverage
each platform’s capabilities. Thus SWT was
born.
Swing and SWT both provide a com-
Home
J2EE
J2SE
I
mon programming API across multiple
operating systems, but that’s where the
similarity ends. Swing widgets are rendered
by Java code, using graphics calls to “paint
themselves,” while SWT widgets use the
operating system widgets directly via J2SE’s
JNI API. Since SWT is designed to embrace
native window systems rather than emulate them, SWT applications have the exact
look and feel of the host operating system.
This means, for example, that SWT applications pick up the new Windows XP look
without any code changes or delay while
new emulation code is developed. This
design approach also allows an application
to leverage platform features such as dragand-drop and event-merging optimizations. The result is that SWT applications
truly look and perform like native applications.
SWT was developed because the
Eclipse community needed a high-performance widget toolkit that integrated
fully with Windows and other native toolkits such as GTK and Motif. But with the
rapid and widespread adoption of Eclipse
technology, many developers have found
that SWT also answers an important need
they have for high-performance native
user interfaces in their non-Eclipse–based
applications.
SWT is available for anyone to use
under a true open-source license, and is
developed and maintained by an opensource community. However, many Java
developers feel it is time for SWT to be submitted to the JCP to bring it into the Java
“fold,” so to speak, as an additional user
interface option. IBM would likely support
a JSR that incorporates SWT as a complement to the AWT and Swing options –
along the lines of how Java specifications
incorporate support for other open-industry technologies such as XML and SOAP.
At the end of his editorial Alan says, “If
you need your faith in Java reenergized,
look to the community and what they are
doing.” We couldn’t agree more.
SENIOR VICE PRESIDENT,SALES AND MARKETING
CARMEN GONZALEZ [email protected]
VICE PRESIDENT,SALES AND MARKETING
MILES SILVERMAN [email protected]
ADVERTISING SALES DIRECTOR
ROBYN FORMA [email protected]
ADVERTISING ACCOUNT MANAGER
MEGAN RING [email protected]
ASSOCIATE SALES MANAGERS
CARRIE GEBERT [email protected]
KRISTIN KUHNLE [email protected]
ALISA CATALANO [email protected]
EDITORIAL
EXECUTIVE EDITOR
NANCY VALENTINE [email protected]
ASSOCIATE EDITORS
JAMIE MATUSOW [email protected]
GAIL SCHULTZ [email protected]
JEAN CASSIDY [email protected]
JENNIFER STILLEY [email protected]
ONLINE EDITOR
LIN GOETZ [email protected]
PRODUCTION
PRODUCTION CONSULTANT
JIM MORGAN [email protected]
LEAD DESIGNER
LOUIS F. CUFFARI [email protected]
ART DIRECTOR
ALEX BOTERO [email protected]
ASSOCIATE ART DIRECTOR
RICHARD SILVERBERG [email protected]
ASSISTANT ART DIRECTOR
TAMI BEATTY [email protected]
WEB SERVICES
VICE PRESIDENT,INFORMATION SYSTEMS
ROBERT DIAMOND [email protected]
WEB DESIGNERS
STEPHEN KILMURRAY [email protected]
CHRISTOPHER CROCE [email protected]
ACCOUNTING
ACCOUNTS RECEIVABLE
KERRI VON ACHEN [email protected]
FINANCIAL ANALYST
JOAN LAROSE [email protected]
ACCOUNTS PAYABLE
BETTY WHITE [email protected]
SYS-CON EVENTS
PRESIDENT,SYS-CON EVENTS
GRISHA DAVIDA [email protected]
CONFERENCE MANAGER
MICHAEL LYNCH [email protected]
CUSTOMER RELATIONS
AUTHOR BIOS
[email protected] & [email protected]
Dave Thomson is VP of development at IBM’s OTI Labs and led the team that developed the Eclipse technology. Dave is a member of the
Eclipse.org board and an IBM Distinguished Engineer.
Bernie Spang, director of WebSphere Studio Marketing, is a computer engineer who led the public launch of the Eclipse project in 2001.
6
MARCH 2003
CUSTOMER SERVICE REPRESENTATIVE
MARGIE DOWNS [email protected]
JDJ STORE MANAGER
RACHEL MCGOURAN [email protected]
Application Server
Experts Agree
“Enterprises that are seeking a
well-appointed midtier solution
will definitely want to give
Oracle9iAS a test drive.”
“Oracle9iAS is now a formidable
application server.”
“Oracle: one stop app
server shop.”
“[With Oracle9iAS,] Oracle
is delivering what enterprises
need to build a robust, scalable
ebusiness infrastructure.”
Download a free trial
now at oracle.com/download.
Sources:
InfoWorld, November 2002
The Middleware Company, September 2002
eWeek, September 2002
IDC, May 2002
oracle.com/experts
or call 1.800.633.1072
Copyright © 2002, Oracle. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
Reprinted from eWeek, September 2, 2002, with permission. Copyright © 2002 Ziff Davis Media Inc. All rights reserved.
J2SE
J2ME
meat fighter
I
Home
J2EE
by michael birken
the wiener warrior
f you have a bounty of creative
energy and way too much time on
your hands, why not explore the
new Java 1.4 APIs by creating a
video game. That’s exactly what I
did when I produced a parody of
Street Fighter II called Meat
Fighter (see Figure 1).
8
MARCH 2003
“Meat Fighter” is a side-scrolling one-to-one fighting game
featuring anthropomorphic hot dogs and sausages. You can
choose from six possible players and battle through seven
stages of intensive meat fighting. So be prepared to meet the
wiener warriors: Sal Lammee, Rat Dog, Oscar M. Wiener, Hot
Doug, Cornelius Dog, and Oliver.
In this article, I present a simple framework to enable you
to quickly take advantage of full-screen animation, music, and
sound effects without learning all the intricate details of the
new APIs. (The source code for this article as well as Listings
1–4 can be downloaded from www.sys-con.com/java/
sourcec.cfm.) Check out Figures 1 and 2 for screenshots.
Getting Started with Animation
The animation in Meat Fighter, like any animation, is produced by displaying a series of still frames with minute variations in rapid succession. Each frame is generated in layers.
For instance, during combat, the background is drawn first,
followed by “background ornaments” such as the dancing crab
on the beach stage, the fighters, and finally the vitality bars at
the top. The element that appears closest to the front is the one
that was drawn last in the sequence.
If this layering were done directly to the screen, the animation would appear to flicker wildly because the process of
drawing the background erases all the foreground sprites.
Instead, each animation frame is generated on an offscreen
image buffer and transferred as a whole to the screen. To manage this process, I created the GraphicsSource class and the
RenderListener interface.
A class that’s interested in generating animation frames
implements RenderListener:
public interface RenderListener {
public void init(
boolean isPageFlipping,
int bufferWidth,
int bufferHeight);
public void updateModel();
public void render(Graphics g,
boolean isBufferCleared,
boolean isPageFlipping,
int bufferIndex);
}
For each frame, GraphicsSource invokes updateModel() to
update the state of the game, followed by render() to display
the state to the offscreen image buffer. init() is invoked prior to
frame generation on a different thread than the one for the
animation loop. It should be used for loading images and
sounds and for configuring the RenderListener.
All the methods of GraphicsSource are static. To initiate an
animation, pass a RenderListener implementation to
setRenderListener() and call startAnimation(). startAnimation() expects a frame rate value in frames-per-second
(fps). Depending on the frame complexity and the speed of the
underlying hardware, maintaining the specified fps consistently through an animation sequence may not be possible.
Instead, GraphicsSource tries to sustain the apparent frame
rate by assuming that the time required to update the game
state is significantly less than the time to display it. It will occasionally and typically unnoticeably invoke updateModel()
more often than render() to effectively skip frames. In this way,
the game should run at approximately the same speed even on
slower computers.
GraphicsSource also provides the means to enter and exit the
full-screen exclusive mode via the methods enterDisplayMode() and exitDisplayMode(), respectively. The
MARCH 2003
9
Home
J2EE
J2SE
J2ME
enterDisplayMode() method
requires the desired screen
resolution and will attempt to
find a mode of that size with
the highest bit depth and
refresh rate attainable. If the
graphics environment cannot
provide such a display mode,
enterDisplayMode() will create a window with a drawing
surface of the specified
dimensions, and the game
FIGURE 1 Intro sequence
will run outside the full-screen
mode. Since enterDisplayMode() also internally configures GraphicsSource for
frame rendering, it must be
the
first
method
of
GraphicsSource invoked.
Listing 1 illustrates all
these methods. We’ll get
back to the arguments of
init() and render() in the next
section. The listing also
introduces ImageSource, a
class I created as a façade to
FIGURE 2 Game demo
the javax.imageio.ImageIO
class. ImageSource provides
two static methods, getImage() and getImages(), that load a
single image and an array of images, correspondingly.
Meat Fighter uses exactly 212 GIFs placed in a directory
called images on the same level as the gamingtools directory
(see Table 1). Since this directory is within the classpath, the
program can locate the files using the system class loader:
URL fileURL = ClassLoader
.getSystemResource(IMAGES_DIR
+ fileName);
This technique works even after all the files are bundled
into a JAR, which makes deployment one step easier.
Behind the Scenes
The process of rendering to an offscreen image buffer to
reduce animation flickering is known as “double-buffering.”
The offscreen buffer is commonly referred to as the “back
buffer” and the other buffer involved, the “front buffer,” is the
area of video RAM (VRAM) that’s read from during the refresh
cycle of the monitor to set the intensities of all the pixel phosphors.
Double-buffering is maintained by a java.awt.image.
BufferStrategy object created by GraphicsSource.enterDisplayMode(). It will automatically select one of two techniques.
If the BufferStrategy employs page flipping, then both the back
and the front buffer are allocations of VRAM. The video pointer (a
register on the video card) determines which buffer is read from
during the monitor refresh cycle. By merely adjusting this pointer,
the roles of the buffers are instantly exchanged (see Figure 3). The
DIRECTORY
DESCRIPTION
/gamingtools
/native
/images
/sounds
/meatfighter
Reusable gaming classes not specific to Meat Fighter
Location of the Windows-specific timer DLL
Sprites and backgrounds used in Meat Fighter
Sound effects and music used in Meat Fighter
Meat Fighter–specific classes
TABLE 1 Directory structure of the game
10
MARCH 2003
alternative strategy is bit blitting. In this case, the back buffer may
be stored in VRAM or in ordinary system memory. After drawing
to it is completed, it’s copied to the front buffer (see Figure 4). For
obvious reasons, bit blitting is less efficient than page flipping.
Both strategies accomplish the same goal, but they affect
how you must render each successive animation frame. To
understand why, consider how to animate Pac-Man wandering
around a maze. The simplest approach is to build up each frame
in layers as described before. Specifically, draw the entire background image of the maze and then draw Pac-Man at the new
location. But, a more efficient approach is to set up a clipping
region around the previous location of Pac-Man and then draw
the background image. We only restore the part of the maze that
was painted over the last time Pac-Man was drawn to the buffer.
With this in mind, if page flipping is used, then even frames are
not rendered to the same buffer as odd frames. This means that you
must restore the maze considering Pac-Man’s location two frames
back. If bit blitting is used, you’re always rendering to the same
buffer; you only need to consider Pac-Man’s previous position.
What makes things a little more complicated is that the
buffers used by BufferStrategy are usually of type
java.awt.image.VolatileImage. A VolatileImage offers significant performance benefits over other kinds of images because
it stores the image contents in VRAM. However, VRAM is a limited resource and the operating system and other applications
can borrow that memory for their own purposes at any time.
For example, if a screen saver starts running in the middle of
the game, since it’s also a full screen application it will take
away at least the memory used by the front buffer. After the
screen saver stops, the VolatileImage will reallocate the VRAM,
but by then the contents of the buffer are lost.
If the game is drawing to a buffer at the moment its contents are lost, no exceptions will be thrown. Instead,
BufferStrategy provides methods that indicate if the contents
of a buffer are still the same since the last time a graphics context was obtained for it; this information is passed to render()
as the boolean parameter isBufferCleared. render() also
receives an integer called bufferIndex that alternates between
0 and 1 when page flipping is used to indicate which buffer g
refers to. It’s always 0 for bit blitting.
When you call setRenderListener(), GraphicsSource calls
back init() and passes it the type of buffer strategy in use, as
the boolean isPageFlipping, and the dimensions of the buffers.
GraphicsSource also assumes that the program is entering a
new animation sequence and the contents of the buffers are
no longer valid. This means that if page flipping is used as the
buffer strategy, then isBufferCleared is set to true for the first
two callbacks of render() directly after invoking
setRenderListener(). Similarly, isBufferCleared is set to true for
the first callback of render() if bit blitting is used. This saves
you the trouble of writing special logic to initialize the buffers
when the background changes for a different part of the game.
The Animation Loop
GraphicsSource.startAnimation() creates a thread that
loops and calls back the methods of RenderListener until
stopAnimation() kills it. The loop depends on high-resolution
timing to decide when to invoke updateModel() more often
than render(). I abstracted the concept of the timer into an
interface called StopWatch:
public interface StopWatch {
public void start();
public long stop();
public long getResolution();
}
©2003 Interactive TKO, Inc. LISA is a registered trademark of Interactive TKO, Inc. Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and other countries.
Home
J2EE
J2SE
J2ME
start() begins timing and stop() returns elapsed time in
nanoseconds (10-9 seconds).
getResolution() returns the error expected in the measured
elapsed time, meaning the actual elapsed time is somewhere
in the range of the measured elapsed time plus or minus this
value.
My simplest implementation of StopWatch uses
System.currentTimeMillis(); however, as the Javadoc explains,
“While the unit of time of the return value is a millisecond, the
granularity of the value depends on the underlying operating
system and may be larger.” On my Windows XP box, I measured
the resolution to be approximately 15ms. This is not good considering that at 60fps, the frame period is less than 17ms.
The Java Media Framework (JMF) and the Java 3D API
( J3D) provide the high-resolution timers javax.media
.SystemTimeBase and com.sun.j3d.utils.timer.J3DTimer,
respectively. Although SystemTimeBase provides a
getNanoseconds() method, I found it just as inaccurate as
System.currentTimeMillis(). It may perform better on your
box. J3DTimer, on the other hand, provides excellent high-resolution timing with a granularity less-than 1000 ns on my
machine.
Resolution aside, the disadvantage of using these implementations is that JMF and J3D are not included as part of the
standard installation of the Java 2 Runtime Environment
(J2RE), which limits your gaming audience. So, I turned to the
Java Native Interface (JNI) and created a DLL in Visual C++
that wraps the Windows functions QueryPerformanceFrequency() and QueryPerformanceCounter(). On application
startup, a 40KB DLL is copied to the temporary directory
defined by the system property java.io.tmpdir unless it’s
already located there. This is necessary because System.load(),
used to load the DLL, cannot access files within a JAR.
FIGURE 3 Page flipping
FIGURE 4 Bit blitting
12
MARCH 2003
StopWatchSource provides the static method getStopWatch(), which obtains the best available StopWatch implementation. To do so, it creates a List and adds the
System.currentTimeMillis() implementation available on all
platforms. Next, if JMF or J3D is installed, it will add their associated implementations. If the operating system is a version of
Windows, it adds the JNI implementation. Finally, it sorts the
List and returns the StopWatch with the highest resolution.
Listing 2 shows the animation loop in GraphicsSource that
relies on StopWatch. The loop updates the game state and renders it, and then it sleeps for any time that’s left over in the
frame period. It computes the sleep time as:
long sleepTime = PERIOD
- stopWatch.stop() - overSleepTime;
where PERIOD is the frame period and stopWatch.stop()
returns the time expended in the last iteration while not
asleep. Since Thread.sleep() is not accurate to the millisecond
either (usually off about 1ms), we measure the actual sleep
time and subtract that value from the sleep time of the successive iteration. This is the overSleepTime.
If sleepTime is negative, the duration of the last iteration
exceeded the frame period. The overshoot, equal to
-sleepTime, is typically a fraction of a frame period; it’s added
to a total called fractions. When fractions grows larger than the
frame period, the animation is at least an entire frame behind.
To compensate, the while-loop on line 57 invokes
updateModel() for an additional fractions/PERIOD time(s)
and leaves fractions with any remainder.
It Gets Easier
To create an animation frame without redrawing the entire
background, render() requires access to the “dirty regions” of
the buffer it’s acting on. These are the rectangular areas made
“dirty” as the result of drawing sprites on top of the background. If page flipping is used as the buffer strategy, you need
to maintain two sets of dirty regions, one for each buffer. Bit
blitting requires only one set.
To automatically maintain these sets, I created an abstract
class called FrameBuilder. FrameBuilder implements the
methods of RenderListener and actually declares them final to
prevent you from overloading them. In this case, a class that
desires to generate animation frames extends FrameBuilder
and implements the five abstracts methods listed in Table 2a.
init()is called back soon after you pass the FrameBuilder reference to setRenderListener(). As before, it’s invoked on a different thread than the one used for the animation loop; it can make
blocking calls, such as loading images and sounds, without interrupting a running animation. After it returns, GraphicsSource
switches to the new class to generate the frames.
The two overloads of renderBackground() are for drawing
the entire background and for restoring a specified dirty
region. The former version is invoked when the buffer contents are lost or isBackgroundSame() returns false. The latter
version is called once per dirty region and is passed a graphics
context with a clipping region set accordingly.
renderForeground() is invoked to display sprites and other
graphics on top of the background. It should use the concrete
methods listed in Table 2b. markDirtyRegion() records a dirty
region for restoration in a successive frame. drawSprite() is a
convenience method that invokes g.drawImage() followed by
markDirtyRegion().
updateState() serves exactly the same purpose as
updateModel(). An alternative method is used because
isBackgroundSame() is actually checked in FrameBuilder’s
implementation of updateModel() instead of render(). This
Home
J2EE
J2SE
J2ME
way FrameBuilder is able to keep track of background changes
even when frames are skipped. Note: updateModel() delegates
the call to updateState() before the check since
isBackgroundSame() depends on the current game state.
It’s important that these methods avoid creating temporary
objects because the incremental garbage collection that occurs
to clean up those objects will introduce noticeable pauses.
Listing 3 demonstrates a class that extends FrameBuilder.
Observe that the code is completely oblivious to the buffer
strategy. In this case, renderBackground() cleans up the dirty
regions by invoking its overloaded counterpart. It can do this
because its clipping region is automatically set to the dirty
region. If you’re developing a game like Pac-Man that uses tile
graphics, you should provide logic that identifies and redraws
only the dirty tiles (see Tile Graphic sidebar).
Returning to the subject of VolatileImages, sprites can also
take advantage of them for the rendering performance benefits. To accomplish this, you would load an image into a nonvolatile form like a BufferedImage and then copy it to a
VolatileImage for drawing. If the contents are ever lost, you
can restore it from the nonvolatile version.
Luckily, BufferedImage already has this mechanism built in.
When a BufferedImage is drawn repeatedly to a buffer in VRAM,
Java 2D will automatically create a VolatileImage version of it so
that future rendering may perform better. This being the case,
ImageSource.getImage() returns a BufferedImage. The data layout and color model is set in accordance with the graphics configuration for optimal bit blitting.
Scrolling
If you load a background image wider than the screen, you
could scroll it horizontally by redrawing it at different positions; however, this means you must paint the entire back
buffer for each frame. Alternatively, you could allocate buffers
wider than the screen in VRAM and adjust the video pointer
offset so that the visible area of the front buffer changes. Since
bit blitting is not used, this type of scrolling has no impact on
performance whatsoever.
(2A) ABSTRACT METHODS
Unfortunately, Buffervoid init()
Strategy doesn’t yet provide
void updateState()
fine control of the video
boolean isBackgroundSame()
pointer; it’s only capable of
void renderBackground(Graphics g)
flipping the pointer between
void renderBackground(Graphics g, int x, int y, int width, int height) buffers. As such, Meat Fighter
void renderForeground(Graphics g)
scrolls the background using
the former technique, which
(2B) CONCRETE METHODS
is
significantly
slower.
void drawSprite(Graphics g, Image image, int x, int y)
However, the background is
void markDirtyRegion(int x, int y, int width, int height)
not in continuous motion. It
responds to the player’s posiTABLE 2 Methods of FrameBuilder
tion; it’s occasionally stationary and isBackgroundSame()
returns true when the background position has not
changed.
FIGURE 5 Implementations of Audio
16
MARCH 2003
Sound Effects and Music
One of the coolest features of Java that actually
evolved from the applet era
is a simple interface for playing sound effects and music.
The static method Applet.
newAudioClip() obtains an
AudioClip from a specified
URL. AudioClip is an interface with three methods:
JAVA GAME PROFILE (JSR-134)
Imagine if you could take that Java game you’re working on, burn
it onto a CD, pop it into your PS2 or Xbox, and actually play it. As Java
programmers, we’re used to porting our applications from one platform
to another without any coding changes; why not apply the write once,
run anywhere principle to game consoles?
The Java Game Profile (JGP) is an accepted Java Specification
Request, designed with the help of companies like Sega and Sony, with
the goal of developing a platform-independent standard for game
development. Its ultimate goal is to rid the world of game ports by providing Java-based libraries capable of taking advantage of the highperformance graphics hardware found in modern game consoles as
well as your PC. The proposal covers 2D and 3D graphics, streaming
media, sound, controllers, physics modeling, and network communications, among other topics. It highly promotes leveraging existing APIs
whenever possible and creating new APIs as needed to fill in the gaps.
A game-specific API in the javax.games package would act as a layer
above them all. For example, the proposal suggests classes for modeling features commonly found in game characters that rest on top of the
Java 3D API.
Sony already encourages hobbyists to develop for the PS2 via its
$200 Linux Kit. The kit includes a 40GB hard drive, an Ethernet adapter,
keyboard, mouse, monitor cables, and the Linux software, which effectively turns the PS2 into a desktop computer. However, until Sun
releases a JVM for it, it looks like you’ll be stuck with gcc.
As for the Xbox, since it took a federal court to order Microsoft to
distribute a modern JVM with Windows, it does not seem likely that
Microsoft will participate in the JGP anytime soon. Almost unsurprisingly, hackers have managed to get a version of Linux running on the
Xbox. But, if the JGP is going to be an attractive option for game companies as well as hobbyists, more console manufacturers will need to
get involved.
You can view JSR-134 at www.jcp.org/en/jsr/detail?id=134. The
JGP white paper, a document presented at the Game Developers
Conference 2002 detailing JGP beyond JSR-134, has not been
released to the Web at the time of this writing.
play(), loop(), and stop(). It couldn’t be easier.
However, after calling play(), there’s no way to know when
the audio ends. Such a feature is necessary for coordinating
animation sequences with sound. For example, the animation
at the start of Meat Fighter does not enter into the demo stage
until the introductory music completely finishes.
To overcome this limitation, I created the AudioListener
interface and an extension of AudioClip called Audio:
public interface AudioListener {
public void audioStopped();
}
public interface Audio
extends AudioClip {
public void setAudioListener(
AudioListener audioListener);
public void clearAudioListener();
public void dispose();
}
A class implements AudioListener to receive notification
that a sound effect or a piece of music has completed playing.
This listener is registered with an Audio object via
setAudioListener().
Audio objects originate from the static method
AudioSource.getAudio(). AudioSource uses the same technique as ImageSource to locate files within the classpath and
it expects to find audio files in the sounds directory on the
J2ME
J2SE
J2EE
Home
AUTHOR BIO
Michael Birken is actively
involved in the design and
research of emerging
trading technologies at a
Manhattan-based financial
software company. He’s a
Sun Certified Java
programmer and
developer. Michael holds a
BS in computer
engineering from Columbia
University. Michael is a
vegetarian.
18
MARCH 2003
TILE GRAPHICS
Deployment
Tile graphics evolved from the earliest text-based games, where
ASCII characters were arranged to form images of maps and objects in
the game world. In those days, tiles served two primary purposes. First,
they saved precious ROM space. For example, the 224x288 maze in
Pac-Man actually consisted of 28x36 square tiles, each 8x8 pixels in
size. Second, tiles provided a convenient method of bestowing a
repeated behavior upon the game world. For instance, in Super Mario
Brothers, the tiles that Mario walked on, which often hung in midair, all
shared the behavior of a floor-like surface. Modern releases for systems like the handheld Nintendo Game Boy Advance still use tile graphics for exactly the same reasons.
To use FrameBuilder for a game like Pac-Man, you need a way to
transform a dirty region into a set of dirty tiles. Assume the 28x36 maze
is represented as a two-dimensional integer array of constants, each
associated with a particular tile graphic. The ghost monsters and PacMan consist of 16x16 pixel sprites; rendering any of them means making nine of the 8x8 background tiles dirty. Given a sprite position (x,y),
you can find its corresponding array element by dividing each coordinate by 8. Alternatively, you can right-shift by 3, an equivalent operation that takes less time to execute. Apply this to opposite corners of
the sprite to compute the dirty tile region. Note: Pac-pellets are background tiles, not sprites. As Pac-Man gobbles them up, adjust the array
elements accordingly and Pac-Man’s position will automatically force
the pellet tiles to be repainted.
A Super Mario Brothers type game presents a different challenge
because the tiled backgrounds are one screen high and multiple
screens wide. The Nintendo Entertainment System used 8x8 pixel tiles
in a 32x28 grid to form 256x224 sized screens. Its hardware provided
a wraparound buffer and the ability to adjust the video pointer within
the buffer for scrolling. Since BufferStrategy does not support an equivalent, the entire back buffer needs to be repainted for each frame. One
approach is to maintain two screen-sized segments of the background
as BufferedImages and scroll from one to the other by drawing them
end-to-end. As the first image is scrolled off, it would be incrementally updated one new column of tiles at a time. When the second image
is completely in view, the first is ready to serve as the next segment.
I JARred up all the resources into meatfighter.jar using this
command:
same level as the gamingtools directory (see Table 1). Call dispose() after an Audio object is no longer required to release
system resources that it may be holding. Listing 4 demonstrates how to create an Audio object and how to associate an
AudioListener with it.
AudioSource.getAudio() returns one of three implementations of Audio depending on the file type (see Figure 5).
SoundEffect and MidiMusic use the Java Sound API, which is
part of the current J2RE installation, to provide sampled and
synthesized sound, respectively. SoundEffect is capable of
playing AIFF-C, AIFF, AU, SND, and WAVE files, and MidiMusic
is capable of playing MIDI files. The quality of synthesized
sound will vary depending upon which soundbank was
shipped with the J2RE. A soundbank contains sound samples
for an array of instruments. Typically, the J2RE installation
includes the smallest and lowest quality one. See the links in
the References section for information on how to determine
which soundbank you’re using and where to get a better one if
required.
The Java Sound API does not provide support for MP3 files
as of this time; however, the Java Media Framework (JMF)
does and it’s used by JMFSound. JMFSound is actually capable
of playing all the sound file formats mentioned earlier in addition to MP3. The disadvantage of using it, as mentioned previously, is that JMF is not included in the standard J2RE installation. Note: The latest release of JMF actually removes some
MP3 functionality due to “licensing issues,” but you should
still be able to play them under Windows.
jar cvfm meatfighter.jar theManifest
gamingtools meatfighter native
images sounds
The m option directs the JAR utility to use the manifest file,
theManifest, instead of creating a default one. TheManifest is
a one-line text file that specifies the class containing the
main() method:
Main-Class: meatfighter.MeatFighter
You can launch Meat Fighter via:
java -jar meatfighter.jar
Alternatively, under Windows, you can double-click on the
JAR to start it.
To promote reusability, I also created gamingtools.jar,
which contains the gamingtools package and the native directory. You can find these JARs along with their complete sources
on my Web site, www.meatfighter.com. All the code is covered
by the GNU General Public License, so feel free to redistribute,
modify, and use it in your own programs at no cost.
Conclusion
Since I posted Meat Fighter, I’ve received only positive
feedback and a wealth of questions from enthusiastic Java
game programming hobbyists. I hope this article has demystified many of the aspects of animation and sound and serves as
a springboard for your creative energy. Unfortunately, at least
for now, Game Over Man!
References
• Meat Fighter: www.meatfighter.com
• Full-Screen Exclusive Mode API: http://java.sun.
com/docs/books/tutorial/extra/fullscreen/
• Java Image I/O API: http://java.sun.com/j2se/
1.4.1/docs/guide/imageio/
• The VolatileImage API User Guide: ftp://ftp.java
.sun.com/docs/j2se1.4/VolatileImage.pdf
• Java Sound API: http://java.sun.com/products/javamedia/sound/
• Java 3D API: http://java.sun.com/products/java-media/
3D/
• Java Media Framework: http://java.sun.com/products
/java-media/jmf/
• Java Native Interface: http://java.sun.com/docs/books
/tutorial/native1.1/
• JSR-134: www.jcp.org/en/jsr/detail?id=134
• PlayStation 2 Linux Community: http://playstation2linux.com/
• Xbox Linux Project: http://xbox-linux.sourceforge.net/
• Nintendo Entertainment System Architecture: www
.zophar.net/tech/files/nes.txt
• Swing Sightings Volume 3: http://java.sun.com
/products/jfc/tsc/sightings/S03.html
• Java Gaming: www.javagaming.org
• Video Game Music Archive: www.vgmusic.com/
• Drawing Tablets: www.wacom.com
• History of Street Fighter: www.videogames.com/
features/universal/sfhistory/
[email protected]
Rational XDE Professional Java Edition is:
UML modeling for Java
model
code synchronization
automated design documentation
customizable design patterns
data modeling
In other words,
your IDE on steroids.
and runs inside WebSphere Studio
Lemme guess. You’re thinking this is just one more tool that’s actually going to get in your way. Hardly. Rational® XDE™
Professional blends right into your development experience. How? It runs inside IBM® WebSphere® Studio Application
Developer, or stands alone with its own Eclipse-based Java™ Integrated Development Environment. It supports J2EE
and J2SE. And Rational XDE support also includes membership to the Rational Developer Network,SM a helpful online
community that provides reusable assets, Web-based training and discussion forums. We figure if someone else has
already solved a problem, why should you have to do it again? To create a better development experience without
creating new problems for yourself, get Rational XDE starting at only $1,595. Or go to www.rational.com/offer/javacd2
to get a free Rational XDE Professional Evaluation CD so you can see it and try it out for yourself.
be liberated
Rational and the Rational logo, XDE and Rational Developer Network are trademarks, registered trademarks or service marks of Rational Software Corporation in the United States and in other countries. IBM and
WebSphere are registered trademarks of IBM Corporation. Java is a trademark of Sun Microsystems Inc. in the United States and in other countries. All other names are used for identification purposes only and are
trademarks or registered trademarks of their respective companies. ALL RIGHTS RESERVED. ©2003 Rational Software Corporation.
J2ME
J2EE EDITORIAL
J 2 E E
I N D E X
Living Inside the Box
Although there is definitely a
strong push to move to a J2EE
enterprise type of environment,
migrating legacy systems to J2EE
is a formidable undertaking.
AJIT SAGAR J2EE EDITOR
J2SE
Living Inside the Box
ne of my recent clients had an
entire suite of applications that
was built on an in-house messaging framework. Several years ago, when
not many Java frameworks existed in the
market and J2EE was still a few years away,
this would have been considered a good
thing; today, any new development on a
proprietary framework takes the client further away from fully leveraging the facilities offered by J2EE. Although there is definitely a strong push to move to a J2EE
enterprise type of environment, migrating
legacy systems to J2EE is a formidable
undertaking.
While this problem can be tackled in a
piecemeal manner, one of the main issues
in such an environment is the inability to
conceptually move outside the box. Two
main thoughts float up in any architecture
initiatives – EJBs are slow and applets are
bad. These opinions are based on some
antiquated information, but can also be
attributed to slowness on the part of the
vendors to support enterprise APIs. Case
in point, not all the leading J2EE vendors
are EJB 2.0 compliant. And EJB 2.0 is really
the first release that makes EJBs worth
using in a large enterprise. Alternatives
such as JDO have only recently appeared
on the horizon.
In the absence of the main mechanisms for synchronous communication,
what should you resort to? Messaging, of
course. You can achieve every form of integration with a true and tested MOM and,
for the most part, synchronous calls can
be simulated through messaging. However, there is obviously a price to pay – performance. But if this is now the accepted
norm, any new development needs to stay
Home
J2EE
O
by Ajit Sagar
JDJ Asks…Borland
in the same box.
How did it come to this? I’d say J2EE
vendors are to blame. The Java platform is
oversold in terms of its capabilities and
promise of future enhancements. Then it
takes a long time for the market to catch
up on the promise (we all know about the
delays in subsequent releases). In the
meantime, the enterprise tries out what
currently exists in the platform, makes
go/no-go decisions, tables the rest for
later, and moves on. Moving on means
that after evaluating the alternatives, more
in-house development takes place than
necessary, and product suites are built
with an eye on the future and migration
strategies in place. However, the longer it
takes for the platform to mature, the more
the clients become ensconced in temporary solutions.
At the end, when vendors do come with
a richer set of offerings that can address
enterprise issues, it’s too late to move the
customer out of the box in which he or she
is now comfortably asleep. As a result, fullfledged J2EE application server environments end up being used for only a fraction of their abilities, such as serving up
Web pages.
One factor that consolidates the execution and development environment is the
right IDE. Disparity in IDEs and their
capabilities confuses the issue of the capabilities of J2EE and its execution environment. Fortunately, there are initiatives in
the industry for creating a common API for
Java development tools. JSR 198 - the
Standard Extension API for Integrated
Development Environments, recently submitted by Oracle, is an attempt to tackle
disparity in IDEs.
Tony de la Lama is vice
president and general manager
of Java solutions for Borland. He
is responsible for the strategic
and technical direction, business
development, engineering, and
marketing efforts of Borland’s
core Java products, including
the JBuilder development platform. JDJ readers had the
opportunity to ask him questions
about Borland and Java.
AUTHOR BIO
Ajit Sagar is the J2EE editor of JDJ and the founding editor of XML-Journal. He is the director of engineering at Controlling Factor,
a leading B2B software solutions firm based in Dallas, and is well versed in Java, Web, and XML technologies.
20
MARCH 2003
22
Alternative Approaches to
Architecting Logon and
User Management
There are myriad
approaches to architecting
logon and user management
in the J2EE environment. This
article addresses some alternative J2EE architectures as
well as the strategy and the
code for implementing each
solution.
28
by Marcia Gulesian
More Than Marketing
On November 7, 2002,
Chutney Technologies sponsored a small get-together at
New York City’s Marriott
Financial Center.
34
by Steven Berkowitz
Atlanta Java
Software Symposium
The symposium in
question was organized by an
outfit out of Colorado called
The Complete Programmer
Network. They’ve been putting on a series of these
symposia across the country,
with Atlanta being the final
stop of the year.
by Joey Gibson
[email protected]
20
36
Get beyond
metrics.
PerformaSure
TM
Now part of
Reach your J2EE performance goals.
Metrics are useful. In fact, they’re often the first step in uncovering a
performance problem in your J2EE systems. But let’s face it, it’s not
enough to detect the symptoms of a problem. You still need to solve it.
That’s why PerformaSure correlates all metrics with individual transaction
response times. It’s the difference between performance intelligence and
just plain data.
Our exclusive Tag and Follow technology traces the end-to-end
execution path of transactions through each component and server
of a distributed J2EE system, with method-level timing captured
every step of the way. Hotspots are intuitively color-coded for
further drill-down. The result? Faster, more accurate performance
analysis so you can reach your performance goals sooner.
Track down J2EE performance problems including:
• inefficient and excessive database calls
The Transaction Tree provides an end-to-end method-level view of any transaction’s
path through the distributed J2EE system. Clearly see component interactions within
• inefficient servlets, JSPs, EJBs, and Java classes
• network misuse including frequent/large object serialization
the application architecture on a per-transaction basis, with performance hotspots
highlighted in red.
• application server settings that limit scalability
(EJB caching, JDBC pool sizes, etc.)
Take a walkthrough of PerformaSure today at:
www.sitraka.com/performasure/jdj
© 2003 Quest Software, Inc. Quest, Sitraka, PerformaSure and JProbe are trademarks or registered trademarks of Quest Software, Inc. Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the United States and
other countries. All other products are trademarks or registered trademarks of their respective companies.
J2ME
Interview with Borland
ony de la Lama is vice president
and general manager of Java
solutions for Borland. He is
responsible for the strategic and technical direction, business development,
engineering, and marketing efforts of
Borland’s core Java products, including
the JBuilder development platform. JDJ
readers asked him the following questions about Borland and Java.
JDJ Asks…Borland
Home
J2EE
J2SE
T
22
MARCH 2003
<john rogers>: I have been a longtime supporter of Borland, all the
way back to the Turbo Pascal days –
what a great product! I also love
JBuilder, but I’m an independent consultant and I’m having a hard time
keeping up with the upgrade costs.
There are two problems. One, some
of the product features that I need
are in the “Enterprise” version, but
I’m not a “big enterprise” and find
that the price of the enterprise version crushes my less than enterprise
budget. The second problem is that
full version upgrades are coming out
twice a year, and there seems to be
little price breaks for your loyal followers who try to upgrade all the
time. I understand that license revenues fuel the development of additional features, but I think it would be
great to have some sort of subscription (say $500 to $1,000 per year) to
ease my small company (just me –
president and peon) budget.
<tony de la lama>: We’ve heard from a
number of customers like you who
would like to move toward a subscription model and, of course, we took the
feedback to heart. With the release of
JBuilder 8, we introduced a software
assurance program that includes support and all upgrades for a year for
JBuilder Enterprise for $750. This is, of
course, renewable. It sounds like this is
exactly what you’re looking for.
<dan doyle>: Will there be a forward
evolution of JBuilder with TogetherSoft as a complete project management tool? What does Borland view
as a complete project management
toolset?
<de la lama>: We’re releasing the initial
integration of JBuilder and Together
JBuilder Edition in the first quarter of
2003. This is a great step forward but
only the beginning of the tight integration you will see between these products.
Your second question is very interesting. Borland is committed to delivering a complete application development
life-cycle solution that includes design,
development, requirements, and configuration management and testing. Our
Java development solutions for these
activities are Together JBuilder Edition,
JBuilder, StarTeam EE, Optimizeit Suite,
and Optimizeit ServerTrace. These
products support all the major deployment platforms, including BEA
WebLogic, Borland Enterprise Server,
IBM WebSphere, Oracle, and Sun ONE.
<mileta cekovic>: JBuilder has been
my favorite Java IDE for years (and I
also used Turbo Pascal, C++, and
Delphi), but despite its six-month
release cycle, it seems to me that
JBuilder is losing its technical superiority against the competition and is
playing catch-up more and more
(refactoring, code formatting from
IDEA, Struts integration from
JDeveloper…). I’m not saying that
JBuilder copied particular implementations from other IDEs, but that it’s
copying ideas from other IDEs. Will
JBuilder continue to add original new
productivity features and maintain
technical leadership or just copy others’ ideas ?
<de la lama>: I can’t agree with your
assertion that JBuilder is playing catchup. JBuilder is the number one development environment for the Java platform. It’s built by developers, for developers, with their needs at the center of
its design. It’s clearly the developers’
favorite choice for a productive, easyto-use Java development environment.
Of course, other vendors bring out
new features – some are successful;
many fall flat. As Borland and other
players in the Java industry continue to
innovate, the best features will be
adopted on a broad basis. However, the
industry is moving beyond point features. Now it’s about how well products
integrate the phases of the application
development life cycle and integrate
with other products. What good is an
IDE if it doesn’t integrate well with different application servers? Enterprise
Java development now requires performance profiling as a part of unit testing. Why would developers want to
leave their IDE to run unit tests and performance profiling? That’s really where
the differentiation is occurring.
That being said, JBuilder will continue to evolve and deliver the cuttingedge productivity features and ease of
use that have made it number one.
<gerard lambert>: How will you
manage the competition of Rational
Rose (included in Borland Enterprise
Studio) and the modeling tool that
will result from the acquisition of
TogetherSoft?
<de la lama>: That’s pretty straightforward. Rational Rose has been replaced
in Borland Enterprise Studio for Java
with what we believe is a far superior
product – Together JBuilder Edition.
<m. allen>: Why would I want to pay
such a price for Java tools, when I
can find comparable tools at a much
lower cost?
<de la lama>: I love this question. What
you’re really asking is “Why is JBuilder
number one?”
Developers have figured out that
JBuilder is the best environment to
boost their productivity and to make
complex or tedious tasks easier – that’s
the main reason people buy tools like
JBuilder. JBuilder is designed around
Java developers and their role, by Java
developers. JBuilder supports open,
standards-based Java solutions.
JBuilder gives you the freedom to
choose your deployment platform and
Borland will be here to support you
tomorrow.
<kurtis williams>: Product after
product, Borland’s offerings almost
always stand head and shoulders
above those produced by other companies. JBuilder is no exception.
Some of those companies (most
notably one) invest substantially
more in both capital and resources.
How is Borland able to consistently
achieve this level of quality, functionality, and stability?
<de la lama>: This really comes down to
philosophy. Borland is about developers
and open standards. We’ve touched
upon this several times. Developers are
at the center of design of every Borland
product. We don’t spend money developing proprietary standards or extensions so that developers are hooked on
Borland products. We spend our
resources developing best-of-breed solutions that make developers’ lives easier
and free them from lock-in to stack ven-
• WEBSPHERE TRAINING
• PROJECT MENTORING
• COURSE LEASING
From development to
deployment, Kenetiks
shows you how to build
J2EE applications for
WebSphere Application
Server and WebSphere
Portal Server using
WebSphere Studio
Application Developer.
© 2003, KENETIKS, INC. IBM AND WEBSPHERE ARE TRADEMARKS OR REGISTERED TRADEMARKS
OF INTERNATIONAL BUSINESS MACHINES CORPORATION. JAVA AND ALL JAVA-BASED MARKS
ARE TRADEMARKS OR REGISTERED TRADEMARKS OF SUN MICROSYSTEMS, INC. IN THE UNITED
STATES AND OTHER COUNTRIES. OTHER COMPANY, PRODUCT AND SERVICE NAMES MAY BE
TRADEMARKS OR SERVICE MARKS OF OTHERS.
www.kenetiks.com
888.KENETIKS
J2ME
dors. Developers continue to buy
Borland products – not because they’re
hooked and switching costs would be
staggering – they’re not. Developers continue to buy Borland products because
they like them and they meet their needs
better than any other product.
Home
J2EE
J2SE
<matt olsen>: There has been a
recent trend in the Java/XML development tool industry to label products “Enterprise,” move some functionality from their other offerings to
the Enterprise version, and then
charge a premium for that Enterprise
edition. Borland has always had an
Enterprise edition of JBuilder, but
what has been bundled with it has
changed over the past year or two.
What does “Enterprise” mean to
Borland?
<de la lama>: Well, depending on the
context, “Enterprise” means quite a few
things. In the case of JBuilder
Enterprise Edition, it’s directly related to
Java 2 Enterprise Edition (J2EE). We,
and apparently most developers,
believe JBuilder Enterprise Edition is
the best development solution to build
applications targeting J2EE-compliant
application servers.
<sean bates>: WebGain Studio customers have seen their IDE invest-
ment go through two different acquisitions. Since Borland is now the
owner of VisualCafé and has accrued
some benefit from its acquisition, are
they planning to pass this on to WGS
customers?
<de la lama>: Many WebGain customers
have already converted to either
Together ControlCenter or Borland
JBuilder. Migration tools are already
available for both of them. This acquisition will simply make it easier for other
WebGain customers to migrate to one
of these leading application development tools.
<dave weaver>: What do you see as
the migration path for Together users
who have adopted ControlCenter as
their sole Java IDE? Will it continue
as a separate product, or will these
users eventually have to switch over
to JBuilder?
<de la lama>: Going forward, Borland
plans to invest in both the JBuilder and
ControlCenter product lines as each represents a distinct product “personality”
(code versus design-centric). JBuilder
will not be a substitute for ControlCenter
(or vice versa). Therefore, a migration
path from ControlCenter is not necessary. However, the company does plan
to converge both products onto the
same underlying technology platform
within the next 12 months and
many components used by
both product lines will be
shared. Examples include
UML class diagramming, Web
services, and pattern and
application server support.
<david lowry>: What is the
planned time frame for integrating the TogetherSoft
and JBuilder platforms?
What will be the new product and which portion of
TogetherSoft will you keep?
<de la lama>: As mentioned
earlier, Borland does plan to
converge both products onto
the same underlying technology platform within the next 12
months and many components used by both product
lines will be shared. But customers won’t have to wait that
long to benefit from an integrated product. Together
JBuilder Edition (TJBE) will be
released in the first quarter of
2003. This product delivers the
best of TogetherSoft’s modeling, audits and metrics, and
more, designed to work specifically with Borland’s JBuilder.
24
MARCH 2003
<noches bellas>: With your acquisition of TogetherSoft, what will happen now with VisualCafé? Will it get
scrapped in favor of JBuilder? If so,
will VisualCafé owners get some kind
of upgrade deal to JBuilder? Or
would you be willing to make
VisualCafé open-source software?
<de la lama>: The WebGain Studio Suite
of products was acquired by
TogetherSoft and is no longer available
for purchase or download. TogetherSoft
does continue to offer limited technical
support to existing customers with
maintenance contracts. WebGain users
can already take advantage of migration
tools available for both Together
ControlCenter and Borland JBuilder.
There are currently no plans to make
VisualCafé open-source software.
<barry gaunt>: Now that Borland has
acquired TogetherSoft, will we see a
Community Edition of Together/J that
can actually do something useful?
<de la lama>: Effective September 30,
2002, TogetherSoft discontinued support for the Together Community
Edition product. However, the
TogetherSoft Community Web Portal
continues to be a key component of
TogetherSoft’s support for collaboration
of our user base. TogetherSoft will continue to foster communication of information through active support of
forums; helpful tips and advice for our
products and services; and downloads
of productivity tools, templates, and
interfaces through the Together
Community Portal. Customers can
enjoy all the features of the Community
Edition and much more by purchasing
TogetherSoft’s Together ControlCenter
or Together ControlCenter Solo Edition.
Note: TogetherJ no longer exists as a
product, having been replaced some
time ago with Together ControlCenter,
now in its sixth generation.
<andre>: Does Borland plan to fully
integrate the functionalities of TCC,
JB, and Optimizeit along with
increased Web services, XML, and
mobile computing support ? If so:
How? When?
<de la lama>: This question goes to the
heart of the needs Borland is trying to
fill. Developers need more than an IDE –
they need a way to easily manage the
entire application development life
cycle, from requirements, design, coding, and testing to deployment. To
answer your question directly, yes, look
for Borland to continue to expand its
support and integration of the entire
application development life cycle in
future releases of JBuilder
Remember when coding was easy?
SOFIA does.
SOFIA™ is the Salmon Open Framework for Internet Applications,
a new standard in Java development, built by Salmon LLC.
It is open-source code that
you can download for free
and put to work today.
SOFIA’s powerful,
scalable framework
creates an approach
to Java Web development that makes
programming so easy
even a ... well, you get
the picture. SOFIA:
INTEGRATES TOOLS
SIMPLIFIES CODE
IMPROVES PRODUCTIVITY
■ SOFIA empowers J2EE programming
with built-in integration of best-of-breed
development tools—design tools like
Dreamweaver, and IDEs like IntelliJ
and Eclipse. SOFIA is anchored by
J2EE class and tag libraries that offer
more than 40 visual components
(Button, Navigation Bar, DataTable)
and 20 non-visual ones (DataStore,
Internationalization, Task Scheduler).
■ SOFIA’s libraries provide more than
200,000 lines of ready-to-go code.
Based on the Model View Controller
design pattern, SOFIA separates Java
and HTML/JSP. The standardized
approach means less coding, easier
maintenance and debugging, and a
fast learning curve. Instead of tedious,
repetitive coding, programmers focus
on cost- and time-efficient solutions.
■ SOFIA enhances application development and leads to real cost savings.
Its proven formula has evolved from
more than 40 successful projects led
by Salmon LLC, a Java development
firm with offices in New York, London
and Sydney. This signature framework—
battle-tested by clients that include
Fortune 1000 companies—sets the new
standard for Java development.
SOFIA SETS NEW BENCHMARKS
So, how does SOFIA measure up? We put the SOFIA .Pet to the
test against the Sun J2EE Pet Store. The results:
Sun J2EE Pet Store
Testing J2EE reference
platform implementation 1.3
SOFIA .Pet
Tomcat 4.03
Max 6 pages per second 30 pages per second
throughput (520,000 hits a day) (2,600,000 hits a day)
Lines 22,221 lines
of code in 250 files
3,563 lines
in 50 files
Download SOFIA’s open-source
code today at salmonllc.com/sofia-jdj
and discover why the other
frameworks just don’t measure up.
salmon LLC
J2ME
J2SE
J2EE
T
here are myriad approaches to architecting logon
and user management in the J2EE environment.
This article addresses some alternative J2EE archi-
Home
tectures as well as the strategy used by each alternative and the
code for implementing each solution. I’ll focus on the end user
– not the business purpose of many of today’s medium- to largescale Web apps – but my primary focus will be on state-of-theart solutions.
First, some background information on Struts and MVC
frameworks: Struts is on its way to becoming a de facto standard for developing medium- to large-scale Web-based applications on the Java platform. Struts fits nicely into the J2EE
technology stack by filling some gaps not addressed by the
servlet/JSP standard or the EJB standard. A framework can isolate the developer from the ever-changing J2EE APIs and make
it easier to get J2EE applications completed in a shorter time
frame. (Although, caveat emptor, Struts is an ever-changing
API.) A framework does this by taking care of the low-level
plumbing and difficult programmatic challenges involved
with building a J2EE application. Basically, a good framework
will do the dirty work for you. For more details, see the
References section at the end of this article.
Let’s begin with the end user at the client in Figure 1 or 2
and work our way toward the server shown in bold outline at
the right side of these figures. Figure 1 shows a filters-based
design. Filters sit between the end client and the requested
resource and are able to intercept the request before the
resource sees it. Figure 2 shows another design where frontend processing is incorporated into the application; in the latter case, changes to one component mean changes to the
application proper. Struts apps can be built either way.
Filter Strategies
Before launching into filter strategies, here’s a brief introduction to filters – a feature introduced in the Servlet 2.3 API.
The contents of the filter are written in Java and are thereby
28
MARCH 2003
flexible and easy to maintain without touching the application
code. As shown in Figure 1, filters can be chained and are able
to intercept a request before the resource sees it, and can
intercept the response on the way back to the client, including
generating their own request object for the final resource to
see and/or generate their own response to the client.
Filters, like any other Java class, can interact with external
resources such as LDAP or database servers. One practical use of
filters includes the ability to transform output to suit the presentation needs of the different client devices sending it requests.
Whether the app needs to support XML translated to HTML or
accept a WAP cell phone that’s translated to WML, filters can be
used. Filters are pluggable, so you can make changes to them
without affecting your application. Another advantage is that they
can make decisions about authentication and the like without
necessarily burning up CPU cycles running the ServletController,
Action, or ActionForm methods of your Struts application.
Filters can be implemented in two ways: the Standard
Filter Strategy (see Figure 1) or with the Intercept Filter Design
Pattern found in the Struts org.apache.struts.action.Request
Processor class (see Figure 2). Its processPreprocess() method
provides preprocessing and postprocessing of a client Web
request (and response). A detailed account of this J2EE pattern
is available in Core J2EE Patterns, and filters in general in
Professional JSP 2.0 (see References).
The standard filters strategy can be used in front of Struts
or any other Web app, while the Struts framework strategy – as
its name implies – cannot. In either case, adding the
javax.servlet.http.HttpSessionListener interface to the story,
as illustrated in Listing 1, helps you deliver login management
that runs with browsers that don’t have cookies or JavaScript
enabled. (Listings 1–3 can be downloaded from www.syscon.com/java/sourcec.cfm.) Naturally, the latter is not an
option when you’re using Struts (or other) tags that produce
JavaScript that needs to run in the downloaded page. Before
the introduction of the HttpSessionListener Interface in the
Servlet 2.3 API (J2EE 1.3), you had to write elaborate session
managers to keep track of user sessions or to determine when
a particular session was invalidated. Now you can use this one
minimal piece of code.
A Chain of Pluggable Intercepting Filters
After users are authenticated (Filter2 in Figure 1), but
before they and, possibly, their roles are looked up in a DBMS
Home
J2EE
J2SE
J2ME
(Filter4 in Figure 1), the users’ sessionID and username are
inserted into a Hashtable of active users (filter 3 in Figure 1),
unless the users are already there, in which case access to the
resources of the app is denied and the users are notified that
they are already logged in. The logged-in users are removed
from the Hashtable when they log out or are inactive for the
duration of the session timeout (typically 30 minutes).
Implementations of HttpSessionListener (see Listing 2) are
notified of changes to the list of active sessions in a Web application. To receive notification events, the implementation
class must be configured in the deployment descriptor for the
Web application. Using this relatively new interface, the onus
of keeping track of user sessions and notification is on the
container, not code written by the application developer. The
session timeout, declared in the Web app’s descriptor file
(web.xml), is the event used in Listing 2.
The helper class in Listing 3 manages the Hashtable.
To produce the same results in a Struts app as those
described above for a filter, the code in Listing 1 is written in a
LoginAction or helper class, while Listings 2 and 3 are used
unchanged. One final word on filters: just as you must be careful with multiple threads in Java servlets, be careful not to violate any thread-safety practices with filters. The servlet container may send concurrent threads to a single instance of a
filter class, and you must ensure that you don’t do anything to
cause problems between the threads. In other words, there
should be no client-specific data stored in instance variables.
Local variables are fine, just as they are in Java servlets,
because they’re stored on the stack rather than the heap.
Authentication and Authorization
Typically, a username and password will be read from a
form and compared against server-side values known to your
Web app. There are two points of integration: during the login
process and when the client requests a resource (usually a
URL). At each of these points, the application can defer to Java
Authentication and Authorization (JAAS) classes to perform
the action. JAAS is a standard extension to the Java 2 SDK v 1.3
and is a part of v 1.4. Traditionally, Java 2 provided code
source–based access controls (access controls based on where
FIGURE 1 Filter chain–based login/user management systems
FIGURE 2 Struts and (JAAS)-based login/user management systems
30
MARCH 2003
the code originated from and who signed the code). However,
it also lacked the ability to enforce access controls based on
who runs the code. JAAS provides a framework that augments
the Java 2 security architecture with such support. JAAS
authentication is performed in a pluggable fashion that permits Java applications to remain independent from underlying authentication technologies.
Of particular interest to the developer of medium- to largescale Web apps, moreover, is the direct support for the standard JAAS that Struts 1.1 offers. In Struts 1.1, you can specify
security roles on an action-by-action basis as a way to prevent
unauthorized users from finding a way to execute an action.
With JAAS, new or updated authentication technologies
can be plugged into both Struts and other Web applications
without requiring modifications to the application.
Applications enable the authentication process by instantiating a LoginContext object, which in turn references a
Configuration object to determine the authentication technology, or LoginModule, to be used in performing the authentication. Typical LoginModules may prompt for and verify a
username and password or use a smart card reader plugged
into a computer’s USB port. Others may read and verify a voice
or fingerprint sample. Authentication for a particular identity
can be provided by a Netware server, an Oracle database,
LDAP, Windows .NET, a Unix server, or a simple application
server–specific XML file.
Permissions are the heart of authorization; they control
access to resources. However, the JAAS permissions are built
on top of the existing Java security model. This model is good
for controlling access to resources like sockets and files, but
has no concept of URLs. Thus, to apply JAAS to a Web application, a new permission class must be created.
If your authentication mechanism changes (say from a
database to LDAP) you can change it without modifying your
business code. With some servers, simply change an XML file
to point to your new JAAS/Authentication module and restart.
Depending on your application, you can let the application
vender provide a prepackaged JAAS infrastructure where you
specify the details of authentication and authorization declaratively using configuration files.
The
programmatic
security
described earlier is useful when declarative security alone is not sufficient to
express the security model of your application. The security requirements of
your application can also be declared in
such a way that security considerations
can be satisfied during application configuration. The declarative security
mechanisms used in an application are
expressed in a declarative syntax in a
document called the deployment
descriptor (web.xml). An application
deployer then employs container-specific tools (or configuration files directly) to map the application requirements that
are in the deployment descriptor to security mechanisms that
are implemented by J2EE containers.
Last, while beyond the scope of this article, Single Sign On
(SSO) is a small step away once you have JAAS and LDAP in
place.
Of course, you don’t have to use JAAS at all. As Figure 2 suggests, you can simply hand code “old-fashioned” lookups to
LDAP and/or database servers. Or, in a Struts environment,
you can provide a comma-delimited list of security-role
names allowed to request a particular action. These names are
then available programmatically with the ActionConfig
.getRolesNames() method.
PERFORMANCE IS EVERYTHING!
©2002 Precise Software Solutions, Ltd. All Rights Reserved.
Give your J2EE applications lightspeed performance.
To excel in today’s business environment, your J2EE applications need to scream like a bat out of hell.
With heavy traffic bottlenecks and crawling end user response times, you’re total roadkill. Proactive detection of application performance problems is crucial to rapid resolution, and to taking the detour around
a crisis up ahead.
Precise/Indepth for J2EE correlates web, J2EE and database server performance to get to the root cause
of performance degradation, from URL to SQL and beyond™.
As Precise/Indepth for J2EE anticipates performance degradation, it instantly notifies your top mechanics
for analysis and tuning deep within the middle tier of your web infrastructure and provides automatic drilldown analysis and recommendations. This translates into streamlined J2EE web applications and lightning fast response times.
Turn up the speed limit for your J2EE applications. Talk to your
Precise account representative today at 1.800.310.4777, or visit
www.precise.com/jdj to download a free white paper on J2EE performance management and to register for an upcoming Webinar on J2EE
application performance.
Performance is Our Business
Substituting ADSI and ActiveX
J2EE
J2SE
J2ME
As a Java developer, you may sometimes be able to use
some of the functionality found in ubiquitous Microsoft network technology; it can occasionally provide a ready-made
and inexpensive solution, particularly in a low-budget
intranet environment. First, there’s Microsoft’s Active
Directory Service Interfaces, or ADSI, a programmatic interface to Active Directory domain controllers, as well as to
Windows NT and NetWare 3, 4, and later versions. What’s of
interest here is that almost all access to Active Directory takes
place with LDAP. For the Java developer, ADSI offers almost
the full range of access to Active Directory from your scripts
written in Microsoft’s proprietary Windows-limited Java 2.0
SDK, called J/Direct. But the litigious debate between
Microsoft and Sun Microsystems will probably limit your
interest in using J/Direct. However, the good news is that you
have always been able to access a subset of Microsoft’s “LDAP
server” from code written with Sun’s JDK.
As an aside, there’s the possibility of getting a user’s
Windows 2000 public credential using an ActiveX control built
into Microsoft’s IE. Here’s all the code that you need:
var WinNet = new ActiveXObject("WScript.Network");
var userName = WinNet.UserName;
Home
However, client-side authentication is problematic. A simple way to defeat this ActiveX-based approach is to “view
source” in your browser, save it to a text file, and modify the
JavaScript to always return the desired user name. However,
there’s sometimes a simple way around this shortcoming:
simply disable access to the browser’s menu.
Monitor and Control
You may need to monitor and control incoming requests
for Web resources, whether or not you choose to use filters –
blocking an authorized user’s attempt to submit a duplicate
request after he or she has unintentionally pressed a Submit
button twice, clicked the Back button and resubmitted a form,
or tried to access certain views out of order by returning to
previously Bookmarked pages. You could remedy these situations on your own by coding J2EE’s Front Controller pattern,
Command and Control strategy or, more efficiently, by using
an encapsulation of everything you need in two methods of
Strut’s org.apache.struts.action.Action class – isTokenValid()
and saveToken() – as shown in the following snippet:
if (isTokenValid(request, true)) {
// your code here
return mapping.findForward(Messages.success);
}
else{
saveToken(request);
return mapping.findForward(Messages.other)
}
AUTHOR BIO
Marcia Gulesian is a
senior software engineer
and health information
analyst at Children’s
Hospital Boston. She is
the author of more than
100 technical articles on
distributed applications
and the systems that
support them.
32
MARCH 2003
When this code is run, a unique token, generated using the
session ID and the current time, is stored as an attribute in the
session, and, in parallel, the JSP responsible for generating the
HTML creates a parameter in the request as a hidden form
field when you use the Struts <html:form> tag.
The isTokenValid() method determines if there’s a token
stored in the user’s current session, and the value submitted as
a request parameter with this action matches it. This method
returns false under any of the following circumstances:
• No session associated with this request.
• No token saved in the session.
• No token included as a request parameter.
• The included token value does not match the token in the
user’s session.
If there’s a match, we’re certain the request submission is
not a duplicate. If the tokens don’t match, the request will go
through the else block where a new token will be saved in the
user’s current session, creating a new session if necessary.
In your rush to exploit these elegant solutions, don’t forget
to consider earlier, sometimes much-simpler techniques that
we’ve “always” had available. For example:
if (username==null && password==null)
{
((HttpServletResponse)response).sendRedirect("/Login.jsp")
;
}
can eliminate the bookmark problem. And, setting a flag and
then disabling a button after first use can eliminate the problem caused by pressing a Submit button twice.
Validation of User Inputs
Finally, no article on user behavior would be complete without at least a brief mention of validating user inputs. Validation is
another one of those “growth industries” from which you can
pick and choose from a number of possible solutions – client and
server side. While a regular user of the former, I’ll limit myself
here to the subject of pattern matching on the server side. In the
past, to pattern match using the Java programming language
required the use of the StringTokenizer class with many charAt
substring methods. This often led to complex or messy code. But,
J2SE version 1.4 contains a new package called java.util.regex,
enabling the use of regular expressions. The Apache Software
Foundation now provides org.apache.regexp.RE, an efficient
lightweight regular expression evaluator/matcher class. It
enables sophisticated matching of strings against a pattern and
extraction of parts of the match. Then there’s what I’ll call the
“industrial-strength validation alternative” provided for Struts
apps, the Struts Validation framework. With it, you can wind up
writing a lot of boilerplate XML for every form and for every field
of every form. On the other hand, the validator does reduce the
amount of validation logic you have to write.
Conclusion
While you have a great many state-of-the-art bells and
whistles available to you for consideration in your next medium- to large-scale Web app, you also have some tried, true,
and frequently overlooked resources sitting unused in your
browsers and at your servers. While I’ve concentrated on monitoring and controlling the end user, the same philosophy – of
always looking for a simpler route – should also be applied to
any design aspects of your app.
References
• Turner, J., and Bedell, K. (2002). Struts Kick Start. Sams .
• Struts tutorial: http://jakarta.apache.org/struts/doc1.0.2/userGuide/index.html
• Alur, D., et al. (2001). Core J2EE Patterns. Prentice Hall.
• Struts 1.1 API: http://jakarta.apache.org/struts/
api/index.html
• JAAS in Struts: www.mooreds.com/jaas.html
• JAAS tutorial: http://java.sun.com/products/jaas/index10.html
• Li, S., et al, (2003). Professional JSP 2.0. Wrox Press.
[email protected]
G
T
A ED
S
4
U ES 1
C 5
IT VI #
IS R H
V E OT
S
B BO
E
W
DESIGN ONCE...
E
SQL Builder
or Write Your
Own SQL
Multiple Data Sources:
DB
EJB
XML
API
Run Time
Group/Sort
Dynamic Parameters
Property
Inspector
Re-usable
Components
Drilldown, Hyperlink
REPORT ANYWHERE.
Printer, Postscript
Flexible API’s
Integration with
App. Server, LDAP, etc.
Excel
Email
Data
API SQL
Server
XML
EJB
DB2
JR
© COPYRIGHT 2002 JINFONET SOFTWARE, INC. ALL RIGHTS RESERVED. JREPORT AND JINFONET ARE TRADEMARK OF JINFONET SOFTWARE, INC. OTHER TRADEMARKS BELONG TO THEIR RESPECTIVE HOLDERS.
Instant Design/View
ep
Oracle
JREPORT
o rt
Sc a
la ble
Server Clu s t e r
PDF
HTML
TM
JReport lets you take your reports anywhere you want.
Imagine creating reports that pull together data from virtually anywhere, arranging them any way you wish, and delivering them precisely – whether in pure HTML, PDF, Excel,
XML, JSP, email, or your network printer. Imagine having
ad hoc reporting ability to create or modify reports on the
fly, right from the end user’s browser.
And all this is built on 100% J2EE architecture, to provide
secure, reliable, scalable performance and easy integration
with your enterprise systems. You can count on JReport:
any report, any format … anywhere.
FREE DOWNLOAD! VISIT www.jinfonet.com/j3.htm OR CALL 301-838-5560
Show Reviews
More Than Marketing
Home
J2EE
J2SE
J2ME
by Steven Berkowitz
On November 7, 2002, Chutney Technologies sponsored a
small get-together at New York City’s Marriott Financial
Center. When Alan forwarded the invite to me, my first
thought was, “Goodie. Nothing about Web services.”
As it turns out, that wasn’t entirely true, but Web services
was not the focus. They just came up as incidental to everything else.
The day started with a presentation by Charles Francois, Sun’s
chief architect for Sun ONE. Francois talked about the Sun ONE
set of products and was followed by Chris Riley, senior technology evangelist from Cape Clear, who spoke about their own
CapeConnect software. These were straight marketing presentations. You may well have uses for these products, in which case
you should visit their respective Web sites to learn more since
such presentations don’t leave me with much of my own to say.
The third presentation was given by Dr. Anindya Datta,
cofounder and CEO of Chutney Technologies. I was a little
concerned that this was going to be another hour of mere
marketing. Had that been the case, you wouldn’t be reading
this now. Yes, Chutney had a product to sell (an out-of-process
object storage solution called Apptimizer) and, of course, they
would love for us all to buy it. But rather than simply tell us
about the product, Dr. Datta presented an in-depth explanation of the problem Apptimizer solves. The slides were largely
about the vicissitudes of object creation, object destruction,
and garbage collection. Maybe it was his command of the subject matter, maybe his quiet passion for the topic, but Dr.
Datta presented a compelling case for external object storage.
34
MARCH 2003
There is a lesson here for marketers. Don’t just tell me about
your product. Don’t just tell me about people who have used it
successfully. Show me a problem and then show me how to solve
it with your product. Dr. Datta didn’t mention his product by
name until slide 42 of a 54-slide presentation. Yet, as a marketing
tool, his was the most effective of the three presentations.
After lunch, Bijesh Jacob, senior architect at Marsh, Inc.,
told the tale of how they implemented the portal at
Marsh.com. Something fascinating came out during his talk:
when trying to scale the portal, Marsh’s J2EE server crumbled
under the heavy load. Jacob couldn’t tell us which server since
Marsh had signed a nondisclosure agreement with the vendor.
Hey, vendor, whoever you are, shame on you.
After Jacob’s presentation there was a panel discussion
consisting of Jacob, Riley, Dr. Datta, and Edgar Holcomb from
JP Morgan. The real meat of this discussion revolved around
Morgan’s experiences with implementing their own portal.
A servlet-based application running on WebLogic,
Morgan’s portal is an example of how Web services are being
used right now. This project is serving as Morgan’s Web services proof of concept. The business units using the portal are
free to write their portlets in whatever language(s) they wish
as long as they provide clear SOAP interfaces. However,
Holcomb said the portal developers worked very closely with
the business units on this project to make sure everything
worked the way it had to.
Okay, think about that for a minute. Web services promises interoperability between applications. Morgan acknowledges, even embraces this, in theory. However, in their first
actual implementation of Web services, they refused to take
eed to develop Web services quickly and economically?
Sun™ ONE Application Server and Sun ONE Studio for
Java are completely integrated—giving you full Java IDE
capabilities. This means you can develop applications in
Solaris™, Linux®, or Windows® environments and easily
deploy to Sun ONE Application Server 7.
The Sun ONE Application Server has already
established a reputation for being easy to
install, easy to configure, and easy for systems
administrators to monitor.
As part of our commitment to bringing
you innovative solutions, Software Spectrum
& Intraware now give you the chance to
evaluate it FREE*. Just go to
www.intraware.com/evalapp/
For more information about Sun ONE Application
Server 7, Sun ONE Studio or other Sun ONE
products and services, call 800-469-4313 or email
[email protected]
*This offer is only available through June 30, 2003
and is only available in the U.S. Software products
are available for evaluation and development
purposes only.
Log on to
www.intraware.com/
evalapp/ and register for a
free evaluation of Sun ONE
Application Server 7 and
Sun ONE Studio.
Plus, with each evaluation
you will receive a FREE
copy of “Designing
Enterprise Applications
with the J2EE™
Platform”—a $45 value!
The Software Spectrum &
Intraware Alliance: among
the leading Sun ONE
resellers in North America.
© 2003 Software Spectrum Licensing, Inc., SOFTWARE SPECTRUM®, the GLOBAL GUY® design and SOFTWARE SPECTRUM Buy.Manage.Simplify.SM are registered
service marks of Software Spectrum Licensing, Inc., a wholly owned subsidiary of Software Spectrum, Inc. All other marks are the property of their respective
organizations. Software Spectrum makes no warranties, expressed or implied, in this summary.
the hype on faith. While the business units are
said to be free to use whatever technologies they
want, the reality was that they were hand-held
through this process by the portal group – a cautious and rational approach. They see the promise and want to make sure the technologies can
live up to it.
Holcomb says that they are very happy with
how things are working and he sees more such
projects in the future. As they move forward, the
business units will implement things as they see
fit. This will be a project to keep an eye on, perhaps even a barometer of the future of Java-based
Web services.
Once again, some of the best information presented at this seminar was not on the menu. A little digging turned up some interesting facts
about some real-world projects. The advice I gave
in “Good New for the Java Universe” (JDJ, Vol. 7,
issue 11) still holds. Go. Ask. Listen. Learn.
Atlanta Java Software Symposium
by Joey Gibson
I arrived at the Norcross Marriott (which is
about 20 yards as the crow flies from my office at
BravePoint) at 12:15 on Friday, November 15, the
first day of the symposium.
The symposium in question is the Atlanta Java
Software Symposium, organized by an outfit out
of Colorado called The Complete Programmer
Network. They’ve been putting on a series of
these symposia across the country, with Atlanta
being the final stop of the year.
Seated at the registration desk was symposium organizer Jay Zimmerman, who greeted me
warmly as I introduced myself. I was presented
with a conference folder containing an updated
schedule, session evaluation forms, and most
important, a CD-ROM containing all presentations from all presenters for the entire show in
PDF format. This is a very nice touch that more
conferences should emulate.
I briefly spoke to Jay, who told me that their
method of getting the word out about their symposia is to provide, gratis, big-name speakers at
local Java user group meetings who will plug the
upcoming shows. Speaking at the Atlanta Java
User Group back in September was James
Duncan Davidson, creator of Apache Tomcat and
Ant.
Sporting an impressive list of speakers including the aforementioned James Duncan Davidson,
Erik Hatcher, Grant Holland, Jason Hunter, and
Bruce Tate, this symposium proved to be a fun and
informational experience. With attendance limited
to just 200, there was plenty of room to move
around and relax during the sessions. I must admit
it seemed a bit odd at first for a conference to run
Friday through Sunday, but it hit me how useful
this would be for local companies. Since these symposia are being done in several cities, local companies could send entire teams and not lose several
man-weeks of productivity. This is by design. And
with the cost of attendance just $695 (with group
discounts) including five meals, this thing is a steal.
The motto of this symposium series is “No
Fluff, Just Stuff” and it absolutely lived up to it.
J2ME
AUTHOR BIOS
J2EE
J2SE
Steven Berkowitz has
done development
and project
management for
Fortune 100
companies, startups,
and nonprofit
organizations. He is
the founder of
techniCrafters, which
provides Web
development services
to small businesses
and municipalities.
Home
Joey Gibson is a
senior consultant and
instructor for
BravePoint, a
consulting company
in Atlanta, GA. He is
the coauthor of Ant
Developer’s
Handbook published
by SAMS.
38
MARCH 2003
I’ve been to JavaOne several times and have walked out of sessions within seconds because they were nothing more than
marketing pitches. This didn’t happen a single time during
this symposium. With the slight exception of the opening
night’s keynote from Sun (which I’ll get to shortly), almost all
the material covered was applicable for any product from
open source to proprietary, and was free of marketroid-speak.
It was about techniques, tips and tricks, and how to best get
the job done. No fluff, just stuff.
Most of the sessions were an hour and a half in length, but
on Saturday some of them were three hours. Topics included
Ant (a personal favorite) and friends including XDoclet and
JUnit, Struts, JMS, design patterns, anti patterns, and JDO.
Sessions ranged from introductory to advanced and there
were even a few you wouldn’t expect at a Java symposium,
such as Ruby (another personal favorite) and a session
extolling the virtues of Mac OS X.
Opening night featured Daniel Templeton from Sun delivering the keynote address. He gave a sort of roadmap of where Java
is going. He spent quite a bit of time talking about Sun’s view of
Web services and JAX-RPC. It was an interesting talk, even if it did
border on marketing a few times. He was heavily pushing JAXRPC as opposed to other Web services toolkits, but that’s to be
expected. Oddly, he also talked about using Jini for Web services.
Technically speaking, this does fit the Web services definition, but
it takes out the interop piece since Jini is Java-only. He also discussed how in the future the J2ME platform would have SOAP
access, an interesting thing to say the least. One amusing comment from Templeton (while discussing J2EE 1.4) as he took a
friendly swipe at IBM was “IBM asked Sun to delay the release of
J2EE 1.4 because WebSphere was so far behind. We politely
declined.” This was greeted with chuckles from the audience. He
also pushed Sun ONE App Server for J2EE saying that it is definitely not iPlanet: “We buried that thing and danced on its grave.”
He followed this up with “Sun has a history of killing application
servers,” a reference to Sun’s purchase and subsequent offing of
NetDynamics, which was, again, met with laughter.
The keynote was followed up by an expert panel roundtable discussion with several of the presenters. Jason Hunter, of
servlets fame, was one of those. He spoke of how “JSP was created for marketing so Sun could sell something competing with
ASP,” and how he prefers the Tea (http://opensource.go.com)
technology to JSP. (Servlets.com is built using Tea.) I found this
interesting and decided to look into Tea some more.
As for the technical sessions, the content was excellent. One of
the presenters, Sue Spielman, was stuck in Denver so Erik Hatcher
stepped up to the plate to take over her sessions. He was already
scheduled to present three or four sessions, so he was certainly the
hardest working man that weekend! Dave Thomas was also
unable to attend, so Glenn Vanderburg filled in for him. I attended sessions on XDoclet, anti patterns, JDO, Castor, Ruby, EJB,
JAAS, and a few others. I started to take notes, but not only did I
have the CD-ROM with all the presentations, there were printouts
available at the beginning of each session, so I didn’t have to write
everything down. I could just make annotations as necessary.
What’s the takeaway point from all of this? These symposia
are extremely affordable, especially if a company were to send
a group of employees, and the content is exceptional, making
for a great value. I couldn’t have been more pleased with how
it went. I’ve been raving about it to colleagues and friends and
have been putting to good use several of the things I learned
there. I can’t wait until next year! I would suggest to anyone
who wants to attend a conference next year to see if one of the
Complete Programmer Network’s symposia is coming to your
town. Details about upcoming symposia can be found at
www.nofluffjuststuff.com. It will be well worth it.
[email protected] & [email protected]
J 2 S E
I N D E X
J2ME
J2SE EDITORIAL
JASON BELL J2SE EDITOR
Can the API
Docs Be Improved?
J2SE
Can the API Docs Be Improved?
T
Home
J2EE
he Java Dudes cartoon on the back
page of JDJ has boosted my reputation as someone who likes the
API documentation for the core Java language. It’s easy to navigate, it’s quick, and it
answers some of those common Javarelated questions. There are a couple of
questions that are constantly on my mind.
First, with such a rich resource of information, why do programmers (of all abilities)
whom I have contact with fail to look at
the API docs in the first place?
One theory is that there’s a lack of detail
about using some of the methods listed.
Now, I know of sites like Java Almanac
(www.javaalmanac.com) that provide good
examples on how certain methods are used,
but I do think these should be woven into
the general API docs. Beginners would benefit from having a resource on their own system that would also provide general examples on how that class or method should be
used without having to sift through the
example code (can you remember when
you last looked at it, I can’t!).
There are small snippets of examples
within the main class explanation; my goal
would be to have a small code segment for
the methods as well as a quick indication
that I’m going in the right direction. The
more that’s added to the API as time goes
on, the more that’ll have to be documented. Obviously, there’s a whole book-writing
segment of the community who makes a
living from bundling these examples into
API reference books. Patrick Chan (and his
team) has done an excellent service for the
Java community with the Java Developer’s
Almanac and has obviously spent a lot of
time looking at all the classes (hey, if you
want music MIDI class information, it’s in
there). The same is true for David
Flanagan, who wrote the Java Nutshell
series for O’Reilly; he even wrote Java
Examples in a Nutshell as the API reference was so large it was pushing examples
out.
Apart from increasing the size of the
download of the documentation, I don’t
see why Sun can’t improve the example
usage of methods with all the APIs regardless of whether it’s J2SE, J2EE, or J2ME. The
API docs should be the first point of reference for the programmer to help solve the
problems. The more people I talk to, the
more I’m reduced to pointing to the API
docs (mainly on IRC). Now it’s either down
to plain laziness or the information that’s
presented is not up to the job. I agree that
there are a number of Web sites with more
information, but it becomes a major task
to search these sites and get the required
information. I’m finding that students in
teaching establishments tend to ask questions without consulting these sites.
If anyone from Sun Microsystems is reading this, their blood pressure is probably rising on the simple issue of time management
and what to include and what not to include,
if any of my small wishes come true. What we
could do is pick a couple of methods and
write an easy example. These would then be
checked and verified by Sun (because we
don’t want anything going into the API docs)
and then it could be released. Now I do know
that this means changing the JavaDoc statements within the actual class code, but most
people install Java with src.zip installed, so I
think it’s worth thinking about.
I’ve looked at many open-source projects and documentation is the area where
most things fall apart. We have to look at
the whole picture regardless of how big the
application is; even if it’s a demo I want to
know how it works. The SourceForge projects I’m involved in are pretty weak on
documentation and I try to rally the troops
to properly write about what they’re doing
and thinking within their code. It’s like trying to land a plane and asking, “What does
that dial over there mean?” “Well, Jase, it
doesn’t say anything, apart from the fact
that it’s being written at the moment.” We
can do better; we can do better.
[email protected]
AUTHOR BIO
Jason Bell is a programmer and chief technical officer for a B2B Web portal in York, England. He has been involved in numerous
Web projects over the past five years, the last two of which have been servlet-based.
40
MARCH 2003
The Java Dudes cartoon on
the back page of JDJ has
boosted my reputation as
someone who likes the API
documentation for the core
Java language. It’s easy to
navigate, it’s quick, and it
answers some of those common Java-related questions.
40
by Jason Bell
Java Data Object
Java Data Object (JDO) is
a standard API generically
used to store, retrieve, and
query user-written object
classes to and from a data
store. JDO provides transparent persistence so it’s easy
for developers to persist
objects without doing any
extra work.
42
by Teresa Lau
Rebel Without a Clause
Rather than provide general guidelines (most of which
are well known), we decided to
reveal what we call anti-patterns: (unfortunately) common
bad programming practices
that we’ve seen time and again
in Java code. Our purpose is to
familiarize you with these
counterexamples so you can
quickly spot them and avoid
them.
by Craig Dewalt and Max Tardiveau
48
J
J2ME
Java Data Object
J
J2SE
Home
J2EE
What makes JDO stand out among
other persistence options is that it’s easy
to use and flexible.
JDO provides transparent persistence so it’s easy for developers to persist
objects without doing any extra work.
The tedious and routine persistence
work is offloaded to the JDO vendor,
leaving developers with time to concentrate on the business logic. In addition,
JDO is flexible because it can work on
any data store. While JDBC provides persistence only for relational databases,
JDO is more generic, providing persistence for any data store, for example,
relational databases, files, XML and
object databases, etc., making applications very portable.
Overview
Metadata and Enhancer
In JDO, any object class to be persisted needs to be PersistenceCapable,
while any class that references a persistence-capable object needs to be
PersistenceAware. The good news is that
with JDO transparent persistence, you
don’t have to program your class to
implement PersistenceCapable or
PersistenceAware. Just write your object
FIGURE 1 Table design
class as usual, and the JDO vendor
implementation will provide an
Enhancer that will make your object
class PersistenceCapable based on the
metadata you provide. The only extra
work you need to do is to write a metaMARCH 2003
O
B
A
S
I
C
S
Works transparently on any data store
ava Data Object (JDO) is a standard API generically used to
store, retrieve, and query user-written object classes to and from
a data store.
WRITTEN BY
TERESA LAU
42
D
data file in XML for your object. Listing 1
shows the metadata that I’ll be using
later in my code example. (Listings 1–7
and the code examples for this article
can be downloaded from www.syscon.com/java/sourcec.cfm.)
The metadata is usually short and
not hard to write because by default,
JDO already derives a lot of information
from the object class. Specify information in the metadata only when:
• You need to override JDO default
behavior, e.g., making a field nonpersistent even though it’s not transient.
• There’s information JDO can’t derive
from the class definition, e.g., which
field is the primary key or what kind
of object is inside a Collection.
PersistenceManager
With object classes enhanced, you
can then persist the object by using a
PersistenceManager. To get a PersistenceManager, first specify a Property
object, which usually contains:
• Data store connectivity information
• JDO vendor class name
• Default settings for the PersistenceManager
Lines 2–3 in Listing 3 show how you
can get a PersistenceManager from a
JDOPersistenceManagerFactory
by
specifying a Property object. Once you
have a PersistenceManager, you can use
it to add, update, delete, and query
objects (which I’ll discuss in the next
section). When you’re done, close the
PersistenceManager to free up its
resources at the end.
Listing 3 shows code fragments of
how you can persist and query objects
using JDO. With a PersistenceManager
pm, you can add a new object to a data
store by makePersistent (Lines 6–8). An
object only needs to be made persistent
the first time it’s known; once an object
is already makePersistent, you can
update the object directly by referencing
its fields. All changes to that object will
be saved to persistence storage when
the transaction commits. If you don’t
like those changes, roll back to undo
them (Lines 15–17). Similarly, you can
delete an object with deletePersistent
(Line 26).
To access objects in the data store,
iterate through an Extent, which is the
logical representation of all persistent
instances of a given persistence-capable
class (Lines 12–15).
However, if you want to be more
selective and get only a subset of
instances of a given class, create a query.
To do this, pass a Candidate object and a
Filter to the method newQuery. The
Candidate object is a set of objects to
select an instance from; it can be a collection of objects or an extent. The filter
is a string written in JDO Query
Language (JDOQL). Once you create the
query, execute it and get back a collection of instances that match (Lines
22–26). JDOQL is the query language for
JDO; it’s somewhat similar to SQL but
has a Java syntax. The example here is a
simple one; with JDOQL, your Filter
string can be much more sophisticated.
In addition, if you declare parameters to
act as placeholders in the filter string,
you can write a single query and then
execute it multiple times, supplying new
values each time. There’s a lot more to
JDOQL that you can read up on; please
refer to the links in the Resources section.
A unique thing about JDO’s query
capability is that once you get an object,
you can navigate to any other object referenced by that object. Frequently, all
PROPERTIES FOR JDO
Listing 2 provides the Property file that I’ll
use later. I’m using a relational data store and
Lines 1–4 contain JDBC connectivity information. Line 6 contains the name of the JDO vendor class I’m using. Lines 8–10 are the default
settings I want for the PersistenceManager. It
specifies that I’m using optimistic transaction,
and that values in the cache should be restored
on a transaction rollback, and should not be
retained on a commit. There are many more
details on how you can use different options for
transactions; read the JDO API to find out what
they all mean and when to use them.
J2SE
J2ME
J
J2EE
FIGURE 2 Data in table
D
O
a HashMap that may store any number of
attribute value pairs for that Block.
Listing 5 shows a test Book I created
for my example. This Book contains two
chapters: Chapter 1 has one section and
Chapter 2, two. In particular, Chapter 2
has an attribute Color=Red.
Using this Book class, I want to
implement some common persistence
features as follows:
• Add: See if I can successfully add two
books to a data store, and that when I
add a third book with the same name,
an exception is thrown because the
integrity constraint is violated for the
unique book name.
• Update: See if I can update a Book by
adding an attribute “Comment” to its
root Block. When I commit, the
change should be saved, and if I roll
back, the change should be discarded.
• Delete: See if I can look up a book by a
query and delete it from the data
store.
Home
Without JDO, my usual way to implement this would be to design relational
database tables to store all the data contained in a Book, then use SQL and
JDBC to store/retrieve that data to/from
the tables. Due to space constraints, I
won’t show you my JDBC implementation here, but you can download it from
the JDJ Web site if you’re interested.
Note that to implement the above features in JDBC/SQL, I have to write quite
a lot of code (480 lines!). What I’m going
to show you now is a much shorter way
to address the same problem using JDO.
FIGURE 3 JDO implementation test result
you need is to get a starting point object,
and you can already get to any object
related to it without having to run
another query.
An Object Persistence Example
To find out if JDO is as good as promised, I’ll write some code using JDO and
JDBC to persist a Book object that I created (see Listing 4). This Book object
contains a name and a Block object. To
make things interesting, a Book has a
constraint that each book is uniquely
defined by its name, meaning that
you’re not allowed to add two books
with the same name.
A Block is a building block for a Book.
It can be of type Document, Chapter, or
Section. The root Block is of type
Document and can contain any number
of Chapter Blocks. Each Chapter Block
can also contain any number of Section
Blocks, so there’s a recursive relationship
here for Blocks. Within each Block, there’s
44
MARCH 2003
Persisting a Book Object Using JDO
To persist a Book object in JDO,
although I’m using exactly the same
object class as I would use if I implemented this in JDBC, the ID field in the
Block object is now unnecessary. If I
implement this in JDBC, the ID field
would be needed to internally reference
a different Block from the database
table. However, using JDO, I don’t have
to worry about populating this field
since JDO will handle that internally.
To persist my Book object, I create
metadata for both a Book and a Block
(see Listing 1). In the metadata for
Block, I specify that the object in the
Collection children is of type Block
(Lines 10–11), while the key and value
for HashMap attributes are of type
String (Lines 12–14). Also, since the ID
field is not really needed for the Block
object, I specify in the metadata that
there’s no need to persist it (Line 8). In
the metadata for Book, I specify that nm
is the primary key of Book (Line 5), and
that the Book object should use my
B
A
S
I
C
S
JDBC IMPLEMENTATION
Here I’ll briefly describe how I implement
the persistence of Book using JDBC. By
knowing how much work is involved in this,
you can better appreciate how much JDO
does for you.
To persist Book to a relational database, I
created four tables (see Figure 1). Based on
data integrity, the nm field in the Book table is
defined as a unique key. To trace the relation
between each Block to its children and attributes, I assign a blockId to each Block. This
blockId is generated (by incrementing 1 to the
largest blockId in the Block table) every time
a new Block is added.
Adding a Book object involves denormalizing the information within a Book object into
four tables: Book, Block, BlockRelation, and
BlockAttr. In particular, a blockId has to be
generated for each Block. Furthermore, the
tedious part is that Blocks are recursive, and I
have to write code that recursively inserts the
Block data.
For the example Book created in Listing 5,
the tables will be populated as shown in
Figure 2. As you can see , one Book is translated into many rows in four tables, so all
inserts have to be wrapped in a transaction so
that a Book is added all or none, never partially. Similarly, deleting a Book involves finding the appropriate rows to delete in each of
the four tables, while wrapping all deletes in a
transaction so that a Book is deleted all or
none.
For better performance, I don’t want to
query four tables to recursively generate the
Book object every time someone asks for a
Book. Instead I created a BookCache that I
populated at the beginning by generating all
Book and Block objects from the four tables.
As I add, delete, and update Books in the
database, my code ensures that the
BookCache is kept in sync. As a result of all
this work done in maintaining a cache, to get
a Book is as easy as looking up the cache by
its name.
user-defined Application Identity
BookKey as the object identity class
(Line 4). The code for the class BookKey
can be found in Listing 6.
In this example, the JDO Vendor
implementation I use is Kodo JDO
(which uses a relational database).
There are many JDO implementations
in the market; you can choose to use any
of them, and your application code
doesn’t need to be changed. For the data
store, I use Enhydra InstantDB (a relational database included with the Kodo
distribution). The essence of JDO is that
the developer does not need to know
how the vendors persist data to a database, so I don’t need to design any table
here even though we are using a rela-
J
J2ME
tional database behind the scenes. The
vendor Kodo provides a tool called
schematool to help me create those
tables based on my metadata. All I need
to do now is run the following to prepare
the database for my object.
schematool –action refresh Book
schematool –action refresh Block
J2SE
Next I compile my object classes as
usual, then using Kodo’s enhancer tool
jdoc, I enhance my class file by running:
Home
J2EE
jdoc.Book
jdoc.Block
jdoc.BookPersistJDO
AUTHOR BIO
Teresa Lau has been
an independent Java
consultant for over
five years, with an
emphasis on financial
systems. She holds an
MS in computer science and currently
works in New York.
46
MARCH 2003
Here, as long as I put the unenhanced
class files (Book.class, BlockPersist.class,
BookPersistJDO.class) and the metadata
file in a location where jdoc can find it,
jdoc will then modify the bytecode of
these classes to add methods necessary
to make them PersistenceCapable or
PersistenceAware. Classes with metadata
will be enhanced to PersistenceCapable,
while classes without metadata will be
enhanced to PersistenceAware. In this
example, Book.class and Block.class are
enhanced to be PersistenceCapable
while BookPersistJDO.class is enhanced
to be PersistenceAware.
Once I’ve enhanced my code, any
persistence work for my object can be
done via the PersistenceManager. Using
the code I showed you previously, I can
easily get a PersistenceManager pm and
then add, delete, or update a book using
it. Listing 7 shows fragments of my code
BookPersistJDO.java. The method
addBook (Line 3) shows how I add a
Book in JDO, and the method
deleteBook (Line 13) shows how I delete
a book.
To get a Book with a given name, I
create a query using a Filter written with
JDOQL. Executing the query, I get back a
Collection of Book object that matches
this query (Lines 25–29). Once I get a
Book object, I directly update its field
and then commit the changes.
Figure 3 shows the results of running
my test on this implementation. The
results are as I expected. First, I successfully added books to the data store, and
when I add a book with the same name,
it gives me a JDOUserException, showing that the unique book name integrity
is violated. Next, I’m able to update a
book, then keep the changes by committing, or discard the changes by
rolling back. Last, I’m able to query the
data store to get a book by its name, and
then delete the book from the data
store.
D
O
NOT YET PERFECT
Despite all its advantages, there are still
areas where JDO may not be perfect yet:
• It’s good for new development, but to
convert existing schema in a relational
database to use JDO requires a bit of
mapping work.
• As developers, we no longer deal with
lower-level database access when using
JDO, so it may be hard for us to tune performance. Since JDO implementation has
to do a lot of extra work tracking the fields
that are changed or synchronizing cache
internally, etc., how well the JDO vendor
implements it will be critical to performance.
• JDOQL does not have an aggregate function such as max, min, and sum like SQL
does.
• It would be nice if there were better
checking to catch bad JDOQL at compile
time. For example, in a Filter, when you
specify the field name in the class via a
string, you can easily have specified a bad
field name resulting in a JDOQL that will
compile, but fail at execute time.
• Some people thought that JDO’s advantage is that you don’t have to write SQL
anymore; the truth is now you have to
learn to write JDOQL instead!
B
A
S
I
C
S
each Block to use as a link for the
child/parent relationship. In the JDO
implementation, I don’t have to think
about any of that, and everything is
already persisted correctly.
4. The effort I put into maintaining a
cache for performance in my JDBC
implementation is not needed in JDO,
because the JDO vendors are the ones
who would implement data caching
for performance improvement. That
saves me a lot of work because I don’t
have to worry about keeping my cache
in sync with the database all the time.
Behind the scenes, the JDO vendor’s
implementation and my JDBC implementation are probably not much different. For
example, this JDO vendor, using a relational
database, may also have implemented it
with a similar table design and ID generation scheme, and used JDBC to persist the
data. However, the important point is I don’t
have to know about these implementation
details: they’re all offloaded to the JDO vendor who has expertise in that area, and who
would likely implement it better. In addition, the vendor is also free to implement it
with any other kind of data store like object
databases and files, giving us more flexibility and choices on where to store the data.
Comparison of Implementations
Conclusion
By using JDO and JDBC to tackle the
same problem of persisting a Book
object, I observed the following:
1. Using JDO, I’m able to achieve the
same things I can achieve with JDBC. I
can query objects using JDOQL; maintain data integrity by specifying the nm
of a Book as a unique primary key; and
add, delete, and update my object.
2. JDO makes my transaction handling
easier. In my JDBC implementation,
because one Book object actually
translates to many rows in four different relational tables, I have to ensure
that all inserts or deletes to tables are
done in a transaction. On the contrary, JDO saves or deletes the whole
object to the database in one operation, and I don’t need to use transactions to maintain the atomicity of the
action.
3. The fact that BookPersistJDO.java
(140 lines) is so much shorter than
BookPersistJDBC.java (480 lines)
shows that JDO simplifies my code a
lot. This is especially so given the
recursive nature of my object and how
complicated it is to represent it in
relational tables. In my JDBC implementation, I have to put a lot of
thought into the design of my tables
so I can store and retrieve the recursive data. I have to generate an ID for
JDO offers a lot of advantages for
developers:
• It has all the basic functionalities
needed for data persistence: add,
delete, update, transaction, data
integrity, and data caching.
• It takes over a lot of tedious work from
the developer, making code easy and
maintainable.
• It’s vendor independent, preventing
vendor lock in.
• Although my example doesn’t show it,
it can work on any data store, making
development flexible and portable.
JDO is a technology that’s worth
exploring. This article is a starting point
for you; for more information see the
resources section.
Resources
• The One-Stop Site for JDO: www.jdocentral.com
• The Specification: http://access1.sun
.com/jdo/
• Roos, R. (2002). Java Data Objects.
Addison Wesley: www.OgilviePartners
.com
• The JDO Vendor I used in my example:
SolarMetric: www.solarmetric.com/
Software/Kodo_JDO
[email protected]
www.objectventure.com
Have You Experienced
The Power Of Patterns?
TM
Enforce
Architecture
Simplify Development
Share Best Practices
Implement Reuse
TM
ObjectAssembler Enterprise
Download a FREE trial copy of the development
environment with the most advanced Patterns and
Struts support available.
Sign up for our FREE Patterns Tutorials.
Visit http://www.objectventure.com/tutorials
J2ME
J2SE
J2EE
D
Home
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
o you consider yourself a Java expert? Think you know
everything about exception handling? Can you quickly spot the six exception handling problems below?
OutputStreamWriter out = ...
java.sql.Connection conn = ...
try {
5
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(
"select uid, name from user");
while (rs.next())
{
out.println("User ID : " + rs.getString("uid") + 6
", name : " + rs.getString("name"));
}
conn.close();
3
out.close();
}
catch(Exception ex)
2
{
ex.printStackTrace(); 1-4
}
Every Java developer should be able to spot at least two. If
you can’t spot all six, read on.
Rather than provide general guidelines (most of which are
well known), we decided to reveal what we call anti-patterns:
(unfortunately) common bad programming practices that
we’ve seen time and again in Java code. Our purpose is to
familiarize you with these counterexamples so you can quickly spot them and avoid them.
Now for our hall of shame – the six most common misuses
and abuses of exception handling.
•
48
MARCH 2003
ANTI-PATTERN #1: try-catch-bury
unchecked buffer problem in C and C++. If you see this antipattern, you can be 99% sure that it’s wrong (there are a few
cases where it might make sense, but they should be carefully
commented to make it clear to the maintenance developer).
This is wrong because an exception (almost) always means
that something bad (or at least unexpected) has happened, yet
we choose to ignore and silence that cry for help. Calling
printStackTrace does not qualify as “handling an exception” –
it’s okay for debugging but should not be present past that initial step.
This problem is frighteningly pervasive. If you look at the
documentation for the JDK class ThreadDeath, you’ll see the
following comment: “The class ThreadDeath is specifically a
subclass of Error rather than Exception, even though it’s a ‘normal occurrence,’ because many applications catch all occurrences of Exception and then discard the exception.” This poor
programming practice is so common that, in an unhealthy
feedback loop, it has affected the design of Java itself. Grunt.
What should you do instead? You basically have four
options:
1. Handle the exception: Do something about it. Correct the
problem, notify someone, or do some different processing,
whatever makes sense in this particular situation. Once
again, calling printStackTrace does not qualify as “handling
the exception.”
2. Rethrow the exception: This is not uncommon if your
exception handling code examines the exception for additional information, and decides that it can’t handle it after
all.
3. Translate the exception into another exception: Most often
this is used to translate a low-level exception into an application-level one.
4. Don’t catch the exception: If you’re not going to do anything
about it, why bother catching it? Let it go (and, if necessary,
declare it in the signature of your method).
Solution 1: If you catch an exception, do something about it.
Don’t bury it.
15: catch(Exception ex)
16: {
17:
ex.printStackTrace();
18: }
15: catch(Exception ex)
This is the bane of Java programming – catching an exception and not doing anything about it. In terms of frequency
and severity, this is probably comparable to the infamous
It’s often tempting to have a general catch statement. The
most common is undoubtedly catch(Exception ex). In almost
all cases, that’s a bad idea. Why?
•
ANTI-PATTERN #2: Pokémon – gotta catch ’em all
Home
J2EE
J2SE
J2ME
To understand why, we need to step back and consider the
purpose of a catch statement. You use a catch statement to
indicate that you anticipate certain exceptions and that you’re
willing to handle them. The class of the exception(s) is how
you tell the Java compiler which exceptions you want to handle. Since the vast majority of exceptions inherit directly or
indirectly from java.lang.Exception, specifying that in your
catch statement effectively says you want to handle almost
any exception.
Let’s look at the code sample again. What kind of exceptions are we likely to catch? The most obvious one is
SQLException, quite likely to happen any time you deal with
JDBC. IOException is another possibility – we’re dealing with a
stream writer. You can already see the problem: it doesn’t
make sense to handle these two (very different) types of errors
in the same catch block. It would make a lot more sense to
have two catch blocks, one for SQLException and one for
IOException.
In addition, a large number of other exceptions could
occur. What if, for some obscure reason, executeQuery returns
null? You’ll get a NullPointerException in the next line, yet that
(unexpected) exception will be ignored (unless you happen to
be looking at the console for your program – and even then,
unless you wrote that code yourself, what good does that do
you?).
The better approach is to be more specific. In this case, we
should have two catch blocks, one for SQLException, the other
for IOException. This makes it clear to the next reader of this
code that you have thought about these scenarios. But what
about all the other exceptions? Let them go. Don’t handle them
(unless you have a reason to). You cannot (and in fact should
not) try to handle all possible exceptions – let them bubble up;
someone else will deal with them (the JVM if nothing else).
There are some instances where catching Exception is a
good idea, especially when testing or debugging. Once you
have isolated the cause of the problem, you need to remove
the catch Exception and replace it with the appropriate kind of
Exception(s).
Solution 2: Be as specific as possible in your catch statements
and use multiple catch statements if necessary. Don’t try to
handle all possible exceptions.
•
ANTI-PATTERN #3: The forgotten bathroom key
3: try {
4:
Statement stat = conn.createStatement();
5:
ResultSet rs = stat.executeQuery(
6:
"select uid, name from user");
7:
while (rs.next())
8:
{
9:
out.println("User ID : " + rs.getString("uid") +
10:
", name : " + rs.getString("name"));
11:
}
“Finally is a wonderful thing; it
allows you to guarantee that your
cleanup code will be
executed before the end of the
try/catch/finally block”
50
MARCH 2003
12:
conn.close();
13:
out.close();
14: }
One of us used to work in a small office with only one bathroom and you had to use a key. One programmer was notorious for neglecting to return the key to its rightful place, thereby inconveniencing the rest of the office. Often this was
because he would get interrupted while coming back to his
desk and would forget to return the valuable resource.
Similarly, when an exception occurs, it affects the execution path of your program. It’s easy to overlook that simple
fact. If you use resources such as files, sockets, JDBC connections, etc., you need to make sure they’re properly closed and
released even if an exception occurs. Java has a mechanism
designed for such a thing: finally.
Finally is a wonderful thing; it allows you to guarantee that
your cleanup code will be executed before the end of the
try/catch/finally block, regardless of whether or not an exception is being thrown. Think of it as a string on your finger that
reminds you to return the bathroom key, even if something
distracts you. Yet finally is rarely used, even by intermediate
programmers.
Of course, finally blocks should be written with great care.
In particular, you should be careful about exceptions being
thrown in a finally block – this is your final chance to clean
things up; don’t let it slip. In some cases, it may be acceptable
to bury an exception that’s thrown in a finally block. Think of
it as a best effort. Regardless, use your best judgment, or better yet, ask someone more experienced.
Solution 3: Make sure all resources are properly released. Use
finally liberally.
• ANTI-PATTERN #4: If you don’t know why I am mad, I
won’t tell you
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
try {
Statement stat = conn.createStatement();
ResultSet rs = stat.executeQuery(
"select uid, name from user");
while (rs.next())
{
out.println("User ID : " + rs.getString("uid") +
", name : " + rs.getString("name"));
}
conn.close();
out.close();
}
catch(Exception ex)
{
ex.printStackTrace();
}
Anyone who has been married for a number of years can
relate to this situation. Look at the code again: what happens
if an exception occurs during the execution of the loop? Will
we get information that can tell us what causes the loop to fail?
Not really. All we’ll get is an indicator that something is wrong
in the area of the class that’s doing the processing, but we may
not get any input as to what caused the problem.
The basic “stack trace” that shows the path of execution to
the class that caused the exception is cryptic and not easily
parsed. It also causes any tester without a Java development
background to report application problems with a very general description such as “encountered an ugly Java problem.” If
such an exception is wrapped to display a message in plain
Ensure high-performing
Java code, wherever it runs
TM
JProbe
®
Now part of
Award-winning JProbe provides deep J2EE diagnosis tools that give
you a complete picture of your Java application, right down to the
offending line of code. JProbe includes everything you need for fast,
accurate analysis of your application servlet, JSP and EJB code.
Track down inefficient algorithms, memory leaks, threading
problems and untested code. JProbe works virtually
everywhere with unrivaled application server, JDK and
operating system support.
JProbe Suite
JProbe Profiler
JProbe Memory Debugger
JProbe Threadalyzer
For more info and a free eval, visit:
www.sitraka.com/jprobe/jdj
© 2003 Quest Software, Inc. Quest, Sitraka, PerformaSure and JProbe are trademarks or registered trademarks of Quest Software, Inc. Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc.
in the United States and other countries. All other products are trademarks or registered trademarks of their respective companies.
J2SE
J2ME
English, testers are more likely to repeat the specific message
displayed to them. Not everyone who tests business applications is experienced in the delicate art of stack trace interpretation.
In addition to displaying a more user-friendly message,
there’s great benefit in providing a little extra data such as the
Class, Method, and a text message. While it’s true this information can be obtained from the stack trace, it’s much easier to
read when it’s isolated. Also, taking the extra time to describe
the behavior when you’re creating the code will greatly expedite resolving the problem later.
One solution is to embed a snippet like the following one
wherever exceptions get logged in the application. You can use
the this.getClass().getName() method, and insert the method
named and a text message every time the program reports a
checked exception. This practice makes exceptions easy to
read and to parse.
this.getClass().getName(), "mymethod", "some message"
J2EE
One caveat to this approach is that with a static method call
you need to manually insert the class name because the “this”
object reference does not have a this to refer to. Simply replace
the this.getClass().getName()with your class name “myClass”.
Solution 4: Report a reasonable amount of data in a way that’s
easy to read.
Home
•
ANTI-PATTERN #5: Overzealous try
3: try {
4:
Statement stat = conn.createStatement();
5:
ResultSet rs = stat.executeQuery(
6:
"select uid, name from user");
7:
while (rs.next())
8:
{
9:
out.println("User ID : " + rs.getString("uid") +
10:
", name : " + rs.getString("name"));
11:
}
12:
conn.close();
13:
out.close();
14: }
Putting too much activity in a single try block is a bad programming practice, even though it’s common. The reason it’s
common is that it takes extra time to isolate what could go
wrong in a particular block and what exceptions could get created as a result of this processing. Wrapping too many statements in a giant catch is like preparing for a move by packing
your household goods in refrigerator-sized boxes. Sure, all
your goods are in one place, but imagine the sorting task you’ll
have in the near future. For the inexperienced developer, it’s
easier to put a bunch of statements in a try block and wrap it
up in a generic catch Exception than to isolate the statements.
This practice makes troubleshooting Exceptions generated
during program execution that much more difficult because
there are more variations to check to find out what caused the
Exception.
The code example doesn’t really illustrate this fully because
there’s not enough space to show a complete example, but this
is a common problem.
Solution 5: Keep try blocks as small as possible, but no smaller.
•
ANTI-PATTERN #6: Incomplete execution
7:
52
MARCH 2003
while (rs.next())
8:
9:
10:
11:
{
out.println("User ID : " + rs.getString("uid") +
", name : " + rs.getString("name"));
}
This is the silent killer of Java systems. Look at the code
again and imagine what happens if an exception is thrown in
the middle of the loop. The execution of the loop will be interrupted, the catch block will be executed, and that’s about it.
What about the data that we’re writing out? It will be silently
incomplete. Whoever or whatever is supposed to use this data
will receive incomplete (and hence incorrect) data, but will
probably have no idea that it is incomplete. For some systems,
that’s a problem far more serious than any crash.
A better approach here would be to attempt to write a message to the output, signaling that the data could not be completely written. Another possibility would be to buffer the output (if possible) and write it out once we have it ready to go.
Solution 6: Consider all likely exceptions and how they’ll affect
the flow of execution.
Example (Rewritten)
Given these facts, Listing 1 shows what the same code
should look like. (Listing 1 can be downloaded from www.syscon.com/java/sourcec.cfm.) Note that it’s quite a bit more verbose. That’s not a bad thing – good code often includes a lot of
error handling.
Conclusion
All the anti-patterns in this article were inspired by actual
code written by professional programmers. Before you snicker,
ask yourself whether your code is really free from these poor
practices. Even the most experienced programmers sometimes fall back into them, simply because they’re easy (we certainly do). Think of them as bad habits – they are notoriously
difficult to shake off, but just trying makes you a better person.
Of course, nothing in this article should be taken as gospel.
Use common sense and your experience. For each anti-pattern described here, you could certainly come up with counterexamples. As long as the rules are broken willingly and
thoughtfully, you have our blessing, but we do beg for one
favor: if what you do is not obvious, please write a nice comment. You’ll thank yourself later. Also, share your wealth of
knowledge with others on your team; extra time spent on
training is a small price to pay in comparison to a massive
refactoring effort at the end of the development cycle.
References
• Haggar, P. (2000). Practical Java: Programming Language
Guide. Addison-Wesley.
• Ambler, S.W., et al. (2000). The Elements of Java Style.
Cambridge University Press.
• The Sun Java online tutorial: http://java.sun.com
/docs/books/tutorial/essential/exceptions
• Bloch, J. (2001). Effective Java: Programming Language
Guide. Addison-Wesley.
AUTHOR BIOS
Craig Dewalt is a surfer who likes to lead Java development teams.
Max Tardiveau is the founder of Integrity Logic.
[email protected]
[email protected]
J2ME
J2ME EDITORIAL
I N D E X
Spring . . . A Time
of Change
JASON R.BRIGGS J2ME EDITOR
This will be my last outing
as J2ME Editor for JDJ. It’s been
an interesting 22 issues, with
big changes within both the
Java and the J2ME spaces. I
also took a moment to look at
back issues of JDJ and pick out
some of my favorite articles
from the past two years.
Spring ...A Time of Change
J2SE
J 2 M E
54
by Jason R. Briggs
his will be my last outing as J2ME
Editor for JDJ. It’s been an interesting 22 issues, with big changes
within both the Java and the J2ME
spaces. Over the past two years, the
number of JSRs related in some way to
J2ME has increased (almost exponentially), an assortment of competitors have
emerged challenging the dominance of
both the Java language and the various
editions of the platform, and new technologies have come…and just as quickly
gone.
The number of J2ME devices, specifically MIDP, has increased as expected, but
there still seems to be a lack of brand
awareness among the nontechnical public.
Java’s steaming coffee cup might be
instantly recognizable to those reading this
magazine, but there’s a major “Huh?” factor if someone outside the technical community sees it on a phone. Maybe it makes
sense to differentiate the various configuration/profile combinations by giving
them their own individual brands (and a
better name than MIDP would be a good
start), and marketing material to go along
with them would be helpful. John and Jane
Q. Public aren’t going to know what the hell
MIDP is unless there’s a nice glossy
brochure included in the box with their
phone, perhaps with a few color screenshots of games, instructions on how to
download more, where to find other applications, etc., etc., etc.
I recently took a moment to look at
back issues of JDJ and pick out some of my
favorite articles from the past two years.
Tom Sloper’s “Freedom Through
Constraints” (Vol. 6, issue 9) stands out
near the top of my list. Tom has been a
designer and producer of games since the
Dark Ages, and gave his unique perspective on designing games for restrictive
Home
J2EE
T
environments – MIDP in a nutshell. Some
of the fundamental ideas presented in that
article are worth considering if, as a MIDP
developer, you find you also have to wear
the designer’s hat.
“Architecting Mobile/Wireless” by
James White (Vol. 7, issue 4) was another
good primer for those entering the wireless
development space and included such
topics as managing user expectations,
device familiarity, and requirements gathering; all useful stuff if you’re just getting
started.
Rounding out my top three, and more
recent in the back list, was Bill Ray’s series
“Whole House Audio from the Palm of Your
Hand” (Vol. 7, issues 6, 9, and 10), a dissertation in the best tradition of mad scientists, Radio Shack, and DIY.
Taking over the reins of the J2ME section is Glen Cordrey, who has appeared
before within the pages of this venerable
tome. He is a senior architect – funnily
enough, involved in the very technology
this section is about – has spoken at
JavaOne, authored Nextel’s J2ME
Developer’s Guide, and is a member of
the MIDP Next Generation Expert Group
– the ideal candidate to carry JDJ’s J2ME
coverage forward. I wish him the best of
luck.
One final note: rumors that I am leaving JDJ to write an exposé about the secret
sordid lives of a development magazine’s
editorial staff are completely unfounded.
First, I’m not leaving (I’m just going to wear
a contributing editor’s hat instead), and
second, it’s not an exposé…
…it’s a groundbreaking fusion of epic
poetry and gangsta rap, translated into Old
English by an underpaid postgrad and performed live by a Scottish troupe of doublejointed acrobats with a penchant for gstrings and gumboots.
[email protected]
AUTHOR BIO
As well as being a contributing editor for Java Developer’s Journal, Jason R. Briggs is a Java programmer and development manager
for a wireless technology company, based in Auckland, New Zealand.
54
MARCH 2003
The Mighty WAP
Strikes Out!
Somewhere in the
conglomerate of sponsor companies and forum management, the Wireless Application
Protocol (WAP) specification
committees lost track of their
objectives. If you look at the
challenges faced by developers
of wireless applications, you’ll
find that WAP does not address
the main problems.
by Chuck Gautney
56
J
DEVELOP AN APP.
DEVELOP A
RELATIONSHIP.
WITH
WIRELESS
CARRIERS,
WHO ARE
CONNECTED
TO MILLIONS
OF USERS.
April 28 - 30
San Diego, California
BREW™ 2003. It could be the beginning of something
beautiful. And a great way for you to build relationships
with the world’s leading wireless carriers and millions of
their subscribers. All you need to do is register now for the
BREW 2003 Developers Conference. There are technical
tracks, guest speakers, business sessions and more. You never
know what might develop. Register at www.brew2003.com.
Register Now:
www.brew2003.com
©2003 QUALCOMM INCORPORATED. ALL RIGHTS RESERVED. QUALCOMM IS A REGISTERED TRADEMARK OF QUALCOMM INCORPORATED. BREW IS A TRADEMARK OF QUALCOMM INCORPORATED.
J
2
M
E
V
S
W
A
P
J2ME
The Mighty WAP Strikes Out!
J2SE
And J2ME is at bat
S
WRITTEN BY
J2EE
CHUCK GAUTNEY
omewhere in the conglomerate of sponsor companies and
forum management, the Wireless Application Protocol (WAP)
specification committees lost track of their objectives. If you look
at the challenges faced by developers of wireless applications,
you’ll find that WAP does not address the main problems.
Home
First, we don’t have 100% wireless
coverage by any carrier and most likely
we never will. One of the design constraints a wireless application must
address is a disconnected mode of operation. WAP’s protocol is a connectionless protocol; however, WAP does not
run in a disconnected mode of operation. Strike one!
The WAP specification describes the
user interface components; however, it
does not define implementation details.
This causes applications to work differently based on the phone’s WAP browser.
For example, a simple select list functions differently on an OpenWave
browser than it does on a Nokia browser.
Nokia Select lists are a three-screen
process (see Figures 1–3). The OpenWave Select list is a single screen (see
Figure 4). This causes lots of implementation issues; especially when trying to
write an application that will work in the
United States and Europe. Ball one.
As mobile networks increase speed,
bandwidth, and coverage, mobile applications must be adaptable to take
advantage of these features. While WAP
will run faster in these networks, it
doesn’t have the ability to take advantage of the networks’ increased bandwidth. For example, let’s say I have a
wireless PDA device and I’m downloading a 2MB spreadsheet. If I’m on a 3G,
the download request should be split
into multiple downloads over multiple
downlink channels to increase throughput and decrease the download time. In
a WAP environment this is done with a
single channel in a serial manner. Strike
two!
A WAP microbrowser is a software
application so it’s always being
56
MARCH 2003
enhanced with new capabilities. It
would be nice to be able to update the
browser on the phone to the newest
release and not have to buy a new
phone. I’ve been told there are phones
that can be upgraded but I have yet to
find one. Ball two.
New devices with increased functionality, memory, processing power,
communication channels, and graphical capabilities are rapidly being
released. When writing a mobile or
wireless application, it’s extremely beneficial to be able to use these new features to allocate memory and storage,
and to take advantage of the increased
graphics capabilities of the device.
Unfortunately, WAP only addresses
communication down the carrier network and does not provide a way to
adapt to the device’s increased capabilities. Strike three!
I can continue, but in my book three
strikes and you’re out. WAP is out! It’s no
surprise that the adoption rates (the
percentage of users who use an available
application on a regular basis) for
deployed WAP applications fall below
3% – and I didn’t even go into the problems of usability with WAP’s list-based
application design. So what options do
you have for wireless application development? In one word: Java.
J2ME
What Java did for the world of Webbased applications, it’s now doing for
the world of wireless applications. Java
provides storage capabilities, multiple
network channel interfaces, adaptable
components, and advanced graphical
capabilities, making it far superior to
other languages.
Storage
How does J2ME address the lack of
coverage? By providing Java components for persistent storage known as
the Record Management System (RMS).
RMS allows a developer to create single
or multiple data stores for the application, allowing applications to be run
without a network connection. A simple
example is mail.
In J2ME I can write a mail application that will allow me to create draft emails, save them to storage, review and
modify them, and not use a single
minute of wireless time or a single byte
of data traffic. Try doing this with a WAP
solution.
The following example demonstrates
how you can achieve localized storage
using WAP. Normally, if you wanted to
save user information between decks
(WML is organized into decks and cards
where a deck consists of one or more
cards), you would pass the information
in the parameters section of an HTTP
Post request. However, you can save a
variable and reference that variable in
subsequent decks. Be careful not to initialize the variable in a subsequent deck
because you’ll lose the value. Note: If
one of the incoming decks performs a
newcontext, the current variables will be
cleared.
Listing 1 defines how storage might
be done in a J2ME application. (Listings
1–3 can be downloaded from www.syscon.com/java/sourcec.cfm.)In addition,
J2ME provides components for filtering,
comparing, enumerating, and listening
for record modification events.
Communication
In a J2ME architecture, the Mobile
www.sys-con.com
Premiering
June 2003
at
Millions
of Linux Users
One Magazine
SAVE 30%
Linux Business
and Technology
OFF!
REGULAR ANNUAL COVER PRICE $71.76
YOU PAY ONLY
There is no escaping the penetration of Linux into the corporate world. Traditional models are being turned
on their head as the open-for-everyone Linux bandwagon rolls forward.
Linux is an operating system that is traditionally held in the highest esteem by the hardcore or geek
developers of the world. With its roots firmly seeded in the open-source model, Linux is very much born from
the “if it’s broke, then fix it yourself” attitude.
Major corporations including IBM, Oracle, Sun, and Dell have all committed significant resources and
money to ensure their strategy for the future involves Linux. Linux has arrived at the
boardroom.
Yet until now, no title has existed that explicitly addresses this new hunger for information from the
corporate arena. Linux Business & Technology is aimed squarely at providing this group with the knowledge
Regular features will include:
Advice on Linux Infrastructure
Detailed Software Reviews
Migration Advice
Hardware Advice
CEO Guest Editorials
Recruiting/Certification Advice
Latest News That Matters
Case Studies
and background that will allow them to make decisions to utilize the Linux operating system.
Look for all the strategic information required to better inform the community on how powerful an alternative Linux can be. Linux Business & Technology will not
feature low-level code snippets but will focus instead on the higher logistical level, providing advice on hardware, to software, through to the recruiting of trained
personnel required to successfully deploy a Linux-based solution. Each month will see a different focus, allowing a detailed analysis of all the components that
$
99
49
12 ISSUES/YR
*OFFER SUBJECT TO CHANGE WITHOUT NOTICE
SUBSCRIBE
TODAY!
WWW.SYS-CON.COM
OR CALL
1-888-303-5282
make up the greater Linux landscape.
June 3–5 ...............LONDON
June 24–26 .........BERLIN
September ..HONG KONG
October ..........CALIFORNIA
The World’s Leading i-Technology Publisher
FOR ADVERTISING INFORMATION:
CALL 201 802.3020 OR
VISIT WWW.SYS-CON.COM
ALL BRAND AND PRODUCT NAMES USED ON THIS PAGE ARE TRADE NAMES, SERVICE MARKS, OR TRADEMARKS OF THEIR RESPECTIVE COMPANIES.
J2ME
J
J2SE
FIGURE 1
J2EE
FIGURE 2
Home
FIGURE 3
FIGURE 4
Information Device Profile
(MIDP) sits on top of the
Connected Limited Device
Configuration
(CLDC).
Among other things, the
CLDC provides an interface to the device’s I/O
channels. These channels
Select list to modify can be for the wireless
connection, serial connection, or other I/O channels
handled by the device and
KVM. Not only does a
developer have a choice of
channels, but he or she
can also choose the type of
communication such as
HTTP(S), Datagram, and
Select option
even socket protocol.
Note: The MIDP 1.0
specification does not
require a socket protocol,
so it’s not guaranteed to
be there. However, HTTP
is a socket-based protocol
so it seems logical that the
socket protocol would be
available. So far all my
Choose selection
testing has found that the
socket protocol is available. Socket communication means that you now
have the ability to provide
an always-on, two-way
connection. Why is this
significant? It allows an
application to have data
pushed from the server to
Select list
the application. For example, a developer could add
functionality to the e-mail program to
allow for new e-mail to be pushed to the
device as soon as it’s received on the
server. No more clicking a button and
asking the server for data.
AUTHOR BIO
Chuck Gautney is
chief technology
officer and vice
president of product
development for
Defywire, a leading
provider of wireless
enterprise software
solutions. By utilizing
Java, Defywire’s
solutions are
device- and
network-agnostic,
allowing enterprises to
gain a competitive
advantage by
retaining and
leveraging their
current IT
investments.
58
MARCH 2003
Interfaces
Now that the devices may have a
Bluetooth and 802.11(x) card built in, it’s
desirable to take advantage of these
interfaces. Good luck doing this with
WAP! Not a problem with Java. Because
Java has an abstraction layer for communication, your program will work the
same whether you’re using the mobile
operator’s communication channel or
the onboard local wireless channel. This
also opens the door to using the mobile
device as a gateway and sharing the
mobile operator wireless channel with
other devices like a PDA, telematics system, or laptop. Just think, you can use
your laptop to communicate with your
phone via a Bluetooth connection. If the
connection seems too slow, turn on a
second phone, make it available to the
2
M
laptop, and now you’ve doubled your
bandwidth.
The following code demonstrates
how to establish and read from different
types of protocols.
String connectionString =
"socket://servername.company.com:port"
;
StreamConnection sc =
(StreamConnection)Connector.open(
connectionString );
read = sc.read( readBuf , 0 , readMax
);
connectionString = "serial://comm:0";
StreamConnection sc2 =
(StreamConnection)Connector.open(
connectionString );
Read2 = sc2.read( readBuf2 , 0 ,
readMax2 );
E
V
S
W
A
P
applications is so low is the nature of listbased user interfaces. It takes time to
learn the navigation paths and requires a
lot of unnecessary user interaction to get
to the information a user might want.
It’s also easy to get lost within the
lists. Java provides a canvas component,
so with a little bit of imagination, some
coding, and a lot of testing you can
develop an application that functions
much like a desktop application. A canvas works well for creating screens to
select items from the screen, but due to
midlet size restrictions it’s not well suited for text entry. Under MIDP 1.0, you’re
stuck with the standard item–based
components that don’t provide methods
for color, font, or orientation.
Good news: this has been addressed
in MIDP 2.0 by the CustomItem component. This component can be extended
to provide an almost canvas-like func-
By using the Connector class you simply
provide the connection
string and you can
access any channel on
the device that’s accessible from the KVM. The
connection strings vary
by device vendor so
you’ll need to check with
your device’s users guide
to determine which
FIGURE 5 Street map
FIGURE 6 Menu overlay
interfaces are available
and the proper connection string properties.
tionality to a single item that can be
Want to take advantage of next-genappended to a form component. Listing
eration networks and the enhanced
2 provides a sample of what could be
power of the mobile device? You can do
used to draw a map or other picture (see
this with Java’s threading capabilities
Figure 5).
and the ability to create multiple conListing 2 demonstrates the drawing
nection objects. The most advantageous
capabilities of a canvas. The canvas also
is creating multiple download channels
has an event listener that listens for the
so data can be collected in parallel
pressing of a key or the touching of the
rather than in a serial manner, making
screen. Listing 3 demonstrates how you
the download much faster. This is very
would listen for the menu key to be
similar to how download accelerators
selected, creates a pop-up menu comwork on the Internet.
ponent, and finally determines which
Do you currently pass your business
menu option was selected (see Figure 6).
card to others using an infrared port?
Take this code to the next level and try
Using J2ME you can write a simple Web
building pop-up toolbars, drop-down
server and pass your business card using
menus, graphical buttons, and many more
HTTP via a Bluetooth or live Internet
components to which users are accusconnection. It’s all possible in Java.
tomed. It’s this type of functionality that will
The most significant difference that
make the transition from desktops to smallJava has over WAP is the graphical user
er mobile devices possible. No more learninterface. The graphical interface capaing a complex list scheme that changes at a
bilities of Java is the main reason for Java’s
moment’s notice. Now wireless devices can
high level of adoption. The one drawback use common desktop components that you
is that the graphical capabilities of Java
already know how to use.
are not exploited by the standard compoGoodbye WAP, we hardly knew ya.
nents, which are actually very WAP-like.
[email protected]
One reason the adoption rate of WAP
SaturdaySessions
Alan Williamson
JDJ Editor-in-Chief
We understand the pressures of work and how difficult it can be to get time off.
That is why we have designed this workshop to be held in one day and, as a special
bonus, on the weekend, so no days off from work. Your boss will be happy!
M T W T
F
S S
Coming to you...
April:
TORONTO
May:
NEW YORK
WASHINGTON, DC
June:
BOSTON
Performance > Efficiency > Reliability
This one-day intensive workshop is designed for
developers who wish to increase the efficiency
and reliability of their code development.
1)
2)
3)
The day will begin by looking at the various hints and tips you can utilize at the code
level to improve the quality and reduce the number of bugs you have to contend with.
The next part will look at Apache’s Ant and how you can use this freely
available tool for your own development, irrespective of your IDE.
Last, and most important, as the old saying goes: “You can never do enough
testing.” This session will look at JUnit and show you how to start building test
harnesses for your code so you can begin your testing strategy.
>Performance
Java is a powerful language. While it offers a rich array of tools, the fundamentals mustn’t be overlooked.
Improving your code at the core layer will result in great improvements in efficiency and produce (hopefully)
less bugs. We’ll look at the do’s and don’ts of programming and learn many hints and tips that will
accelerate your Java coding.
>Efficiency with Ant
Apache’s Ant is a powerful scripting tool that enables developers to define and execute routine software
development tasks using the simplicity and extensibility of XML. Ant provides a comprehensive mechanism for
managing software development projects, including compilation, deployment, testing, and execution.
In addition, it is compatible with any IDE or operating system.
What you will receive...
✓ INTENSIVE ONE-DAY SESSION
COURSE NOTES AND
✓ DETAILED
EXCLUSIVE ONLINE RESOURCES
✓ JDJ CD ARCHIVE
ON LY
295
$
*
*JDJ s
( $395 no ubscribers
n-subscr
—————
ibers)
—————
*GROUP —————————
DISCOU
NTS
AVAILAB
LE
To Register
www.sys-con.com/education
Call 201 802-3058
> Reliability with JUnit
A critical measure of the success of software is whether or not it executes properly. Equally important,
however, is whether that software does what it was intended to do. JUnit is an open-source testing framework
that provides a simple way for developers to define how their software should work. JUnit then provides test
runners that process your intentions and verify that your code performs as intended. The result is software
that not only works, but works in the correct way.
SPONSORED BY
PRODUCED BY
ALL BRAND AND PRODUCT NAMES USED ON THIS PAGE ARE TRADE NAMES, SERVICE MARKS, OR TRADEMARKS OF THEIR RESPECTIVE COMPANIES.
PRESENTED BY
JAVANEWS>
Home
News
J2EE
J2SE
J2ME
CORDA Leads Data Visualization
Industry with OptiMap
(Lindon, Utah) – CORDA Technologies,
Inc., has introduced a new product
called OptiMap. It’s a charting solution
for creating dynamic Web-based maps.
The resulting maps can integrate and
display data from multiple databases.
OptiMap is fully compatible with the
PopChart family of charting and graphing solutions. The product can be integrated with PopChart for implementations that require both mapping and traditional Web charts and graphs.
www.corda.com
ReportMill 6 Builds on Java App
Reporting Success
(Dallas, TX) – ReportMill Software, Inc.,
has announced the release of ReportMill 6,
a Java application reporting tool. The new
version offers new XML-based design features, new Crosstab style display options,
significant performance improvements,
and many other new features.
www.reportmill.com
Borland Announces Java Development Tools
Running with its recent acquisition of
TogetherSoft, Borland has announced a
60
MARCH 2003
pair of products – Together
Edition for JBuilder and
Enterprise Studio 5 for Java
– to put new tools in the
hands of enterprise developers creating Java applications.
Together Edition for
JBuilder integrates with
Borland’s own JBuilder
development environment,
while Enterprise Studio 5 –
a suite of five components,
including Together Edition,
JBuilder, Optimizeit Suite,
Enterprise Server, and
JDataStore – offers an endto-end development and
deployment platform for
enterprise Java.
Borland Enterprise Studio
5 will ship in March.
www.borland.com
>
SYS-CON MEDIA
ANNOUNCES SIXTH ANNUAL
JDJ READERS’ CHOICE AWARDS
(Montvale, NJ) – SYS-CON Media’s Sixth
Annual Java Developer’s Journal Readers’ Choice
Awards, also known as the “Oscars of the software
industry,” are open for voting. The JDJ Readers’
Choice Awards program has become the most
respected industry competition of its kind.
This year, JDJ added six new award categories
including “best Web caching for J2EE” and “best Java
persistence architecture.”
JDJ readers will be casting their votes through
August 30, 2003, and the finalists and winners will be
announced at JDJEdge 2003 West in Santa Clara, CA,
Oct. 19–22.
www.sys-con.com
Motorola to Launch Linux and JavaBased Phone
(Libertyville, IL) – Motorola, Inc., has
announced the Motorola A760, the world’s
first handset that combines a Linux operating system and Java technology, with full
multimedia PDA functionality.
The Motorola A760 combines the features of a mobile phone with the capabilities of a personal digital assistant
(PDA), digital camera, video player, MP3
player, speakerphone, advanced messaging, instant Internet access, and
Bluetooth technology.
www.motorola.com
THE LARGEST WEB SERVICES, JAVA, XML AND .NET CONFERENCE AND EXPO IN THE WORLD!
Boston
2003
London
2003
Berlin
2003
Hong Kong
2003
r by
Registe 14th
y
FebruaUrP $400
SAVEister by
TO
Reg
4th
MarchUP1$200
SAVE
TO
3rd Annual
EAST
Web Services Edgeg
Conference
M
A
R
G
O
&ExposiLtionPR
A
N
I
FConnecting the Enterprise with
Web Services, Java, XML, & .NET
March 18–20, 2003
Hynes Convention Center
Boston
DAY
CALL TOISTE R
TO REG -3058
201RE-G8IS0TE2R ONLINE AT
m
s-con.co
www.sy
OR
Event Sponsors
Media Sponsors
OWNED BY
PRODUCED BY
FEATURES & ATTRACTIONS
3 Days Packed with Education and Training
4 Keynotes & 3 Panel Discussions
60 Hard-Hitting and Current Seminars
FREE .NET Tutorial with Russ’ Tool Shed
Web Services & XML Tutorials
Java University Certification Training
HOT Industry-Leading Certification Programs
WHO SHOULD ATTEND
Software Developer
Software Engineer
1 Day Mobile .NET Tutorial
INFORMATIVE Round Table Discussions
Opening Day Welcome Reception
Development Manager
Application Developer
Technical Director
Analyst/Programmer
IT Manager
Technical Architect
Team Leader
Software Consultant
SAMS Meet the Authors Hot Topics Lounge
COMPELLING Case Studies & Best Practices
FEATURED Product Demonstrations on the
Show Floor
RIVETING Real-time SYS-CON Radio Interviews
Java is a registered trademark of Sun Microsystems, .NET is registered trademark of Microsoft, Oracle 9i is a registered trademark of Oracle Other product names,
and company logos in this document/brochure are the property of each respective company.
Keynotes & Highlighted Speakers
K E Y N O T E
S P E A K E R S
John Magee
Vice President, Oracle9i
John Magee is vice president, Oracle9i, at Oracle.
He has more than 14 years’ experience in the
enterprise software industry and has held positions in product development, product management, and product marketing. In his current role,
Magee manages technical product marketing for Oracle’s application server and development tools products, and is responsible for
evangelizing Oracle technology initiatives around J2EE, XML, and
Web services.
Mark Herring
Director Java, Web Services
& Tools Business
Mark Herring is responsible for helping to define,
set, and drive Sun Microsystems’ product direction
in the Java, Web Services & Tools Business. Prior to
his current role, Herring was director of corporate
strategy & planning, looking after Sun’s interest in the Project Liberty
Alliance and Network Identity. Herring joined Sun Microsystems
in October 1999 as a result of Sun’s acquisition of Forte Software.
Forte Software was a leading provider of enterprise-class development
and integration products. During his four years at the company, he ran
several aspects of Forte's marketing organization, including product
marketing and the Web channel.
Sun's JavaSoftware Division to participate in the development of the
Java database connectivity API (JDBC). Following that, he was co-spec
lead of the Enterprise JavaBeans specification and spec lead of the
Java Message Service specification.
Simon Phipps
Chief Technology Evangelist,
Sun Microsystems
Simon Phipps, currently chief technology evangelist at
Sun Microsystems, speaks frequently at industry conferences on the
subject of technology trends and futures. He was previously involved in OSI standards in the 1980s, in the earliest collaborative
conferencing software in the early 1990s, and in introducing Java
and XML to IBM.
Dave Chappell
VP, Chief Technology Evangelist,
Sonic Software
Dave Chappell is the vice president and chief technology evangelist for Sonic Software. He has more than 18 years of
industry experience building software tools and infrastructure for
application developers, spanning all aspects of R&D, sales, marketing,
and support services. Chappell has published in numerous technical
journals, and is currently writing a series of contributed articles for Java
Developer’s Journal.
Miguel de Icaza
Cofounder and CTO
Eric Newcomer
Chief Technology Officer, IONA
As the founder and leader of the GNOME
Foundation, Miguel de Icaza is one of the foremost luminaries in the Linux development community. With his seemingly boundless energy, de
Icaza has galvanized the effort to make Linux
accessible and available to the average computer user. He brings this
same excitement to his role as CTO of Ximian. de Icaza was instrumental in porting Linux to the SPARC architecture and led development of the Midnight Commander file manager and the Gnumeric
spreadsheet. He is also a primary author of the design of the Bonobo
component model, which leads the way in the development of largescale applications in GNOME.
Mark Hapner
Distinguished Engineer, Sun Microsystems
Mark Hapner is a Sun Distinguished Engineer and is currently lead architect for Java™ 2 Platform, Enterprise
Edition (J2EE™). He has guided the overall architecture for J2EE 1.2,
1.3, and now the upcoming 1.4 release. In March of 1996, he joined
In the role of chief technology officer at IONA, Eric
Newcomer is responsible for IONA’s technology
roadmap and the direction of IONA’s Orbix E2A e-Business Platforms
as relates to standards adoption, architecture, and product design.
Newcomer joined IONA in November 1999, and most recently served
as IONA's vice president of engineering, Web Services Integration
Products. He is a member of the XML Protocols and Web Services
Architecture working groups at the W3C and IONA’s Advisory
Committee representative to UDDI.org.
Dean Guida
CEO and President, Infragistics
Dean Guida is CEO and president of Infragistics and was
CEO and a cofounder of ProtoView Development Corporation. Mr. Guida has over 15 years of experience in the technical
industry and oversees all aspects of the company’s business operations and corporate direction. He is also responsible for cultivating
strategic alliances and other external relationships, as well as managing corporate financial affairs.
Conference Advisory Board
Sean Rhody
Alan Williamson
Derek Ferguson
Bob Familiar
Thomas Robbins
Hitesh Seth
J.P. Morgenthal
Editor in Chief,
Web Services Journal
Partner, CSC
Editor in Chief,
Java Developer’s Journal
Chief Technology
Officer, n-ary
Editor in Chief,
.NET Developer’s Journal
Chief Technology Evangelist,
Expand Beyond Corp.
.NET Architect,
Microsoft
New England
Senior Technology Specialist,
Microsoft
New England
Editor in Chief,
XML-Journal
Chief Technology Officer, ikigo
Chief Services Architect,
Software AG
Register Online @ sys-con.com
3
Conference at-a-Glance
JAVA
8:00AM – 4:00PM
TUESDAY MARCH 18
9:00AM – 9:50AM
WEDNESDAY MARCH 19
THURSDAY MARCH 20
WEB SERVICES
.NET
Registration Open
(JV1) Squeezing the Best Out of Java
Alan Williamson, Java Developer’s Journal
(WS1) Web Services Infrastructure
Carl Sjogreen, BEA
(NT1) .NET Framework Overview
Bob Familiar, Microsoft
(WS2) Web Services Management
James Phillips, Actional
(NT2) Introduction to ASP.NET
Russ Fustino, Microsoft
Web Services Keynote: John Magee, Oracle
10:00AM – 10:50AM
11:00AM – 11:50AM
(JV2) Testing Your Java Using JUnit
Kyle Gabhart, LearningPatterns
1:00PM – 1:50PM
WS-I Panel: “A Road Map for Web Services Standards” - Moderated by Rob Cheng, WS-I
2:00PM – 2:50PM
.NET Keynote: “The MONO Project” - Miguel de Icaza, Ximian
(JV3) Building/Deploying the Ant Way
Kyle Gabhart, LearningPatterns
(WS3) Strategies for Using Databases
in a World of Web Services
Mike Lehmann, Oracle
(NT3) Introduction to VB.NET
Russ Fustino, Microsoft
4:00PM – 4:50PM
(JV4) Unlocking the Secrets of JDK1.4
Raghavan Srinivas, Sun Microsystems
(WS4) Using Web Services to Integrate J2EE
and .NET Enterprise Applications - Odysseas
Pentakalos, SYSNET International
(NT4) How to Develop an End-to End
.NET Connected Appilication
Allan da Costa Pinto, Microsoft
8:00AM – 4:00PM
Registration Open
9:00 AM – 9:50AM
(JV5) Java APIs for Web Services Security
Standards
Sang Shin, Sun Microsystems
(WS5) Combining BPM and BRM Technologies:
A Major Step Towards Corporate Agility
Henry Bowers, ILOG
(NT5) .NET: The Virtualized
Execution Engine
Yahya Mirz, Aurora Borealis
10:00AM – 10:50AM
Java Keynote: Mark Herring, Sun Microsystems
11:00AM – 6:00PM
EXPO OPEN 11:00 a.m. - 6:00 p.m.
(WS6) Web Services for Real-Time Data
Access in an Industrial Setting
Stephan Van Dijck, ABB/SKYVA
(NT6) Introduction to DotGNU
Barry Fitzgerald, DotGNU
3:00PM – 3:50PM
(JV6)
11:00AM – 11:50AM
12:00PM – 2:00PM
BREAK & EXPO
2:00PM – 2:50PM
.NET Panel Discussion - Moderated by Derek Ferguson, .NET Developer’s Journal
(JV7) Unlocking the Power of XML
Hitesh Seth, ikigo
(WS7) Web Services Architecture: The Next
Big Spec. from the Mouths of the W3C
Eric Newcomer, IONA (moderator)
(NT7) Introduction to SSCLI
Yahya Mirz, Aurora Borealis
4:00PM – 4:50PM
(JV8) Java and .NET
Derek Ferguson, Expand Beyond
(WS8) Web Services:
Next Steps After the Hype
Claire Dessaux, Oracle
(NT8) Mobile Development with
the Compact Framework
Brad Mccabe, Infragistics
8:00AM – 4:00PM
Registration Open
9:00 AM – 9:50AM
(JV9) Writing SOAP Services
Nigel Thomas, SpiritSoft
(WS9) Web Services Best Practices
Chris Peltz, HP
(NT9) Best Practices for .NET
Development
Joe Stagner, Microsoft
10:00AM – 10:50AM
.NET Keynote - Jesse Liberty, Liberty Associates
11:00AM – 4:00PM
EXPO OPEN 11:00 a.m. - 4:00 p.m.
11:00AM – 11:50AM
(JV10) Working with Data the JDO Way
Patrick Linsky, SolarMetric
(WS10) Web Services Startups:
Telltales of the Future
Simeon Simeonov, Polaris Venture Partners
(NT10) Best Practices for
ADO.NET Development
Thom Robbins, Microsoft
12:00PM – 2:00PM
BREAK & EXPO
2:00PM – 2:50PM
Java Panel - “The Future of Java”, Moderated by Alan Williamson, Java Developer’s Journal
3:00PM – 3:50PM
3:00PM – 3:50PM
4:00PM – 4:50PM
4
THE LARGEST AND THE MOST
(JV11) Enterprise: The Next Generation
Mark Hapner, Sun Microsystems
(WS11) Open Standards
for Web Services Messaging
Dave Chappell, Sonic Software
(NT11) How to Debug with .NET
Tony Denbow, STAR Information
Technology
(JV12) Overcoming the Challenges of J2ME
Dr. Jeff Capone, Aligo
(WS12) Web Services Security
Marc Chanliau, Netegrity
(NT12) XML and Web-Enabling Legacy
Applications Using BizTalk
Mike Cramer, Microsoft
COMPREHENSIVE i-TECHNOLOGY DEVELOPER CONFERENCE OF THE YEAR!
XML
VENDOR
Visit www.sys-con.com for details
(XM2) OASIS Standards Update
Karl Best, OASIS
(VN2) The XMLSPY 5 Enterprise Edition
Development Environment
Trace Galloway, Altova
SM
Java University
(XM1) XML - A Manager’s Guide
JP Morgenthal, Software AG
JAVA
UNIVERSITY
PROGRAM
9:00AM – 5:00PM
Web Services Programming
Using Java™ Technology
and XML
(XM3) A Definitive Introduction
to XML Schemas
Aaron Skonnard, DevelopMentor
(VN3) SOAP and Java: Marrying Them Off
Skip Marler, Parasoft
(XM4) XML in Print - XSL:FO
Frank Neugebauer, IBM
Visit www.sys-con.com for details
(XM5) XML Security Integration Challenges
Phil Steitz, American Express
(VN5) Process-Centric Enterprises
Eric Pulier, Digital Evolution
This one-day seminar provides
in-depth knowledge on Web
services and shows how to
develop Web services using the
Java programming language
and XML, the technologies of
portable code and portable data
respectively.
9:00AM – 5:00PM
(XM6) Case Study: XML in Life Sciences
Tim Matthews, Ipedo
(VN6) Pattern Driven Application Development
Tom Shore, Compuware
(XM7) Using XML for EAI - Best Practices
Dan Enache, TIBCO
(VN7) Managing the Developer Relationship
Mike Bellissimo, Sun Microsystems
(XM8) Take XML with You: XML and Mobile
Computing - Hitesh Seth, ikigo
(VN8) Web Services Diagnostics
Dave Seidel, Mindreef
(XM9) XML, Ontologies and the Semantic
Web - Ayesha Malik, Object Machines
Visit www.sys-con.com for details
Java 2 Platform Programmer
Certification Fast Path
This session, developed and
delivered by Philip Heller, author
of the two leading Java technology certification preparation
manuals, helps to prepare you
for the Sun Certified Programmer
for the Java 2 Platform exam.
Philip provides code-level,
detailed review of the skills and
knowledge needed to confidently
approach the exam.
9:00AM – 5:00PM
(XM10) X Query
Mike Champion, Software AG
(VN10) Model Driven Development of Web
Services in UML for the J2ME
Bill Graham, Rational Software
(XM11) XPath & XSLT 2.0 BEA
Kurt Cagle, Cagle Communications
(VN11) Why Web Services Management?
Jon Atkins, HP
(XM12) Third Generation XML Tools
Michael Leventhal, Commerce One
Visit www.sys-con.com for details
Java 2 Platform Architect
Certification Fast Path
This intense one-day session
helps prepare attendees to pass
the Sun Certified Enterprise
Architect for J2EE Technology
exam. This session provides an
overview of the components
comprising the J2EE architecture as a whole, emphasizes the
incorporation of J2EE technology
into an architecture, and reviews
each of the certification exam’s
testing objectives.
FAST TRACKS
& TUTORIALS
9:00AM – 5:00PM
XML Certified Developer
Fast Path
This tutorial is for programmers
who have some knowledge of
XML and related technologies
and would like to pass the IBM
Certified Developer Test 141 on
XML and Related Technologies.
9:00AM – 5:00PM
Russ’ Tool Shed
Join Russ as he shows you
how to use Visual Studio.NET.
9:00-12:15 - Introduction to
Web Services Using VS.NET
1:00-2:30 - Advanced Web
Services Using ASP.NET
2:45-4:15 - .NET Remoting
Essentials
9:00AM – 5:00PM
Mobile .NET
In this session, Derek
Ferguson, editor-in-chief
of .NET Developer’s Journal,
will give you a thorough
introduction to the use of
.NET with all manner of
mobile computing devices.
5
Java Technology Track: JDJEdge 2003 East
Java Technology Track
The Java track has been
specifically designed to
allow you to squeeze as
much information out of
each session as possible. This track is designed for the Java
developer who wishes to catch up on the latest techniques
and APIs and will be led by industry-leading speakers and
authors.
The Java track has been designed with you, the more
experienced Java developer, in mind. We know you don’t
have a lot of spare time, and we’ve designed the track to
ensure that your time is maximized and you are armed
with all the necessary tools to take your development to
the next level.
(JV3) Building/Deploying the Ant Way
KYLE GABHART, LEARNINGPATTERNS
Tuesday March 18, 2003 3:00 P.M. - 3:50 P.M.
A defined and easily repeatable process is one of the most necessary but often
least-used aspects of good software development. A defined build process ensures
that your project’s software is built, deployed, and tested identically each time.
Without this type of control and predictability, valuable time is often lost chasing
down bugs that don’t exist or rejecting solutions that were only partially
implemented.
Apache’s Ant is a powerful scripting tool that enables developers to define and execute routine software development tasks using the simplicity and extensibility of
XML. Ant provides a comprehensive mechanism for managing software development projects, including compilation, deployment, testing and execution.
Additionally, it is compatible with any IDE or operating system.
BIO: Kyle Gabhart is a senior mentor for LearningPatterns, a dynamic knowledge company providing consulting, training, and mentoring in emerging technologies. He is a
prolific writer, with more than two dozen technical articles and books to his name. Kyle
is highly regarded as a dynamic and enthusiastic public speaker with an innovative perspective on technology.
(JV1) Squeezing the Best Out of Java
(JV4) Unlocking the Secrets of JDK 1.4
ALAN WILLIAMSON, JAVA DEVELOPER’S JOURNAL
Tuesday March 18, 2003 9:00 A.M. - 9:50 A.M.
RAGHAVAN SRINIVAS, SUN MICROSYSTEMS
Tuesday March 18, 2003 4:00 P.M. - 4:50 P.M.
Java is a very powerful language, and while it offers the developer a rich array of
tools, the fundamentals should not be overlooked. Improving your code at the core
layer will result in great improvements in efficiency and fewer bugs. We’ll look at the
dos and don’ts of programming and learn lots of hints and tips that will accelerate
your Java coding.
BIO: Alan Williamson is editor-in-chief of Java Developer’s Journal.
In his
spare time, he holds the post of chief technical officer @ n-ary (consulting)
Ltd, one of the first companies in the UK to specialize in Java at the server side.
Reach him at [email protected] (http://www.n-ary.com). Rumor has it he welcomes all
suggestions and comments!
(JV2) Testing Your Java the JUnit Way
KYLE GABHART, LEARNINGPATTERNS
Tuesday March 18, 2003 11:00 A.M. - 11:50 A.M.
A critical measure of the success of software can be found in whether or not it executes
successfully. Equally important, however, is whether or not that software does what it
was intended to do. JUnit is an open-source testing framework that provides a simple
means for developers to define their intentions for how their software should work.
JUnit then provides test runners that process your intentions and verify that your code
performs as intended. The result is software that not only works, but works in the correct way.
BIO: Kyle Gabhart is a senior mentor for LearningPatterns, a dynamic knowledge company providing consulting, training, and mentoring in emerging
technologies. He is a prolific writer, with more than two dozen technical articles and books to his name. Kyle is highly regarded as a dynamic and enthusiastic public speaker with an innovative perspective on technology.
With the release of JDK 1.4, a number of new features were added to the core API, such
as nonblocking IO, regular expressions, assertions, and XML. This session will take you
through the major additions and demonstrate where you might use them.
BIO: Raghavan Srinivas is a Java technology evangelist at Sun Microsystems
who specializes in Java and distributed systems. He has spoken on a variety
of technical topics at conferences around the world, and brings with him more
than 15 years of software development experience. Prior to joining Sun, Raghavan
worked for Digital Equipment Corporation. He has worked in several technology areas,
including internals of VMS, UNIX, and NT.
(JV5) Java APIs for Web Services
Security Standards
SANG SHIN, JAVA TECHNOLOGY EVANGELIST,
SUN MICROSYSTEMS
Wednesday March 19, 2003 9:00 A.M. - 9:50 A.M.
Everybody is talking about Web services as a way to perform business transactions over
the Web in ways never done before. Yet, security is the most critical piece that still needs
to be addressed before the promise of Web services can be realized. This session introduces the various Web services security standards, such as XML signature, XML encryption, XKMS (XML Key Management Services), XACML (eXtensible Access Control
Markup Language), SAML (Security Assertion Markup Language), WS-Security, and
Liberty First and their corresponding Java APIs, especially the standards APIs that are currently being defined through the Java Community Process (JCP). Wherever possible,
example code will be presented.
BIO: Sang Shin has been with Sun Microsystems for over 12 years, working in various research and engineering projects mostly in data communication, networking, Internet, and Java-related areas. Prior to Sun, he worked in
several startup companies in various engineering and managerial capacities. He
currently teaches two graduate-level software engineering courses (XML, Distributed
programming using Jini networking technology) in Brandeis University’s continuing
education program in Massachusetts.
(JV6) To Not Swing Is to SWT!
The Swing Alternative
IBM CORE ENGINEER
Wednesday March 19, 2003 11:00 A.M. - 11:50 A.M.
With the release of Eclipse, IBM has been quietly promoting the power and performance benefit of SWT over and above Swing. Discover what all the noise is about SWT
and how it can accelerate your client experience.
6
Register by Phone 201 802-3058
– International Java Developer Conference & Expo
ment for the flagship Constellar Hub product. Nigel spent over eight years at
Oracle, architecting and delivering Oracle’s Accounting products and then moving
on to worldwide performance consulting and CASE development assignments.
(JV10) Working with Data the JDO Way
PATRICK LINSKEY, SOLARMETRIC
Thursday March 20, 2003 11:00 A.M. - 11:50 A.M.
Java Data Objects is an alternative way of looking at your data compared to JDBC.
Looking at your data in an object-oriented way offers many advantages over the sequential manner of JDBC. Learn how JDO can be adopted for your own requirements
through practical examples.
(JV7) Unlocking the Power of XML
HITESH SETH, ikigo
Wednesday March 19, 2003 3:00 P.M. - 3:50 P.M.
There is more to XML than just one block of String. Understand the difference between
a DTD and a schema and the APIs you can utilize within Java that will bring the power
of XML to your Java development.
BIO: Hitesh Seth is the chief technology officer of ikigo, Inc., a provider of
XML-based Web services monitoring and management software. A freelance
author and well-known speaker, he regularly writes for technology publications on VoiceXML, Web services, J2EE and Microsoft .NET, wireless computing, and
enterprise/B2B integration. He is also the editor-in-chief of XML-Journal.
(JV8) Integrating Java and .NET
DEREK FERGUSON, EXPAND BEYOND CORPORATION
Wednesday March 19, 2003 4:00 p.m. - 4:50 p.m.
Two technologies that aren’t often mentioned in the same breath are Java and Microsoft.
However, it is the rare developer who is able to completely avoid either of these two
worlds nowadays. In this presentation, we will examine several tools both free and
commercial that can be used to bring these two development platforms together. Some
knowledge of Java and Windows development is advisable.
BIO: Derek Ferguson is chief technology evangelist for Expand Beyond
Corporation (www.xb.com), the worldwide leader in mobile software for
enterprise management. He is also editor-in-chief of .NET Developer’s
Journal and author of the book Mobile .NET.
BIO: Patrick Linskey manages and drives SolarMetric’s technology development as
vice president of Engineering. Patrick has been intimately working with JDO for
nearly two years and has been involved in object/relational mapping for over four
years. Over the past year, Patrick has evangelized the JDO specification at local Java
User Groups and software symposiums throughout the world.
(JV11) Enterprise:
The Next Generation
MARK HAPNER, SUN MICROSYSTEMS
Thursday March 20, 2003 3:00 P.M. - 3:50 P.M.
With the latest release of the J2EE 1.4 framework, a whole new suite of APIs have
been added to this already comprehensive edition. Chances are, there are goodies
lurking in there you didn’t even know about. This session will take a look at
unearthing some of the gems of the J2EE framework.
BIO: Mark Hapner is a Sun Distinguished Engineer and is currently lead
architect for Java™ 2 Platform, Enterprise Edition (J2EE™). He has guided
the overall architecture for J2EE 1.2, 1.3 and now the upcoming 1.4
release. In March of 1996, he joined Sun’s JavaSoftware Division to participate in
the development of the Java database connectivity API (JDBC). Following
that he was co spec lead of the Enterprise JavaBeans specification and
spec lead of the Java Message Service specification.
Prior to his work on Java enterprise APIs, Mark was a member of Sun’s
Object Services Group were he wrote several of Sun’s initial CORBA
object services submissions and worked on the integration of object
oriented and relational databases with Sun's ORB.
(JV9) Writing SOAP Services
NIGEL THOMAS, SPIRITSOFT, INC.
Thursday March 20, 2003 9:00 A.M. - 9:50 A.M.
(JV12) Overcoming the
Challenges of J2ME
J2EE 1.4 mandates the use of JMX to manage compliant products. Early adopters
of JMX mostly use protocols like RMI and HTTP to communicate between the management application and the agents it is managing. This presentation describes
how JMS is utilized to manage large deployments of managed agents in the
Enterprise and optimize the delivery of alerts and notifications in complex environments. The processing of management alerts, using open source components
(such as Jelly) to provide an Event-Condition Action (ECA) framework, will also be
discussed.
DR. JEFF CAPONE, ALIGO
Thursday March 20, 2003 4:00 P.M. - 4:50 P.M.
BIO: Nigel Thomas joined SpiritSoft as director of product marketing in
April 2001. Prior to SpiritSoft, Nigel spent five years with EAI pioneer
Constellar, serving in consulting, support, sales support, and development roles. He became product architect and then director of product manage-
J2ME has brought the power of Java to the mobile space. However, it is fair to note that
not all the JDK is available to you. Discover what is and what isn’t available to you and
how you can potentially work around some of what seems to be “must have” tools.
BIO: Dr. Jeff Capone has devoted his career to researching wireless and
wireline networks and applications. As Aligo’s CTO, Jeff leads the technology development and is the principal architect of the innovative M-1
Server. Prior to leading Aligo’s engineering team, he was an assistant professor at
Arizona State University and director of the Network Engineering and Wireless
Telecom Lab.
Register Online @ sys-con.com
7
Web Services Track:
Web Services Track
The Web Services track
focuses on issues and topics
that are at the forefront of
development efforts in Web
services. Although the current specifications provide a minimum set of protocols, issues such as security, transaction
management, service management and coordination
remain in flux. This track presents some of the leading
authorities in the field on these urgent topics and addresses all of the questions that currently concern designers,
developers and consumers of Web services
(WS1) Web Services Infrastructure
CARL SJOGREEN, BEA
Tuesday March 18, 2003 9:00 A.M. - 9:50 A.M.
Web services have evolved from an over-hyped vision of an interconnected world to a
set of real standards and technologies that can solve real-world problems in the enterprise. Building, deploying, and managing Web services in an enterprise-class environment, however, still raises many questions about the infrastructure on which those Web
services are deployed.
This session will introduce several real-world Web services case studies, the requirements placed on Web services infrastructure, and several hands-on examples of enterprise-class Web services implementations that address the issues raised above.
BIO: Carl Sjogreen is product manager for BEA WebLogic Workshop, BEA’s latest Java
innovation and an integrated development environment for building Web services. He has
been involved with XML, Web services, and developer tools since 1998, when he founded Transformis, a software startup specializing in XML tools. Passionate about the power
of XML and bringing new technologies to the masses, he is a key contributor to growing
the BEA WebLogic development community.
Web Services Edge 2003
International
consultant, and project manager in emerging technologies. His current areas of focus
include J2EE and Web services. Mike frequently authors articles and papers on Web
services and speaks regularly at industry events.
(WS4) Using Web Services to Integrate
J2EE and .NET Enterprise Applications
ODYSSEAS PENTAKALOS, PH.D.,
SYSNET INTERNATIONAL, INC.
Tuesday March 18, 2003 4:00 P.M. - 4:50 P.M.
The Web services phenomenon promises to resolve all interoperability issues through an
open architecture that is based on widely accepted industry standards such as SOAP, WSDL,
and HTTP. This session will explore component reuse across the two major enterprise application platforms, J2EE and .NET, using Web services as the medium of interaction. Through
examples, this tutorial will cover the current state of interoperability between J2EE and .NET
and will focus on best practices and issues that arise. The Axis SOAP implementation will be
used in this session as the Web services platform for exposing J2EE components.
BIO:
Odysseas Pentakalos is vice president of SYSNET International, Inc.,
where he focuses on architecture, design, and development of large distributed systems that utilize Java and J2EE technologies. He holds a Ph.D. in computer science, is the author of the Windows 2000 Performance Guide, has published
over two dozen papers in conference proceedings and journals, and is a frequent speaker at industry conferences.
(WS5) Combining BPM and BRM
Technologies: A Major Step Towards
Corporate Agility
HENRY BOWERS, ILOG
Wednesday March 19, 2003 9:00 A.M. - 9:50 A.M.
Corporate agility: the ability to quickly respond to unexpected change inside and outside the
corporation, is a coveted quality of the modern enterprise. This presentation discusses how
corporate agility is driven by technical agility. It introduces business rule management (BRM),
business process management (BPM), and Web Services technologies, and explains how
together these technologies provide an enabling foundation for technical agility.
BIO: Henry Bowers has spent more than 15 years in the high-tech sector,
(WS2) Web Services Management
JAMES PHILLIPS, ACTIONAL
Tuesday March 18, 2003 11:00 A.M. - 11:50 A.M.
Service-oriented architectures (SOAs) have been held out for years as a substantially
more cost-effective and flexible approach to architecting enterprise software systems
than historical strategies such as monolithic system design or tightly coupled client/server approaches. Many customers and industry observers believe Web services technology finally makes possible the widespread adoption of the SOA approach. But while Web
services and SOAs substantially ease the application development and integration burden, they bring with them a new collection of management challenges. In this session,
you will learn about the essential management criteria for growing and sustaining a
“mission-critical” service-oriented architecture.
BIO: In his role at Actional, James has worldwide responsibility for Actional’s
product and market strategy and market execution. Prior to joining Actional, he
served as CSO and vice president of product marketing and business development with Ensim Corporation. James is a frequent speaker and editorial contributor on
Web services–related issues and serves on the international advisory board of Web
Services Journal.
(WS3) Strategies for Using Databases
in a World of Web Services
MIKE LEHMANN, ORACLE
Tuesday March 18, 2003 3:00 P.M. - 3:50 P.M.
Databases continue to be at the core of most IT infrastructures yet the knowledge of
how they play in the world of SOAP-based Web services is less well understood. This
presentation covers strategies for publishing database components as Web services and,
as important, techniques for consuming Web services within databases. Find out how
to plug your database infrastructure into the world of Web services.
BIO: Mike Lehmann has worked in the IT industry for over 12 years as a developer,
8
building and managing software products for both private industry and government. He has more than 7 years’ experience working with rules-based systems and business rules in general. Henry is currently a product manager for business
rules at ILOG.
(WS6) Web Services for Real-Time
Data Access in an Industrial Setting
STEPHAN VAN DIJCK, ABB/SKYVA
Wednesday March 19, 2003 11:00 A.M. - 11:50 A.M.
Real-time processes deliver and require data in order to participate in business transactions. We will present an application under development at ABB for linking real-time
process control with business processes via Web services, and explore how plant floor
control can be a consumer and producer of Web services. We will use solutions from
ABB, IBM WebSphere, and Microsoft .NET.
BIO: Stephan Van Dijck holds a master’s degree in engineering mechanics from K.U. Leuven, Belgium, and a degree in business management
from I.A.G. U.C., Louvain, Belgium. He has worked as a process engineer
at the EXXON facility in Antwerp, Belgium, where he supervised logistics planning
and optimization of loading and unloading operations with Honeywell Europe as an
application and software development manager, product line marketing manager
for Batch control systems, and marketing manager for the chemicals and pharmaceuticals business unit Europe. In 1998 he joined SKYVA, a provider of e-manufacturing solutions by making use of Web services.
(WS7) Web Services Architecture: The
Next Big Spec, from the Mouths of the
W3C Authors
ERIC NEWCOMER, IONA (MODERATOR)
Wednesday March 19, 2003 3:00 P.M. - 3:50 P.M.
The World Wide Web Consortium (W3C) was created to develop interoperable technolo-
Register by Phone 201 802-3058
East
Web Services Developer Conference & Expo
gies and to provide an open forum for discussion about the future of the Web. A significant
effort currently underway within the W3C’s Web Services Activity is the development of a
Web Services Architecture Specification to help guide the future direction of Web services.
This panel session will discuss the role of the W3C in the development of Web services standards through this effort. The panel includes cochairs of the working group and editors of
the spec, with representatives from BEA Systems, Contivo, IBM, IONA, and Software AG.
Providing conference attendees with an opportunity to learn more about what the W3C is
doing with regard to Web services, this panel will demonstrate the benefits and examine the
challenges of working together to develop an open standard architecture.
BIO:In the role of chief technology officer at IONA, Eric is responsible for
IONA’s technology roadmap and the direction of IONA’s Orbix E2A e-Business
Platforms as relates to standards adoption, architecture, and product design. Eric
joined IONA in November 1999, and most recently served as IONA’s vice president of engineering, Web Services Integration Products. Eric is a member of the XML Protocols and Web
Services Architecture working groups at the W3C and IONA’s Advisory Committee representative to UDDI.org.
(WS8) – Web Services:
The Next Steps After the Hype
CLAIRE DESSAUX, ORACLE
Wednesday March 19, 2003 4:00 P.M. - 4:50 P.M.
Because Web services are still very new, many companies have yet to understand what
Web services mean for their line of business and how they can make the most of this
evolutionary technology. This session will highlight real-life examples where Web services have been successfully implemented and examines where services make sense,
especially as they relate to integration. It will conclude with recommendations on how
to best plan for a Web service strategy.
BIO: Claire Dessaux joined Oracle Alliances in 1994 with a main focus on
helping partners implementing Oracle technology. Since then she has worked
in various capacities on the incorporation of J2EE, XML and Web services into
Oracle’s product lines.
(WS9) Best Practices for
Web Services Development
CHRIS PELTZ, HP
Thursday March 20, 2003 9:00 A.M. - 9:50 A.M.
There has been a fair amount of hype around Web services and the benefits they can
bring to an organization. For many, it is difficult to determine how to best get started
with Web services. This talk will outline a number of first steps that can be taken to begin
planning a Web services pilot. It will also address a series of design guidelines, patterns,
and architectural recommendations to enable an organization to build robust, flexible,
and secure services. The talk will conclude with a look at tips and techniques for developing, testing, and managing Web services.
BIO:
Chris Peltz is a senior software consultant within HP’s Developer
Resources Organization. He provides technical and architectural consulting to
enterprise customers on J2EE, Web services, and mobile development. Chris
has over 10 years of software experience in object-oriented technologies, 4GL development, GIS, and Web applications design.
(WS10) Web Services Startups:
Telltales of the Future
SIMEON SIMEONOV, POLARIS VENTURE PARTNERS
Thursday March 20, 2003 11:00 A.M. - 11:50 A.M.
You must have seen them; they’re everywhere. Web services startups are popping
up like mushrooms after rain. Or has the Web services hype created a microcosm
of startup activity that is going to mirror the boom and bust cycle of the late ’90s?
As a Web services technologist, where should you focus your energies? As a customer, how should you choose your vendor? As an investor, where should you put
your money to work? In this presentation you’ll get an overview of startup activity
in the Web services space within the context of emerging industry dynamics and
evolving customer needs. We will cover Web services tools, appliances, runtimes,
integration, security, testing, and management.
BIO: Simeon Simeonov is a principal at Polaris Venture Partners, a leading
early-stage venture firm, where he focuses on investments in information technology. Prior to joining Polaris, Sim was chief architect and vice president of
emerging technologies at Macromedia, where he led the development of Web services
technologies and platform infrastructure for next-generation Internet applications. Prior to
that, he was a founding member and chief architect at Allaire, where he was responsible
for the ColdFusion application server and cross-product technology strategy.
(WS11) Open Standards
for Web Services Messaging
DAVE CHAPPELL, SONIC SOFTWARE
Thursday March 20, 2003 3:00 P.M. - 3:50 P.M.
Web services hold the promise of driving down the cost and complexity of application
integration both between internal systems and between business partners. But unless
Web services communications are made reliable, organizations will not be able to trust
them for mission-critical operations, such as complex business-to-business transactions
or real-time enterprise integration.
In this session, Dave Chappell, a coauthor of the WS-Reliability specification, will examine the emerging Web services reliability standards, including a detailed discussion on
WS-Reliability, a new specification for open Web services messaging.
BIO: Dave Chappell, vice president and chief technology evangelist for Sonic
Software, has over 18 years of experience in the software industry covering a
broad range of roles including R&D, code-slinger, sales, support, and marketing. Dave has a strong passion for shaping the future of technology and enjoys sharing
his knowledge and experience with others.
(WS12) – Web Services Security
MARC CHANLIAU, NETEGRITY
Thursday March 20, 2003 4:00 P.M. - 4:50 P.M.
Web services deployments typically use transport-level security for authentication
and application-based access control for authorization. This presentation shows the
limitations of transport-level security and introduces the XML technologies that complement the transport-level approach to provide a secure authentication solution.
This presentation also covers the issues involved in providing access control in backend applications and suggests a better, centralized approach to abstract authorization
information out of back-end applications and into a single point of control using
XML-based query technologies.
BIO: Marc Chanliau is a product manager for Netegrity, Inc. He has been in the software industry for over 20 years in many different capacities. Marc started the OASIS
Security Services Technical Committee which culminated in the adoption of SAML as an
official OASIS standard in November 2002. He holds an MS in linguistics from the
University of Paris-Jussieu, France.
Register Online @ sys-con.com
9
.NET Track: .NET Edge 2003 East – International .NET
Microsoft .NET Track
Microsoft .NET represents
a major evolution in how
applications are developed,
deployed, and managed on
the Microsoft platform. The .NET Framework gives developers an object-oriented development environment for
building all types of applications, including desktop, client/
server, dynamic Web page, wireless devices, server-based
as well as complete support for XML Web services and the
related XML standards. The sessions in the .NET Track will
give you a broad as well as deep understanding of the
capabilities in the .NET Framework and how applications
built on .NET are easily integrated with applications running in heterogeneous environments, including mainframe, UNIX, and J2EE platforms.
(NT1) .NET Framework Overview
BOB FAMILIAR, MICROSOFT
Tuesday March 18, 2003 9:00 A.M. - 9:50 A.M.
This session will introduce the architecture and technologies within the .NET Framework,
including the Common Language Runtime, ASP.NET, and ADO.NET, as well as XML and
SOAP support. Integration with COM and COM+ services will be covered, as well as a
discussion of the .NET Framework SDK.
BIO: Bob Familiar is a Microsoft Architectural Engineer and Certified Microsoft Solution Developer with over 14 years of experience in software engineering. He has developed solutions in C, C++, Java, SQL, and Visual Basic,
and has over 7 years of experience using Microsoft Development Tools. Bob holds a
patent for technology that maps relational database tables to object-oriented software
components. His current areas of interest include object oriented analysis and design of
distributed object models and distributed computing using COM+.
(NT2) Introduction to ASP.NET
RUSS FUSTINO, MICROSOFT
Tuesday March 18, 2003 11:00 A.M. - 11:50 A.M.
We will look at the next version of Active Server Pages, ASP.NET, a major upgrade to the
current version of ASP. Xcopy deployment; control-based encapsulation; clean separation of code from HTML; strongly typed, compiled languages; and event-based page
processing will change the way you develop UI for server-based Web applications. This
session covers the ASP.NET Page Framework from the ground up: architecture; ASP.NET
syntax; server controls; control families: intrinsic controls, list controls, and rich controls.
Finally, this session will cover business objects, Web services, and migration issues.
development department and created several client/server application and system software products. Russ’s specialties include development with VB.NET, XML Web services,
ASP.NET, and debugging.
(NT3) Introduction to VB.NET
RUSS FUSTINO, MICROSOFT
Tuesday March 18, 2003 3:00 P.M. - 3:50 P.M.
Looking to learn the latest release of Visual Basic, VB.NET? Wait no longer and jump
right in! See first hand why VB is the language of choice for developers. Whether you
are changing from another language or just re-tooling, make sure you hit this session.
You won’t regret it! We will cover the Visual Studio Integrated Development
Environment, Win Forms, Web forms and ASP.NET, classes and objects, XML Web services, ADO.NET introduction for data access and debugging.
BIO: Russ Fustino is a Microsoft Principal Technology Specialist and a Microsoft
Certified Professional with over 20 years of software development experience. He has
an expertise in developing Visual Basic and Web-based solutions using Microsoft tools.
Prior to Microsoft, Russ was a VB instructor, headed up a development department, and
created several client/server application and system software products. Russ’s specialties
include development with VB.NET, XML Web services, ASP.NET, and debugging.
(NT4) How to Develop an End-to-End
.NET-Connected Application
ALLAN DE COSTA PINTO, MICROSOFT
Tuesday March 18, 2003 4:00 P.M. - 4:50 P.M.
This session will show you how to design and create a sample application using multiple
Microsoft .NET Enterprise Server products. We will show you how to integrate .NET technologies into an effective solution. The following products and technologies will be covered
in this session: VS.NET, ASP.NET, VB.NET, C#, XML Web services, BizTalk, and SQL Server
2000. (Note: The demos in this session have been updated for VS.NET RTM version.)
BIO: Allan da Costa Pinto is a Microsoft Certified Application Developer for
.NET and works for Microsoft Consulting in the Connecticut Area. Allan focuses on architecting and building solutions using Microsoft Visual Studio®
.NET and XML Web services.
(NT5) .NET, the Virtualzed
Execution Engine
YAHYA MIRZ, AURORA BOREALIS
Wednesday March 19, 2003 9:00 A.M. - 9:50 A.M.
With .NET, Microsoft has introduced a major evolution in their computing platform. At
the core of .NET, is a language agnostic runtime, currently being standardized by ECMA.
This effort is called the Common Language Infrastructure or the CLI. The objective of
this presentation will be to provide insight into the design decisions that led to the CLI’s
Execution Engine and their rationale. Additionally, I will explain through an example,
how a component works it’s way through the Virtualized Execution Engine of the CLI.
BIO: Russ Fustino is a Microsoft Principal Technology Specialist and a Micro-
BIO: Yahya Mirza is striving to balance commercial development with component-
soft Certified Professional with over 20 years of software development experience. He has an expertise in developing Visual Basic and Web-based solutions using Microsoft tools. Prior to Microsoft, Russ was a VB instructor, headed up a
based language research. Since 1999, Mr. Mirza has been working on .NET projects at
Microsoft, Source Dynamics and Safeco Life. His passion lies in language design for
music and computer animation.
(NT6) Introduction to DotGNU
BARRY FITZGERALD, DOTGNU
Wednesday March 19, 2003 11:00 A.M. - 11:50 A.M.
This session will feature a brief overview of the many GNU projects currently
implementing and extending ECMA CLI standards. These projects include SEE,
phpGroupWare, Portable.NET, Web Services, and Virtual Identities.
BIO: Barry Fitzgerald is one of the cofounders of the DotGNU Free Software Project
to create a 100% open source GNU implementation of the ECMA Common Language
Infrastructure (CLI). He is also a member of the Steering Committee for DotGNU.
(NT7) Intro to SSCLI
YAHYA MIRZ, AURORA BOREALIS
Wednesday March 19, 2003 3:00 P.M. - 3:50 P.M.
In early 2002, Microsoft released a “Shared Source” implementation of the .NET
10
Register by Phone 201 802-3058
Developer Conference & Expo
(NT10) Best Practices for ADO.NET
Development
THOM ROBBINS, MICROSOFT
Thursday March 20, 2003 11:00 A.M. - 11:50 A.M.
Common Language Infrastructure available on BSD UNIX, Linux, Mac OSX, and the
Windows platform codenamed “Rotor”. For enthusiasts, Rotor provides an opportunity
to understand the .NET technology at a deeper level. For language designers, Rotor can
serve as an effective runtime core for experimentation at the language feature level. For
compiler and virtual machine researchers, Rotor provides a context for applied research
into alternative object representations, method dispatch, garbage collectors, JIT compilers, etc. My goal will be to provide an introduction into the Rotor code base.
BIO: Yahya Mirza is striving to balance commercial development with componentbased language research. Since 1999, He has been working on .NET projects at Microsoft, Source Dynamics and Safeco Life. His passion lies in language design for music
and computer animation.
One of the biggest changes in data access recently is that common clients and
servers on the Internet work in a disconnected, stateless fashion. ADO.NET provides
an optimized, XML-based framework for data access in a disconnected environment. With the advent of XML, programming for data access and manipulation, the
mechanism is changing from a relational to a hierarchical form. ADO.NET classes
read and write XML at their core. The ADO.NET framework fully supports disconnected reads and writes. and we’ll discuss the performance implications of this as
well as how to use different types of objects in their various states. ADO.NET also
has classes that provide optimized performance with SQL Server or other OLE DB
data sources. This session covers the best practices on how to handle data access
for best performance, error handling, transaction support, and security. We’ll discuss
the best practices for retrieving, single item, single row and multiple rows of data as
well as transaction handling, and look at examples of the performance differences
in using DataReaders versus DataSets This session will also cover the best ways to
cache data from data sources and the transformation to XML.
BIO: Thom Robbins is a senior technology specialist with Microsoft. He is a
frequent contributor to various magazines include .NET, Visual Studio.NET
and the Web Services Journal. Thom is also a frequent speaker at a variety
of events that include VS Live and others. When not writing code and helping customers, he spends his time with his wife at their home in New Hampshire.
(NT11) How to Debug with .NET
(NT8) Mobile Development
with the Compact Framework
BRAD MCCABE, INFRAGISTICS
Wednesday March 19, 2003 4:00 P.M. - 4:50 P.M.
With the release of the Compact Framework, Microsoft has brought mobile
development to the masses. In this session we will look at some of the differences and similarities between the .NET Framework and the Compact
Framework. We will also examine the consideration that must be factored into
the architecture and development of mobile application such as dealing with
user interface considerations and effective mobile data strategies
TOBY DENBOW, STAR IT
Thursday March 20, 2003 3:00 P.M. - 3:50 P.M.
This session shows how the rules for debugging have completely changed with the
advent of Microsoft .NET Framework. It will cover the core debugging concepts using
the Microsoft .NET Framework. In addition, this session will discuss many advanced
features that allow you to write better diagnostic and error-handling code.
BIO: Toby Denbow is VP of technology at STAR Information Technology. He has been a
featured speaker at several Microsoft and industry trade shows. Toby has been working with
.NET for over a year and was trained directly by the .NET developers in Redmond. He works
with a wide variety of customers in various emerging technologies and has personally
trained over 500 developers on Visual Studio.NET.
BIO: Prior to joining Infragistics, Brad McCabe served as systems architect
for the network solutions development team at Verizon Communications.
Concurrently, Brad held the position of lead .NET Evangelist within Ajilon
Consulting and was responsible for content and delivery of material for the national
Inside .NET tour. Brad has been working as a senior developer and a software engineer,
and his current responsibilities include developing reference applications and working with enterprise customers on project implementation.
(NT9) Best Practices for
.NET Development
JOE STAGNER, MICROSOFT
Thursday March 20, 2003 9:00 A.M. - 9:50 A.M.
This advanced session covers the wide array of best practices for the most productive .NET development topics. We’ll start with an overview of design guidelines for .NET, ensuring that developers write consistent, predictable code that
integrates well between languages. We will cover memory management and the
garbage collector as well as the best methods for cleaning up unmanaged
resources. A section will cover how to best use ADO.NET to access relational data,
and how to assimilate that data with the .NET XML classes. We’ll look at tips for
creating both components and controls, how to best use the System.NET classes
to access HTTP responses, the .NET threading model, and key security concepts
will also be examined.
(NT12) XML and Web-Enabling Legacy
Applications Using BizTalk
MIKE CRAMER, SENIOR PRINCIPAL TECHNOLOGY
SPECIALIST, MICROSOFT
Thursday March 20, 2003 4:00 P.M. - 4:50 P.M.
This session examines how to integrate legacy line-of-business applications using BizTalk
2000 Server. It will examine BizTalk Server tools that allow you to create the components
necessary to interface to legacy systems. This includes a scenario with four phases that
demonstrates integration by using industry-standard XML and EDI file formats, delimited and positional files, and COM bridges.
BIO: As a member of the New England BSG Team and focusing on integrating
heterogeneous applications, Mike Cramer works with existing and prospective
Microsoft customers in New England on adopting the .NET platform. Mike joined
Microsoft during the 1995 acquisition of Netwise Inc. (Boulder, CO). Prior to the
acquisition, Mike worked for Netwise for approximately three years as a consultant and later consulting manager.
BIO: Joe Stagner is a technical evangelist of Developer Technologies at
Microsoft, and has been developing software for 25 years, on Microsoft
platforms since DOS 1.0. Joe currently focuses on helping Microsoft’s
Independent Software Vendors make the most of .NET Developer technologies and
also works with medium business developers and the academic community in
New England.
Register Online @ sys-con.com
11
XML Track:
XMLEdge 2003 East – International XML
XML Technology Track
Whether you’re looking to
understand different XML
standards, application techniques, or development tools;
or using XML to develop the next generation of Web applications and services, the XML Track is your ultimate training,
collaboration, and innovation ground. Sessions include
fast-track, in-depth training on XML Schemas and XSL-FO.
We will update you on standards development and offer a
comprehensive review of the various technologies related to
XML that are essential for today’s IT manager. The XML Track
is armed with real-world applications of XML in financial
services, life sciences, enterprise and B2B integration, and
mobile computing. We will discuss new developments
around XForms, a recent W3C Standard which marks another era of standards-based application development; XPath
and XSLT 2.0 XML; and Query.
The XML Track explores the technology and standards, realworld applications, and trends which will set the course for
the future.
(XM1) XML: A Manager’s Guide
JP MORGENTHAL, SOFTWARE AG
Tuesday March 18, 2003 9:00 A.M. - 9:50 A.M.
This session will provide an essential introduction to XML from a manager’s perspective.
As more and more IT projects utilize XML and its derivatives as fundamental technologies, it is key for today’s manager to be aware of the various ingredients of XML. From
core XML processing, transformation, metadata definition and schemas, applications in
Web, wireless and speech applications, Web services, industry-standard vocabularies,
and more, the session will offer a comprehensive review of the various technologies
related to XML that today’s IT Manager must be aware of.
BIO: JP Morgenthal serves as the chief services architect for Software AG,
Inc. He is an internationally prominent authority on XML with more than 15
years of experience designing, developing, and analyzing software and technology. In his role as chief services architect, JP will explore and manage the design of
complete professional services solutions based on Software AG technology and partner
products in existing and emerging industries.
(XM2) OASIS Standards Update
KARL F. BEST, OASIS
Tuesday March 18, 2003 11:00 A.M. - 11:50 A.M.
OASIS is a not-for-profit, global consortium that drives the development, convergence,
and adoption of e-business standards. Members of OASIS are providers, users, and specialists in standards-based technologies, and include organizations, individuals, and
industry groups. The OASIS standards process can best be described as open, lightweight, and independent.
(XM3) A Definitive
Introduction to XML Schemas
AARON SKONNARD, DEVELOPMENTOR
Tuesday March 18, 2003 3:00 P.M. - 3:50 P.M.
XML Schema adds type information to XML-based data and goes beyond the functionality of traditional DTDs. This session starts with an introduction to XML Schema basics
including data types – defining both simple types and basic complex types. We will explore
the more advanced features in the XML Schema definition language, including how to
derive complex types by extension or restriction and how to take advantage of type-based
substitution. Also, we’ll preview how XML Schemas are used in today’s XML infrastructure.
BIO: Aaron Skonnard is a developer, instructor, and course author at DevelopMentor,
where he focuses on the XML and Web services curriculum. He coauthored Essential XML
Quick Reference and Essential XML (both published by Addison Wesley). Aaron also
writes the “XML Files” for MSDN Magazine. Other writing projects include DevelopMentor’s
online XML tutorial as well as Microsoft’s XML Resource Kit CD.
(XM4) XML in Print: XSL-FO
FRANK NEUGEBAUER, IBM
Tuesday March 18, 2003 4:00 P.M. - 4:50 P.M.
Today developers frequently use XSLT to convert XML into markup languages such as
HTML. XSL Formatting Objects (XSL-FO) promises to abstract the details of rendering
and allow developers to specify the layout and semantic properties of presentation
regardless of rendering. This presentation will provide a thorough introduction to XSLFO and how it relates to the other XML processing standards and will highlight the benefits of XSL-FO in XML application development. Using demonstrations, the session will
highlight the features that XSL-FO provides for creating an open standards–based print
process and its applications.
BIO: Frank Neugebauer is a consultant in the Insurance Solutions division of
IBM Global Services, specializing in distributed Java solutions based on IBM’s
Insurance Applications Architecture (IAA). He is also a freelance writer and has
contributed several articles to leading industry publications.
(XM5) XML in Financial Services
PHIL STEITZ, AMERICAN EXPRESS
Wednesday March 19, 2003 9:00 A.M. - 9:50 A.M.
This session will highlight the key security integration challenges faced by application
teams developing enterprise solutions using loosely coupled, XML-based interfaces and
service-oriented architectures. We will discuss how emerging standards and technologies address the practical security problems faced by development teams, the gaps that
still remain, and the tradeoffs and compromises that architects and developers need to
make to implement secure solutions today.
BIO: Phil Steitz is vice president, e-commerce applications development, at American
Express. He has over 20 years of experience as a developer, architect, and technology
leader involved in distributed systems development. Before joining American Express,
Phil served as a middleware architecture consultant, designing large-scale distributed
systems for enterprise customers. He holds a PhD in mathematics from the University
of Maryland.
This session will address, OASIS Initiatives, current TC status,OASIS Technical Agenda,
collaborative work at OASIS, EbXML, ISO/IEC/ITU/ECE Memorandum of Understanding
(MoU) for electronic business, standards, liaison memberships in various ISO TCs and
ISO/IEC JTC1 SCs and more ongoing, sponsor of Interoperability Summit, vendors submit specs to OASIS, dot-orgs move to OASIS, convergence at OASIS, and current
Technical Committees,
BIO: Karl F. Best is the director of technical operations for OASIS, where he
is responsible for managing the consortium’s industry standards efforts. He is
a former chief strategy officer and board member of the consortium, and has
been involved in the XML/SGML industry since the early 1990s. Karl has been a member of a number of industry standards committees for SGML, XML, and associated standards, and a speaker at many industry conferences. He was previously employed by
Novell, Adobe, and Sun Microsystems, designing and implementing electronic documentation systems.
12
Register by Phone 201 802-3058
Developer Conference & Expo
(XM6) Case Study:
XML in the Life Sciences
TIM MATTHEWS, IPEDO
Wednesday March 19, 2003 11:00 A.M. - 11:50 A.M.
The importance of XML-based information in the health care and biotech industries has
grown tremendously over the last two years, from R&D to clinical trials to manufacturing. Life sciences companies today are required to transfer and share huge quantities of
information among the myriad of researchers and partners involved in the product
development life cycle. The future of the life sciences market will be influenced by how
well companies acquire, share, and apply knowledge to exploit the wealth of new
opportunities while minimizing the deluge of new risks and costs. This session will provide a case study of how one life sciences company is implementing XML for a competitive advantage. It will also discuss how XML Management technology was used to
provide scientists and analytic applications with the ability to efficiently search and analyze the data using sophisticated queries.
BIO: Tim Matthews has extensive experience in high-tech engineering, marketing, and sales. Prior to cofounding Ipedo in 2000, he was director of product
marketing at RSA Security, where he oversaw a line of developer security products and a line of security infrastructure servers. Previously, Tim worked in international sales
and business development at Digital Equipment Corporation in Tokyo and Irvine, California.
BIO: Ayesha Malik is a senior consultant for Object Machines, a software
engineering firm providing Java technology and XML solutions to businesses. Ayesha has worked extensively on large XML and messaging systems for companies such as Deutsche Bank and American International Group
(AIG). Most recently, she has been researching new ways to make schemas extensible and object oriented.
(XM10) XML Query
MIKE CHAMPION, RESEARCH AND DEVELOPMENT
SPECIALIST, SOFTWARE AG
Thursday March 20, 2003 11:00 A.M. - 11:50 A.M.
As the ubiquitous data description and encapsulation standard, XML has quickly
evolved into a container for all kinds of data. It is imperative that a standardized and
flexible query and processing language be available to utilize the immense wealth of
data that XML stores represent. Currently, even though established standards such as
XSLT/XPath are available for transforming XML documents, the development around
XQuery language has demonstrated the need for a flexible language for extracting data
from XML documents. This session provides an introduction to XQuery language and
illustrates its application through real-world scenarios.
BIO:
(XM7) Using XML for EAI:
Best Practices
DAN ENACHE, TIBCO SOFTWARE
Wednesday March 19, 2003 3:00 P.M. - 3:50 P.M.
According to Gartner Group, EAI is the hottest IT market. Even in a slow economy, the
EAI market is expected to grow at a steady pace, faster than most of the other sectors.
How can you take advantage of EAI and help your company reap the benefits? What are
the best practices in using XML to implement large EAI systems? What are the pros and
cons in using XML as a “lingua franca”? How are people in the trenches using XML and
EAI to build systems that work?
BIO: Dan Enache is a senior software architect for TIBCO Software. He is an
expert in large integrations both in the EAI space and on the Web, as well as
large portals and Single Sign-On integration solutions. Dan has extensive
experience with high volume/high availability transactional/financial systems, and a
great deal of expertise in implementing large security systems. He is a J2EE developer
and Sun Java Architect
(XM8) Take XML with You:
XML and Mobile Computing
HITESH SETH
Wednesday March 19, 2003 4:00 P.M. - 4:50 P.M.
Since its inception, XML has been used as the basis for an array of standards to catalyze
mobile application development. This session will review some of the key standards in
the wireless/speech applications area, and the design strategies involved in extending
Web services and applications to the world of wireless, interactive speech recognition,
and mobile computing.
BIO: Hitesh Seth is the chief technology officer of ikigo, Inc., a provider
of XML-based Web services monitoring and management software. A freelance author and well-known speaker, he regularly writes for technology
publications on VoiceXML, Web services, J2EE and Microsoft .NET, wireless computing, and enterprise/B2B integration. He is also the editor-in-chief of XML-Journal.
(XM9) XML, Ontologies
& the Semantic Web
AYESHA MALIK, OBJECT MACHINES
Thursday March 20, 2003 9:00 A.M. - 9:50 A.M.
The Semantic Web has generated much talk ever since Tim Berners-Lee, the inventor of
the World Wide Web, first mentioned it a few years ago. Get the architecture details
behind a Semantic Web. In particular, the session links the study of ontologies for modeling knowledge representation with the requirements of a Semantic Web. Track W3C’s
standardization activity in building XML standards for the Semantic Web including and
RDF and OWL (Web Ontology Language).
Michael Champion is a research and development specialist at
Software AG, working out of Ann Arbor, Michigan. He has been a software
developer in the USA for 20 years, working primarily in the area of middleware for client/server document and image management systems. He has been active
in the W3C’s Document Object Model (DOM) Working Group for more than three years
and was an editor of the core XML portion of the DOM Level 1 Recommendation. He
is now cochair of the Web Services Architecture Working Group.
(XM11) XPath & XSLT 2.0
KURT CAGLE, CAGLE COMMUNICATIONS
Thursday March 20, 2003 3:00 P.M. - 3:50 P.M.
XPath and XSLT 1.0 are about to get a face-lift. Most of the improvements to the languages center on support for XML Schema, XML’s official type system, although there
are other compelling improvements that make the languages more usable as well. We’ll
walk you through “what’s new” in both XPath and XSLT 2.0 and provide several examples using a reference implementation.
BIO: Kurt Cagle is the president of Cagle Communications, a consulting firm
specializing in XML-related technologies, and is the author of 14 books on
XML, XSLT, XQuery, and SVG. He is a columnist for XML Magazine, and publishes an e-newsletter that can be subscribed to from The Metaphorical Web.
(XM12) Third-Generation XML Tools
MICHAEL LEVENTHAL
Thursday March 20, 2003 4:00 P.M. - 4:50 P.M.
XML has become the ubiquitous infrastructure for Web services and a host of other software applications. The tools for building XML applications have progressed from the first
generation of “hackerware” to a mature second generation of public and private domain
tools providing SAX and DOM programming interfaces, robust parsing, well-formed and
validation checking, and transformation with XSLT. Is there anything more to come? This
presentation looks at two areas where interesting, third-generation tools are beginning
to emerge: XML programming objects and streaming. With XML programming objects
developers deal directly with document-specific classes derived from XML Schemas
rather than generic document structures, as in the DOM or document events in SAX.
JAXB reference implementation and Castor are two tools in this area, but there are also
interesting developments coming that tightly mesh XML objects into programming languages. Streaming is based on the event model of XML parsing but goes beyond SAX
with sophisticated techniques for analysis and processing of XML documents with ultralow memory usage and high throughput. Streaming is being used in SOAP processors,
search engines, entity resolvers, and transformation tools. Examples include the STX and
XST transformation engines, Apache AXIS, and sequential XPATH implementations. At
the end of this session we’ll discuss ideas for next-generation XML tools
BIO: Michael Leventhal led the team that architected and developed a document-style SOAP framework for Commerce One. He has led numerous projects in the area of Web applications and infrastructure and XML (and SGML)
over the last 10 years and wrote the first book on XML software development for the
Internet in 1998.
Register Online @ sys-con.com
13
i-Technology Vendor & Management Track
(VN2) The XMLSPY 5 Enterprise Edition
Development Environment
(VN6) Pattern-Driven
Application Development
TRACE GALLOWAY, CORPORATE SALES MANAGER, ALTOVA
Tuesday March 18, 2003 11:00 A.M. - 11:50 A.M.
TOM SHORE, SENIOR PRODUCT CONSULTANT,
COMPUWARE
Wednesday March 19, 2003 11:00 A.M. - 11:50 A.M.
XML-related technologies have begun to reach critical mass in many areas of business
today. From e-commerce solutions to data integration initiatives to content authoring and
publishing, XML related technologies are being used to meet many of the present and
future business challenges. Altova™’s XMLSPY 5 Enterprise Edition Development
Environment is ideally suited to meet the needs of developers, Web designers, and line of
business users that are required to develop and work with XML related technologies. XMLSPY 5 Enterprise Edition is the industry-standard XML Development Environment for
designing, editing, and debugging enterprise-class applications involving XML, XML
Schema, XSL/XSLT, SOAP, WSDL and Web Services technologies. It is the ultimate productivity enhancer for J2EE, .NET and database developers. In this presentation, attendees
will be introduced to many of the features available in the Development Environment.
BIO: Trace Galloway is the corporate sales manager at Altova, Inc, creators of
XMLSPY, the award-winning and industry-leading tool suite for XML. Prior to
joining Altova, Trace served as the chief evangelist for Infoteria Corporation, a
global technology company specializing in the development of B2B-centric, XML-based
servers and components. He has presented at numerous industry conferences including
Web Services Edge New York, XML Conference Baltimore, and ASP.NET & XML Web
Services Solutions Conference. He was co-author of a chapter entitled “Lead Tracking by
Web and Email” in the XML Handbook“ Third Edition.
(VN3) SOAP and Java: Marrying Them Off
ALEXANDER MARLER, PARASOFT
Tuesday March 18, 2003 3:00 P.M. - 3:50 P.M.
SOAP is a lightweight, XML-based protocol for exchanging structured and typed information between peers in a decentralized, distributed environment. Although SOAP strives to
be agnostic with respect to programming languages, some languages facilitate working
with SOAP better than others. The combination of Java’s strong typing system and its
reflection API make Java especially conducive to implementing SOAP-based Web services.
The presentation will explore how Java facilitates the automation of activities such as
WSDL (Web Services Description Language) generation and SOAP deployment. It will also
discuss how these features are influencing the development of Java-based SOAP tools.
BIO: Alexander Marler, software technical consultant, joined Parasoft to provide
technical pre and post sales support along with business development for specific product lines. He has over 15 years of sales and technical expertise in the
high tech industry. He has been responsible for product and business development at
Sybase Inc., Charles Schwab, and Hunt-Wesson Foods. Marler received his Bachelor of
Science in Management Information Systems from Washington State University.
(VN5) Process-Centric Enterprises:
The Coming Revolution in Web
Services–Driven Business Analytics
ERIC PULIER, CHAIRMAN AND CEO, DIGITAL EVOLUTION
Wednesday March 19, 2003 9:00 A.M. - 9:50 A.M.
As major companies transition to Web services and the Service Oriented Architecture
(SOA), they are beginning to tap into the SOA’s ability to provide greater visibility into business operations in real time. This presentation will explore how exposing the IT functions
of a given business process as Web services makes it possible to monitor the activities of
that process, even if the process occurs across multiple lines of business and IT systems.
The result is what Mr. Pulier terms the “Process-centric” enterprise, which benefits from the
functionality of integrated applications and systems without the rigid, time-consuming, and
costly process of actual application integration. This session will address these issues and
others as he lays out his vision of where enterprise computing is heading.
BIO:
Recently named one of 30 e-Visionaries by VAR Business, Eric Pulier is
a popular speaker at many elite technology conferences. As CEO and founder
of Digital Evolution, he drives the operations and strategic vision of a company
that is making the service-oriented architecture revolution a reality. Pulier has been a pioneer in the interactive industry for over 15 years. In 1997, the Presidential Inaugural
Committee selected Mr. Pulier to create and execute the Presidential Technology
Exhibition in Washington, D.C. He is a graduate of Harvard University.
14
OMG’s model-driven architecure (MDA) allows organizations to build platform and language neutral models and specifications of functionality. This approach will improve the
stability, durability, and reuse of models, as they are not bound to any specific technology. Furthermore, it will boost developer productivity by increasing the code generation
capabilities of development tools. As models are translated from a platform independent
model (PIM) to a platform specific model (PSM), and further to an implementation (code)
model, intelligent code generation engines are able to produce more and better code.
Compuware’s OptimalJ J2EE development tool is the only implementation of the OMG
MDA so far. This presentation discusses how OptimalJ implements OMG’s MDA.
BIO:
Thomas S. Shore is a senior product consultant with Compuware Corporation’s
Application Development & Portal Solutions Software Division. Thomas joined
Compuware in 1993 and held various positions before focusing on J2EE and related technologies. He has also held various software engineering and consulting positions in the
manufacturing, oil & gas exploration and database software markets.
(VN7) Managing the
Developer Relationship
MIKE BELLISSIMO, SUN MICROSYSTEMS
Wednesday March 19, 2003 3:00 P.M. - 3:50 P.M.
More and more vendors are developing extensive programs to capture developer interest
and loyalty. These programs must adopt a philosophy of managing and enhancing the
individual developer’s entire experience through the life cycle of the relationship. This
includes managing the developer’s experience in all places where it touches the vendor.
Mike Bellissimo, senior director of Sun Microsystems Software Developer Marketing and
Management, will discuss how he believes developers can and should be supported with
programs that help them learn, plan, evaluate, and develop their products and services.
BIO: In over a decade at Sun, Mike Bellissimo has managed sales operations for iPlanet
and JavaSoft, software training and services for SunSoft, and developer programs and
strategy in Sun’s market development organization. Previously he managed product training for field and reseller organizations.
(VN10) Model Driven Development
of Web Services in UML for the J2ME
Platform
BILL GRAHAM, RATIONAL SOFTWARE
Thursday March 20, 2003 11:00 A.M. - 11:50 A.M.
Mobile and wireless clients are an integral part of the vision for Web services. The hardware
computing and memory limitations of handheld and wireless devices require the use of leanand-mean utilities to make Web services practical. This presentation looks at some of the possible solutions in the context of a typical J2ME platform. Models of possible architectures for
J2ME applications are explored through the use of UML. Using models to generate code and
therefore applications through Model Driven Development (MDD) are also introduced.
BIO: Bill Graham is the embedded Java evangelist at Rational Software. He has over 14
years of experience in working with real-time and embedded systems. He has presented
at JavaOne, the Rational Users Conference, and the IEEE International Performance,
Computing, and Communications Conference (IPCCC). Bill has a B. Eng. and a M. Eng.
from Carleton University, Ottawa.
(VN11) Why Web Services
Management?
JON ATKINS, HP
Thursday March 20, 2003 3:00 P.M. - 3:50 P.M.
The popularity of Web services continues to grow because they reduce integration costs
and enable greater flexibility and ease in exposing applications as new sources of revenue.
However, this benefit is achieved with less secure, less reliable communications. To get
the most out of Web services, you must be able to manage and control the new risks that
come with them. This lively and informative presentation will answer these questions and
reveal the importance of developing Web services with manageability in mind.
BIO: Jon Atkins is the product manager for HP’s Web Service Management Platform. He
brings 10 years of marketing, sales and advertising experience, primarily in high technology.
Register by Phone 201 802-3058
SUN MICROSYSTEMS
Java University Program
Java UniversitySM Program: Aggressive, code-level training courses for experienced developers
using Java™ technology, brought to you by Sun Microsystems, Inc. Attend seminars designed by
industry luminaries and recognized experts. Sessions cover Sun certification and Web services
technology. Whether you’re a beginner or a veteran developer, architect, or software engineer,
you’ll benefit from these value-packed full-day courses. Register now. Seating is limited.
The Java UniversitySM program complements this year’s Web Services Edge conference by
offering 3 full-day training lectures for experienced software developers, architects, and engineers.
Java UniversitySM Program Take-Aways:
• Training designed and presented by expert Java technology engineers
• Student guides full of source code, examples, references and copies of instructors’ materials
• Free Web-based training courses from Sun Educational Services
Wednesday, March 19, 2003
Tuesday, March 18, 2003
TM
Web Services Using Java
Technology and XML
SANG SHIN,
SUN MICROSYSTEMS, INC.
Who Should Attend
Web services designers and programmers, application developers, and programmers using the Java
programming language who have experience using
the Java™ 2 Platform, Enterprise Edition (J2EE™).
Prerequisites
Experience using the Java programming language
and basic knowledge of XML
Overview
This one-day seminar provides in-depth knowledge
on Web services and shows how to develop Web
services using the Java programming language and
XML, the technologies of portable code and
portable data respectively.
The session will start with an introduction on fundamental concepts and characteristics of Web services.
This will be followed by a detailed explanation of
how to implement, describe, register, discover, and
invoke Web services using core Web services standards - Simple Object Access Protocol (SOAP); Web
Services Description Language (WSDL); and
Universal Description, Discovery, and Integration
(UDDI). In addition, the ebXML standard, which
defines the framework for the global electronic
marketplace will be talked about in detail. Also, the
tools for building and deploying Web services will
be discussed. Each topic will be presented with concrete examples and demonstrations when possible.
Attendees will also learn how to use standard Java
APIs for Web services, mainly Java API for XML
Messaging (JAXM), Java technology API for
XML-based RPC (JAX-RPC), and Java technology
API for XML Registries (JAXR) for developing and
deploying Web services.
Benefits
• Learn the fundamental concepts and characteristics of Web services. Gain detailed understanding on core Web services standards: SOAP,
WSDL, UDDI.
• Gain a detailed understanding of ebXML, the
standard framework for electronic business.
• Learn Java programming language APIs for
Web services – JAXM, JAX-RPC, JAXR
TM
Java 2 Platform:
Programmer Certification
Fast Path
PHILIP HELLER, PRESIDENT,
HELLER ASSOCIATES
Who Should Attend
This session is designed for programmers who
have some exposure to the Java™ programming
language, and are ready to prepare for the Sun
Certified Programmer for Java 2 Platform exam.
SM
Thursday, March 20, 2003
TM
Java 2 Platform: Architect
Certification Fast Path
SIMON ROBERTS, TECHNOLOGY
EXPERT AND COURSE DEVELOPER,
SUN MICROSYSTEMS, INC.
Who Should Attend
This session is designed for enterprise application architects, system analysts, experienced
technologists, and developers using Java™ technology seeking certification as an architect for
the Java™ 2 Platform, Enterprise Edition (J2EE™).
Prerequisites
Understand the benefits of Java technology
solutions; experience with object-oriented analysis
and design; familiarity with concepts of distributed
computing.
Overview
Many of the solutions in today’s “Net economy”
are, or soon will be, developed using the Java 2
Platform, Enterprise Edition (J2EE) architecture.
Gaining recognized competency architecting
J2EE platform-based solutions is vital to your
success as an architect, reaffirms your value,
and increases your career opportunities.
Prerequisites
Object-oriented software development experience
and familiarity with the syntax and structure of Java
technology-based development.
Overview
The development community recognizes that competency developing solutions using Java technology
is vital to productivity, reaffirms your value to your
organization, and increases your career advancement
opportunities. This session, developed and delivered
by Philip Heller, author of the two leading Java technology certification preparation manuals, helps to
prepare you for the Sun Certified Programmer for
the Java 2 Platform exam. Philip provides code-level,
detailed review of the skills and knowledge needed
to confidently approach the exam.
Benefits
• Receive an intensive review of the advanced
topics covered on the Sun Certified Programmer
for the Java 2 Platform Exam
• Increase your understanding and knowledge of
Java programming language syntax and structure
• Prepare for the exam by reviewing practice tests
and questions
• Gain a strong understanding of Java fundamentals
Developed and presented by Mark Cade, this
intense one-day session helps prepare attendees
to pass the Sun Certified Enterprise Architect for
J2EE Technology exam. This session provides an
overview of the components comprising the
J2EE architecture as a whole, emphasizes the
incorporation of J2EE technology into an architecture, and reviews each of the certification
exam’s testing objectives. Multiple real-world
case studies are used to demonstrate correctly
architected J2EE technology–based solutions
and pinpoint key topics presented within the
architect exam.
Additionally, you will learn how to interpret exam
objectives, what each of the three exam phases
contains, and clear guidelines and resources to use
after the course.
Benefits
• Receive an intensive review of the topics
covered on the Sun Certified Enterprise
Architect for the Java 2 Platform, Enterprise
Edition Exam
• Increase your understanding and knowledge
of successfully architecting solutions using
J2EE technology
• Understand the system qualities: scalability,
availability, extensibility, performance, and
security
• Understand trade-offs of different architectural choices as they pertain to system qualities.
• Describe the benefits and weaknesses of
potential J2EE technology–based
architectures
• State benefits and costs of persistence
management strategies
• Review real-world case studies of J2EE
technology–based architecture
• Prepare for the exam by reviewing practice
tests and questions
Register Online @ sys-con.com
15
XML Certified Developer Fast Path
expertise and certification is critical for developers who
want to remain competitive in the current tight IT job market. The practice tests and questions in this course are
specially designed to teach you XML essentials and the
key concepts to successfully pass IBM® Test 141 on XML
and related technologies.
Tuesday, March 18, 2003
9:00 am - 5:00 pm
Audience
This tutorial is for programmers who have some knowledge of XML and related technologies and would like to
pass the IBM Certified Developer Test 141 on XML and
Related
Technologies
.
Outline
• Well formed XML documents
• XML Infoset
• XML namespaces
• Document analysis and modeling
• Document Type Definitions (DTDs)
• XML Schemas
• The SAX API
• The DOM API
• XPath and XSLT
Prerequisites
Background in object-oriented programming and knowledge of Hypertext Markup Language (HTML). Exposure
to XML and related technologies.
Overview
XML is the foundation of two important emerging
technologies: Web services and the Semantic Web. XML
• XSL Formatting Objects (XSL FOs)
• Formatting XML with CSS
• XLink and XPointer
• XML Encryption
• XML Signatures
• SOAP, UDDI, and WSDL
• XML architectures based on business and technical considerations
• Optimization and testing of XML applications
Presenter Bio
Joel Amoussou is the founder and chief learning architect of XMLMentor. Joel is the author of the first XML
training course specially designed to prepare developers for IBM® Test 141 on XML and related technologies. He has created XML content management applications for the aerospace, pharmaceutical, and publishing
industries.
FREE .NET Web Services Tutorial
Russ’ Tool Shed
Wednesday, March 19, 2003
9:00 a.m. – 5:00 p.m.
Join Russ as he shows you
how to use Visual Studio .NET
9-12:15 Intro to Web Services Using
VS.NET by Russ Fustino
One of the key ideas behind the .NET strategy is the concept of software as a service, or in short, Web services.
This session will explain what a Web service is and provide an overview of its related technologies like XML,
SOAP and UDDI. We will demonstrate how the .NET
Framework makes it easy to implement them for new
and existing applications. This session will also provide
concrete best practices for building XML Web services
using Visual Studio .NET. We’ll answer many common
questions like: How will my Web service scale? How can
my XML Web services enable interoperability with Web
services from other vendors as well as within my own
organization? We’ll delve into building highly reliable and
secure Web services. Also, we will discuss issues such as
dealing with complex data types using WSDL (Web
Services Description Language), as well as securing SOAP
messages using encryption. We’ll see how developers
can use enterprise-level XML Web services to simplify
customer solutions.
1-2:30 - Advanced Web Services Using
ASP .NET by Thom Robbins
This session will explore some of the more advanced
areas of SOAP in ASP.NET’s support for Web services.
ASP.NET Web services are the preferred way for Web
developers to expose Web services on the Internet. The
goal is quick, easy, and high-performing SOAP services.
We will look at how to use the SOAP extension classes to
create some very interesting applications on top of the
core SOAP architecture found within the .NET Framework. For instance, you can implement an encryption
algorithm or screen scraping on top of the Web service
call. We’ll dig into more advanced topics, explore the
SOAP headers, and see ways to ensure security in our
Web services.
2:45-4:15 - .NET
Remoting Essentials
2:45-4:15 - .NET
Remoting Essentials
Microsoft .NET Remoting is the
.NET technology that allows you to
easily and quickly build distributed applications. All of the
application components can be on one computer or they
can be on multiple computers around the world. .NET
Remoting allows client applications to use objects in
other processes on the same computer or on any other
computer to which it can connect over its network.
During this presentation we will discuss what you will
need to know to get started with .NET Remoting. We will
talk about how .NET Remoting compares with DCOM,
how to host remoted objects in a variety of applications,
how to call remoted objects from a client application,
To learn more, visit
www.sys-con.com
Mobile .NET
Thursday, March 20, 2003
9:00 am - 5:00 pm
Overview
In this session, Derek Ferguson, editor-in-chief of .NET
Developer’s Journal, will give you a thorough introduction to the use of .NET with all manner of mobile computing devices.
The morning will begin with a comprehensive survey
of the five most popular mobile computing platforms:
Pocket PC, Palm OS, WAP, i-Mode, and J2ME. It will
conclude with a thorough examination of how the
Mobile Internet Toolkit (a.k.a. “the MIT”), a key part of
16
Microsoft’s mobile .NET strategy, can be leveraged to
build Web-based applications capable of working with
any of these devices.
wide leader in mobile software for enterprise management. He is also editor-in-chief of .NET Developer’s
Journal and author of the book Mobile .NET.
In the afternoon, we will discuss Microsoft’s technology
for building self-contained .NET applications for execution on “smart devices” the .NET Compact Framework.
Before the end of the session, such advanced topics as
COM Interoperability, SQL Server CE, and MIT extensibility will be covered.
Presenter Bio
Derek Ferguson is chief technology evangelist for
Expand Beyond Corporation (www.xb.com), the world-
Derek Ferguson
Editor-in-Chief, .NET Developer’s Journal
Chief Technology Evangelist, Expand Beyond Corp.
Register by Phone 201 802-3058
Major Sponsors at the World’s Largest
Web Services, Java, XML, and .NET
Conference and Expo
2003 East Gold Sponsors
2003 East Featured Sponsor
Compuware will be the best worldwide provider of quality software
products and services designed to increase productivity. We will
continue to create practical solutions that meet our customers needs
and surpass their expectations. We will provide an environment for
our employees where excellence is encouraged and rewarded and
where diversity is promoted at all levels of the company.
Compuware is built upon a diverse employee population with a set
of key attributes that is common to every individual: Secure, Moral,
Ethical, In Agreement with Economic Purpose, Team Player, Other
Oriented, Positive, Optimistic, Energetic Achiever and Bright.
Sun was founded with one driving vision. A vision of computers that
talk to each other no matter who built them. A vision in which technology works for you, not the other way around. While others protected proprietary, stand-alone architectures, we focused on taking
companies into the network age, providing systems and software
with the scalability and reliability needed to drive the electronic marketplace.
Introducing Visual Studio .NET; visionary yet practical, the single
comprehensive development tool for creating the next generation
of applications has arrived. Developers can use Visual Studio .NET to:
• Build the next-generation Internet.
• Create powerful applications fast and effectively.
• Span any platform or device.
Visual Studio .NET is the only development environment built from
the ground up for XML Web services. By allowing applications to
share data over the Internet, XML Web services enable developers to
assemble applications from new and existing code, regardless of
platform, programming language, or object model.
IONA is the leading e-Business Platform provider for Web Services
Integration. IONA Orbix E2A enables the flow of information across
disparate systems and the liberation of application assets for new
business opportunities. For additional information about IONA, visit
our Web site at http://www.iona.com.
Oracle Corporation (Nasdaq: ORCL) is the world’s largest enterprise
software company, providing enterprise software to the world’s
largest and most successful businesses. With annual revenues of
more than $9.4 billion, the company offers its database, tools, and
application products, along with related consulting, education, and
support services. Headquartered in Redwood Shores, California,
Oracle is the first software company to develop and deploy 100 percent Internet-enabled enterprise software across its entire product
line: database, server, enterprise business applications, and application development, and decision support tools.
2003 East Silver Sponsor
HP is a leading provider of products, technologies, solutions and
services to consumers and business. The company’s offerings span IT
infrastructure, personal computing and access devices, global services, and imaging and printing. Our $4 billion (U.S.) annual R&D
investment fuels the invention of products, solutions and new technologies, so that we can better serve customers and enter new markets. We invent, engineer, and deliver technology solutions that drive
business value, create social value, and improve the lives of our
customers.
2003 East Corporate Sponsors
Rational Software provides a software development platform that
improves the speed, quality, and predictability of software projects.
This integrated, full life-cycle solution combines software engineering
best practices, market-leading tools, and professional services.
Ninety-six of the Fortune 100 rely on Rational tools and services to
build better software, faster. Additional information is available on
the Internet at http://www.rational.com
Sams Publishing has more than 500 titles in print, and is one of the
most successful computer book publishers in the world. From
introductory tutorials to comprehensive reference books, Sams
Publishing focuses on teaching tomorrow’s programmers, developers
and system administrators the skills they need to build and manage
emerging technologies.
Sybase has always delivered solutions that help customers to share
data, is platform independent, and integrates everything: platforms,
application servers, components, databases, portals, processes, message brokers, and mobile/wireless. Our technologies have the insight
that will promote ease of use, leverage best practices, ensure positive ROI, and help your organization build a successful, pragmatic
strategy based on next-generation technologies. Check us out at
http://www.sybase.com/solutions/e-business
DE solutions and thought leadership deliver the value of Web services to business users today. DE unleashes the value of underlying IT
assets, giving enterprises the freedom to innovate and evolve business processes within a standards-based, vendor neutral, loosely
coupled framework. Some of the largest corporations in the world
rely on DE’s Web services solutions. www.digev.com
Register Online @ sys-con.com
17
The Largest Expo Focusing on
Java, Web Services, .NET & XML
Walk the Expo Floor, visit each of these
pioneers, and get the answers you need!
Please refer to the
conference Web site
for an updated list
of sponsors &
exhibitors
Expo Hours
Exhibit Hall A
Wednesday, March 19:
11:00am - 6:00pm
Thursday, March 20:
11:00am - 4:00pm
Opening Night
Reception on the
Expo Floor
Wednesday, March 19:
5:00pm - 6:00pm
Actional
Altio
Altova
asp.netPRO
ASPstreet.com
Attachmate
BEA WebLogic Developer’s Journal
Borland
ColdFusion Developer’s Journal
Compuware
Digital Evolution
EAI Industry Consortium
Ektron
Fair, Isaac and Company
Forum Systems
GAO Web Services Inc.
Hewlett-Packard
HSPstreet.com
Infragistics
IONA
Java Developer’s Journal
JavaWorld
McCabe & Associates
Melissa Data
Merant
Microsoft
Mindreef
.NET Developer’s Journal
Novell
OASIS
ParaSoft
PerfectXML
Rational Software
SAMS Publishing
SD Times
SoftArtisans
Software AG
Sonic Software
SpiritSoft
Sun Microsystems
Sybase
TeamStudio
TogetherSoft
Web Services Journal
WebSphere® Developer’s Journal
Wireless Business & Technology
XML-Journal
Xtremesoft
(List as of December 2002)
HOTEL ARRANGEMENTS ARE EASIER THAN EVER!
Special arrangements have been made with some of Boston’s finest hotels, priced well below regular rates. Hotels are located within walking distance, if not connected to the
Hynes Convention Center. To learn more about hotel savings, call ETI at (800) 829-2281 or (201) 444-0060 (direct) or fax reservations to (201) 444-0062. To make online reservations visit www.expotravel.com by February 24, 2003.
SPECIAL RATES
Official Hotel
Address
Single
Double
Hilton Boston Back Bay
40 Dalton Street
$149
$149
Sheraton Boston Hotel
39 Dalton Street
$159
$159
To make reservations call (800) 829-2281or (201) 444-0060 (direct). Fax reservations to (201) 444-0062. Credit card information is required to guarantee reservations
and expedite confirmation. Confirmations will be mailed directly from the hotel, time permitting. All changes and cancellations should be made directly through ETI.
Special Arrangements have been made with these Airlines for Web Services Edge East 2003 Attendees!
American Airlines is proud to offer discounted fares to Web Services Edge East 2003 attendees to fly to Boston this March 18-20, 2003.
Valid travel dates are March 13 to March 25, 2003.
American is offering 5% off the lowest published fare or 10% off full Coach, Business and First class fares. In addition, American is extending a
5% bonus discount for ticketing 30 days in advance. For reservations, call American at (800) 433-1790 and reference STAR file number A5433AW
Continental Airlines is proud to offer Web Services Edge East 2003 attendees Special Fares! Fly to Boston & Web Services Edge East 2003 this March 18-20, 2003.
Special rates are valid for travel from March 13 to March 25, 2003.
For Reservations & Ticketing:
Contact Continental MeetingWorks (6:00am - 10:00pm CST , Seven (7) day a week) at (800) 468-7022 (United States or Canada) and provide the Z Code
ZWMF and Agreement Code VSD04D. For International reservations contact the local Continental Airlines Reservations Office.
AVIS is Proud to Offer Special Rates for:
Web Services Edge East 2003
March 18 - 20, 2003
Boston, MA
Avis Worldwide Discount (AWD) Number: D918596
Call (800) 331-1600
18
Register by Phone 201 802-3058
REGISTRATION FORM
CONFERENCE: March 18 – 20, 2003 EXPO: March 19 – 20, 2003
John B. Hynes Veteran Memorial Convention Center • Boston, MA
THREE WAYS TO REGISTER FOR CONFERENCE
1) On the Web: Credit Cards or “Bill Me” Please make checks payable to SYS-CON Events
2) By Fax: Credit Cards or “Bill Me” 201-782-9651
3) By Mail: 135 Chestnut Ridge Road, Montvale, New Jersey 07645, Attention: Registration
Please note: Registrations are not confirmed until payment is received.
Please complete sections 1, 2, 3 and 4
1
YOUR INFORMATION (Please Print)
Mr.
Ms.
First Name ________________________________Last Name __________________________________________
B. Business/Industry
Title __________________________________________________________________________________________
❑ Computer Software
❑ Computer Hardware and
Electronics
❑ Computer Networking &
Telecommunications
❑ Internet/Web/E-commerce
❑ Consulting & Systems
Integrator
❑ Financial Services
❑ Manufacturing
❑ Wholesale/Retail/Distribution
❑ Transportation
Company ______________________________________________________________________________________
Street ________________________________________________________________________________________
Mail Stop ______________________________________________________________________________________
City __________________________________________________________________________________________
State________________________________Zip ____________________Country __________________________
Phone ________________________________________________________________________________________
Fax ____________________________________________E-Mail ________________________________________
2
4
A. Your Job Title
❑ CTO, CIO, VP, Chief Architect
❑ Software Development Director/Manager/Evangelist
❑ IT Director/Manager
❑ Project Manager/Project Leader/Group Leader
❑ Software Architect/Systems Analyst
❑ Application Programmer/Evangelist
❑ Database Administrator/Programmer
❑ Software Developer/Systems Integrator/Consultant
❑ Web Programmers
❑ CEO/COO/President/Chairman/Owner/Partner
❑ VP/Director/Manager Marketing, Sales
❑ VP/Director/Manager of Product Development
❑ General Division Manager/Department Manager
❑ Other (please specify)____________________________
PAYMENT METHOD:
(Payment in full due with registration)
Check #_______________________________________ Amount of Check $ ______________
Visa
MasterCard
American Express
Discover
Name on card_________________________________________________________________
Card #______________________________________________
Exp. Date______________
Signature_____________________________________________________________________
Billing Address (if different from mailing address)
_______________________________________________________________________
3
Total Registration fee $____________
PLEASE INDICATE
YOUR CONFERENCE CHOICE
❑
Before 2/14/03
Before 3/14/03
On Site
GP Gold Passport Good for all three days of the .NET,
$1,495.00
Web Services, XML, Java, and Vendor Tracks, including the
XML Certified Developer Fast Path Tutorial, Keynotes, Panel
Discussions, preferred seating for Microsoft .NET’s Russ’
“Tool Shed” Tutorial, and your choice of One Sun
Microsystems Java˙ University Class
$1,695.00
$1,795.00
$1,295.00
$1,495.00
$1,695.00
$1,195.00
$1,295.00
$1,395.00
❑
3D Three Day Conference
(Does not include Sun Java™ Education)
❑
2 Day Conference (Does not include Sun Java™
Education) (select any two days: ❑ Tue. ❑ Wed.
❑
10,000 or more
5,000 - 9,999
1,000 - 4,999
500 - 999
100-499
100 or less
Location
01 ❑
02 ❑
03 ❑
04 ❑
05 ❑
06 ❑
Company
01 ❑
02 ❑
03 ❑
04 ❑
05 ❑
06 ❑
D. Please indicate the value of communications and
computer products and services that you recommend,
buy, specify or approve over the course of one year:
❑
❑
❑
❑
$10 million or more
$1 million - $9.9 million
$500,000 - $999,999
$100,000 - $499,999
❑ $10,000 - $99,999
❑ Less than $10,000
❑ Don’t know
E. What is your company’s gross annual revenue?
❑
❑
❑
❑
$10 billion or more
$1 billion - $9.9 billion
$100 million - $999 million
$10 million - $99.9 million
❑ $1 million - $9.9 million
❑ Less than $1 million
❑ Don’t know
F. Do you recommend, specify, evaluate, approve or purchase
wireless products or services for your organization?
01 ❑ Yes
02 ❑ No
Thurs.)
❑
1 Day Conference (Does not include Sun Java™ Education)
(select any one day: ❑ Tue. ❑ Wed. ❑ Thurs.)
$495.00
$695.00
$895.00
❑
JU1 Sun Java™ University Class
Select one: ❑ Web Services Programming
Using Java™ Technology and XML (Mar.18)
❑ Java™ Fast Path: Programmer (Mar.19)
❑ Java™ Fast Path: Architect (Mar. 20)
$695.00
$895.00
$995.00
❑
JU2 Sun Java™ University Class
Select two: ❑ Web Services Programming
Using Java™ Technology and XML (Mar.18)
❑ Java™ Fast Path: Programmer (Mar.19)
❑ Java™ Fast Path: Architect (Mar. 20)
$1,295.00
$1,495.00
$1,595.00
❑
JU3 Sun Java™ University Class
Select three: ❑ Web Services Programming
Using Java™ Technology and XML (Mar.18)
❑ Java™ Fast Path: Programmer (Mar.19)
❑ Java™ Fast Path: Architect (Mar. 20)
$1,495.00
$1,695.00
$1,895.00
If you require special assistance covered
under the Americans with Disabilities Act,
please call 201-802-3058 by
March 4, 2003.
Travel/Hospitality
Government/Military/Aerospace
Health Care/Medical
Insurance/Legal
Education
Utilities
Architecture/Construction/Real
Estate
❑ Agriculture
❑ Nonprofit/Religious
❑ Other (please specify)
_______________________
C. Total Number of Employees at Your Location and
Entire Organization (check all that apply):
Check or Money Order Enclosed (Registration confirmed upon receipt of payment)
Charge my
❑
❑
❑
❑
❑
❑
❑
CANCELLATIONS,
SUBSTITUTIONS, REFUNDS
Fax written request to SYS-CON Registration
201-782-9651. Requests for refunds received
prior to February 15, 2003 will be honored,
less a 10% handling charge; requests received
after February 15, 2003, and before March 1,
G. Which of the following products, services, and/or technologies
do you currently approve, specify or recommend the purchase of?
❑ Application Servers
❑ Web Servers
❑ Server Side Hardware
❑ Client Side Hardware
❑ Wireless Device Hardware
❑ Databases
❑ Java IDEs
❑ Class Libraries
❑ Software Testing Tools
❑ Web Testing Tools
❑ Modeling Tools
❑ Team Development Tools
❑ Installation Tools
❑ Frameworks
❑ Database Access Tools / JDBC Devices
❑ Application Integration Tools
❑ Enterprise Development Tool Suites
❑ Messaging Tools
❑ Reporting Tools
❑ Debugging Tools
❑ Virtual Machines
❑ Wireless Development Tools
❑ XML Tools
❑ Web Services Development Toolkits
❑ Professional Training Services
❑ Other [Please Specify]
________________________________
SYS-CON Events, Inc, and SYS-Con Media make no warranties regarding
content, speakers or attendance. The opinions of speakers, exhibitors and
sponsors do not reflect the opinion of SYS-CON Events and SYS-CON Media
and no endorsement of speakers, exhibiting companies products, or sponsors
is implied.
2003, will be honored less a 20% handling
charge. No requests for refunds will be honored after March 1, 2003. Requests for substitutions must be made in writing prior to
March 14, 2003. No one under 18 is permitted
to attend. No warranties are made regarding
the content of sessions or materials. Speakers,
Register Online @ sys-con.com
sessions and schedule are subject to change
without prior notice.
No solicitation by anyone other than
official exhibitors, sponsors or marketing
partners is permitted. Such behavior is
cause for expulsion without refund.
19
REGISTER ONLINE TODAY @ SYS-CON.COM
Meet with the industry
Developer experts, professionals,
and visionaries
Event of
connecting the enterprise
with today’s i-technology!
Don’t
Miss the
2003
Conference
March 18–20, 2003
Exposition
March 19–20, 2003
Hynes Convention Center, Boston
WEB SERVICES EDGE CONFERENCE PAST SPONSORS & EXHIBITORS
135 Chestnut Ridge Rd.
Montvale, NJ 07645
PRSRT STD
US POSTAGE
PAID
EGRNVLE PA
PERMIT #674
ADVERTISERINDEX
ADVERTISER
PHONE
PAGE
AccelTree
www.acceltree.com
+91-20-528 58 81
38
Altova
http://jdj.altova.com/code
978-816-1600
13
Crystal Decisions, Inc
www.crystaldecisions.com/cr9/218
888-333-6007
2
Extentech Inc.
www.extentech.com
415-759-5292
60
Fiorano Software, Inc.
www.fiorano.com
408-354-0846
45
InetSoft Technology Corp.
www.inetsoft.com/jdj
888-216-2353
35
Infragistics, Inc.
www.infragistics.com
800-231-8588
14-15
InstallShield
www.installshield.com/mpjdj
847-466-6000
29
INT, inc.
www.int.com
713-975-7434
34
Intraware
www.intraware.com/evalapp/
800-469-4313
36
iSavvix
http://community.isavvix.com
703-689-3190
49
ITKO
www.itko.com/lisa
JDJ Workshop
www.sys-con.com/education
201-802-3058
59
Jinfonet
www.jinfonet.com/j3.htm
301-838-5560
33
Kenetiks
www.kenetiks.com
888-KENETIKS
23
Linux Business & Technology
www.sys-con.com
888-303-5282
57
www.macromedia.com/go/jrun4jdj
415-252-2000
41
www.nsoftware.com/subscriptions
800-225-4190
39
www.objectventure.com/tutorials
978-425-9654
47
Oracle
oracle.com/experts
800-633-1072
7
Parasoft Corporation
www.parasoft.com/jdj2
888-305-0041
4
Precise Software
www.precise.com/jdj
800-310-4777
31
QUALCOMM Incorporated
www.brew2003.com
858-587-1121
55
Rational Software
www.rational.com/offer/javacd2
408-863-9900
19
ReportingEngines
www.reportingengines.com/download/jdj1/jsp
888-884-8665
26-27
ReportingEngines
www.reportingengines.com/download/jdj2.jsp
888-884-8665
17
ReportMill Software
www.reportmill.com/webstart
214-513-1636
37
Salmon LLC
www.salmonllc.com/sofia-jdj
516-485-1118
25
Sitraka (now part of Quest Software)
www.sitraka.com/jclass/jdj
800-663-4723
84
Sitraka (now part of Quest Software)
www.sitraka.com/jprobe/jdj
800-663-4723
51
Sitraka (now part of Quest Software)
www.sitraka.com/performasure/jdj
800-663-4723
21
Macromedia
/n software inc.
ObjectVenture
This index is provided as an additional service to our readers. The publisher does not assume any liability for errors or omissions.
URL
FPO
SpiritSoft
www.spiritsoft.com
WebAppCabaret
www.webappcabaret.com/jdj.jsp
11
83
831-464-6941
43
Web Services Edge 2003www.sys-con.com/webservicesedge2003east/registernew.cfm201-802-3069 61-72
Zero G
www.zerog.com
415-512-7771
3
General Conditions: The Publisher reserves the right to refuse any advertising not meeting the standards that are set to protect the high editorial quality of Java Developer’s Journal. All advertising is subject to approval by the Publisher. The Publisher assumes no liability for any
costs or damages incurred if for any reason the Publisher fails to publish an advertisement. In no event shall the Publisher be liable for any costs
or damages in excess of the cost of the advertisement as a result of a mistake in the advertisement or for any other reason. The Advertiser is fully
responsible for all financial liability and terms of the contract executed by the agents or agencies who are acting on behalf of the Advertiser.
Conditions set in this document (except the rates) are subject to change by the Publisher without notice. No conditions other than those set forth
in this “General Conditions Document” shall be binding upon the Publisher. Advertisers (and their agencies) are fully responsible for the content
of their advertisements printed in Java Developer’s Journal. Advertisements are to be printed at the discretion of the Publisher. This discretion
includes the positioning of the advertisement, except for “preferred positions” described in the rate table. Cancellations and changes to advertisements must be made in writing before the closing date. “Publisher” in this “General Conditions Document” refers to SYS-CON Publications, Inc.
What’s in the next
issue of JDJ ?
IS J2EE TOO BIG FOR
ITS OWN GOOD?
Speaking with Sun’s J2EE marketing team recently, we learned that J2EE
1.4 has been delayed so that “vital” new Web services features could be added.
Originally targeted for the second half of 2002, J2EE 1.4 FCS is not expected
now until this summer. Is Sun’s current monolithic approach to the Enterprise
Edition appropriate or effective? On the one hand, J2EE 1.4 is just another set of
specifications going through the Java Community Process (JCP); like all standards processes that’s bound to mean compromises and delays as competitors
sit around the table to hammer out the details. But J2EE is a big beast, as we’ve
all learned from bitter experience.
DEBUNKING THE MYTH OF IN-PROCESS
APPLICATION LAYER CACHING IN J2EE
ARCHITECTURES
J2EE applications are characterized by the continuous creation, consumption, and destruction of various
types of application objects. Creation and destruction
of these objects is expensive – object creation usually requires accessing persistent storage in back-end
systems, while object destruction requires releasing
resources used by the object.
DELIVER APPLICATION MANAGEMENT
WITH JMX
As enterprises increasingly deploy Java and J2EE
applications to drive mission-critical business
processes, application management is getting more
attention. The priority of the application and the scale
of the business are important drivers for application
management. Without scale and diversity, it’s easy to
make do without these capabilities. But with any sizable deployment, the costs of not having application
management are quickly apparent.
SWT – A NATIVE WIDGET TOOLKIT FOR
JAVA
The Standard Widget Toolkit (SWT) is a Java class
library that allows you to create native user interfaces. It’s designed to provide efficient, portable
access to the underlying facilities of the operating
system on which it’s implemented. SWT uses native
widgets wherever possible, giving an SWT program a
native look and feel and a high level of integration
with the desktop. This article introduces SWT by
describing some of the basic concepts and classes.
PRODUCT REVIEW: FIRSTSQL/J
PROFESSIONAL V2.0 BY FIRSTSQL
A well-designed database offers flexibility, speed,
and easy data manipulation through JDBC support.
This database must be 100% Java to maintain the
cross-platform compatibility as well as easy to use so
the average Java programmer can integrate it with
little difficulty. FirstSQL provides such a database in
FirstSQL/J Professional.
C U B I S T
T H R E A D S
J2ME
Confessions of a Procedural Programmer
Home
J2EE
J2SE
WRITTEN BY
BLAIR WYMAN
AUTHOR BIO
I have one of those little green plastic
flowcharting templates to help draw the
symbols and arrowheads, but I don’t use
it much anymore. (I don’t like to take it
out of its climate-controlled vault; the
chill might warp my precious slipstick.)
I’ll bet a few of you are smiling wistfully right now, secretly yearning for The
Days of Boxes and Green Plastic: the
expansive surfaces of glistening unblemished flowcharting paper, each
patterned page awaiting its chance to
represent pure logical art. What mere
“problem” could possibly withstand our
iterative onslaught of ink and thought?
Get thee behind me, General Ledger!
Yes, they were simpler days, or perhaps it was just me who was simpler. Ah,
but those first tastes of process abstraction (imposing order upon thought,
what a concept!) were just too alluring.
My first exposure to flowcharts wasn’t until college. I know for a fact that I
was much simpler then, but fortunately
so were the programming problems I
faced. There always seemed to be a way
to get that virtual boxcar attached to the
virtual train without having to lift it off
the virtual tracks. No list went unlinked,
no record went unwritten, and no
parameter went unpassed, by value or
by reference. Simpler days, indeed…
When I look back at my proudest
individual programming achievements,
I can’t help but start with that first college-level Pascal programming course.
The instructor was meticulous and
unwavering: no global variables without
solid justification (which meant no global variables), all local variables descrip-
tively named and declared alphabetically, and every procedure well begun with
a standard commentary prologue.
That’s how they lure you in. “Come
on! Here! Impose order on an unruly
universe… You can do it!” Yes, that was
my first foray into flowcharting, and
something in me changed.
I remember rushing to my thenfuture wife one bright summer day, waving my multipage fanfold printout, and
proudly exclaiming, “Look! This Pascal
assignment took over a HUNDRED
LINES of CODE! Isn’t that AMAZING!?”
She smiled, and I fell in love (which is
the only hard proof in existence that I
do, in fact, have moments of brilliance).
Next it was a thousand lines of this
and a thousand lines of that – logistic
equations, with variable zooming, grid
lines, and decimal input fields; fractal
monster functions, continuous yet
nowhere differentiable; images of reality that no one in the history of man
could ever have seen in the days before
transistors on silicon. I came to know
the Turbo Pascal graphics library by
heart. Programming these ugly beige
boxes to display such unfathomable
beauty was reaching deep into the viscera of the silicon beastie and twisting. I
liked it. I was hooked on programming.
Then I got a job, and it was my guts’
turn to be twisted… “Oh, Mandelbrot sets
are fascinating and beautiful and all, but
we really need that big honkin’ component test plan you promised us. Okay?”
The joy of individual, top-to-bottom programming – just for the fun of it – was still
there, but there was also a different, even
better, kind of joy: the joy of contributing
to something much, much larger.
My first big chance to prove myself part
of the team was during the development of
a new optimizing compiler back end for
our box. The theory of compiler front and
back ends was new to me then, though its
simple elegance was instantly compelling.
The idea is simple: separate the
compilation process into two phases – a
“front end” and a “back end.” The front
end converts source code to an “intermediate representation” (IR) – a form
that completely and unambiguously
represents the form and function of the
compilation unit, but which does not
presuppose any particular hardware
configuration. Then, a compiler back
end gets involved, and converts the IR
into optimized, hardware-specific
instruction streams and data structures.
The sweet part is this: any software
that can be compiled into a given IR will
run on any hardware that has a matching
back end. Now, if this sounds familiar, it
should. It’s arguably the very heart of the
write-once run-anywhere promise of Java.
At the front end, we have javac, Jikes, or
anything that generates proper bytecode.
(There is at least one RPG-to-bytecode
compiler, for instance.) The IR, of course, is
the classfile format. The back ends are the
various JITs, AOTs, and true interpreters
that make our JVMs work so well.
Imposing order upon thought…
What a concept! Maybe those boxes
and arrows and diamantine decisions
led somewhere after all.
[email protected]
Java Dudes
Blair Wyman is a software
engineer working for IBM
in Rochester, Minnesota,
home of the IBM iSeries.
O
kay, I’ll risk my career and admit it: I not only know how
to draw a flowchart, I still find myself using them from time to
time.
STORY CREDIT: FRED GROTT
82
MARCH 2003
The ultimate Java server
and client components
TM
JClass
®
Now part of
JClass is the only professional-quality Java component family that covers
every facet of Java development – sophisticated client-side user interface
components, reporting and utility components, server-side web client
components, and web services ready components. With
unrivaled platform, JDK, web/application server and IDE support,
JClass works everywhere your application does, or will.
JClass DesktopViews
The only components you need for Java applications and applets: 2D/3D
charts, tables, reporting, data-entry fields, database, tree view, layout
managers, and much more. Build enterprise-class user interfaces quickly and
cost-effectively.
JClass ServerViews
Now fully XML and Web Services ready! Add professional, dynamic
content to your Servlet, JSP, or J2EE applications. Generate interactive charts with JClass
ServerChart and dynamic PDF documents and reports with JClass ServerReport.
Evaluate and experience JClass for yourself – visit:
www.sitraka.com/jclass/jdj
© 2003 Quest Software, Inc. Quest, Sitraka and JClass are trademarks or registered trademarks of Quest Software, Inc. Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in
the United States and other countries. All other products are trademarks or registered trademarks of their respective companies.