Chapter 2© copyright Janson Industries 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 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 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 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 Setting the Path Right click: “Computer” Choose: Properties Click: Advanced system settings Click: Environment Variables button
Chapter 2© copyright Janson Industries In the System Variables pane: Click the variable Path Then the Edit button Setting the Path
Chapter 2© copyright Janson Industries 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 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 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 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 Java Language Organization Project Package Package Package Class Class Class Variable Method Method Method Variable Variable Statement Statement
Chapter 2© copyright Janson Industries 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 Classes Class Variable Variable Method Method Method Variable Statement Statement zClass comprised of class variable definitions and methods zMethods contain method variable definitions and executable statements
Chapter 2© copyright Janson Industries 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 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 names Are case sensitive! Begin with a capital letter No spaces Body of class begins and ends with braces Chapter 2© copyright Janson Industries Class Definition: Header Bodypublic class Customer { class variables method{} } Java Class Class access Class name “A class contains a template for creating objects”
Chapter 2© copyright Janson Industries 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 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 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 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 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 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 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 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 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 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 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 Programming Conventions ▮ Class header and start of body defined public class Customer { ▮ Class variables defined private String custCityStateZip = null; private static int lastCustID = ; ▮ Methods defined public Customer(String cityStateZip) { custCityStateZip = cityStateZip; int custID = lastCustID + 1; } ▮ Class body ended }
Chapter 2© copyright Janson Industries Source Code Rules ▮ Statements end with a semicolon (;) private String custCityStateZip = null; private static int lastCustID = ; ▮ Very forgiving re: extra spaces and lines private 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 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 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 Class header Class variables Method header Statements Method header Statements Method header Statements What will be the result of running Customerc2sl31 as an application?
Chapter 2© copyright Janson Industries 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 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 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 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 Click on the src folder name and then File, New, Class
Chapter 2© copyright Janson Industries Specify the name of the new class (Cust1), click Finish
Chapter 2© copyright Janson Industries Starts you with a framework Move the cursor and start typing
Chapter 2© copyright Janson Industries Enter the source code and run What are the results and why?
Chapter 2© copyright Janson Industries Exporting: Moving an app from RAD to the production environment Click FILE then EXPORT
Chapter 2© copyright Janson Industries Click File system then Next
Chapter 2© copyright Janson Industries In real world, usually export to JAR (Java ARchive) files. They are compressed files.
Chapter 2© copyright Janson Industries Select the java files to export...click browse and specify the location 2. Enter export destination or Click OK 4. Click Finish
Chapter 2© copyright Janson Industries Click Finish Notice options to create directories and overwriting files
Chapter 2© copyright Janson Industries Go out and verify Cust1.java is there.
Chapter 2© copyright Janson Industries Open with notepad to display
Chapter 2© copyright Janson Industries javac and java Make sure classpath and path variables are set
Chapter 2© copyright Janson Industries 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 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 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 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 ▮ 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 ▮ 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 Graded Assgs (class room based class) ▮ Export out of RAD workspace onto thumb drive ▮ Source and.class files ▮ Create batch file so it executes the new thumb drive files ▮ Assgs will be graded in class ▮ Display source files (including bat file) in notepad ▮ Run the app ▮ I will run test data
Chapter 2© copyright Janson Industries 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 attachment to ▮ 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 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 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 attachment to ▮ 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 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 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!
Chapter 2© copyright Janson Industries 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 Shows a hierarchy for the class Brief description and examples
Chapter 2© copyright Janson Industries A list and brief summary of the methods in the class
Chapter 2© copyright Janson Industries 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 Right click the class and select Export
Chapter 2© copyright Janson Industries Select Javadoc and click Next
Chapter 2© copyright Janson Industries Specify where the documentation should go, click Finish RAD should know that javadoc is in the JDK in RAD
Chapter 2© copyright Janson Industries
Chapter 2© copyright Janson Industries Console shows Javadoc messages
Chapter 2© copyright Janson Industries html file with same name as class is there Double click to display in browser
Chapter 2© copyright Janson Industries 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 Non-graded Assg ▮ Create Cust1 ▮ Export Cust1 and Run ▮ Export Cust1 documentation ▮ Send Cust1.java, Cust1.class, and Cust1.html files as attachments to