Download lec1!Introduction

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
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