Post on 17-Jan-2016
Chapter 2 © copyright Janson Industries 2014 1
Java
▮ Java/PC programming environment
▮ Java syntax rules
▮ Java documentation
▮ Java/RAD coding example
This presentation is stored in 4thed.Ch02.ppt
Non-graded assg
Chapter 2 © copyright Janson Industries 2014 2
Setting up the environment
▮ Files are identified by a name, myfile.doc, and location (aka path), C:\Program Files\
▮ When a file is identified by the path and file name, C:\Program Files\myfile.doc, it is considered a fully-qualified reference
▮ If a file is referred to with only name, myfile.doc, it is a non-qualified reference
Chapter 2 © copyright Janson Industries 2014 3
Setting up the environment
▮ Having to type the fully-qualified name of every file is time consuming and error prone
▮ The PATH system variable tells Windows where to search for non-qualified file references
▮ The CLASSPATH indictates where to search for non-qualified .class file references
Chapter 2 © copyright Janson Industries 2014 4
Setting up the environment
▮ Defining Path and CLASSPATH every time is time consuming
▮ Could create a .bat program called init
▮ Init.bat would contain the commands to define Path and CLASSPATH
▮ Simply run init each time
▮ Or, define the system variables permanently
Chapter 2 © copyright Janson Industries 2014 5
Setting the Path
Right click:
“Computer”
Choose:
Properties
Click:
Advanced system settings
Click:
Environment Variables button
Chapter 2 © copyright Janson Industries 2014 6
In the System Variables pane:
Click the variable Path
Then the Edit button
Setting the Path
Chapter 2 © copyright Janson Industries 2014 7
In the Edit System Variable
window, add to the end of the
Path value:
;c:\jdk\bin
Then Click the OK button
Change CLASSPATH by
adding the path of your
java application (i.e. .class
files) to the variable
;c:\
Setting the Path (Windows 7)
Chapter 2 © copyright Janson Industries 2014 8
Setting the Classpath
▮ If there is no classpath environment variable, create one
▮ Click New and specify the variable name (classpath) and value
Chapter 2 © copyright Janson Industries 2014 9
General steps to run on PC▮ Save the source code (E.g. Customer.java)
▮ Bring up the command prompt
▮ Set path (path=f:\jdk\bin) to identify the loaction of the javac and java commands
▮ Set classpath (Set classpath=.;f:\) to identify location of java class files (i.e. .class files)
▮ Or, change the environment values
▮ Convert to byte code (javac Customer.java)
▮ Run the program (java Customer)
Chapter 2 © copyright Janson Industries 2014 10
Java Concepts
▮ Java “program” is called a class
▮ Java classes grouped into projects and packages
▮ Java classes comprised of global/class variable definitions and methods
▮ Methods contain executable statements and local/method variable definitions
▮ Are you familiar with what variables do?
Chapter 2 © copyright Janson Industries 2014 11
Java Language Organization
Project
Package Package Package
Class Class Class
Variable Method Method Method Variable
Variable Statement Statement
Chapter 2 © copyright Janson Industries 2014 12
Java Language Concepts
▮ Let’s concentrate on the source code
▮ Java classes comprised of class (global) variable definitions and methods
▮ Methods contain executable statements and method (local) variable definitions
Chapter 2 © copyright Janson Industries 2014 13
Classes
Class
Variable Variable Method Method Method
Variable Statement Statement Class comprised of class variable definitions and methods
Methods contain method variable definitions and executable statements
Chapter 2 © copyright Janson Industries 2014 14
Java Class Example// Customer.java
public class Customer {
String custName, custStreet, custCSZ;
public Customer() { custName = "No Name";
custStreet = "No Street";
custCSZ = "No CityStateZip"; }
public void printCustInfo(){
System.out.println("CUSTOMER NAME IS: " + custName);
System.out.println("CUSTOMER STREET IS: " + custStreet);
System.out.println("CUSTOMER CSZ IS: " + custCSZ); }
public static void main( String[] args ) {
Customer aCust = new Customer();
aCust.custName = "Joe Customer";
aCust.printCustInfo();
}
}
methods
Class variables
statements
Method variable
Chapter 2 © copyright Janson Industries 2014 15
Classes
▮ Divided into the header and the body
▮ Header defines:▮ The source code as a class (e.g. “class”)▮ Access allowed (e.g. “private”, “public”)▮ The name of class
▮ Must begin with an upper case letter▮ Must match .java file name
▮ Body is enclosed in braces and contains class variables and methods
▮ Simple class header example:▮ public class Customer { BODY }
Class namesAre case sensitive!Begin with a capital letterNo spaces
Body of class begins and ends with bracesChapter 2 © copyright Janson Industries 2014 16
Class Definition:Header
Body public class Customer {
class variables
method{}
method{}
}
Java Class
Class access Class name
“A class contains a template for creating objects”
Chapter 2 © copyright Janson Industries 2014 17
Java Method
▮ Comprised of a header/definition and body
▮ Header/definition comprised of:▮ Modifiers (e.g. private, public, static)
▮ Return value type (e.g. void, String)
▮ Method name begins with a lower case letter (e.g. “getMailingLabel”, “main”)
▮ Parameter(s)/received value(s) in parenthesis (e.g. (String name), (int age), () means no params)
18
Java Method
▮ When a parameter is define must specify the data type and the variable name to hold the data
▮ So with (String name) String is the data type and the variable that will hold the passed value is name
▮ (int age), data type is integer (int) and the variable name is age
Chapter 2 © copyright Janson Industries 2014 19
Java Method
▮ Method header/definition examples:
▮ public void setCustomerName(String custName)
▮ public String getMailingLabel()
▮ public static void main(String[ ] args)
▮ public void setTaxRate(double taxRate)
Chapter 2 © copyright Janson Industries 2014 20
Java Method
▮ Method "access" modifiers (cont’d):
▮ Private methods:▮ only accessed by other methods within the
class
▮ Public methods:▮ can be accessed by objects external to the
class▮ comprise the class “interface”
▮ Variables can also be public or private ▮ public can be accessed by objects external
to the class
Chapter 2 © copyright Janson Industries 2014 21
Java Concepts
▮ Java classes can be invoked many ways
▮ 2 primary ways
▮ Run with the java command
▮ Instantiated▮ An object (aka an instance) of the class type is
created
▮ An object is an "instance of a class" and is usually associated with a variable
Chapter 2 © copyright Janson Industries 2014 22
Java Concepts
▮ If java class is invoked with the java command:▮ main method bytecode converted to machine
language▮ main method machine language loaded into
main memory▮ main method is executed
▮ If Java class is instantiated:▮ Entire class' bytecode converted to machine
language and loaded into main memory▮ i.e. An object of that class type is created
▮ Class (global) variables created▮ constructor method is executed
Chapter 2 © copyright Janson Industries 2014 23
Specialized Methods
▮ Constructors are methods that:▮ Can not return any values▮ Have the same name as the class▮ Are run when the object is instantiated▮ Are used to initialize variables and perform setup
operations (e.g. open files, assign user supplied values, establish communication links, etc.)
▮ Static method “main”:▮ Java command invokes main method in
applications (main is not run when object instantiated)
▮ Main method header must be defined precisely as follows:
Chapter 2 © copyright Janson Industries 2014 24
public static void main(String[ ] args)
main Method
No values returned
Any class can use
The method expects an array of String variables (called args)
When main is invoked, object not created
Method name
Chapter 2 © copyright Janson Industries 2014 25
Notice how much the class and constructor method headers look alike
What's the difference?
Customer has a class header, constructor, and main method that follow the previously defined rules
Chapter 2 © copyright Janson Industries 2014 26
Method body
▮ Comprised of:▮ variable definitions▮ executable statements
▮ Enclosed in braces { } public Customer(String name, String street, String cityStateZip)
{
private String custName = null;
private String custStreet = null;
private String custCityStateZip = null;
custName = name;
custStreet = street;
custCityStateZip = cityStateZip;
}
Chapter 2 © copyright Janson Industries 2014 27
Java Language
▮ Variables usually defined at the beginning of a class or method
▮ Variable definitions:Access modifier (e.g. “private”, “public”) (optional)Data type (e.g. “int”, “String”)Name (e.g. “custID”, “custName”)Initial value (optional)End with a semicolon (;)
▮ Examples:private int custID = 0;public String custName = null;
Chapter 2 © copyright Janson Industries 2014 28
Java Language
Multiple line comment
Single line comment
Multiple line comment
▮ Comment examples:
/* This is an example */
/** This is an example */
public int custID = 0; // This is an example
▮ In RAD, comment out and uncomment any line(s) by selecting and pressing CTRL + /
Chapter 2 © copyright Janson Industries 2014 29
Programming Conventions
▮ Class header and start of body defined
public class Customer {
▮ Class variables defined private String custCityStateZip = null;
private static int lastCustID = 100000;
▮ Methods defined public Customer(String cityStateZip) {
custCityStateZip = cityStateZip;int custID = lastCustID + 1;
}
▮ Class body ended }
Chapter 2 © copyright Janson Industries 2014 30
Source Code Rules
▮ Statements end with a semicolon (;)private String custCityStateZip = null;private static int lastCustID = 100000;
▮ Very forgiving re: extra spaces and linesprivate String custCityStateZip = null ;
public Customer(String cityStateZip) { custCityStateZip = cityStateZip; int custID = lastCustID + 1; }
▮ To invoke a class method from another class method (and pass many parms):
this.methodName(parm, parm, etc); returnValue = this.methodName(parm, parm, etc.);
Chapter 2 © copyright Janson Industries 2014 31
Source Code Rules
▮ To invoke a method from outside the class, instantiate an object of the class type, create a variable of the class type and assign the object to the variable :
▮
Syntax: ClassName variableName = new ClassName(); Example: Customer myCust = new Customer();
▮ Then invoke the object’s method:Syntax: variableName.methodName();
Example: myCust.printCustInfo();
Chapter 2 © copyright Janson Industries 2014 32
Source Code Rules
▮ Weird? Not really. To use Word Processing commands, don’t you need to create a document?
▮ To use queue commands, doesn’t a queue have to be created (and referenced in each command)?
▮ So why shouldn’t you have to create a Customer object to use a customer function?
Customer myCust = new Customer();
myCust.printCustInfo();
Chapter 2 © copyright Janson Industries 2014 33
Class header
Class variables
Method headerStatements
Method header
Statements
Method headerStatements
What will be the result of running Customerc2sl31 as an application?
Chapter 2 © copyright Janson Industries 2014 34
Execution Results▮ main method bytecode converted to machine
language and loaded into main memory
▮ First statement in main executed: a Customer object is created. This means:▮ The entire Customer class’ bytecode is converted to
machine language and loaded into main memory
▮ 3 String objects are created, 3 String class level variables (custName, custStreet and custCSZ) are created, and the String objects are assigned to the variables
▮ The Customer object’s constructor is executed. This means:
Chapter 2 © copyright Janson Industries 2014 35
Execution Results▮ 3 String objects are created with the text “No Name”, “No
Street”, “No CityStateZip”▮ 3 new String objects are assigned to the variables custName,
custStreet and custCSZ
▮ Execution returns to the first statement in the main method and▮ The Customer variable aCust is created▮ The Customer object is assigned to aCust
▮ Second statement in main executed:▮ A String object is created with the text “Joe Customer”▮ The new String object with the value “Joe Customer” is assigned
to the Customer object’s class level String variable custName
Chapter 2 © copyright Janson Industries 2014 36
Execution Results
▮ Third statement in main executed: the Customer object’s printCustInfo method invoked. This means:
▮ First println statement is executed, what is shown?
▮ Second println statement is executed, what is shown?
▮ Third println statement is executed, what is shown?
Chapter 2 © copyright Janson Industries 2014 37
What will be the result of running this?Let’s create a new class and run…
Proving main vs. constructor
Chapter 2 © copyright Janson Industries 2014 38Click on the src folder name and then File, New, Class
Chapter 2 © copyright Janson Industries 2014 39
Specify the name of the new class (Cust1), click Finish
Chapter 2 © copyright Janson Industries 2014 40
Starts you with a frameworkMove the cursor and start typing
Chapter 2 © copyright Janson Industries 2014 41
Enter the source code and run What are the results and why?
Chapter 2 © copyright Janson Industries 2014 42
Exporting: Moving an app from RAD to the production environmentClick FILE then EXPORT
Chapter 2 © copyright Janson Industries 2014 43
Click File system then Next
Chapter 2 © copyright Janson Industries 2014 44
In real world, usually export to JAR (Java ARchive) files.
They are compressed files.
Chapter 2 © copyright Janson Industries 2014 45
1. Select the java files to
export
...click browse and specify the
location
2. Enter export destination or...
3. Click OK
4. Click Finish
Chapter 2 © copyright Janson Industries 2014 46Click Finish
Notice options to create directories and overwriting files
Chapter 2 © copyright Janson Industries 2014 47
Go out and verify Cust1.java is there.
Chapter 2 © copyright Janson Industries 2014 48
Open with notepad to display
Chapter 2 © copyright Janson Industries 2014 49
javac and java
Make sure classpath and path variables are set
Chapter 2 © copyright Janson Industries 2014 50
Exporting
▮ Moving between/setting up environments is one the most difficult thing (conceptually) for new programmers
▮ Programmers develop apps within an IDE (like RAD) and export to the production environment
Chapter 2 © copyright Janson Industries 2014 51
Exporting
▮ This is where packages can mess you up!
▮ Ex. For a Customer class stored in project Proj1 and package C1:
▮ Customer must have a package statement at beginning of class
package C1;
▮ Class name is now considered C1.Customer
Chapter 2 © copyright Janson Industries 2014 52
Exporting and Running
▮ When file exported to Windows, Customer file must be in a directory/folder called C1
▮ Project and packages (except default pkg) implemented in Windows as directories
▮ So, if "create directory structure" specified▮Both Proj1 and C1 directories are created▮Also a src folder is created
▮ javac Customer will fail because Customer not class name ▮ javac C1/Customer will fail because Proj1 not in classpath
Chapter 2 © copyright Janson Industries 2014 53
Exporting and Running
▮ Need to add Proj1 to the classpath and refer to the class with package name included in the class name
▮ Set classpath = f:\Proj1\src
▮ javac C1/Customer
▮ Be careful of directory structure when exporting!
▮ I suggest just exporting the package as a directory
Chapter 2 © copyright Janson Industries 2014 54
▮ In other words, on the export window choose the third option "create only selected directories"
▮ Then click the java file and the package's checkboxes
▮ I.e. select the package/directory
▮ This will result in a folder with the package name and the java file inside it
Exporting and Running
Chapter 2 © copyright Janson Industries 2014 55
▮ No project folder or src folder will be created
▮ You wont have to add them to the path
▮ Still need to set the path to the location of the package/folder though
▮ Then issue javac command with the package/folder name and the java file name
Exporting and Running
Chapter 2 © copyright Janson Industries 2014 57
Non - Graded Assgs
▮ Export file(s) or package (recommended) out of RAD workspace as a jar file
▮ Source and .class files
▮ Send the jar file as an email attachment to wsjavaws@yahoo.com
▮ I will acknowledge receiving them within one business day
▮ If you do not hear from me, I did not receive them
Chapter 2 © copyright Janson Industries 2014 58
Non - Graded Assgs
▮ How to check you exported a jar file correctly
▮ Create a new project
▮ Import the jar into the project by▮ Choosing Import archive file▮ Specify the jar file
▮ Expand the project and confirm that all the packages and source code files are there
Chapter 2 © copyright Janson Industries 2014 59
Graded Assgs
▮ Export package(s) or entire project(s) out of RAD workspace as a jar file
▮ Source and .class files
▮ Send the file(s) as an email attachment to wsjavaws@yahoo.com
▮ I will acknowledge receiving them within one business day
▮ If you do not hear from me, I did not receive them
Chapter 2 © copyright Janson Industries 2014 60
Graded Assgs
▮ How to check you exported the jar correctly
▮ Create a new project
▮ Import the jar into the project by▮ Choosing Import archive file▮ Specify the jar file
▮ Expand the project and confirm that all the packages and source code files are there
Chapter 2 © copyright Janson Industries 2014 61
Documentation
▮ Online documentation available. Ex:
▮ Gives an overview of the JDK supplied classes and a short description of the methods
▮ The JDK classes grouped into packages!
http://download.oracle.com/javase/8/docs/api/
Chapter 2 © copyright Janson Industries 2014 62
Shows a brief description of all packages in V8
Or click a class in the index on the left
Click the package name to see all classes in the package
Chapter 2 © copyright Janson Industries 2014 63
Shows a hierarchy for the class
Brief description and examples
Chapter 2 © copyright Janson Industries 2014 64
A list and brief summary of the methods in the class
Chapter 2 © copyright Janson Industries 2014 65
Documentation
▮ You can generate the same documentation for your classes
▮ First, you may have to tell RAD where the javadoc command is (in the JDK)
▮ In our case: F:\jdk\bin\javadoc.exe
Chapter 2 © copyright Janson Industries 2014 66
Right click the class and select Export
Chapter 2 © copyright Janson Industries 2014 67
Select Javadoc and click Next
Chapter 2 © copyright Janson Industries 2014 68
Specify where the documentation should go, click Finish
RAD should know that javadoc is in the JDK in RAD
Chapter 2 © copyright Janson Industries 2014 69
Chapter 2 © copyright Janson Industries 2014 70
Console shows Javadoc messages
Chapter 2 © copyright Janson Industries 2014 71
.html file with same name as class is there
Double click to display in browser
Chapter 2 © copyright Janson Industries 2014 72
The “signature” of each method is shown
Signature = method name + parameters
The signature uniquely defines each method, not the name
Chapter 2 © copyright Janson Industries 2014 73
Non-graded Assg
▮ Create Cust1
▮ Export Cust1 and Run
▮ Export Cust1 documentation
▮ Send Cust1.java, Cust1.class, and Cust1.html files as email attachments to wsjavaws@yahoo.com