

java.util.Properties p = System.getProperties();
java.util.Enumeration keys = p.keys();
while (keys.hasMoreElements()) {
	String key = (String)keys.nextElement();
	System.out.println(key + " = " + (String)p.get(key));
}



String fileName = "d:\\downloads\\eclipse 2.0\\integration-eclipse-SDK-20020109-win32.zip";
java.io.File archiveFile = new java.io.File(fileName);
java.util.jar.JarFile jarArchive = new java.util.jar.JarFile(archiveFile);
java.util.jar.JarEntry entry;
java.util.Enumeration entries = jarArchive.entries();
while(entries.hasMoreElements()) {
	entry = (java.util.jar.JarEntry) entries.nextElement();
	System.out.println(entry.getName());
}


String a = "223";
String b = "123";
a.compareTo(b);


org.eclipse.update.core.Version v1 = 
	new org.eclipse.update.core.Version(1,2,3,"build 127J");
org.eclipse.update.core.Version v2 = 
	new org.eclipse.update.core.Version(1,2,3,"build 127J");
v1.compare(v2);


java.io.File f = new java.io.File("d:\\downloads\\eclipse 2.0\\x\\");
f.isDirectory();


String s = "hello";
Object a = java.lang.reflect.Array.newInstance(s.getClass(),0);
System.out.println(a.getClass().getName());


