Java: A to Z: Java: A to Z
Delivered By:
Alexander Day Chaffee, Purple Technology
Original Creator of Gamelan (http://java.developer.com/ - EarthWeb)
alexc@purpletech.com
Purple Technology: Purple Technology Java Training and Consulting
All levels of courses
http://www.purpletech.com/
Introduction: Introduction A is for Applet
B is for Bean
C is for Class
D is for...
What is Java?: What is Java? Largest island of the equatorial achipelago of Indonesia
Famous for beaches and coffee An island
What is Java?: What is Java? A language
developed by Sun
open specification
What is Java?: What is Java? An architecture
Virtual Machine
What is Java?: What is Java? A platform
Libraries / APIs
Applications
Applets
What is Java?: What is Java? An Operating System (OS)
Tailored for NCs and Embedded Systems
Not an OS for PCs
What is Java?: What is Java? A really good buzzword
Coined by Kim Polese
Why Java?: Why Java? High Productivity
Low Cost
Run Anywhere
N-tier Applications
Why Java?: Why Java? Forrester Research (1997)
Firms have embraced Java for:
Cross-platform support 42%
Heart of Internet/Intranet 16%
Increased productivity 12%
More robust applications 12%
Why Java?: Why Java? Zona Research (1997)
The top reasons for deploying Java:
Web-browser linkage 72%
Cross-platform compatibility 66%
Programmer interest 62%
Lower cost 49%
Where is Java heading?: Where is Java heading? Clients (Network, Distributed Computing with Nodes)
Servers (Web servers, collaboration services)
Embedded (TV Set-top, cell phones, smart cards)
Facts and Figures: Facts and Figures
Number of Java Developers (IDC): Number of Java Developers (IDC)
Java's First 800 Days (August 1997): Java's First 800 Days (August 1997) 0 to 70 million seats
Over 400,000 Java developers
Over 1,000,000 downloads of JDK 1.1
70,000+ subscribers of Java Developer ConnectionTM
Over 1000 shipping Java applications
Java's First 800 Days (cont.): Java's First 800 Days (cont.) 150 Java licensees
200+ universities offering Java courses
25+ Java IDEs (Integrated Development Environment) available
800 Java programming/computing books
Java's First 800 Days (cont.): Java's First 800 Days (cont.) Over 650 Java applications being developed for Sun's JavaStation(TM) computers
More than 200 JavaStation Pilot programs underway
Java's First 800 Days (cont.): Java's First 800 Days (cont.) 61 100% Pure Java(TM) certified applications as of August 21, 1997
More than 100 applications in the queue for 100% Pure Java certification as of August 21, 1997
On Web pages, Java applets outnumber Microsoft's Active X applications by a factor of seven
Java's First 800 Days (cont.): Java's First 800 Days (cont.) 100,000+ downloads of the Beans Development Kit
29 JavaBeans(TM) development tools
Over 150 JavaBeans components available
Java Tools Market: Java Tools Market 1996 retail sales of tools
Q196 Q296 Q396 Q496
Java 3,000 49,000 25,000 145,000
C++ 60,000 20,000 20,000 20,000
Other 190,000 145,000 115,000 95,000
(Source: PC Data)
Note: 145,000 is greater than 20,000 + 95,000
Java Tools Market: Java Tools Market Java-based or Java enabled development environment products will exceed 50 percent of the overall Internet-centric market in the year 2000
The market for Java IDE commercial seats will jump from about 400,000 programmers in 1997 to 750,000 programmers in 2000.
Forecast revenues for the Java IDE market will jump from 120 million in 1997 to 300 million in 2000, a 65.5% aggregate growth rate
Source: IDC
Andersen Consulting: Andersen Consulting 60,000 employees who travel to client sites
VERY heterogeneous computing environments
On-line travel system for their in-house needs
Privileges according to employee status
Andersen Consulting (cont.): Andersen Consulting (cont.) "Java is absolutely ready for prime time. It's the most bulletproof language we've used. We don't have to worry about memory leaks. If we had done this in C, we would still be debugging."
-Elmer Baldwin, President, via World Network.
CSX railway shipping: CSX railway shipping Find out which train(s) have your freight on map of USA
Click on train and see what freight belongs to your company
Saving CSX $10M in next year
CSX railway shipping (cont.): CSX railway shipping (cont.) CSX, using Java, has halved the time to write code and moved to a zero cost software distribution model.
At the same time, CSX has moved to a multi-client environment, improved satisfaction, expanded reach and self-enabled the customer
CSX (cont.): CSX (cont.) "Java is CSX's enterprise computing solution Java is deployed everywhere and at every level of CSX. And we are working on architecturally purifying CSX development," said Marshall Gibbs, assistant VP of enterprise solutions at CSX Technology in Jacksonville, FL, the IT unit of CSX Corp. "Our ROI on projects where we use Java has increased by 10 percent."
Dun & Bradstreet: Dun & Bradstreet On-line office supply catalogue for in-house use
Privileges according to status at company
Federal Express : Federal Express "Java is our primary targeted application platform for internal apps." says FedEx CIO Dennis Jones. "No internal application work is occurring for the client aside from Java development."
Using Symantec Café
Ford Motor Credit Company.: Ford Motor Credit Company. "Ford Credit is using Java and the Internet to better serve our customers. Ford Credit is currently using Java to provide customers a convenient way to access account information - 24 hours a day, 7 days a week." -Terry Bone, Ford Motor Credit Company
National Library of Medicine (NIH) : National Library of Medicine (NIH) Using Java for health and information professionals to access database
Users' displays tailored to suit information (instead of line-oriented displays)
"The development of Java saved us the cost of developing to platform-specific window environments and greatly speeded up our delivery of a working prototype version of HSTAT (roughly six months from design to delivery)."
First Union Corp.: First Union Corp. "Java gives us greater selection of what applications we can use. Well over 90% of development is Java based," said Michael Love, vice president of the smart card initiative at First Union Corp in Charlotte, NC.
Java Future: Java Future Forrester Research, April 1997
52% of IT execs said Java is or would become part of their strategy within the year -- 16% have deployed production applications
Among companies doing Java development, 81% will be using it for mission critical development in the next two years
Java Future: Java Future Forrester Research, April 1997
92% of IT execs said Java is or would become part of their strategy by 1999 -- with 68% deploying production applications
Currently 14% use Java for server logic and database connections, but 74% expect to do this by 1999. Even more important, Java apps to drive database updates will jump from 4% to 54% in 2 years
Java Future: Java Future Zona Research, July 1997
By July 1998 - July 1999, nearly 60% of companies will have 1-10 full-time Java developers and 8% of companies will have 50+
Java Foundations: Java Foundations
Java Code: Java Code Simple Object Oriented
Distributed Interpreted
Robust Safe
Secure Architecture Neutral
Portable High Performance
Multi-Threaded Dynamic (GC)
Boy Scout Code: Boy Scout Code trustworthy loyal
helpful friendly
courteous kind
obedient cheerful
thrifty brave
clean reverent
History: History Green Project / FirstPerson / Oak
Consumer electronics
Set-top boxes
James Gosling, Patrick Naughton
History: History LiveOak (1993)
Arthur van Hoff
WebRunner (1994)
Patrick Naughton, Jonathan Payne
Java
Kim Polese
History: History Fall 1994: WebRunner written
Spring 1995: Java/HotJava announced at SunWorld ‘95
Fall 1995: Java Day New York
Birth of Gamelan
Spring 1996: First JavaOne (San Francisco)
Platform Independent: Why?: Platform Independent: Why? Write once, run anywhere
One code base to develop
Upwardly compatible with new technology
Writing code that will run on machines that haven't been invented yet
Cross-compatible with existing installed base
Cross-Platform: Cross-Platform Write-Once-Run-Anywhere
AIX, HP-UX, MacOS, OS2, Win95, WinNT, Netware, UnixWare, Irix, Solaris, and others
Platform Independent: How?: Platform Independent: How? Virtual Machine Application Application Application Windows MacOS Unix
Java Class Lifecycle : Java Class Lifecycle Source -> Bytecode -> Interpreter
Java Class Lifecycle: Java Class Lifecycle Source File
(.java) Class File
(.class) Compiler
(javac) Java Virtual Machine (JVM) ClassLoader Bytecode Verifier Interpreter Just-in-time compiler Security Manager Operating System Network
or
File System = security gateway
Security Architecure: Security Architecure Has to go through Verifier on one side and Security Manager on the other
Sandbox
Cryptography / signed applets
Secure: Secure Java:
Adjustable security: “untrusted” through levels of trust
ActiveX:
Binary trust: all or nothing
Java vs. ActiveX: Java vs. ActiveX Java ActiveX
File IO yes yes
Network IO yes yes
Applet Caching yes yes
Erase hard disk no yes
Upload confidential information
no yes
Object-Oriented: Object-Oriented Encourages more flexible and reliable designs
Fosters reuse of code and design
Reduces maintenance costs
Automatic Memory Management: Automatic Memory Management Greatly improves developer productivity
Reduces “memory leakage” problems
Powers of ten: Powers of ten Cost of fixing problems
Design = $1
Development = $10
Debugging = $100
Deployment = $1000
Brooks, The Mythical Man Month
Java helps at early stages
Problems are caught early
Distributed Computing: Distributed Computing Applications reside where they’re needed saving valuable desktop space
Accessible from any connected location
Native support for distributed app development (java.net, RMI, CORBA, DCOM)
Server-side strength: Server-side strength Built-in support for networking makes development easy
3-tier and n-tier development: 3-tier and n-tier development Flexible implementations separate user interface from business logic and from database storage
Java Libraries and APIs: Java Libraries and APIs
Java API Strategy: Java API Strategy
Core Libraries (APIs): Core Libraries (APIs) UI
JFC
IO
Net
JDBC
RMI
Extended APIs: Extended APIs Electronic Commerce
Network Management
Security
JavaBeans - GUI Components
Enterprise Java - Enterprise Wide Backend Database Connectivity
Server - Web Server or Distributed Applications
JavaMedia - Multimedia
User Interface: AWT: User Interface: AWT Based on native widgets
Native look-and-feel
Simple components
Swing/JFC: Swing/JFC Builds on AWT and IFC
Pluggable look and feel
Rich set of pre-defined components
Fully customizable
Simplify commercial GUI development
Open component market
AFC / WFC: AFC / WFC Microsoft's alternative
Write once, run on Windows
Out as of March 11, 1998
Standard Extensions: Standard Extensions Servlets
InfoBus
Java Help
JavaMail
Java and Business: Java and Business JDBC
JNDI (Java Naming and Directory Interface)
Java Transaction Services
Enterprise Java Beans
Distributed Computing: Distributed Computing
java.net: java.net uses TCP/IP
works on all Java platforms
all open protocols of the Internet
HTTP, FTP, SMTP, IMAP
Source code:
Socket s = new Socket (“www.internet.com”,80);
RMI: RMI sits on top of java.net
allows distributed computing
connect to objects running on remote servers
CORBA: CORBA OMG standard for distributed computing
alternative to RMI
works with other languages (C, C++, Smalltalk) and existing programs
portable, but not interoperable
Java does CORBA
Java Interface Definition Language JIDL/CORBA
JDBC: JDBC connects to SQL databases
allows access to existing corporate data
100% Pure Java drivers for most major database engines
Oracle, Sybase, Informix, etc.
JDBC Tools: JDBC Tools JBMS from CloudScape
EPIC from Novera
JavaBlend from JavaSoft/SUN
Visual Café Databse Development Edition
JDBC Beans
dbAnywhere Beans
JDBC Middleware: JDBC Middleware Symantec dbAnywhere
Borland DataGateway
WebLogic
several others
Components: Components
Spaghetti Code: Spaghetti Code Business logic mingled with systems code
Ported to legacy systems
Complex to develop
Expensive to maintain
Java Beans: Java Beans Marketable software parts
Business applications as reusable components
Leverages legacy systems
Easy to build/extend
Easy to distribute
What is a component?: What is a component? Software “part”
Self-contained, independent
Plug-and-play, drag-and-drop
Interact and interoperate with other components
Assemble components to create an application
Ready for use by visual programming tools
Marketable
Split Development: Split Development JavaBeans producers
Create components for user-interface and business-logic
JavaBeans consumers
Use JavaScript Applet Embedding for web pages
Use JavaStudio and other visual development tools
Commercial User-Interface JavaBeans: Commercial User-Interface JavaBeans JScape (www.jscape.com)
KL Group (www.klg.com)
Lotus Kona project (www.lotus.com)
Rogue Wave
Dundas
Many more: see http://www.javasoft.com/beans/
Enterprise Java Beans: Enterprise Java Beans Adds business services to Java
Transactions, naming, etc.
Simplified development
don’t need to worry about threading, locking, transaction issues
IBM heavily involved
Client-side Java: Client-side Java
Applets: Applets Are delivered through the internet or intranet
On-demand, when needed
Run inside a Java-enabled web browser
Are secure
Limited or no access to the local machine (“client”)
Browser compatibility: Browser compatibility Browsers, yuck
Navigator 2.x, 3.x, 4.x
Internet Explorer 3.x, 4.x
The Activator: The Activator
Activator, yay: Activator, yay uses latest JRE
to deploy Java on intranets
eventually, on Internet
Microsoft's Java: Microsoft's Java
Java vs. HTML: Java vs. HTML HTML is a presentation format
Was never meant to be used for interactive applications
Latency, or turn-around time, is too high
Dynamic HTML is really just window dressing
Java vs. HTML: Java vs. HTML Java is a full-fledged application language
High-level of interaction with low-latency
More powerful and easier to use interfaces
Flexible enough to play any part in a solution
Java can do it all: Java can do it all Server-side or back-end processing
Middleware to transport and translate information
Front-end user interface
Adapts to client: from PC’s, NC’s to Hand-held devices
Java Applications: Java Applications Marimba Castanet delivers applications
Changes nature of software
No more upgrades! Just automatic updates
http://www.marimba.com/
Founded by four original Java team members
Server-side Java: Server-side Java
Servlets: Servlets Cross-platform server-side scripting
Like CGI, only cooler
Java Web Server: Java Web Server Server written in Java
Runs servlets
Cheap
Java Application Server: Java Application Server Based on Java Web Server
High-performance
Enterprise Java Beans
Enterprise Java Beans: Enterprise Java Beans Framework for enterprise servers
Adds transactions, persistence, multithreading to server
Deals with tough issues, keeping server-side business objects simple
Many EJB servers (IBM, Weblogic, JavaSoft, etc.)
Java Myths: Java Myths
Myth: Java is Proprietary: Myth: Java is Proprietary Truly open standards
Developed in collaboration with other partners
IBM, Symantec, Intel, Oracle, …
Long period of public comment and revision
Several "clean-room" implementations underway
Kaffe
Sun does not compete with application developers
Or does it? (Java Application Server, HotSpot)
Java is an ISO Publically Available Standard
approved 20 to 2
Myth: Java has poor performance: Myth: Java has poor performance Video Games
Frag Island – Quake Rendering Engine (http://fragisland.fragzone.se/)
Warp - Karl Hornell is God (http://www.tdb.uu.se/~karl/java/warp.html)
Built-in Multi-threading improves performance
Myth: Java has poor performance: Myth: Java has poor performance Interpreter is fine for IO-bound apps (including UI)
Very fast with Just-in-time (JIT) compilers
Now available on most platforms
HotSpot
Object-oriented optimization
Generational Garbage Collection
malloc/free test: JVM 18 sec, MSJVM 8 sec, C++ 6 sec, HotSpot 2 sec.
Many other enhancements
Myth: Java has poor performance: Myth: Java has poor performance Compile to native code where possible
Compile server-side applications directly to the platform on which they’ll be used
SuperCede and Symantec Café/Visual Café support this
Note: lose some benefits of Java (notably dynamic linking)
Myth: Java is immature : Myth: Java is immature Compiler Bugs
Almost none in real-world experience
Java Compatibility Test required by all JavaVM licensees
Myth: Java is immature : Myth: Java is immature Class Library Bugs
AWT in JDK 1.1 much improved
JFC takes Java UI to the next level
Myth: Java is immature: Myth: Java is immature Java Virtual Machine problems
Most are from implementations in browsers
They lag behind JDK releases
Affects “cross-platform” compatibility
100% Pure Java crusade, run seamlessly across platforms
Activator
Myth: Write once, run anywhere: Myth: Write once, run anywhere Should be, “Write once, debug everywhere, run anywhere”
Need a good debugger (like Café)
Java Myths: NCs vs. PCs: Java Myths: NCs vs. PCs PC vs NC: reality both will co-exist and overlap in functionality
Network and server load issues: reality careful system administration and caching required
Don't need to throw everything away and start from scratch
Myth: Java vs. Microsoft: Myth: Java vs. Microsoft Java works great under Microsoft OS
IIS has full Java integration for ASPs
Other Java Initiatives/Environments: Other Java Initiatives/Environments
JavaPC: JavaPC Turn old PCs into NCs
Personal Java: Personal Java Tailored for products such as mobile phones, set top boxes, screenphones, mid-range mobile phones
Designed to fit in devices with 2 Mb or less
Embedded Java: Embedded Java tailored for small memory, high volume products
Tailored for products such as industrial controllers, pagers, routers, switches
Designed to fit in devices < .5 Mb ROM
Doesn't require general purpose applet downloading capabilities
Includes the Java VM and core set of APIs
Java Card: Java Card Use in Smart Cards
Java Ring
Dallas Semiconductor
32K program RAM, 6K data RAM
Serial port interface
Contains private key crypto
Runs off the “1” bits
Auto-zeroing RAM
Other Companies: Other Companies
Netscape: Netscape First Java licensee
Recently announced they're canceling their Java program
Java will still work in Netscape with Activator etc.
Also working (halfheartedly) on Javagator
Microsoft: Microsoft COM integration
IIS
AFC / WFC
Visual J++ 6.0
SDKJ 3.0 just released in beta
Write once, run on Windows
Did someone say “lawsuit?”
Symantec: Symantec First with first out with dev tools, an IDE, a RAD IDE, a JIT, and a database-oriented product
Developing JFC core technologies
Developing JFC look-and-feels
Just-in-time compiler keeps getting better
Enhancing debugger support
IBM: IBM VisualAge for Java - nice RAD tool
San Francisco
Enterprise Java Beans
Licensing picoJava
Developing Java: Developing Java
Developing Java:IDEs: Developing Java:IDEs Best ones are on PC
Symantec Café
Borland JBuilder
Microsoft Visual J++
Developing Java: Java Studio: Developing Java: Java Studio
Java Third-Party Class Libraries: Java Third-Party Class Libraries
Java Generic Library: Java Generic Library http://www.objectspace.com/jgl
Collections
sequences, maps, sets, queues, stacks
Algorithms
sorting, searching, transforming
ACME collection: ACME collection Jef Poskanzer
http://www.acme.com/java/software/
Cryptography
Widgets and Common Dialog Boxes
Graphic encoding/decoding
IBM’s San Francisco Initiative: IBM’s San Francisco Initiative Common Business Objects: general ledger, sales, inventory
Will support EJB
Java Testing & Analysis Tools: Java Testing & Analysis Tools SunTest - Sun Microsystems division
JavaStar
Test Java applications through GUI interaction
JavaSpec
Test Java applications through APIs
JavaScope
Code-coverage tool
Other Testing Tools: Other Testing Tools Plum Hall, Inc.
Test Conformance Suite
Optimization Software Engineering
Columbo - performance analysis
optTest for Java - stress testing
Conclusion: Conclusion
Slide126: [APPLAUSE]
Slide127: [LUNCH]
Relevant Books:: Relevant Books: Rapid Development, by Steve McConnell, Microsoft Press
Design Patterns, by Gamma, Helm, Johnson, Vlissides, Addison-Wesley
Object-Oriented Software Construction, 2nd Ed., Bertrand Meyer, Prentice-Hall/PTR
Relevant Web Site Resources: Relevant Web Site Resources Javasoft & Sun: www.javasoft.com & www.sun.com
Developer.com: java.developer.com
Symantec: www.symantec.com
IBM: www.ibm.com/java
Borland: www.borland.com
SuperCede: www.supercede.com
Credits: Credits Purple Technology
Java Training and Consulting
Symantec Corp.
Java Development Tools
Advanced Web Technologies
Java-only training, mentoring, and consulting company
Sun Microsystems
JavaOne presentations: Lew Tucker, Alan Baratz, James Gosling
Personal Thanks
Lew Tucker, Gerry Seidman, Ian McFarland