1 / 22

Introduction to Java Programming Language

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

clover
Download Presentation

Introduction to Java Programming Language

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction to Java Programming Language Java’s History Java’s Features

  2. Java’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?

  3. Features as a Network Programming Languages • Run on a wide variety of hardware platforms • Loaded dynamically via a network • Provides robustness features • Provides security features

  4. Features 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

  5. Portability 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 )

  6. 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 main 0 sipush 1000 3 newarray int 5 astore_1 6 iconst_0 7 istore_2 8 goto 18 11 aload_1 12 iload_2 13 iload_2 14 iastore 15 iinc 2 1 18 iload_2 19 aload_1 20 arraylength 21 if_icmplt 11 24 return

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

  8. Robustness 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 )

  9. Security 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.

  10. Object-Oriented 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

  11. Encapsulation 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

  12. Classes 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

  13. Inheritance 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

  14. OO 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

  15. 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!

  16. 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

  17. Multithreading 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 )

  18. Garbage 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

  19. Exception 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 memory close the file; }

  20. 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?

  21. 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 memory if(read failed) { error_code = -1; } } else error_code = -2; ……... } Is the file really being closed if the function fails to allocate memory?

  22. 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 ( .... ) }

More Related