Java tools Java programming ID Sep 2010
javac – Java compiler Java source code files: *.java Java byte code files: *.class Java resource archives: *.jar javac compiles.java files into.class files Can be run interactively or from build tools
javac – The Java compiler.java javac.class java (JVM) Source code textCompilationByte codeExecution
javac – The Java compiler javac i.e.: javac Parser.java -classpath or environment variable CLASSPATH
Classpath asg1/asg2/asg3/ / SET CLASSPATH=.;..\asg1;..\asg2;..\asg3 Token.class WordToken.class PunctToken.class TextMeter.class Parser.class LixTest.class LixMeter.class FleschTest.class FleschMeter.class SyllableCounter.class
javadoc Compiles documentation from Java source code.java javadoc.html.css... Web browser Source code textCompilationHTML pagesReading
javadoc Comments /**... */ before the documented item /** * Computes the square of an integer. i The integer to square The squared value of its argument */ public int square(int i) { return i*i; }
name desc – documents desc – documents return exception desc – documents the conditions under which an exception is thrown
javadoc echnotes/guides/javadoc/index.htmlhttp://download.oracle.com/javase/6/docs/t echnotes/guides/javadoc/index.html echnotes/tools/windows/javadoc.html#java doctags
apt a nnotation p rocessing t ool Allows the adding of metadata to code Annotations do not alter the meaning of the code, but......libraries and other tools may alter their behaviour in response to annotations
apt /** * Describes the Request-For-Enhancement(RFE) that led * to the presence of the annotated API element. */ RequestForEnhancement { int id(); String synopsis(); String engineer() default "[unassigned]"; String date() default "[unimplemented]"; } This is an annotation type
apt /** * Describes the Request-For-Enhancement(RFE) that led * to the presence of the annotated API element. */ RequestForEnhancement { int id(); String synopsis(); String engineer() default "[unassigned]"; String date() default "[unimplemented]";
apt /** * Describes the Request-For-Enhancement(RFE) that led * to the presence of the annotated API element. */ RequestForEnhancement { int id(); String synopsis(); String engineer() default "[unassigned]"; String date() default "[unimplemented]"; Default values
id = , synopsis = "Enable time-travel", engineer = "Mr. Peabody", date = "4/1/3007" ) public static void travelThroughTime(Date destination) {... }
id = , synopsis = "Enable time-travel", engineer = "Mr. Peabody", date = "4/1/3007" ) public static void travelThroughTime(Date destination) {... } The annotation preceeds the annotated method
id = , synopsis = "Enable time-travel", engineer = "Mr. Peabody", date = "4/1/3007" ) public static void travelThroughTime(Date destination) {... } The annotation preceeds the annotated method Ordinary Java method
apt Annotations can be used to control –Automated software testing –Documentation tools –Automated software configuration –and more...
apt tes/guides/language/annotations.html
jar Java archive Stores class files, images, sounds etc in a single file Supports compression Used to package libraries and applications Fetch-and-run over the Internet
jar Create an archive: jar cf jarfile inputfile... jar cf Foo.jar *.class *.jpg CreateNext argument is the file name of the archive Files to be copied into the archive
jar Create an archive: jar cf jarfile inputfile... jar cf Foo.jar *.class *.jpg Unpack an archive: jar xf jarfile jar xf Foo.jar
jar Create an archive: jar cf jarfile inputfile... jar cf Foo.jar *.class *.jpg Unpack an archive: jar xf jarfile jar xf Foo.jar Run from an archive*: java –jar jarfile java –jar Foo.jar * Requires jar manifest meta-data: main class and classpath
jar echnotes/guides/jar/index.html echnotes/tools/windows/jar.html
javap Java disassembler Shows class fields and methods javap [ options ] classname -public|-protected|-private|-package -s show internal signatures -c show byte code
javap echnotes/tools/windows/javap.html
RMI Remote Method Invocation One JVM calls methods on a remote JVM Client and service
Remote Method Invocation Jvm AJvm B