using java without bluej 5.0. 2 bluej projects a bluej project is stored in a directory on disk a...
TRANSCRIPT
Using Java without BlueJ
5.0
2
BlueJ projects• A BlueJ project is stored in a
directory on disk
• A BlueJ package is stored in several different files
• Some files store the source code, some store the compiled code, some store additional information
• BlueJ uses standard Java format for some files and adds some additional files with extra information
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
3
The BlueJ directory structure
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
UserInterfaceUserInterface
CalcEngineCalcEngine
CalculatorCalculator
project: calculator c:\bluej\calculator\Calculator.javaCalculator.classCalculator.ctxtCalcEngine.javaCalcEngine.classCalcEngine.ctxtpackage.bluejUserInterface.javaUserInterface.classUserInterface.ctxt
4
The BlueJ file structure
• package.bluej – the package file. Contains information about classes in the package. One per package (project).
• *.java - standard Java source file (text). One per class.
• *.class - standard Java code file. One per class.
• *.ctxt - BlueJ context file. Contains extra information for a class. One per class.
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
5
Standard Java files
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
• source files: *.javaJava source files contain the source code in readable form, as typed in by the programmer.
• source files: *.javaJava source files contain the source code in readable form, as typed in by the programmer.
• class files: *.classJava class files contain byte code (a machine readable version of the class). They are generated by the compiler from the source file.
• class files: *.classJava class files contain byte code (a machine readable version of the class). They are generated by the compiler from the source file.
6
The edit-compile-execute Cycle
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
source file
011010
110101
010001
class file011010
110101
1001
10
1
0111
0110110
1
1
editorcompiler(javac)
virtual machine(java)
7
Editing
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
• A file can be edited in any text editor
– Notepad, emacs, jEdit, PFE, vi, …
• Don't use Microsoft Word: by default, Word does not save in text format
– Includes formatting (i.e. fonts, shapes, …)
• Make sure to save with a .java file extension before compiling!
8
Command line invocation
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
• Compilation and execution of Java in JDK are done from a command line
–Windows: DOS shell
–Unix: Unix shell
• Must make sure that commands for compiler (javac) and runtime (java) are in the command path
9
Compiling• JDK compiler: javac
• To invoke: javac ClassName.javacompiles source file and all classes that it depends on
• To find commands in path … either: Change directory to location of commands
– cd C:\Program Files\Java\jdk1.7.0_65\bin– javac ClassName.java
Ensure commands are in your command PATH– Control Panel -> System -> Advanced -> Environment Variables -> PATH
– Add “C:\Program Files\Java\jdk1.7.0_65\bin”– javac ClassName.java
• Creates byte file: ClassName.class
10
Compilererror messages
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
C:\bluej\project> javac ClassName.java
ClassName.java:22: ';' expected.
private Parser parser
^
1 error
C:\bluej\project>
The programmer has to open the file in the editor, find the line number, fix the error and recompile.
11
Execution
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
C:\bluej\project> java ClassName
• java starts the Java virtual machine
• The named class is loaded and execution is started
• Other classes are loaded as needed
• Only possible if class has been compiled
12
Problem Execute what?
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
• If we try:C:\bluej\project> java ClassName
• We get a compiler error:Exception in thread "main" java.lang.NoSuchMethodError: main
• The problem: there is NO instance object How does the system know which method to execute?
13
The main method
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
• The java system will always execute a method called main with a certain signature:
public static void main(String[] args){
...}
• If compiling and executing from the command line, then the main method must exist!
14
The main method
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
• main must exist
• main must be public
• main must be static (class method)
• main must have a String[] parameter
• Only main can be invoked
Example of a class method(may be invoked without an class instance)
15
Main methodexample
• Consider placing in a separate class, containing just this
• The main method should– create an object– call the first method
Objects First with Java - A Practical Introduction using BlueJ, © David J. Barnes, Michael Kölling
public static void main(String[] args){ Game game = new Game(); game.play();}
16
Demo
TestingMain.java