www.corewebprogramming.com
Java is Web-Enabled?
• Myth: Java is only for the Web
– Java “applets” run in Web pages
– Java “applications” run stand-alone
– Current usage (roughly)
• Client (applet): 5%
• Desktop (application): 45%
• Server (servlets/JSP/EJB): 50%
www.corewebprogramming.com
Java is Safe?
• Truth: Restrictions on permissible
operations can be enforced
– No “raw” memory manipulation (directly or indirectly).
• Thus, it is easy to identify prohibited operations.
– Applets, by default, prohibited from:
• Reading from the local disk
• Writing to the local disk
• Executing local programs
• Opening network connections other than to HTTP
server
• Discovering private info about user (username,
directories, OS patch level, applications installed,
etc.).
www.corewebprogramming.com
Java
Source Code
Java Bytecode
Compiler
(javac)
Java Bytecode
Execution
JIT Compiler
or Interpreter
Compile Time Run Time
Java is Cross-Platform?
• Truth: Java programs can compile to
machine-independent bytecode
• Truth: All major operating systems have
Java runtime environments
– Most bundle it (Solaris, MacOS, Windows 2000, OS/2)
www.corewebprogramming.com
Java is Cross-Platform?
• Myth: Safety and machine independence
can be achieved with no performance
penalty
– Current systems are about 20% slower than C++
– Upcoming releases claim to lower or eliminate that gap
– Expect the gap to stay at 10% or more
• Myth: Java is interpreted
– Early releases were interpreted
– Many major “Just in Time” (JIT) compilers
– HotSpot and “native” compilers even faster (IBM,
Symantec, TowerJ, etc.)
www.corewebprogramming.com
•Truth: Java has a portable graphics library
“Native look & feel” -- Java 1.1 UI controls adapt to OS
•Myth: The graphics library has everything
most applications need.
AWT (Java 1.0 and 1.1) was weak. JFC/Swing (Java 2)
much more complete and powerful.
Java is Cross-Platform?
www.corewebprogramming.com
Java is Cross-Platform?
• Myth: Write Once Run Anywhere
– Cross-platform code can be achieved, but you must test
on all platforms you will deliver on.
• Java applications can execute local code
• The graphics library behaves slightly differently on
different platforms
• The behavior of the thread scheduler is only loosely
defined
• Myth: Java will kill Microsoft
– There is also no longer immediate danger of the reverse
(Microsoft killing Java)
– Microsoft wavered between trying to fight Java and
joining it and making money by dominating the market.
With .NET, they are back to fighting it again.
www.corewebprogramming.com
Java is Simple?
• Truth: Java greatly simplifies several
language features
– Java has automatic memory management
• Does Windows and takes out the garbage
• No dangling pointers. No memory leaks.
• A problem for real-time programs
– Java simplifies pointer handling
• No explicit reference/dereference operations
• Everything is a pointer (like Lisp)
– No makefiles
– No header files
– C++ syntax streamlined
www.corewebprogramming.com
Java is Powerful?
• Truth: Java has a rich set of standard
libraries
– Networking
– Threads (lightweight processes)
– Distributed objects
– Database access
– Graphics: GUI controls and drawing
– Data structure library
– Arbitrary precision integral and fixed-point arithmetic
– Digital signatures
– Serialization (transmitting/reassembling data structures)
– File and stream compression
www.corewebprogramming.com
Java is Powerful?
• Myth: Java will increase programmer
productivity for all applications by XXX%.
• Myth: Java will kill C++
• Myth: All software should be written in Java
– Unix utilities: C
– Small/medium Windows-only programs: Visual Basic
– String parsing: Perl
– High-performance, single-platform OO systems: C++
– Air traffic control, aircraft flight software: Ada
– Knowledge-based systems: Lisp/CLOS
www.corewebprogramming.com
Key Java Packages
and Protocols
• Core Technologies
– JDBC
– RMI
– Jini (Device Networking)
– JavaBeans
– Swing
– Java 2D
• Standard Extensions
– Servlets and JavaServer Pages (JSP)
– Enterprise Java Beans
– Java 3D
www.corewebprogramming.com
Java Packages and Protocols:
JDBC (Java DataBase Connectivity)
• Standardizes mechanism for making
connection to database server
– Requires server-specific driver on client. No change to
server.
• Standardizes mechanism for sending
queries
– Either regular or parameterized queries (stored
procedures)
• Standardizes data structure of query result
– Assumes relational data, so data structure is a table
• Does not standardize SQL syntax
– Queries are simply strings
– Server extensions and enhancements supported
www.corewebprogramming.com
Java Packages and Protocols:
Remote Method Invocation (RMI)
• Built-in Distributed Object Protocol
– RMI lets a developer access a Java object and manipulate
it in the normal manner. Behind the scenes, each function
call really goes over the network to a remote object.
– Arbitrary Java data structures can be sent over the
network with little or no special packaging, due to Java’s
“serialization” mechanism
– Similar to a simplified CORBA, but restricted to
Java-to-Java communication
• Jini
– RMI-based protocol for self-documenting services.
– Allows real “plug and play” devices -- no separate drivers
– Jury is out on eventual success. Security and industry
adoption are open questions.
www.corewebprogramming.com
Java Packages and Protocols:
JavaBeans
• JavaBeans is to Java as ActiveX is to
Visual C++.
– Lets you package a Java program
as a software “component”
– Visual tools can modify/manipulate
it without knowing anything about
it in advance
• For example, you can drop a Bean into
Visual Café, IBM VisualAge for Java,
Inprise (Borland) JBuilder, Sybase PowerJ,
Metrowerks CodeWarrior, Sun JavaWorkshop, etc.,
and it is automatically available from their tool palette
for drag-and-drop development
– Better security and portability than ActiveX
– More ActiveX components available
www.corewebprogramming.com
Java Packages and Protocols:
Swing
• Standard GUI-control (widget) library in Java
2
• Many more built-in controls
• Much more flexible and customizable
• Includes many small features aimed at
commercial applications
– Tooltips, tabbed panes, on-line
help, HTML support, dockable
toolbars, multi-document
interface, etc.
• Look and feel can be
changed at run time
www.corewebprogramming.com
Java Packages and Protocols:
Servlets and JavaServer Pages (JSP)
• Servlets: Java’s answer to CGI
– Efficient: thread, not process, per request
– Convenient: HTTP headers, cookies, etc.
– Powerful: persistence, session tracking, etc.
– Secure: no buffer overflows or shell escapes
• Supported by virtually all Web servers:
– Native support: Netscape/iPlanet, IBM WebSphere, Oracle
8i/9i and Oracle Application Server, BEA WebLogic,
Silverstream, Sapphire/Web, etc.
– Via add-on engine: Apache, Microsoft IIS and Personal
WebServer, Netscape FastTrack, O’Reilly WebSite, StarNine
WebSTAR for MacOS, etc.
• JavaServer Pages (JSP)
– Convenient and efficient way to combine servlets and
HTML. Portable alternative to ASP & ColdFusion.
www.corewebprogramming.com
Java Packages and Protocols:
Enterprise JavaBeans (EJB)
• EJBs are to server components
what regular JavaBeans are to
application components
• Standardizes access to
services like load balancing,
persistence, failover, etc.
• Builds on JavaBeans, CORBA, and RMI
“under the hood”
• Potentially accessible via non-Java
programs
• Application Servers Supporting EJB
– BEA WebLogic, IBM WebSphere, Netscape, Oracle,
Progress SW Apptivity, NetDynamics, Sybase, Bluestone
Saphire/Web etc.
www.corewebprogramming.com
Basic Hello World Application
• “Application” is Java lingo for a stand-alone
Java program
– Note that the class name and the filename must match
– A file can contain multiple classes, but only one can be
declared public, and that one’s name must match the
filename
• File HelloWorld.java:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, world.");
}
}
www.corewebprogramming.com
Basic Hello World Application
(Continued)
• Compiling:
javac HelloWorld.java
• Running:
java HelloWorld
• Output:
Hello, world.
www.corewebprogramming.com
Command Line Arguments
• File ShowArgs.java:
public class ShowArgs {
public static void main(String[] args) {
for(int i=0; i<args.length; i++) {
System.out.println("Arg " + i +
" is " + args[i]);
}
}
}
www.corewebprogramming.com
Command Line Arguments,
Results
• Compiling and Running:
> javac ShowArgs.java
> java ShowArgs fee fie foe fum
Arg 0 is fee
Arg 1 is fie
Arg 2 is foe
Arg 3 is fum
www.corewebprogramming.com
Basic Hello WWW Applet
• File HelloWWW.java:
import java.applet.Applet;
import java.awt.*;
public class HelloWWW extends Applet {
public void init() {
setBackground(Color.gray);
setForeground(Color.white);
setFont(new Font("SansSerif", Font.BOLD, 30));
}
public void paint(Graphics g) {
g.drawString("Hello, World Wide Web.", 5, 35);
//5=left, 35=bottom
}
}
www.corewebprogramming.com
Basic Hello WWW Applet
(Continued)
• File HelloWWW.html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0
Transitional//EN">
<HTML>
<HEAD>
<TITLE>HelloWWW: Simple Applet Test.</TITLE>
</HEAD>
<BODY>
<H1>HelloWWW: Simple Applet Test.</H1>
<APPLET CODE="HelloWWW.class" WIDTH=400 HEIGHT=40>
<B>Error! You must use a Java enabled browser.</B>
</APPLET>
</BODY>
</HTML>
www.corewebprogramming.com
Basic Hello WWW Applet
(Continued)
• Compiling:
javac HelloWWW.java
• Running:
Load HelloWWW.html in a Java-enabled browser
www.corewebprogramming.com
Customizing Applets with
PARAM
import java.applet.Applet;
import java.awt.*;
public class Message extends Applet {
private int fontSize;
private String message;
public void init() {
setBackground(Color.black);
setForeground(Color.white);
fontSize = getSize().height - 10;
setFont(new Font("SansSerif", Font.BOLD, fontSize));
// Read heading message from PARAM entry in HTML.
message = getParameter("MESSAGE");
}
public void paint(Graphics g) {
if (message != null)
g.drawString(message, 5, fontSize+5);
}
}
www.corewebprogramming.com
Customizing Applets with
PARAM, cont.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>The Message Applet</TITLE>
</HEAD>
<BODY BGCOLOR="WHITE">
<H1>The <CODE>Message</CODE> Applet</H1>
<P>
<APPLET CODE="Message.class" WIDTH=325 HEIGHT=25>
<PARAM NAME="MESSAGE" VALUE="Tiny">
<B>Sorry, these examples require Java</B>
</APPLET>
<P>
<APPLET CODE="Message.class" WIDTH=325 HEIGHT=50>
<PARAM NAME="MESSAGE" VALUE="Small">
<B>Sorry, these examples require Java</B>
</APPLET>
...
</BODY>
</HTML>
www.corewebprogramming.com
Customizing Applets with
PARAM, Result
www.corewebprogramming.com
Summary
• Java is a complete language, supporting
both standalone applications and Web
development
• Java is compiled to bytecode and can be
run on any platform that supports a Java
Virtual Machine
• Java 2 Platform is available in a Standard
Edition, Enterprise Edition, or Micro Edition
• Compiling: use “javac”
• Executing standalone programs: use “java”
• Executing applets: load HTML file in
browser

More Related Content

PPTX
Preparing for java 9 modules upload
PDF
Play Framework and Activator
PDF
DevNexus 2019: Migrating to Java 11
PPTX
Node.js Development with Apache NetBeans
PDF
Java 8 in Anger (JavaOne)
PPTX
Developing in the Cloud
PPTX
Exploring Java Heap Dumps (Oracle Code One 2018)
Preparing for java 9 modules upload
Play Framework and Activator
DevNexus 2019: Migrating to Java 11
Node.js Development with Apache NetBeans
Java 8 in Anger (JavaOne)
Developing in the Cloud
Exploring Java Heap Dumps (Oracle Code One 2018)

What's hot (19)

PDF
[English version] JavaFX and Web Integration
PPTX
Hybrid Mobile Development with Apache Cordova and
PPTX
Scala in the Wild
PPTX
Advance Java Topics (J2EE)
PDF
An Introduction to Play 2 Framework
PDF
Web application development using Play Framework (with Java)
PDF
History of Java 1/2
PDF
OSGi Community Event 2010 - OSGi and Android
PPTX
Migrating to Java 11
PDF
Liberty: The Right Fit for Micro Profile?
PDF
Apache Cordova 4.x
PDF
itft-Java evolution
PDF
Server Side JavaScript on the Java Platform - David Delabassee
PDF
Migration tales from java ee 5 to 7
PDF
Play framework productivity formula
PDF
Eureka Moment UKLUG
PDF
From Java to Ruby...and Back
PDF
Java Web Start - How Zhara POS Works
PDF
KYSUC - Keep Your Schema Under Control
[English version] JavaFX and Web Integration
Hybrid Mobile Development with Apache Cordova and
Scala in the Wild
Advance Java Topics (J2EE)
An Introduction to Play 2 Framework
Web application development using Play Framework (with Java)
History of Java 1/2
OSGi Community Event 2010 - OSGi and Android
Migrating to Java 11
Liberty: The Right Fit for Micro Profile?
Apache Cordova 4.x
itft-Java evolution
Server Side JavaScript on the Java Platform - David Delabassee
Migration tales from java ee 5 to 7
Play framework productivity formula
Eureka Moment UKLUG
From Java to Ruby...and Back
Java Web Start - How Zhara POS Works
KYSUC - Keep Your Schema Under Control
Ad

Viewers also liked (20)

PPTX
Introduction to Java programming - Java tutorial for beginners to teach Java ...
PPT
Java tutorial PPT
PPT
9 cm604.1
PPT
SEM5- NPD -Chapter2 development processes
ODP
Introduction To Java.
PDF
Speedup Your Java Apps with Hardware Counters
PPTX
Presentation on Core java
PPS
Java Presentation
PPTX
Core java
PPT
Training ppt bsnl
PPT
Core java concepts
PPT
Object oriented programming (oop) cs304 power point slides lecture 01
PPTX
Java programming course for beginners
DOC
New final bsnl training report
PPT
Java Tutorial
DOC
Client Server Architecture
PPTX
BSNL Industrial Training ppt 2014.
DOC
bsnl project report
PPT
Oops ppt
PPTX
Client server architecture
Introduction to Java programming - Java tutorial for beginners to teach Java ...
Java tutorial PPT
9 cm604.1
SEM5- NPD -Chapter2 development processes
Introduction To Java.
Speedup Your Java Apps with Hardware Counters
Presentation on Core java
Java Presentation
Core java
Training ppt bsnl
Core java concepts
Object oriented programming (oop) cs304 power point slides lecture 01
Java programming course for beginners
New final bsnl training report
Java Tutorial
Client Server Architecture
BSNL Industrial Training ppt 2014.
bsnl project report
Oops ppt
Client server architecture
Ad

Similar to 01 java intro (20)

PDF
1java Introduction
PPTX
Advance java prasentation
PPT
Java2 platform
PDF
How to use Java in Web Application Development?
PDF
JAVA J2EE Training in Coimbatore - Fundamentals of Java J2EE
PDF
Java overview 20131022
PPT
Chapter 1 introduction to java technology
DOCX
Software environment
DOCX
Software requirement
PPTX
PPT on JAVA
PDF
Corejava ratan
PDF
Easy way to learn Core java full material
PPTX
Java language pppppt
PPTX
MODULE_1_The History and Evolution of Java.pptx
PPT
introduction to java-final with Unit Nexus
PPTX
Object Oriented concept-JAVA-Module-1-PPT.pptx
PPT
00 intro to java
PDF
Java application-development
PPTX
Features of java unit 1
PPT
Java for Recruiters
1java Introduction
Advance java prasentation
Java2 platform
How to use Java in Web Application Development?
JAVA J2EE Training in Coimbatore - Fundamentals of Java J2EE
Java overview 20131022
Chapter 1 introduction to java technology
Software environment
Software requirement
PPT on JAVA
Corejava ratan
Easy way to learn Core java full material
Java language pppppt
MODULE_1_The History and Evolution of Java.pptx
introduction to java-final with Unit Nexus
Object Oriented concept-JAVA-Module-1-PPT.pptx
00 intro to java
Java application-development
Features of java unit 1
Java for Recruiters

Recently uploaded (20)

DOCX
Cambridge-Practice-Tests-for-IELTS-12.docx
PDF
Race Reva University – Shaping Future Leaders in Artificial Intelligence
PDF
BP 505 T. PHARMACEUTICAL JURISPRUDENCE (UNIT 1).pdf
PPTX
B.Sc. DS Unit 2 Software Engineering.pptx
PDF
LEARNERS WITH ADDITIONAL NEEDS ProfEd Topic
PDF
BP 505 T. PHARMACEUTICAL JURISPRUDENCE (UNIT 2).pdf
PDF
What if we spent less time fighting change, and more time building what’s rig...
PPTX
Core Concepts of Personalized Learning and Virtual Learning Environments
PDF
Paper A Mock Exam 9_ Attempt review.pdf.
PDF
1.3 FINAL REVISED K-10 PE and Health CG 2023 Grades 4-10 (1).pdf
PDF
LIFE & LIVING TRILOGY - PART (3) REALITY & MYSTERY.pdf
PDF
ChatGPT for Dummies - Pam Baker Ccesa007.pdf
PDF
Empowerment Technology for Senior High School Guide
PDF
English Textual Question & Ans (12th Class).pdf
PPTX
Share_Module_2_Power_conflict_and_negotiation.pptx
PDF
HVAC Specification 2024 according to central public works department
PDF
Journal of Dental Science - UDMY (2021).pdf
PPTX
Introduction to pro and eukaryotes and differences.pptx
PPTX
Unit 4 Computer Architecture Multicore Processor.pptx
PDF
Environmental Education MCQ BD2EE - Share Source.pdf
Cambridge-Practice-Tests-for-IELTS-12.docx
Race Reva University – Shaping Future Leaders in Artificial Intelligence
BP 505 T. PHARMACEUTICAL JURISPRUDENCE (UNIT 1).pdf
B.Sc. DS Unit 2 Software Engineering.pptx
LEARNERS WITH ADDITIONAL NEEDS ProfEd Topic
BP 505 T. PHARMACEUTICAL JURISPRUDENCE (UNIT 2).pdf
What if we spent less time fighting change, and more time building what’s rig...
Core Concepts of Personalized Learning and Virtual Learning Environments
Paper A Mock Exam 9_ Attempt review.pdf.
1.3 FINAL REVISED K-10 PE and Health CG 2023 Grades 4-10 (1).pdf
LIFE & LIVING TRILOGY - PART (3) REALITY & MYSTERY.pdf
ChatGPT for Dummies - Pam Baker Ccesa007.pdf
Empowerment Technology for Senior High School Guide
English Textual Question & Ans (12th Class).pdf
Share_Module_2_Power_conflict_and_negotiation.pptx
HVAC Specification 2024 according to central public works department
Journal of Dental Science - UDMY (2021).pdf
Introduction to pro and eukaryotes and differences.pptx
Unit 4 Computer Architecture Multicore Processor.pptx
Environmental Education MCQ BD2EE - Share Source.pdf

01 java intro

  • 1. www.corewebprogramming.com Java is Web-Enabled? • Myth: Java is only for the Web – Java “applets” run in Web pages – Java “applications” run stand-alone – Current usage (roughly) • Client (applet): 5% • Desktop (application): 45% • Server (servlets/JSP/EJB): 50%
  • 2. www.corewebprogramming.com Java is Safe? • Truth: Restrictions on permissible operations can be enforced – No “raw” memory manipulation (directly or indirectly). • Thus, it is easy to identify prohibited operations. – Applets, by default, prohibited from: • Reading from the local disk • Writing to the local disk • Executing local programs • Opening network connections other than to HTTP server • Discovering private info about user (username, directories, OS patch level, applications installed, etc.).
  • 3. www.corewebprogramming.com Java Source Code Java Bytecode Compiler (javac) Java Bytecode Execution JIT Compiler or Interpreter Compile Time Run Time Java is Cross-Platform? • Truth: Java programs can compile to machine-independent bytecode • Truth: All major operating systems have Java runtime environments – Most bundle it (Solaris, MacOS, Windows 2000, OS/2)
  • 4. www.corewebprogramming.com Java is Cross-Platform? • Myth: Safety and machine independence can be achieved with no performance penalty – Current systems are about 20% slower than C++ – Upcoming releases claim to lower or eliminate that gap – Expect the gap to stay at 10% or more • Myth: Java is interpreted – Early releases were interpreted – Many major “Just in Time” (JIT) compilers – HotSpot and “native” compilers even faster (IBM, Symantec, TowerJ, etc.)
  • 5. www.corewebprogramming.com •Truth: Java has a portable graphics library “Native look & feel” -- Java 1.1 UI controls adapt to OS •Myth: The graphics library has everything most applications need. AWT (Java 1.0 and 1.1) was weak. JFC/Swing (Java 2) much more complete and powerful. Java is Cross-Platform?
  • 6. www.corewebprogramming.com Java is Cross-Platform? • Myth: Write Once Run Anywhere – Cross-platform code can be achieved, but you must test on all platforms you will deliver on. • Java applications can execute local code • The graphics library behaves slightly differently on different platforms • The behavior of the thread scheduler is only loosely defined • Myth: Java will kill Microsoft – There is also no longer immediate danger of the reverse (Microsoft killing Java) – Microsoft wavered between trying to fight Java and joining it and making money by dominating the market. With .NET, they are back to fighting it again.
  • 7. www.corewebprogramming.com Java is Simple? • Truth: Java greatly simplifies several language features – Java has automatic memory management • Does Windows and takes out the garbage • No dangling pointers. No memory leaks. • A problem for real-time programs – Java simplifies pointer handling • No explicit reference/dereference operations • Everything is a pointer (like Lisp) – No makefiles – No header files – C++ syntax streamlined
  • 8. www.corewebprogramming.com Java is Powerful? • Truth: Java has a rich set of standard libraries – Networking – Threads (lightweight processes) – Distributed objects – Database access – Graphics: GUI controls and drawing – Data structure library – Arbitrary precision integral and fixed-point arithmetic – Digital signatures – Serialization (transmitting/reassembling data structures) – File and stream compression
  • 9. www.corewebprogramming.com Java is Powerful? • Myth: Java will increase programmer productivity for all applications by XXX%. • Myth: Java will kill C++ • Myth: All software should be written in Java – Unix utilities: C – Small/medium Windows-only programs: Visual Basic – String parsing: Perl – High-performance, single-platform OO systems: C++ – Air traffic control, aircraft flight software: Ada – Knowledge-based systems: Lisp/CLOS
  • 10. www.corewebprogramming.com Key Java Packages and Protocols • Core Technologies – JDBC – RMI – Jini (Device Networking) – JavaBeans – Swing – Java 2D • Standard Extensions – Servlets and JavaServer Pages (JSP) – Enterprise Java Beans – Java 3D
  • 11. www.corewebprogramming.com Java Packages and Protocols: JDBC (Java DataBase Connectivity) • Standardizes mechanism for making connection to database server – Requires server-specific driver on client. No change to server. • Standardizes mechanism for sending queries – Either regular or parameterized queries (stored procedures) • Standardizes data structure of query result – Assumes relational data, so data structure is a table • Does not standardize SQL syntax – Queries are simply strings – Server extensions and enhancements supported
  • 12. www.corewebprogramming.com Java Packages and Protocols: Remote Method Invocation (RMI) • Built-in Distributed Object Protocol – RMI lets a developer access a Java object and manipulate it in the normal manner. Behind the scenes, each function call really goes over the network to a remote object. – Arbitrary Java data structures can be sent over the network with little or no special packaging, due to Java’s “serialization” mechanism – Similar to a simplified CORBA, but restricted to Java-to-Java communication • Jini – RMI-based protocol for self-documenting services. – Allows real “plug and play” devices -- no separate drivers – Jury is out on eventual success. Security and industry adoption are open questions.
  • 13. www.corewebprogramming.com Java Packages and Protocols: JavaBeans • JavaBeans is to Java as ActiveX is to Visual C++. – Lets you package a Java program as a software “component” – Visual tools can modify/manipulate it without knowing anything about it in advance • For example, you can drop a Bean into Visual Café, IBM VisualAge for Java, Inprise (Borland) JBuilder, Sybase PowerJ, Metrowerks CodeWarrior, Sun JavaWorkshop, etc., and it is automatically available from their tool palette for drag-and-drop development – Better security and portability than ActiveX – More ActiveX components available
  • 14. www.corewebprogramming.com Java Packages and Protocols: Swing • Standard GUI-control (widget) library in Java 2 • Many more built-in controls • Much more flexible and customizable • Includes many small features aimed at commercial applications – Tooltips, tabbed panes, on-line help, HTML support, dockable toolbars, multi-document interface, etc. • Look and feel can be changed at run time
  • 15. www.corewebprogramming.com Java Packages and Protocols: Servlets and JavaServer Pages (JSP) • Servlets: Java’s answer to CGI – Efficient: thread, not process, per request – Convenient: HTTP headers, cookies, etc. – Powerful: persistence, session tracking, etc. – Secure: no buffer overflows or shell escapes • Supported by virtually all Web servers: – Native support: Netscape/iPlanet, IBM WebSphere, Oracle 8i/9i and Oracle Application Server, BEA WebLogic, Silverstream, Sapphire/Web, etc. – Via add-on engine: Apache, Microsoft IIS and Personal WebServer, Netscape FastTrack, O’Reilly WebSite, StarNine WebSTAR for MacOS, etc. • JavaServer Pages (JSP) – Convenient and efficient way to combine servlets and HTML. Portable alternative to ASP & ColdFusion.
  • 16. www.corewebprogramming.com Java Packages and Protocols: Enterprise JavaBeans (EJB) • EJBs are to server components what regular JavaBeans are to application components • Standardizes access to services like load balancing, persistence, failover, etc. • Builds on JavaBeans, CORBA, and RMI “under the hood” • Potentially accessible via non-Java programs • Application Servers Supporting EJB – BEA WebLogic, IBM WebSphere, Netscape, Oracle, Progress SW Apptivity, NetDynamics, Sybase, Bluestone Saphire/Web etc.
  • 17. www.corewebprogramming.com Basic Hello World Application • “Application” is Java lingo for a stand-alone Java program – Note that the class name and the filename must match – A file can contain multiple classes, but only one can be declared public, and that one’s name must match the filename • File HelloWorld.java: public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, world."); } }
  • 18. www.corewebprogramming.com Basic Hello World Application (Continued) • Compiling: javac HelloWorld.java • Running: java HelloWorld • Output: Hello, world.
  • 19. www.corewebprogramming.com Command Line Arguments • File ShowArgs.java: public class ShowArgs { public static void main(String[] args) { for(int i=0; i<args.length; i++) { System.out.println("Arg " + i + " is " + args[i]); } } }
  • 20. www.corewebprogramming.com Command Line Arguments, Results • Compiling and Running: > javac ShowArgs.java > java ShowArgs fee fie foe fum Arg 0 is fee Arg 1 is fie Arg 2 is foe Arg 3 is fum
  • 21. www.corewebprogramming.com Basic Hello WWW Applet • File HelloWWW.java: import java.applet.Applet; import java.awt.*; public class HelloWWW extends Applet { public void init() { setBackground(Color.gray); setForeground(Color.white); setFont(new Font("SansSerif", Font.BOLD, 30)); } public void paint(Graphics g) { g.drawString("Hello, World Wide Web.", 5, 35); //5=left, 35=bottom } }
  • 22. www.corewebprogramming.com Basic Hello WWW Applet (Continued) • File HelloWWW.html: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>HelloWWW: Simple Applet Test.</TITLE> </HEAD> <BODY> <H1>HelloWWW: Simple Applet Test.</H1> <APPLET CODE="HelloWWW.class" WIDTH=400 HEIGHT=40> <B>Error! You must use a Java enabled browser.</B> </APPLET> </BODY> </HTML>
  • 23. www.corewebprogramming.com Basic Hello WWW Applet (Continued) • Compiling: javac HelloWWW.java • Running: Load HelloWWW.html in a Java-enabled browser
  • 24. www.corewebprogramming.com Customizing Applets with PARAM import java.applet.Applet; import java.awt.*; public class Message extends Applet { private int fontSize; private String message; public void init() { setBackground(Color.black); setForeground(Color.white); fontSize = getSize().height - 10; setFont(new Font("SansSerif", Font.BOLD, fontSize)); // Read heading message from PARAM entry in HTML. message = getParameter("MESSAGE"); } public void paint(Graphics g) { if (message != null) g.drawString(message, 5, fontSize+5); } }
  • 25. www.corewebprogramming.com Customizing Applets with PARAM, cont. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>The Message Applet</TITLE> </HEAD> <BODY BGCOLOR="WHITE"> <H1>The <CODE>Message</CODE> Applet</H1> <P> <APPLET CODE="Message.class" WIDTH=325 HEIGHT=25> <PARAM NAME="MESSAGE" VALUE="Tiny"> <B>Sorry, these examples require Java</B> </APPLET> <P> <APPLET CODE="Message.class" WIDTH=325 HEIGHT=50> <PARAM NAME="MESSAGE" VALUE="Small"> <B>Sorry, these examples require Java</B> </APPLET> ... </BODY> </HTML>
  • 27. www.corewebprogramming.com Summary • Java is a complete language, supporting both standalone applications and Web development • Java is compiled to bytecode and can be run on any platform that supports a Java Virtual Machine • Java 2 Platform is available in a Standard Edition, Enterprise Edition, or Micro Edition • Compiling: use “javac” • Executing standalone programs: use “java” • Executing applets: load HTML file in browser