Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
Java Programming
Introduction to
Java Programming
Cheng-Chia Chen
Feburary 2008
Transparency No. 1-1
Java Programming
Course web page
Transparency No. 1-2
Java Programming
Lecture 1. Introduction
Cheng-Chia Chen
Transparency No. 1-3
Java Programming
Contents
1.
2.
3.
4.
5.
What is Java?
Features of Java
Evolution of Java
Develop first Java program
Deploy java programs through the internet
1. via Java applet
2. via Java Web Start
Transparency No. 1-4
Java Programming
What is Java?
Java is
a programming language,
defined in The Java language specification (v1,v2,v3)
a virtual machine,
Defined in The java virtual machine (v1, v2)
a platform
Standard edition (java se):
Java platform standard edition 6.0
Enterprise edition(j2ee): V5.0
Micro edition (j2me): v1.0,CLDC1.1,MIDP2.0,…
Transparency No. 1-5
servers & enterprise computers
Java Programming
Desktop & personal computers
High-end consumer devices
Low-end devices
J2ME
smartcards
Java 2 Platform editions and their target markets
Transparency No. 1-6
Java Programming
Transparency No. 1-7
Java Programming
Java SE 6 Platform at a Glance
Transparency No. 1-8
Java Programming
What is J2EE ?
source
What is the Java 2 Platform, Enterprise Edition
(J2EE)?
a platform that enables solutions for developing,
deploying and managing multi-tier server-centric
applications.
Extend J2SE to a complete, stable, secure, fast Java
platform to the enterprise level.
A platform which significantly reduces the cost and
complexity of developing multi-tier solutions, results in
services that can be rapidly deployed and easily
enhanced.
Transparency No. 1-9
Java Programming
Benefits of J2EE
1. Complete Web services support.
2. Faster solutions delivery time to market.
Enterprise infrastructure and concerns provided and
solved by j2ee.
Developers need only focus on writing business logic .
3. Freedom of choice.
System assembled from standard components which can
be supplied by various vendors.
4. Simplified connectivity.
Supply standard to connect legacy systems, enterprise
information system, and bring capability to web and
mobile devices.
5. Reduce TCO(total cost of ownership) and avoid
single-source for software needs of enterprises.
Transparency No. 1-10
Java Programming
Technologies included in J2EE
Java API for XML-Based RPC (JAX-RPC),
JavaServer Pages, Java Servlets,
Enterprise JavaBeans components,
J2EE Connector Architecture,
J2EE Management Model,
J2EE Deployment API,
Java Management Extensions (JMX),
J2EE Authorization Contract for Containers,
Java API for XML Registries (JAXR),
Java Message Service (JMS),
Java Naming and Directory Interface (JNDI),
Java Transaction API (JTA),
CORBA, and
JDBC data access API.
Transparency No. 1-11
Java Programming
What is J2ME ?
1.What is the Java 2 Platform, Micro Edition (J2ME)?
The JavaTM 2 Platform, Micro Edition is the edition of the
Java 2 platform targeted at consumer
electronics and embedded devices.
The J2ME technology consists of a virtual machine (KVM)
and a set of APIs suitable for providing tailored runtime
environments for consumer and embedded
electronics.
Configurations v.s. profiles
Device characteristics:
memory size / processor
size and depth of display screen (UI)
power consumption (battery-based)
networking capability (limited, not TCP/IP based?)
Transparency No. 1-12
Java Programming
Features of the java language:
Java is
simple
object-oriented
distributed
interpreted
robust
secure
architecture-neutral
portable
high performance
multithreaded
dynamic
Transparency No. 1-13
Java Programming
Java is Simple
Intentionally created to be syntactically similar to C/C++
Eliminates traditionally troublesome features of C/C++
Pointer arithmetic
Multiple inheritance
Implicit type coercions
Explicit memory management
Preprocessor
Eliminates features of C/C++
struct
typedef
union
enum (recovered in jdk5.0)
(Programmer controlled) operator overloading
Features included as part of base language:
Threads
Exception handling
Transparency No. 1-14
Java Programming
Java is Object-oriented
Systems are built from sets of classes
Classes are instantiated at runtime to give objects
Objects communicate via messages passing
Everything is part of a class
supported OO Concepts:
Data abstraction and Encapsulation
Inheritance
Polymorphism
Dynamic Binding
e.g. variable of Object type can hold everything
Logical cluster of classes == package
Transparency No. 1-15
Java Programming
Java is a Distributed language
Network programming support built into JDK class
library:
TCP sockets
UDP packets
IP addresses
URLs
RMI (Remote Method Invocation)
Web Service
Security features designed into language
Network programming facilities are one of the
language's best features.
Transparency No. 1-16
Java Programming
Java is an Interpreted language
Source code is initially compiled (javac) into
architecture-neutral byte-codes
Byte-codes are interpreted by the java virtual
machine (JVM) (java or Netscape)
Dynamic linking/loading (at run time)
(Just In Time) JIT compilers lead to a large
performance increase in compilation and runtime
execution
Transparency No. 1-17
Java Programming
Java is Robust
Strongly-typed language (cf Smalltalk and
VisualBasic)
Compile-time and runtime checking
No pointer arithmetic
Exception handling
Automatic memory management
Transparency No. 1-18
Java Programming
Java is secure
Designed with security in mind.
Allow users to download untrusted code over a
network and run it in a secure environment in which
it cannot do any harm.
Configurable security levels and restrictions.
subjected to intense scrutiny by security experts
with [potentially serious ] bugs found and fixed.
become a big news if new bugs found!!
One of the best mainstream platforms with the
strongest security guarantee.
Transparency No. 1-19
Java Programming
Java is Architecture-neutral
Byte-codes are architecture neutral
Performance suffers by using bytecodes
Transparency No. 1-20
Java Programming
Java is portable
Primitive type sizes are explicit - not architecture
dependent
Strings and characters are (16-bit) Unicode
compliant
easier for internationalization.
GUI libraries give a native graphic libraryindependent mechanism for creating quality
graphical interfaces (sort of)
"They gave us a library that is good for writing programs
that look equally mediocre on the different systems."
(Core Java, page 9)
Transparency No. 1-21
Java Programming
High performance
Interpreting leads to quicker development cycle
Depends what you compare it to
"Slightly faster than VB" - (Core Java, page 9)
JITC(Just-In-Time Compiler) help greatly in this respect
Sun’s Java HotSpot is Newest high performace JIT
compiler.
Can use native code for mission-critical
performance sections of code
JNI: Java Native Interface
Sacrifice portability.
Transparency No. 1-22
Java Programming
Multithreaded
Based on well-known 20 year old Hoare monitor
synchronization
Thread support built into language
Thread synchronization primitives supplied
Garbage collector runs permanently as a low priority
background thread
Transparency No. 1-23
Java Programming
Dynamic
Class linking, layout, name resolution and object
references not resolved until run-time
Runtime Type Information (RTTI) available
Can check the type of objects at run-time
java.reflect.* package
Class class for dynamic instantiation
Can create objects of types unkown until runtime.
String sexClassName = getSex();
Object p = Class.forName(sexClassName).instance();
If(p instanceof Male) {…}
else if (p instanceof Female) { … }
else {… }
Transparency No. 1-24
Java Programming
An Example
/**
* The HelloJava class implements an application that
* simply displays "Hello Java!" to the standard output.
*/
class HelloJava {
public static void main(String[] args) {
// Display "Hello Java!"
System.out.println("Hello Java!");
}
}
Transparency No. 1-25
Java Programming
Prehistory of Java
Green Project (1990)
Consumer device operating software
Requirements: small size, robust, portable, extremely reliable ,realtime performance
Oak
Originally used C++, then realized a new language was needed
Original requirements same as for current language
Java (1993)
Intended market never eventuated
WWW starting to takeoff
Language design "based on" many current OO languages (e.g., C++,
Eiffel, Smalltalk, Cedar/Mesa, Objective C)
1995/5/23 Sun launched Java
JDK 1.0 released early 1996/1/23 ( 211 classes / 8 pkgs)
Transparency No. 1-26
Java Programming
Evolution of the Java Language
(8 packages)
(23 packages)
(59 packages)
(76 packages)
2001
(135 packages)
(166 packages)
(202 packages)
Transparency No. 1-27
Java Programming
Develop your first Java Program and applet
1. Required software
2. Creating Your First Application
a. Create a Java Source File
b. Compile the Source File
c. Run the Program
d. invoke the program remotely via Java Web Start.
3. Creating Your First Applet
a. Create a Java Source File
b. Create related HTML files
c. Compile and run the Source File
Transparency No. 1-28
Java Programming
Required Softwares
To write your first program, you will need:
1. The JavaTM 2 Platform, Standard Edition.
2. A text editor. Ex:
NotePad,
Ultraedit,
EditPlus2
Transparency No. 1-29
Java Programming
2. Creating Your First Application
The first program, HelloWorldApp, will simply
display : “Hello World!".
Steps:
a. Create a Java source file.
> Notepad HelloWorldApp.java
b. Compile the source file into a bytecode file.
> javac HelloWorldApp.java
c. Run the program contained in the bytecode file.
>java HelloWorldApp
d. invoke the program remotely via Java Web
Start.
d.1 :> jar cf HelloJWS.jar HelloWorlApp.class
d.2 : prepare HelloJWS.jnlp
d.3 : prepare web page to hyperlink
HelloJWS.jnlp
Transparency No. 1-30
Java Programming
HelloJava.java
/**
* The HelloWorldApp class implements an application that
* simply displays "Hello World!" to the standard output.
*/
class HelloWorldApp {
public static void main(String[] args) {
// Display "Hello World!"
System.out.println("Hello World!");
}
}
Transparency No. 1-31
Java Programming
Transparency No. 1-32
Java Programming
JWS Architecture
Transparency No. 1-33
Java Programming
d. Invoke Java application remotely via JWS
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0"
codebase="http://xml.cs.nccu.edu.tw/courses/java/jav
a2003fall/jws/"
href="helloJWS.jnlp">
<information>
<title>Hello Java Web Start</title>
<vendor>Cheng-Chia Chen</vendor>
<homepage href="index.html"/>
<description>A simpe Demo of Java Web
Start.</description>
<offline-allowed/>
</information>
<resources>
<j2se version="1.4+"/>
<jar href="helloJWS.jar"/>
</resources>
<application-desc main-class="HelloJWS"/>
</jnlp>
HelloJWS.jar
(web page)
…
<A href=“helloJWS.jnlp”>
Start HelloJWS
</A>
…
example
Transparency No. 1-34
Java Programming
Java 2 SDK Installation Instructions (for WIN32)
1. Download java SDK standard edition
2. Run the Java SDK executable (*.exe).
determine where to install java se. (ex: c:\java\jdk6)
> set JAVA_HOME= c:\java\jdk6
3. Update the PATH variable
so that you can type ‘java’ instead of ‘c:\java\jdk6\bin\java’ to invoke java tools.
> path=%JAVA_HOME%\bin;%PATH%
4. Check the CLASSPATH variable
Used by java tools to determine where to find your personal (nonsystem) java class
files
Types of java byte codes (class files):
System : java tools know where to find them.
Extensions: put in %JAVA_HOME%\jre\lib\ext
Personal: via CLASSPATH or –cp/–classpath options
5. Start using the Java 2 SDK tools!
java, javac, javadoc, jdb, javap,…
Transparency No. 1-35
Java Programming
3. Creating Your First Applet
a. Create a Java Source File: HelloJavaApplet.java
import java.applet.*;
import java.awt.*;
/**
* The HelloJavaApplet class implements an applet that
* simply displays "Hello World!".
*/
public class HelloJavaApplet extends Applet {
public void paint(Graphics g) {
// Display "Hello Java Applet!"
g.drawString("Hello world!", 50, 25);
}
}
Transparency No. 1-36
Java Programming
b. Create an HTML file to contain the applet.
<HTML>
<HEAD>
<TITLE>A Simple Program</TITLE>
</HEAD>
<BODY>
Here is the output of my program:
<APPLET CODE="HelloJavaApplet.class"
CODEBASE=“./applets/”
WIDTH=250 HEIGHT=25>
The applet does not work!</APPLET>
</BODY>
</HTML>
Save this code to a file called HelloJavaApplet.html.
Transparency No. 1-37
Java Programming
c. Compile and run the program
Compile the Source File.
Javac HelloJavaApplet.java
Run the program:
With Appletviewer:
appleviewer HelloWorld
With IE explorer, Netscape:
double click HelloJavaApplet.html
demo
Transparency No. 1-38
Java Programming
How java code are structured ?
A java application consists of
= many packages [from JRE + from 3rd party + your own ]
A package consists of
many classes
many subpackages
Note: importing a package does not mean importing
its subpackages.
A java source file xxx.java is called a compilation
unit, which may
contain multiple java class definitions and
may be compiled into multiple java byte code (***.class ).
Transparency No. 1-39
Java Programming
A class has two names:
simple name
fully qualified name = package name. SimpleName
Ex:
java.lang.String
javax.swing.JButton
The package/subpackage/class structure is not only
logically analogous to directory/subdirectory/file in
OS file system but in fact they are stored physically
in file system in this way.
Namely, if package p corresponds to a directory d then
subpackage p.q of p would be stored in subdirecty q of d,
and class p.A of p would be stored in file named A.class or
A.java.
Transparency No. 1-40
Java Programming
How does java machine find a class or src x.y.z.A in
the package x.y.z ?
Notes:
Ex
package x.y.z is a subpackage of x.y, which is a
subpackage of x.
we called package x, java, javax etc, top-level packages.
java find the location of top-level packages from a list of
directory given by a system variable called CLASSPATH.
Ex: If CLASSPATH = .;d:\my\root Then
package x is the dir d:\my\root\x or ./x
package x.y is the dir d:\my\root\x\y or ./x/y
package x.y.z is the dir d:\my\root\x\y\z or ./x/y/z
class or src .y.z.A is the file d:\my\root\x\y\z\A.class
or d:\my\root\x\y\z\A.java or …
Transparency No. 1-41