Title: Introduction to Java Programming
1Introduction to Java Programming
- Cheng-Chia Chen
- Feburary 2008
2Course web page
3Lecture 1. Introduction
4Contents
- What is Java?
- Features of Java
- Evolution of Java
- Develop first Java program
- Deploy java programs through the internet
- via Java applet
- via Java Web Start
5What 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,
6servers enterprise computers
Desktop personal computers
High-end consumer devices
Low-end devices
J2ME
smartcards
Java 2 Platform editions and their target markets
7(No Transcript)
8- Java SE 6 Platform at a Glance
9What 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.
10Benefits 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.
11Technologies 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.
12What 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?)
13Features of the java language
- Java is
- simple
- object-oriented
- distributed
- interpreted
- robust
- secure
- architecture-neutral
- portable
- high performance
- multithreaded
- dynamic
14Java 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
15Java 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
16Java 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.
17Java 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
18Java is Robust
- Strongly-typed language (cf Smalltalk and
VisualBasic) - Compile-time and runtime checking
- No pointer arithmetic
- Exception handling
- Automatic memory management
19Java 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.
20Java is Architecture-neutral
- Byte-codes are architecture neutral
- Performance suffers by using bytecodes
21Java 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
library-independent 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)
22High 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 - Suns 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.
23Multithreaded
- 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
24Dynamic
- 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
25An 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!") -
-
26Prehistory of Java
- Green Project (1990)
- Consumer device operating software
- Requirements small size, robust, portable,
extremely reliable ,real-time 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)
27Evolution of the Java Language
28Develop 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
29Required Softwares
- To write your first program, you will need
- 1. The JavaTM 2 Platform, Standard Edition.
- 2. A text editor. Ex
- NotePad,
- Ultraedit,
- EditPlus2
302. Creating Your First Application
- The first program, HelloWorldApp, will simply
display Hello World!". - Steps
- a. Create a Java source file.
- gt Notepad HelloWorldApp.java
- b. Compile the source file into a bytecode file.
- gt javac HelloWorldApp.java
- c. Run the program contained in the bytecode
file. - gtjava HelloWorldApp
- d. invoke the program remotely via Java Web
Start. - d.1 gt jar cf HelloJWS.jar HelloWorlApp.class
- d.2 prepare HelloJWS.jnlp
- d.3 prepare web page to hyperlink
- HelloJWS.jnlp
31HelloJava.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!") -
-
32(No Transcript)
33JWS Architecture
34d. Invoke Java application remotely via JWS
(web page)
lt?xml version"1.0" encoding"utf-8"?gt ltjnlp
spec"1.0" codebase"http//xml.cs.nccu.edu.
tw/courses/java/java2003fall/jws/"
href"helloJWS.jnlp"gt ltinformationgt
lttitlegtHello Java Web Startlt/titlegt
ltvendorgtCheng-Chia Chenlt/vendorgt lthomepage
href"index.html"/gt ltdescriptiongtA simpe
Demo of Java Web Start.lt/descriptiongt
ltoffline-allowed/gt lt/informationgt
ltresourcesgt ltj2se version"1.4"/gt
ltjar href"helloJWS.jar"/gt lt/resourcesgt
ltapplication-desc main-class"HelloJWS"/gt
lt/jnlpgt
ltA hrefhelloJWS.jnlpgt Start HelloJWS lt/Agt
example
HelloJWS.jar
35Java 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) - gt 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. - gt pathJAVA_HOME\binPATH
- 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,
363. 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) -
-
37b. Create an HTML file to contain the applet.
- ltHTMLgt
- ltHEADgt
- ltTITLEgtA Simple Programlt/TITLEgt
- lt/HEADgt
- ltBODYgt
- Here is the output of my program
- ltAPPLET CODE"HelloJavaApplet.class"
- CODEBASE./applets/
- WIDTH250 HEIGHT25gt
- The applet does not work!lt/APPLETgt
- lt/BODYgt
- lt/HTMLgt
- Save this code to a file called
HelloJavaApplet.html.
38c. 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
39How 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 ).
40- 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/subdirector
y/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.
41Ex
- How does java machine find a class or src x.y.z.A
in the package x.y.z ? - Notes
- 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