Distributing Java Swing Application

Soon I need to distribute Java Swing Application. As part of this process here is my notes.

For distributor
Step 1: Identify least version required for the application.

Step 2: Compile and build self executable Jar. (Do code obfuscation if required.)
JSmooth is good to convert jar to exe. http://jsmooth.sourceforge.net/

Step 3: Distribute executable Jar.
1. Give Jar, so user can run in system.
2. Give source, so user can build his own jar.
3. Provide Java Webstart using JNLP. (We need to have server instance to run this.)
4. Convert jar to .exe and provide. (still issues with viruses)

For Users:

Step 1: Check java version in system.

Step 2: If system dont have required version, update to required version using sun site.

Step 3: Double Click on Jar and start using application.

-o-
Links:
What version of Java we are using: http://www.javatester.org/version.html

-o-

Java Swing Contains Vs Intersects

Contains: Is it on the boundary line or not
Intersects: Given point is in side the shape or not. If it is line, this is same as contains.
Even better example is available at http://forums.java.net/jive/thread.jspa?threadID=56250&tstart=60

import java.awt.geom.Ellipse2D;

/**
 * This examples helps to understand contains and intersects concepts.
 * 
 * @author Bhavani P Polimetla
 * @since Jul-28-2009
 * 
 */
public class TestPoint {

	public static void main(String[] args) {
		testContains();
		testIntersects();
	}

	public static void testContains() {
		Ellipse2D.Double circle = new Ellipse2D.Double(230, 277, 7, 7);
		System.out.println(circle.x + " " + circle.y);
		boolean isContains = circle.contains(230.0, 277.0);
		if (isContains)
			System.out.println("Point is on the cicle");
		else
			System.out.println("Point is not on the circle");
	}

	public static void testIntersects() {
		Ellipse2D.Double circle = new Ellipse2D.Double(230, 277, 7, 7);
		System.out.println(circle.x + " " + circle.y);
		int x = 230;
		int y = 278; // Inside point
		boolean isContains = circle.intersects(x, y, x, y);
		if (isContains)
			System.out.println("Point is inside the circle");
		else
			System.out.println("Point is Outside the circle");

		x = 0;
		y = 0; // Outside point
		isContains = circle.intersects(x, y, x, y);
		if (isContains)
			System.out.println("Point is inside the circle");
		else
			System.out.println("Point is Outside the circle");
	}

}