Java Tools: CS 310 Lecture notes

Object-Oriented Programming with Java Lecture Notes

27 January 2009 • Java Tools


Outline

  • Java environments.

    • Documentation

  • Java Tools.

    • IDEs

    • Analysis and testing.

    • Non-Sun Java.

    • Scripting

hand tools

The Java Environment

a simple java environment

Java Components

java components

Java Versions

Java Environments

Documentation

Documentation Types

IDEs

Java IDEs

DrJava

Example.

yer basic drjava display

Example..

drjava quick help

Example...

an error

Example....

a java repl

Analysis and Testing

FindBugs

Example.

a problem

Example..

a fix

Example...

another problem

Example....

an other fix

Example.....

clean!

Example......

emacs-based findbugs

FindBugs on the Cheap

Oh, One Last Thing

$ ls
AnonymousInnerClassTest.java  ForEachTest.java      StaticInnerClassTest.java
CloneTest.java                InnerClassTest2.java  TimerTest.java
EmployeeSortTest.java         InnerClassTest.java

$ findbugs -textui *.class
Exception in thread "main" java.io.IOException: IOException while scanning codebases
    at findbugs.FindBugs2.execute(FindBugs2.java:187)
    at findbugs.FindBugs.runMain(FindBugs.java:1521)
    at findbugs.FindBugs2.main(FindBugs2.java:731)
Caused by: findbugs.classfile.ResourceNotFoundException: Resource not found: 
    /home/rclayton/new-public-html/s08-310/code/java/chapter-6/*.class
    at findbugs.classfile.impl.SingleFileCodeBase.getClassDescriptor(SingleFileCodeBase.java:222)
    at findbugs.classfile.impl.SingleFileCodeBaseEntry.getClassDescriptor(SingleFileCodeBaseEntry.java:61)
    at findbugs.classfile.impl.ClassPathBuilder.build(ClassPathBuilder.java:229)
    at findbugs.FindBugs2.buildClassPath(FindBugs2.java:432)
    at findbugs.FindBugs2.execute(FindBugs2.java:160)
    ... 2 more

$ for i in *.java ; do javac $i ; done

$ findbugs -textui *.class
M B Eq: Employee defines compareTo(Employee) and uses Object.equals()  At EmployeeSortTest.java:[line 9]
Warnings generated: 1

$ 

But Rather

$ ls
AnonymousInnerClassTest.java  InnerClassTest2.java  	  
CloneTest.java                InnerClassTest.java   	  
EmployeeSortTest.java         StaticInnerClassTest.java 
ForEachTest.java      	      TimerTest.java            

$ findbugs -textui *.class
Can't find *.class.

$ for i in *.java ; do javac $i ; done

$ findbugs -textui *.class
M B Eq: Employee defines compareTo(Employee) and uses Object.equals()
At EmployeeSortTest.java:[line 9]
Warnings generated: 1

$ 

JUnit

Example.

Example..

Example...

Example....

Example.....

Testing Tips

Non-Sun Java

Non-Sun JVMs

Non-Sun Libraries

Non-Sun Java Compilers

Scripting Languages

JVM-Based Languages

JVM-Based Languages

BeanShell

On-Demand Variables

Variables Example

Dynamic Environment

BeanShell Example

Extended Syntax

Extended-Syntax Example

$ java -classpath bsh-2.0b4.jar bsh.Interpreter
BeanShell 2.0b4 - by Pat Niemeyer (pat@pat.net)
bsh % map = new java.util.Hashtable();
bsh % print(map.get("one"));
null
bsh % map.put("one", 1);
bsh % print(map.get("one"));
1
bsh % print(map{"two"});
null
bsh % map{"two"} = 2;
bsh % print(map{"two"});
2
bsh % button = new JButton();
bsh % print(button.getLabel());

bsh % button.setLabel("Click me!");
bsh % print(button{"label"});
Click me!
bsh % button.label = "Press to play";
bsh % print(button.label);
Press to play
bsh % 

Interactive Run-Time

Run-Time Discovery Example

$ java -classpath bsh-2.0b4.jar bsh.Interpreter
BeanShell 2.0b4 - by Pat Niemeyer (pat@pat.net)
bsh % 
bsh % add(a, b) { return a + b; }
bsh % 
bsh % print(add(1, 2));
3
bsh % print(add("hello ", "world!"));
hello world!
bsh % 
bsh % print(add("hello ", 1));
hello 1
bsh % 

Static-Typing Example

bsh % 
bsh % int add(int a, int b) { return a + b; }
bsh % 
bsh % bsh % print(add(1, 2));
3
bsh % print(add("1", "2"));
// Error: EvalError: Command not found: 
   add( java.lang.String, java.lang.String ) : 
   at Line: 3 : in file: <unknown file> : 
   add ( "1" , "2" ) 
bsh % 

The Environment as this

This-Environment Example

$ java -classpath bsh-2.0b4.jar bsh.Interpreter
BeanShell 2.0b4 - by Pat Niemeyer (pat@pat.net)
bsh % button = new JButton("Click me!");
bsh % frame = new JFrame();
bsh % frame.getContentPane().add(button);
bsh % frame.pack();
bsh % frame.setVisible(true);
bsh %
bsh % actionPerformed(e) { print("Thanks!"); }
bsh %
bsh % button.addActionListener(this);
bsh % Thanks!
Thanks!
Thanks!
bsh %

BeanShell Example.

dragText() {
  f = new Frame("Drag in the box");
  f.setFont(new Font("Serif", Font.BOLD, 24));
  f.setSize(300, 300);
  f.show();

  gc = f.getGraphics();
  gc.setColor(Color.cyan);

  mouseDragged(e) {
    gc.drawString("Drag Me!", e.getX(), e.getY());
    }
  mouseMoved(e) { }

  f.addMouseMotionListener(this);
  }

BeanShell Example..

dragText() {
  f = new Frame("Drag in the box");
  f.setFont(new Font("Serif", Font.BOLD, 24));
  f.setSize(300, 300);
  f.show();

  gc = f.getGraphics();
  gc.setColor(Color.cyan);

  mouseDragged(e) {
    gc.drawString("Drag Me!", e.getX(), e.getY());
    }
  mouseMoved(e) { }

  f.addMouseMotionListener(this);
  }

Java Debuggers

Java Debugging

Summary

References

Credits


This page last modified on 27 January 2009.

Creative
    Commons License