Transcript PS1
עיצוב תוכנה מונחה עצמים
תירגול 1
Outline
1. Packages and Paths
2. Jar Files
Packages
Packages are the Java mechanism to prevent name
collisions
between classes. java.util.List ≠ java.awt.List!
Package rules:
Each class belongs to a package
Package may have sub-packages
A package path is dot-separated
foo.goo.Boo Class Boo, sub-package goo,
package foo
Sub-packages has no special properties or
privileges
Package (cont'd)
Package declaration
package foo.goo;
class Boo {...}
Importing classes from other packages
import fi.fy.Fum; // Just class Fum
import bar.baz.*; // All classes in bar.baz
Finding a Class
When looking for a class, the JRE looks for a .class file in
directories that match the package path: Sub-package =
Sub-directory.
The root directory is the classpath.
Find the class foo.goo.Boo in the directories tree
+-classpath
|-...
+-foo
|-...
+-goo
|-X.class
|-Y.class
|-Boo.class
Finding a Class (cont'd)
A classpath can contain several roots
Finding foo.goo.Boo in classpath=A:B:C
A
B
C
+-A
+-fi
+-fy
|-Fum.class
|-...
+-B
|-...
+-foo
|-...
+-goo
|-X.class
|-Y.class
+-C
|-...
+-foo
|-...
+-goo
|-W.class
|-Z.class
|-Boo.class
Jar Files
Jar files are the Java equivalent to libraries and executables.
A jar file is a zip archive that contains:
.class files
Other needed resources (images, config files)
A manifest file (optional)
Source files (optional)
The Manifest File
The manifest file is a text file with key: value properties.
The JRE reads these properties when it loads the .jar file.
Important properties in a jar manifest
Manifest-Version: For backward compatibility.
Main-Class: The class containing the main method to run.
Class-Path: Space-separated list of other class paths to use.
See
http://java.sun.com/javase/6/docs/technotes/guides/jar/
for details on jar and manifest specifications.
Manifest example
Manifest.mf
Manifest-Version: 1.0
Main-Class: a.b.c.Foo
Class-Path: mylib1.jar mylib2.jar
Using Jar files
Jar files as Java executables
You can run a jar file by running:
java -jar jar-file
(Or double-click on it, in some systems)
The Java Runtime will load all the content of the jar, including
its classpath, and will run the main class that is written in the
manifest.
Jar files as Java shared libraries
Including a jar file in a classpath will cause the JRE to look
in the archive for classes and resources, as if it was another
directory.
Creating Jars
Creating a jar file using the command-line tool:
jar cf <jar-file> <manifest-file> files . . .