Theory of Computation

concepcionsockΛογισμικό & κατασκευή λογ/κού

15 Αυγ 2012 (πριν από 5 χρόνια και 2 μέρες)

320 εμφανίσεις


Java Programming


Transparency No. 1
-
1

Introduction to

Java Programming

Cheng
-
Chia Chen


September 2003


Java Programming


Transparency No. 1
-
2

Course web page

Java Programming


Transparency No. 1
-
3

Course information


Textbook: None


Main References:


The Java Tutorial From Sun


Java 2 SDK, Standard Edition Version 1.4 Documentation )


The Java Language Specification


Java in a Nutshell 3rd edition,David Flanagan,Oreilly, 1999.


References and Documentations:


The Java Virtual Machine


http://developer.java.sun.com/developer/onlineTraining/




Java Programming


Transparency No. 1
-
4

Course information (cont’d)


Some Development Tools and IDEs:


Java 2 SDK Version 1.4.2 (free)


BeanShell (free)


Eclipse (free open source IDE)


NetBeans (free open source Java IDE)


Borland Builder Foundation Version 9 (free)


JEditor


JPad





Grading:


4~5 Programming Exercises (40 %)


A Java Application/System Study report (15~20 %)


Final Examination (30%)


Class Participation (10~15%)


Java Programming


Transparency No. 1
-
5

Lecture 1. Introduction

Cheng
-
Chia Chen

Java Programming


Transparency No. 1
-
6

Contents

1.
What is Java?

2.
Features of Java

3.
History of Java

4.
Develop first Java program

5.
Deploy java programs through the internet

1.
via Java applet

2.
via Java Web Start


Java Programming


Transparency No. 1
-
7


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 (jdk):



Jdk v1.0~1.02: 8 packages/212 classes



jdk v1.1~1.18: 23 packages/504 classes



Java 2 (j2se): SDK v1.2~1.22, v1.30: 59 pkg/1520 classes



now v1.4.2



Enterprise edition(j2ee): V1.2, V1.3.1, V1.4beta (Sep,2003)



Micro edition (j2me): v1.0,CLDC1.1,MIDP2.0,…

Java Programming


Transparency No. 1
-
8

Java 2 Platform editions and their target markets

servers & enterprise coputers

Desktop & personal computers

High
-
end consumer devices

Low
-
end devices

smartcards

J2ME

Java Programming


Transparency No. 1
-
9

Java Programming


Transparency No. 1
-
10

What is J2EE ?


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.


Java Programming


Transparency No. 1
-
11

Benefits of J2EE

1. A unified platform for building, deploying and
managing enterprise
-
class software.

2. Allow enterprise
-
class application the ability to run
anywhere.

3. A platform with a complete range of readily
available enterprise
-
class services.

4. A single
easy
-
to
-
learn

blueprint
programming model

for J2EE.

5. A platform that is built upon and leverages existing
IT investments and guarantees that
enterprise
-
class software will work on multiple
platforms.

Java Programming


Transparency No. 1
-
12

Technologies included in J2EE


Enterprise JavaBeans,


JavaServer Pages, JavaServer Faces


servlets,


the Java Naming and Directory Interface
TM

(JNDI),


the Java Transaction API (JTA),


CORBA,


The JDBC data access API.


Java Message Queue (JMQ)





Java Programming


Transparency No. 1
-
13

What is J2ME ?


1.What is the Java 2 Platform, Micro Edition (
J2ME
)?


The Java
TM

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?)


Java Programming


Transparency No. 1
-
14

Features of the java language:

Java is


simple


object
-
oriented


distributed


interpreted


robust


secure


architecture
-
neutral


portable


high performance


multithreaded


dynamic

Java Programming


Transparency No. 1
-
15

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


(Programmer controlled) operator overloading


Features included as part of base language:


Threads


Exception handling

Java Programming


Transparency No. 1
-
16

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


Java Programming


Transparency No. 1
-
17

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.

Java Programming


Transparency No. 1
-
18

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


Java Programming


Transparency No. 1
-
19

Java is Robust


Strongly
-
typed language (cf Smalltalk and
VisualBasic)


Compile
-
time and runtime checking


No pointer arithmetic



Exception handling


Automatic memory management


Java Programming


Transparency No. 1
-
20

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.



Java Programming


Transparency No. 1
-
21

Java is Architecture
-
neutral


Byte
-
codes are architecture neutral


Performance suffers by using bytecodes


Java Programming


Transparency No. 1
-
22

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 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)


Java Programming


Transparency No. 1
-
23

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.


Java Programming


Transparency No. 1
-
24

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


Java Programming


Transparency No. 1
-
25

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 {… }


Java Programming


Transparency No. 1
-
26

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!");


}


}


Java Programming


Transparency No. 1
-
27

History 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

Java Programming


Transparency No. 1
-
28

History of Java


1997 …


2/18: Complete JDK1.1 released


3/28: JDK1.1.1, 5/28: JDK1.1.2, 7/2: JDK1.1.3,…


1998:


9/28: JDK1.1.7,


12/8: J2SE


1999:


6/? J2ME


12/7 J2EE


2001


J2SE 1.4.0


Now(2003 Sep.): j2se1.4.2, j2ee 1.3.1,1.4 beta, …


Java Programming


Transparency No. 1
-
29

Develop your first Java Program and applet

1. Required softwares

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


Java Programming


Transparency No. 1
-
30

Required Softwares

To write your first program, you will need:

1. The Java
TM

2 Platform, Standard Edition.

2. A text editor. Ex:



NotePad,



Ultraedit,



EditPlus2


Java Programming


Transparency No. 1
-
31

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

Java Programming


Transparency No. 1
-
32

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!");


}


}



Java Programming


Transparency No. 1
-
33

Java Programming


Transparency No. 1
-
34

JWS Architecture


Java Programming


Transparency No. 1
-
35

(web page)

d. Invoke Java application remotely via JWS

<?xml version="1.0" encoding="utf
-
8"?>

<jnlp spec="1.0"
codebase="http://61.70.136.131/courses/java/java2003f
all/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



<A href=“helloJWS.jnlp”>

Start HelloJWS

</A>



example

Java Programming


Transparency No. 1
-
36

Java 2 SDK Installation Instructions (for WIN32)

1. Download java 2 SDK standard edition

2. Run the Java 2 SDK executable (*.exe).


determine where to install j2se. (ex: c:
\
java
\
j2se
\
1.4)


> set JAVA_HOME= c:
\
java
\
j2se
\
1.4

3. Update the PATH variable



so that you can type ‘java’ instead of ‘c:
\
java
\
j2se
\
1.4
\
bin
\
java’ to invoke javatools.


> 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 LASSPATH or

cp/

classpath options

5. Start using the Java 2 SDK tools!


java, javac, javadoc, jdb, javap,…

Java Programming


Transparency No. 1
-
37

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);


}


}

Java Programming


Transparency No. 1
-
38

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.

Java Programming


Transparency No. 1
-
39

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