Presentation is loading. Please wait.

Presentation is loading. Please wait.

Algorithm Programming 1 (using Java) 89-210 Bar-Ilan University 2007-2008 תשס"ח by Moshe Fresko.

Similar presentations


Presentation on theme: "Algorithm Programming 1 (using Java) 89-210 Bar-Ilan University 2007-2008 תשס"ח by Moshe Fresko."— Presentation transcript:

1 Algorithm Programming 1 (using Java) 89-210 Bar-Ilan University 2007-2008 תשס"ח by Moshe Fresko

2 Course objectives  Learning Professional Programming by Algorithmic Examples  Learning Java  Object Oriented Programming  Design Patterns  Multithreaded Programming  GUI  Run-time Class Information

3 Course Requirements  Exercises/Projects, 25 % of the grade Programming Exercises One step-by-step Project Time schedules are strict, no late exercises are accepted. They will be handed on via the Department Submitec utility Cheating is punished by Discipline Assembly ( Very strictly )  Exam 75 %

4 What is Java ?  (Almost) Fully OO Programming Language.  Syntax: Similar to C++, Different in some Semantics and Internals.  Architecture Neutral  World-Wide-Web programming language

5 History  Early 1990s, Oak, by Sun For embedded systems in Consumer Electronic Devices  1994, Sun decided to adapt Oak to Web  January 1995, renamed as Java, Building Web based applications  May 1995, Sun ’ s first JDK (Java Development Kit) With HotJava capable of running Applets  1998, Sun released Java 2 SDK (J2SDK) By time Bunch of Libraries are added

6 Object Oriented Reminders  Abstraction  Encapsulation  Inheritance  Abstract classes  Polymorphism By Inheritance By Overloading Interfacing  Constructors and Finalizers

7 Design Patterns  Design Patterns help you learn from others ’ successes, instead of your failures  Separate things that change, from the things that doesn ’ t change  Elegant and Cheap-to-Maintain  Inheritance can be thought as a DP, and so Composition, etc.  Iterator (Enumeration in Java 1.0 and 1.1)

8 Resources  Internet http://java.sun.comFor Tutorials and Downloads http://java.sun.com http://java.sun.com/j2se/1.4.2/docs/api/API of Java 1.4 http://java.sun.com/j2se/1.4.2/docs/api/ http://java.sun.com/j2se/1.5.0/docs/api/API of Java 1.5 http://java.sun.com/j2se/1.5.0/docs/api/ http://java.sun.com/docs/books/tutorial/reallybigindex.html Development Environment  NetBeans ide  Symantec ’ s Cofe  Borland ’ s JBuilder  Books Developing Java Software Russel Winder & Graham Roberts 2 nd Edition, 2000 John Wiley and Sons, Ltd. Java 2 Complete Gemma O ’ Sullivan 1998, Sybex Thinking in Java Bruce Eckel 3 rd Edition (free to download) Design Patterns Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides 1995, Addison Wesley Other Java Books …

9 JDK, J2SE  J2SE, J2EE and J2ME  JFC : Java Foundation Classes  Java2D : 2D Graphics  JavaBeans : Java object component technology  Servlets : Web Server  JavaHelp : For creating help systems  etc.  javac : Compiler to Byte-Code  java : Loads a byte-code into JVM and executes  javap : Byte-code viewer  javadoc : Creates HTML documentation for the code.  jdb : Java debugger  appletviewer : To view applets from within an HMTL page

10 Application Example  Programs Applications Applets  Programs are Case Sensitive  Example: HelloWorldApp.java file public class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); }

11 Application Example  javac HelloWorldApp.java Compiles and creates ByteCode in file “ HelloWorldApp.class ”  java HelloWorldApp Looks for the file “ HelloWorldApp.class ” and for the class “ HelloWorldApp ” in it, and starts to run the static “ main ” function.

12 Applet Example // HelloWorld.java file import java.applet.*; import java.awt.*; public class HelloWorld extends Applet { public void paint(Graphics g) { g.drawString("Hello world!", 50, 25); } // Hello.html file A Simple Program Here is the output of my program:

13 JVM  Source Code  Java Compiler (javac) -> ByteCode  Java Interpreter (java) - Java VM

14 JVM  java -classpath … ; … ; … for providing paths of class libraries, and.jar files .jar files are a set of class files compressed into a single file Class Execution Engine Adapter Interface Adapter OS JNI

15 Java Bytecode  Like C++  Assembly, Java  ByteCode  We need to check ByteCode For Performance and Memory Usage Tuning Size and Execution Speed Debugging

16 Java Bytecode - Example class Employee { private String name ; private int idNumber ; public Employee(String strName, int num) { name = strName ; idNumber = num ; storeData(strName,num) ; } public String employeeName() { return name ; } public int employeeNumber() { return idNumber ; } private void storeData(String s, int num) { //... } javac Employee.javacreates Employee.class javap – c Employeeto print to string the byte-code in visual form

17 Java Bytecode - Example Compiled from "Employee.java" class Employee extends java.lang.Object{ public Employee(java.lang.String,int); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object." ":()V 4: aload_0 5: aload_1 6: putfield #2; //Field name:Ljava/lang/String; 9: aload_0 10: iload_2 11: putfield #3; //Field idNumber:I 14: aload_0 15: aload_1 16: iload_2 17: invokespecial #4; //MethodstoreData:(Ljava/lang/String;I)V 20: return public java.lang.String employeeName(); Code: 0: aload_0 1: getfield #2; //Field name:Ljava/lang/String; 4: areturn public int employeeNumber(); Code: 0: aload_0 1: getfield #3; //Field idNumber:I 4: ireturn }

18 Java Bytecode - opcodes  opcodes a... : opcode is manipulating type object ref. i … : opcode is manipulation type integer b … : byte, c... : char, d … : double, etc.

19 Java Bytecode - JVM  JVM Stack-based machine Each thread has a JVM stack which stores Frames A frame is created each time a method is invoked Each Frame has  Operand Stack  An array of Local variables  A reference to Runtime constant pool of the class of the current method

20 Java Bytecode – JVM diagram

21 Java Bytecode  Local variables 0 th : this (for constructors or instant methods) Then parameters Then local variables  Operand stack LIFO stack, to pop and push values Used to receive return values  Example public string employeeName() { return name ; } public java.lang.String employeeName(); Code: 0: aload_0 1: getfield #2; //Field name:Ljava/lang/String; 4: areturn  aload_0 : pushes this pointer into stack  getfield #2 : this popped+2 added and get reference (for name) from runtime constant pool of the class. This is loaded to the stack  areturn : returns the top value of the stack (name). It is popped from operand stack and pushed to the operand stack of calling method  The real machine code is : 2A B4 00 02 B0

22 Java Bytecode public Employee(String strName, int num) { name = strName ; idNumber = num ; storeData(strName,num) ; } public Employee(java.lang.String,int); Code: 0: aload_0 1: invokespecial #1; //Method java/lang/Object." ":()V 4: aload_0 5: aload_1 6: putfield #2; //Field name:Ljava/lang/String; 9: aload_0 10: iload_2 11: putfield #3; //Field idNumber:I 14: aload_0 15: aload_1 16: iload_2 17: invokespecial #4; //Method storeData:(Ljava/lang/String;I)V 20: return

23 String and StringBuffer  In package java.lang  StringBuffer is modifiable version of String class  String has length substring extraction Finding and matching String comparison Uppercase and lowercase conversion Leading and trailing whitespace elimination Conversion to/from char arrays Conversion from primitive types to String Appending strings Inserting strings


Download ppt "Algorithm Programming 1 (using Java) 89-210 Bar-Ilan University 2007-2008 תשס"ח by Moshe Fresko."

Similar presentations


Ads by Google