+ All Categories
Home > Documents > Introduction to Java Programming Language

Introduction to Java Programming Language

Date post: 17-Jan-2016
Category:
Upload: clover
View: 70 times
Download: 3 times
Share this document with a friend
Description:
Introduction to Java Programming Language. Java ’ s History Java ’ s Features. Java’s Brief History. Embedded controller market is originally targeted Designed for programs for small embedded computers in consumer electronic appliances ( TV, Microwave, etc. ) - PowerPoint PPT Presentation
22
Introduction to Java Introduction to Java Programming Language Programming Language Java’s History Java’s Features
Transcript
Page 1: Introduction to Java Programming Language

Introduction to Java Programming LanguageIntroduction to Java Programming Language

Java’s History Java’s Features

Page 2: Introduction to Java Programming Language

Java’s Brief HistoryJava’s Brief History

Embedded controller market is originally targeted

Designed for programs for small embedded computers in consumer electronic appliances ( TV, Microwave, etc. )

Should be small, distributed, robust

Rapidly accepted as a de facto network programming language as the Internet grows fast ( WWW, electronic commerce )

Why?

Page 3: Introduction to Java Programming Language

Features as a Network Programming LanguagesFeatures as a Network Programming Languages

Run on a wide variety of hardware platforms

Loaded dynamically via a network

Provides robustness features

Provides security features

Page 4: Introduction to Java Programming Language

Features as a General Programming LanguagesFeatures as a General Programming Languages

Completely object-oriented language

Much simpler than C++

Can work on multiple tasks simultaneously

Automatically recycles memory

Exception handling features

Interpreted

High-Performance

Page 5: Introduction to Java Programming Language

PortabilityPortability

Designed to support applications operating in networked environment with different CPUs, OS, and language systems

Java compiler dose not generate “machine code”

Rather, Java is compiled into byte code, a high-level machine-independent intermediate code

Byte code is indeed an instruction set for an hypothetical stack machine;e.g., iload, istore, pop, getfield, iadd, ..

The size of byte code is small ( 2 times smaller than the RISC code from C++ compiler )

Page 6: Introduction to Java Programming Language

Portability ( cont’ )Portability ( cont’ )

public class Arr {public static void main(String [] args){

int[] array = new int[1000];

for( int i=0; i<array.length;i++ )array[i] = i;

}}

Method void main0 sipush 10003 newarray int5 astore_16 iconst_07 istore_28 goto 1811 aload_112 iload_213 iload_214 iastore15 iinc 2 118 iload_219 aload_120 arraylength21 if_icmplt 1124 return

Page 7: Introduction to Java Programming Language

Portability ( cont’ )Portability ( cont’ )

The byte code is executed by a software called a Java virtual machine by interpretation

Java’s data types and operator behaviors are strictly defined; e.g., bytes : 8-bit two’s complement, char : 16-bit Unicode,…

Java libraries define portable interface ( e.g., Abstract Window Toolkit (AWT) for UNIX, Windows, Mac )

Java language environment is easily portable– Java compiler is written in Java– Java run-time system is written in ANSI C

This approach is good for single-system software distribution as well as for network-based applications

Page 8: Introduction to Java Programming Language

RobustnessRobustness

Reliable programming

Strict compile-time checking by Java compiler

Run-time checking by JVM ( null dereference, array bound check )

Do not corrupt memory ( no pointer arithmetics, garbage collection )

Fast prototyping ( like Lisp )

Page 9: Introduction to Java Programming Language

SecuritySecurity

How Java compiler restricts “hacking” code

No pointers ( memory cells that contain the address of others ) Memory layout is decided at run-time, not at compile-time

( memory references using handles are resolved at run-time )

Violation of these are detected at compile-time

How Java VM restricts “hacking” code

Byte code verification by JVM ( verifier, class loader ) Verifies no operand stack overflow, illegal data conversions, incorrect

parameter types, etc.

Page 10: Introduction to Java Programming Language

Object-Object-OrientedOriented Language Language

OO Programming: representing real-world objects into software objects

Real-world objects ( e.g., cars ) have states ( current gear, number of gears, direction ) and behaviors ( starting, braking, turning, accelerating, changing gear )

Software objects represent states with instance variables and behaviors with methods.

OO Programming consists of:

Encapsulation Inheritance

Page 11: Introduction to Java Programming Language

EncapsulationEncapsulation

Information hiding and modularity

Instance variables are not accessible outside of the object They are accessible only through the methods

Benefits of encapsulation

Information hiding : hide unnecessary implementation details Modularity : source code of an object is maintained independently Message Passing : method calls support all possible interactions

between objects

Page 12: Introduction to Java Programming Language

ClassesClasses

A software blueprint for the same kind of objects is called a class

A car class : variable declarations and method implementations Must instantiate the car class to create a car object

Benefits of classes : Reusability

Car manufacturers reuse the same blueprint to build many cars Programmer use the same class ( the same code ) to create many

objects

Page 13: Introduction to Java Programming Language

InheritanceInheritance

As objects are defined in terms of classes, classes can also be defined in terms of other classes

Hierarchy of classes ( car : sedan, truck, jeep ) Each subclass inherit variables and methods from superclass Subclass can also add its own variables and methods Subclass can override inherited methods and provide specialized

implementations for them ( e.g., change gear )

Benefit : Reuse the same code while providing specialized one

Page 14: Introduction to Java Programming Language

OO Technology in JavaOO Technology in Java

Completely object-oriented language

Programs consist of class definitions

Class definition establish the blueprint of application-specific category

Objects ( class instances ) of the category can be created using the blueprint

Page 15: Introduction to Java Programming Language

OO Technology in Java ( cont’ )OO Technology in Java ( cont’ )

Dynamic loading and binding of classes

No separate, static “link” phase after compilation. Load classes dynamically only when needed during execution

Linking in Java is loading new classes into JVM by the class loader and is incremental and lightweight

Dynamic binding solves the fragile superclass problem of C++ : when a class definition changes, all other classes that reference the class must be recompiled ; in Java, the references are compiled into symbolic names ( not numeric offsets ) which are then resolved by the Java interpreter ( once ) at run-time

Results in highly dynamic and dynamically-extensible system ; classes are linked as required and are downloaded across networks ; you can also provide your own class loader!

Page 16: Introduction to Java Programming Language

Simpler than C++Simpler than C++

No functions

No multiple inheritance ( instead, use interface )

No operator overloading

No pointers

No Typedefs, Defines, and Preprocessing

No structures and unions

Page 17: Introduction to Java Programming Language

MultithreadingMultithreading

Multithreading is part of the Java language

Thread : a single sequential flow of control within a program

concurrent activities can be programmed by running multiple threads at the same time ( e.g. HotJava browser )

Synchronization is required for accessing shared data

Java provides primitives for threads and locks

More “thread-safe”compared to previous thread libraries ( e.g., what happens then exception occurs while holding a lock )

Page 18: Introduction to Java Programming Language

Garbage collectionGarbage collection

Java frees you from the headache of memory management

A background garbage collector runs in a low-priority thread

It frees unused memory for reuse

Significantly improves the reliability and production cycle of code

Page 19: Introduction to Java Programming Language

Exception Handling FeaturesException Handling Features

Separate Error-Handling Code from “Regular” code

Example : reading an entire file into memory

readFile {open the file;determine its size;allocate that much memory;read the file into memoryclose the file;

}

Page 20: Introduction to Java Programming Language

Exception Handling Features ( cont’ )Exception Handling Features ( cont’ )

What happens if the file cannot be opened?

What happens if the length of the file cannot be determined?

What happens if enough memory can’t be allocated?

What happens if the read fails?

What happens if the file cannot be closed?

Page 21: Introduction to Java Programming Language

Exception Handling Features ( cont’ )Exception Handling Features ( cont’ )

errorcode Type readFile {init error_code = 0;open the file;if ( the file is opened ) {

determine the length of the file;if (got the file length) {

read file into memoryif(read failed) {

error_code = -1;}

} else error_code = -2;……...

}

Is the file really being closed if the function fails to allocate memory?

Page 22: Introduction to Java Programming Language

Exception Handling Features ( cont’ )Exception Handling Features ( cont’ )

readFile {try {

open the file;determine its size;allocate that much memory;read the file into memory;close the file;

} catch (fileopenfailed) {do something

} catch(sizedeterminefailed) {do something

} catch ( .... )}


Recommended