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 2013
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
Structure of java code
Transparency No. 1-4
What is Java?
Java Programming
Java is
a programming language,
defined in The Java language specification (v1,v2,v3, se7)
a virtual machine,
Defined in The java virtual machine (v1, v2, se7)
Many languages can be compiled into JVM code.
Java code can also be compiled into non-jvm code:
Android: java Dalvik VM
a platform
Standard edition (j2se 7.0 java se 7):
Java platform, standard edition 7
Enterprise edition(j2ee 5.0 java ee 5):
Java platform, enterprise edition 6 (for enterprise-class
service-oriented architecture (SOA) and web applications.)
Micro edition (j2me java me): Java Platform,
Micro edition (for mobile&embeded devices)
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 7 Platform at a Glance
Java SE 6 Platform at a Glance
Transparency No. 1-8
Java Programming
Features of the java language:
Java is
simple
object-oriented
distributed
interpreted
robust
secure
architecture-neutral
portable
high performance
multithreaded
dynamic
reference
Transparency No. 1-9
Java Programming
Java is Simple
Intentionally created to be syntactically similar to C/C++
Eliminate traditionally troublesome features of C/C++
Pointer arithmetic (no troublesome * and &)
Multiple inheritance
Implicit type coercions // if (1) {x = 1 ;} is not well-formed
Explicit memory management
Preprocessor
Eliminate features of C/C++
struct, typedef,union
generic, enum (both recovered since jdk5.0)
(Programmer controlled) operator overloading (but preserving method
overloading)
Features included as part of base language:
Threads
Exception handling
reflection
Transparency No. 1-10
Java Programming
Java is Object-oriented
Java is inherently object-oriented.
Although many object-oriented languages began strictly
as procedural languages, Java was designed from the
start to be object-oriented.
Object-oriented programming (OOP) is a popular
programming approach that is replacing traditional
procedural programming techniques.
One of the central issues in software development is
how to reuse code.
Object-oriented programming provides great flexibility,
modularity, clarity, and reusability through encapsulation(
封裝), inheritance(繼承), and polymorphism(多型).
Transparency No. 1-11
Java Programming
What is object-oriented ?
Systems are built from sets of classes
Classes are instantiated at runtime to give objects
Objects communicate via messages passing (i.e.,
method or funcition invocation)
(In java) everything is part of a class
Supported OO Concepts:
Data abstraction and Encapsulation
Inheritance
Polymorphism
dynamic binding - overriding
overloading
Non-OO
generics
features
Logical cluster of classes == package
Transparency No. 1-12
Java Programming
Java is a Distributed language
Distributed computing involves several computers
working together on a network.
Java is designed to make distributed computing
easy.
Since networking capability is inherently integrated
into Java, writing network programs is like sending
and receiving data to and from a file.
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
Transparency No. 1-13
Java Programming
Java is an Interpreted language
Language implementation
Compiler – produce machine code
Ex: Fortran, Cobol, C, C++
Interpreter – execute source or compiled
instructions on a virtual machine
Ex: Scheme, Haskell, Python., Java
Hybrid compilation/interpretation : Java
The Java Virtual Machine (JVM)
java code compile byte code (machine independent)
[ just-in-time compilation native code ] execution
We need an interpreter(JVM) to run Java programs.
The bytecode is machine-independent and can be executed on any machine
that has a Java interpreter, which is the Java Virtual Machine (JVM).
Transparency No. 1-14
Java Programming
Java is Robust
characteristics of Java
Strongly-typed language (cf Smalltalk and VisualBasic)
Compile-time and runtime checking
No pointer arithmetic
Exception handling
Automatic memory management
Java compilers can detect many problems that
would first show up at execution time in other
languages.
Java eliminated certain types of error-prone
programming constructs found in other languages.
Runtime exception-handling feature provides
programming support for robustness.
Transparency No. 1-15
Java Programming
Java is secure
Designed with security in mind.
Java implements several security mechanisms to protect
your system against harm caused by stray programs.
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!!
A recent security flaw(2012/08) (0-day flaw)
Should update (from 7~10) to se 7 update (11-15) now.
One of the best mainstream platforms with the
strongest security guarantee.
Transparency No. 1-16
Java Programming
Java is Architecture-neutral
Byte-codes are architecture neutral
Write once, run anywhere
With a Java Virtual Machine (JVM), you can write one
program that will run on any platform.
Performance suffers somewhat by using bytecodes
Transparency No. 1-17
Java Programming
Java is portable (source code level)
Source code :
Primitive type sizes are explicit - not architecture
dependent
Strings and characters are (16-bit) Unicode compliant
easier for internationalization.
Byte code:
run everywhere where a JVM is available
User experience :
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)
Transparency No. 1-18
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-19
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
Issue:
Still hard to use right for general programmers:
New package java.util.concurrency and other extensions
added since jdk5 allow easier and correct use of threads.
Transparency No. 1-20
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 name = getSpecies(); // get a name of a class
Object p = Class.forName(name).newInstance();
If(p instanceof Hen) {…}
else if(p instanceof Coq) { …}
else {… }
Transparency No. 1-21
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-22
Java Programming
Early history of Java
Green Project (1990)
need a small PL for developing consumer device operating software
Requirements: small size, robust, portable, extremely reliable ,realtime performance
Oak // the resulting language
Originally used C++, then realized a new language was needed
Original requirements same as for current language
Java (1993) // OAK was renamed Java
Intended market never eventuated (no technology/product sold)
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)
Early History Website :
http://java.sun.com/features/1998/05/birthday.html(broken)
Transparency No. 1-23
Java Programming
Evolution of the Java Language
• Java version History
(8 packages)
(23 packages)
java 2
(59 packages)
(76 packages)
2002
(135 packages)
(166 packages)
(202 packages)
7
2011-7/7 featureChange
•Jan, 2010: sun and java were owned by oracle.
Transparency No. 1-24
Java Programming
Develop your first Java Program
1. Required software
2. Creating Your First Application
a. Create a Java Source File
b. Compile the Source File
c. Run the Program
Transparency No. 1-25
Java Programming
Required Softwares
To write your first program, you will need:
1. The Java Platform, Standard Edition.
2. A text editor. Ex:
NotePad,
Ultraedit,
EditPlus2
Transparency No. 1-26
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
Transparency No. 1-27
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-28
Java Programming
Transparency No. 1-29
Java Programming
Transparency No. 1-30
Java Programming
Java Jargon
Transparency No. 1-31
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\jdk7)
> set JAVA_HOME= c:\java\jdk7
3. Update the PATH variable
so that you can type ‘java’ instead of ‘c:\java\jdk7\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 SDK tools!
java, javac, javadoc, jdb, javap,…
Transparency No. 1-32
Java Programming
Create Your first Java application using Eclipse IDE
install Eclipse SDK
Download Eclipse SDK (choose Classic)
unzip to a dir (c://eclipse)
Start Eclipse
go to c:\eclipse
run eclipse.exe
choose Java perspective
create a java project ( helloWorld )
create a package chapter1 using package widard
create HelloWorld class using class wizard
run HelloWorld class
Reference: Eclipse Tutorial | One-Page Startup Instruction
Transparency No. 1-33
Java Programming
How java code are structured ?
A java application consists of
many packages
Some from JRE (built-ins)+ some from 3rd party + your
own ]
A package consists of
0 or more classes
0 or more 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-34
Java Programming
Package and class naming
A class or package has two names:
simpleName
fully qualified name = parentPackageName . simpleName
packageName = parentPackageName . simpleName
For package, we use only its full name.
Ex:
java.lang.String
javax.swing.JButton
The package/subpackage/(*.class, *.java) 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 is located in 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-35
CLASSPATH: Where to find java class and source
Java Programming
How does java/javac 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(package roots) given by a system variable
called CLASSPATH.
Ex: If CLASSPATH = d:\my\root;. Then
package x is mapped to dir d:\my\root\x or ./x
package x.y is mapped to dir d:\my\root\x\y or ./x/y
package x.y.z => d:\my\root\x\y\z or ./x/y/z
class or src x.y.z.A => d:\my\root\x\y\z\A.class or
d:\my\root\x\y\z\A.java or …
Transparency No. 1-36