Next Meeting: Sat, TBD
Meeting Directions

Be a Member


Help with Searching

20 Most Recent Documents
Search Archives
Index by date, title, author, category.


Mr. Know-It-All



Email Lists

SIGs (Internet, General Interest, Programming, Network, more..)

Online Chats


Past Presentations



Contact SCOUG

Copyright SCOUG

warp expowest
Pictures from Sept. 1999

The views expressed in articles on this site are those of their authors.

SCOUG was there!

Copyright 1998-2024, Southern California OS/2 User Group. ALL RIGHTS RESERVED.

SCOUG, Warp Expo West, and Warpfest are trademarks of the Southern California OS/2 User Group. OS/2, Workplace Shell, and IBM are registered trademarks of International Business Machines Corporation. All other trademarks remain the property of their respective owners.

The Southern California OS/2 User Group
Java in the Real World
Ron Lamb, Cisco Systems and SCOUG Member

Case Studies Access control Server Resource Pool Management Server
Performance related lessons
Java's Hotspot technology
JavaOne impressions
New Java avenues

Case Study
Three tiered AAA security server
AAA Server (C based)
DBServer (Java based)
GUI client (Java/Html based)

Case Study
Started on JDK 1.02 currently released on JDK 1.1.8.
Uses Applet, Servlet, and Application technology.
ACME web server used for Servlets
Heavily Multi-threaded. (Thread pool)
Runs on Solaris 2.5 and 2.6
Currently about 600+ installations

Case Study
GUI Lessons
3MB Java applets bad idea
Understand the platform before deploying on it.
AWT sucks.

Case Study
Browser incompatibilities big problem
Can't use "Netscape 4.5 or above"
Consider download times.
Design to minimize long download time.

Case Study
Tools now exist to help
Able to achieve excellent reliability using Java
Language is simple. No C++ clutter

Case Study
No Pointers
No Memory leaks relating to forgotten frees
Achieved Productivity gains
Completed Project < 6 months

Case Study
Make sure that the technology used meets marketing demands.
If not, expect backlash

Case Study
Not well suited for command line applications(CLI).
Wrapped CLI with shell scripts.
No single character read (C/R Required)
C/R required before able to read input
CLI commands are good candidates for native compilers

Case Study
Transaction Server (Java)
Command Line Interface (Java)
GUI client (Html/Java Servlets based)

Case Study
Development on Solaris 2.6/Win95
VisualCafe IDE used Win95
OptimizeIt 3.0 for profiling

Case Study
Used RMI for process communication
ACME web server for Servlets
Client GUI HTML based served up using Servlets

Case Study
JNI Interface to Counter subsystem
Moved from 1.1.7 to 1.2 late in development cycle

Lessons learned
Know how your third party library works.
Profiling does pay dividends
Using lowest common denominator is not always the best way.

Performance Lessons
Profile, Profile, Profile
General Performance tips

Profile, Profile, Profile
Java based profilers
JDK based
OptimizeIt (Linux/Solaris/Windows)
Jprobe (Solaris/Windows)
NuMega (Windows/Only)

Profile, Profile, Profile
Memory leaks(Yes you can have them in Java)
Method hogs (Hot spots)
Excessive Object Creation

Profile, Profile, Profile
Get a feeling of how programs run
Profile different algorithms

General Performance tips
Creating threads are expensive
Thread Pools are good idea
If thread is short lived, think of other ways to get the job done.

General Performance tips
Use buffers when possible
I/O does have some performance issues

General Performance tips
JAR files to minimize requests
Class loading management
Obfuscators & size reduction tools
Install on client system if possible

General Performance tips
String manipulation is expensive
Object Creation is expensive
Use Object Factories
Singleton objects where possible
Casting is expensive
Use Custom container classes

General Performance tips
Bad String temp = new String("Counting "); for (i=0; i < 1000; i++) temp = temp + i + " ..."; System.out.println(temp.toString());

General Performance tips
Better String temp = new String("Counting"); for (i=0; i < 100; i++) { String iString = Integer.toString(i); temp.concat (iString).concat(" ..."); } System.out.println(temp);

General Performance tips
Best StringBuffer tempBuff = new StringBuffer("Counting "); for (i=0; i < 100; i++) { tempBuff.append(i).append(" ..."); } System.out.println(tempBuff.toString());

String Performance
General Performance tips
Excessive Object Creation temp = temp + i + " ...";

Java's Hotspot
Java Hotspot Technology
Suns latest VM Technology
Designed for server based technology
Does not improve GUI performance
Adaptive compilation technology

Java Hotspot Technology
What have I learned using Java?

Java Conclusions
Java is platform independent (Mostly)
Java is a productive language
Java does have some performance issues.
Can produce highly reliable code.
Java has come a long way in a very short time

Biggest developer's conference
21,000 developers
International flavor
Large ISV turnout
Java love feast

JINI (Plug and Work)
Possible Language changes
Paramertized types
Operation overloading

kJava Technology Demos
Palm OS running a Java VM
Motorola SkyPager Running Java
Interactive TV Demos
Laser Tank Demo

IBM's VM port to Linux
VisualAge for Linux
Java Card Demo
Java Car

Embedded Java
All the ISV activity
Lots of Goodies
tshirts, pens, 8 in one tool, Magic 8 ball etc.

Lines, Lines, and more Lines
Conference Mascots
Lack of a JDK port commitment for Linux from Sun

Java has not been slowed by MS
Lots of opportunities
Java is expanding
Performance is improving

New Java avenues
Java New Technologies
Plug and Work
Micro Java (kJava)

Hot Java Links
Java Grande
Java One
Alpha Works (IBM)
Java Lobby
IBM Java

How to contact me