Chapter 1 Introduction to Java

advertisement
CTIS251-Week 1
Engineering
Software and
Java
Dr. Ozlem Albayrak
Menu

Introduction to the CTIS251 elements

What is Engineering?
– Can we engineer software?

Introduction to the java language programming
concepts

Primitive Data Types and Operations
2
Introduction to CTIS251
Course Elements:
- Instructor
- Students
- Course Material
3
Instructor
 Dr.
–
–
–
–
Ozlem Albayrak
Computer Eng. Bilkent, 1992
M.B.A., Bilkent, 1994
M.S., UMCP, 1998
Phd., Ankara, 2002
Room# 212
Phone: 290 5039
E-mail: ozlemal@bilkent.edu.tr
4
The Students
 Attendance
- Bonuses
 Get to Know
 Why are you here?
 Expectations
 Interests
5
Office Hour?
Tuesday 14:40 – 15:30
Thursday 8:40 – 10:30
via
e-mail or phone for
appointment
6
Course Material
Not limited to:
 Syllabus
 The main text book
 References
 All related high quality sources
7
Syllabus
 Distributed
syllabus will be reviewed
– Subjects
– Grading (bonus questions)
– Labs
8
Syllabus (1)
Week
Chapters
1
Introduction to the course, basic java language
programming concepts:
Primitive Data Types and Operations
1, 2
2
Methods, Control Statements, Arrays
4, 3, 5
3
Object Oriented Programming: Objects and Classes
6
4
Data Member, Member Method, Static and final members.
Constructor
6
5
Visibility Modifiers, Acessors, and Mutators
6
6
Inheritance, Object Class
8
7
Review + Array of Objects, Some handy Java Classes;
Arrays, String, StringBuffer, StringTokenizer, Vector
7
8
MIDTERM
9
Syllabus (2)
9
Array of Objects, Some handy Java Classes; Arrays, String, 7
StringBuffer, StringTokenizer, Vector
10
Concrete class, Abstract Class, Interface
9
11
Polymorphism
8
12
Error Handling, Exception Classes and Custom Java
Exceptions
15
13
GUI Programming, event driven programming, components 11,
and containers, AWT (Abstract Window Toolkit), swing
12,
13
14
GUI Programming, event driven programming, components 11,
and containers, AWT (Abstract Window Toolkit), swing
12,
13
15
GUI Programming, Applet
16
Review
17
14
FINAL
10
What is
Engineering?
11
Webster’s Definitions
en·gi·neer·ing ( n j -nîr ng) n.
The application of scientific and mathematical
principles to practical ends such as the design,
manufacture, and operation of efficient and
economical structures, machines, processes,
and systems.
Problem solvers
12
How is engineering software
different from engineering bridges?
13
Bridges
 Continuous
– Calculus
– Testing/analysis is easy:
if the bridge holds for
1M kg, it also probably
holds 0.99Mkg
Software
 Discrete
– Logic, Discrete
Mathematics
– Testing/analysis is
difficult
14
Bridges
 Made of physical stuff
– Some costs are obvious
– Changes after
construction are hard
Software
 Made of virtual stuff
– All costs are nonobvious
– Changes should be easy
(but they’re not)
for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
nextStates [i][j] =
getCellAt (i, j).getNextState ();
}
}
15
Bridges
 Obvious when it fails
– Bridge makers get sued
– Architects need licenses
Software
 Falls down quietly (usually)
– Software vendors blame user,
charge for upgrades
– Anyone can make software,
no one gets sued
16
Bridges
 Requirements are
(usually) obvious and
easy to describe
 A good design is
apparent to everyone
immediately
Software
 Requirements are
mysterious and hard to
describe
 A good design is only
apparent to “experts” but
has impact later on
CellAutomata
GridDisplay
Cell
Grid
CellState
is a subtype of
(extends)
ConwayLifeCell
17
JAVA
18
Google search about Java....
Returns
approximately
yaklaşık 307.000.000 result!
19
Java Sources on the net
 http://en.wikipedia.org/wiki/Java_%28progr
amming_language%29
 http://java.net/
 http://java.sun.com/docs/books/tutorial/
 http://www.javaturkiye.com/
 Books:
http://www.oreilly.com/pub/topic/java
20
What is Java?
A.
B.
C.
D.
E.
Island in Indonesia known for coffee and
volcanoes
A Programming Language (Java)
A Portable Low-Level Language (JVML)
A Platform (JavaVM)
A (semi-)successful marketing strategy
–
F.
JavaScript is not related to Java or Java
All of the above
21
Compiling C++ Programs
#include <stdio>
main( int argc, char *argv[]) {
// do something
}
22
The Java Virtual Machine
Hello.java
class Hello {
public static void main(String[] args) {
System.out.println( “Hello World” );
}
Hello.class
javac
…
Method Hello()
0 aload_0
1 invokespecial #1 <Method java.lang.Object()>
4 return
Method void main(java.lang.String[])
0 getstatic #2 <Field java.io.PrintStream out>
3 ldc #3 <String "Hello World!">
5 invokevirtual #4 <Method void println(String)>
8 return
23
The Java Virtual Machine
class Hello {
public static void main() {
// do something
}
Hello.class
Mac JVM
Hello.class
Linux JVM
Hello.class
Win JVM
24
Java : Programming Language
“A simple, object-oriented,
distributed, interpreted, robust, secure,
architecture neutral, portable, highperformance, multithreaded, and
dynamic language.”
[Sun95]
By the end of the course, you
should have a good idea if this
is a true statement.
25
Platform Independence
 C++
compiles to native code for a specific
architecture (Linux, Windows…)
 Java compiles to Java bytecode
 Same bytecode runs on virtual machine for
any platform
– Only VM is platform specific
– Good for downloadable code
– Applets etc
26
Java
 Syntax
– Similar to C++
– Designed to be easy for C and C++
programmers to learn
 Semantics
(what programs mean)
– Similar to Scheme
– Designed to make it easier to reason about
properties of programs
27
Programming Systems
C++ Program
Scheme Program
C++ Compiler
Scheme Interpreter
Object Files
Machine
28
Java VM
Java Program
Why use a virtual machine?

– If you can implement a Java VM
on your machine, then you can run
all Java programs
Java Compiler
Class Files

Security
– A VM can limit what programs
can do to the real machine
Java Virtual Machine

Machine
Portability
Simplicity
– VM instructions can be simpler
than machine instructions
29
Programming in Java
 Program
is divided into classes
 A class:
– Defines a new datatype
– Defines methods and state associated with that
datatype
 We
call a value of a class datatype an object
– Objects package state and code
30
Introduction to
Java Programming with JBuilder, 3E
Y. Daniel Liang
Sequence of the Topics
Fundamentals of Programming
Java API
GUI Framework
Exception Handling
Framework
Input/Output
Framework
Object-Oriented Programming
GUI Framework
Exception Handling Framework
Other application
frameworks not
covered in this book
Object-Oriented Programming
Collections
Framework
Fundamentals of Programming
Multithreading
Framework
Input/Output Framework
Collections Framework
Multithreading Framework
Servlets/JSP
Framework
(bonus chapter)
Database Programming
Framework
(bonus chapter)
Internalization
Framework
(bonus chapter)
32
Course Objectives
 Upon
–
–
–
–
–
completing the course, you will understand
Create, compile, and run Java programs
Primitive data types
Java control flow
Methods
Arrays (for teaching Java in two semesters, this could be
the end)
– Object-oriented programming
– Core Java frameworks (Swing, exception, I/O,
collections, multithreading, multimedia, )
33
Course Objectives, cont.

You will be able to
– Develop programs using various tools
– Write simple programs using primitive data types, control
statements, methods, and arrays
– Understand object-oriented concepts and principles:
abstraction, encapsulation, inheritance, and polymorphism
– Develop a GUI interface and Java applets
– Deal with exceptions in the program
– Store and retrieve data using Java I/O
– Use data structures from the Java Collections framework
– Establish a firm foundation on Java concepts
34
Chapter 1 Introduction to Java and JBuilder
Chapter 2 Primitive Data Types and Operations
Chapter 3 Control Statements
Chapter 4 Methods
Chapter 5 Arrays
Chapter 6 Objects and Classes
Chapter
Dependency
Chart
Chapter 7 Strings
Chapter 8 Inheritance and Polymorphism
Chapter 11 Getting Started with GUI Programming
Chapter 9 Abstract Classes and Interfaces
Chapter 12 Event-Driven Programming
Chapter 10 OO Analysis and Design
Chapter 13 Creating User Interfaces
Chapter 17 Java Data Structures
Chapter 14 Applets
Chapter 19 Multithreading
Chapter 15 Exceptions and Assertions
Chapter 20 Multimedia
Chapter 16 Input and Output
Chapter 21 Networking
Chapter 20 Internationalization
Chapter 22 Database Programming
Chapter 23 Servlets
Part V Bonus Chapters
on the CD-ROM only
Chapter 24 JavaServer Pages
35
Book Chapters
 Part
I: Fundamentals of Programming
– Chapter 1 Introduction to Java and JBuilder
– Chapter 2 Primitive Data Types and Operations
– Chapter 3 Control Statements
– Chapter 4 Methods
– Chapter 5 Arrays
36
Book Chapters, cont.
 Part
II: Object-Oriented Programming
– Chapter 6 Objects and Classes
– Chapter 7 Strings
– Chapter 8 Inheritance and Polymorphism
– Chapter 9 Abstract Classes and Interfaces
– Chapter 10 Object-Oriented Analysis and Design
37
Book Chapters, cont.
 Part
III: GUI Programming
– Chapter 11 Getting Started with GUI Programming
– Chapter 12 Event-Driven Programming
– Chapter 13 Creating User Interfaces
– Chapter 14 Applets
38
Book Chapters, cont.

Part IV: Developing Comprehensive Projects
– Chapter 15 Exceptions and Assertions
– Chapter 16 Input and Output
– Chapter 17 Java Data Structures
– Chapter 18 Multithreading
– Chapter 19 Multimedia
39
Bonus Chapters on the CD-ROM

Part V: Bonus Chapters
– Chapter 20 Internationalization
– Chapter 21 Networking
– Chapter 22 Database Programming
– Chapter 18 Servlets
– Chapter 19 JavaServer Pages
40
Chapter 1 Introduction to Java
and JBuilder
 What
Is Java?
 Getting Started With Java Programming
– Create, Compile and Running a Java
Application
41
What Is Java?
 History
 Characteristics
of Java
42
History
 James
Gosling and Sun Microsystems
 Oak
 Java,
May 20, 1995, Sun World
 HotJava
– The first Java-enabled Web browser
 JDK
Evolutions
 J2SE,
J2ME, and J2EE (not mentioned in the
book, but could discuss here optionally)
43
Characteristics of Java

Java is simple

Java is object-oriented

Java is distributed

Java is interpreted

Java is robust

Java is secure

Java is architecture-neutral

Java is portable

Java’s performance

Java is multithreaded

Java is dynamic
44
JDK Versions
 JDK
1.02 (1995)
 JDK 1.1 (1996)
 Java 2 SDK v 1.2 (a.k.a JDK 1.2, 1998)
 Java 2 SDK v 1.3 (a.k.a JDK 1.3, 2000)
 Java 2 SDK v 1.4 (a.k.a JDK 1.4, 2002)
 ...
 ...
45
JDK Editions
 Java
Standard Edition (J2SE)
– J2SE can be used to develop client-side standalone
applications or applets.
 Java
Enterprise Edition (J2EE)
– J2EE can be used to develop server-side applications such as
Java servlets and Java ServerPages.
 Java
Micro Edition (J2ME).
– J2ME can be used to develop applications for mobile
devices such as cell phones.
This book uses J2SE to introduce Java programming.
46
Java IDE Tools
 Forte
by Sun MicroSystems
 Borland JBuilder
 Microsoft
Visual J++
 WebGain
Café
 IBM
Visual Age for Java
 IBM
WSAD
47
Getting Started with Java
Programming
 A Simple
Java Application
 Compiling
Programs
 Executing Applications
48
A Simple Application
Example 1.1
//This application program prints Welcome
//to Java!
package chapter1;
public class Welcome {
public static void main(String[] args) {
System.out.println("Welcome to Java!");
}
}
Source
Run
IMPORTANT NOTE: To run the program from the Run
button, (1) set c:\jbuilder9\jdk1.4\bin on your path, and
(2) copy both the slide directory and the example
directory from the IR-CD to a directory (e.g.,
c:\LiangIR-CD) .
49
Anatomy of a Java Program
 Comments
 Package
 Reserved
words
 Modifiers
 Statements
 Blocks
 Classes
 Methods
 The
main method
50
Comments
In Java, comments are preceded by two slashes (//) in a
line, or enclosed between /* and */ in one or multiple
lines. When the compiler sees //, it ignores all text after //
in the same line. When it sees /*, it scans for the next */
and ignores any text between /* and */.
51
Package
The second line in the program (package chapter1;)
specifies a package name, chapter1, for the class
Welcome. Forte compiles the source code in
Welcome.java, generates Welcome.class, and stores
Welcome.class in the chapter1 folder.
52
Reserved Words
Reserved words or keywords are words that have a
specific meaning to the compiler and cannot be used for
other purposes in the program. For example, when the
compiler sees the word class, it understands that the word
after class is the name for the class. Other reserved words
in Example 1.1 are public, static, and void. Their use will
be introduced later in the book.
53
Modifiers
Java uses certain reserved words called modifiers that
specify the properties of the data, methods, and
classes and how they can be used. Examples of
modifiers are public and static. Other modifiers are
private, final, abstract, and protected. A public datum,
method, or class can be accessed by other programs. A
private datum or method cannot be accessed by other
programs. Modifiers are discussed in Chapter 6,
“Objects and Classes.”
54
Statements
A statement represents an action or a sequence of actions.
The statement System.out.println("Welcome to Java!") in
the program in Example 1.1 is a statement to display the
greeting "Welcome to Java!" Every statement in Java
ends with a semicolon (;).
55
Blocks
A pair of braces in a program forms a block that groups
components of a program.
public class Test {
public static void main(String[] args) {
System.out.println("Welcome to Java!");
}
}
Class block
Method block
56
Classes
The class is the essential Java construct. A class is a
template or blueprint for objects. To program in Java,
you must understand classes and be able to write and use
them. The mystery of the class will continue to be
unveiled throughout this book. For now, though,
understand that a program is defined by using one or
more classes.
57
Methods
What is System.out.println? It is a method: a collection
of statements that performs a sequence of operations to
display a message on the console. It can be used even
without fully understanding the details of how it works.
It is used by invoking a statement with a string argument.
The string argument is enclosed within parentheses. In
this case, the argument is "Welcome to Java!" You can
call the same println method with a different argument to
print a different message.
58
main Method
The main method provides the control of program flow.
The Java interpreter executes the application by invoking
the main method.
The main method looks like this:
public static void main(String[] args) {
// Statements;
}
59
Creating, Compiling, and Running Programs
Create/Modify Source Code
Source code (developed by the programmer)
package chapter1;
public class Welcome {
public static void main(String[] args) {
System.out.println("Welcome to Java!");
}
}
Byte code (generated by the compiler for JVM
to read and interpret, not for you to understand)
…
Method Welcome()
0 aload_0
…
Method void main(java.lang.String[])
0 getstatic #2 …
3 ldc #3 <String "Welcome to
Java!">
5 invokevirtual #4 …
8 return
Saved on the disk
Source Code
Compile Source Code
i.e., javac Welcome.java
If compilation errors
stored on the disk
Bytecode
Run Byteode
i.e., java Welcome
Result
If runtime errors or incorrect result
60
Executing Applications
 On command line
– java classname
Bytecode
Java
Interpreter
on Windows
Java
Interpreter
on Linux
...
Java
Interpreter
on Sun Solaris
61
Example
javac Welcome.java
java Welcome
output:...
62
JBuilder Basics
Installing
JBuilder
JBuilder
IDE Interface
Create
a JBuilder project
Create
Java programs
Compile
and run Java programs
63
JBuilder IDE Interface
64
Creating a JBuilder project
Choose File, New Project to display the project wizard
65
Creating a JBuilder project, cont.
Set output path, backup path, working directory, and source path
66
Creating a JBuilder project, cont.
Optional project description
67
Creating a Java Program
Choose File, New Class to display the class wizard
68
Compiling and Running a Program
Local Disk (C:)
Where are the files
stored in the
directory?
Example
chapter1.jpx
chapter1.html
chapter1
Welcome.java
Welcome.class
chapter2
Java source files and class files for Chapter 2
.
.
.
chapter19
Java source files and class files for Chapter 19
bak
chapter1
Welcome.java~1~
chapter2
.
.
.
Backup files for Chapter 2
chapter19
Backup files for Chapter 19
69
Displaying Text in a Message
Dialog Box
you can use the showMessageDialog method in the
JOptionPane class. JOptionPane is one of the many
predefined classes in the Java system, which can be
reused rather than “reinventing the wheel.”
Source
Run
IMPORTANT NOTE: To run the program from the Run
button, (1) set c:\jbuilder9\jdk1.4\bin on your path, and
(2) copy both the slide directory and the example
directory from the IR-CD to a directory (e.g.,
c:\LiangIR-CD) .
70
The showMessageDialog Method
JOptionPane.showMessageDialog(null,
"Welcome to Java!",
"Example 1.2",
JOptionPane.INFORMATION_MESSAGE));
71
The exit Method
Use Exit to terminate the program and stop all
threads.
NOTE: When your program starts, a thread is
spawned to run the program. When the
showMessageDialog is invoked, a separate
thread is spawned to run this method. The
thread is not terminated even you close the
dialog box. To terminate the thread, you have
to invoke the exit method.
72
Review
 Introducttion
to course elements
 Introduction to Java basics
 Review
 Next:
– Primitive Data Types and operations
73
Download