

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());


