for Java for a long time; companies and developers have been creating many extensions called Tasks, in Ant parlance, and the Ant ecosystem becomes a treasure trove of all kinds of utilities, either general purpose or proprietary. Judoscript has included a mechanism to directly invoke any Ant tasks. Below is an example. a = 'ants'; anttask::<echo message="Hello, ${a}!"/> anttask::<echo>Hello, more ${a}!</echo> There are ways to run native executables in Judoscript, but you can also resort to Ant scripting, as shown below. src = '.'; anttask::<exec dir="${src}" executable="cmd.exe" os="Windows 2000" output="dir.txt"> <arg line="/c dir"/> </exec> Unified file system and archive scripting File manipulation is one of the most common tasks for information workers. Judoscript strives to provide a consistent experience dealing with files in both file systems and archives such as ZIP files and TAR balls. The following examples inspects files in a ZIP archive. listFiles '*' in 'awebapp.zip' dirOnly; for x in $_ { // get status for each directory listFiles '*.java, *.jj' in x recursive size compressedSize; println $_[0]:>8, ' ', $_[1]:>8, ' ', x; } The next example copies files into a ZIP archive. By slightly changing the expressions, you can copy files to another location in the file system. copy '*.java, *.properties' in 'C:/temp/classes/' recursive into 'judo.jar' store manifest [[* Manifest-Version: 1.0 Main-Class: judo Created-By: James Jianbo Huang (c) 2001-(* #year *) *]] ; Another example for ZIP with finer control. zf = createZip('~/archives/work-'+Date().fmtDate('yyyyMMdd')+'.zip'); copy '*' in 'c:/judo/src/' except '*/alfa*, */beta*, */save/*' recursive noHidden echo into zf under 'src/'; copy '*' in 'c:/judo/docs/' except '*/alfa*, */beta*, */save/*' recursive noHidden echo into zf under 'docs/'; copy '*' in 'c:/judo/examples/' except '*/alfa*, */beta*, */save/*' recursive noHidden echo into zf under 'examples/'; zf.close(); And you can copy internet resources to file systems or archives, shown below. tar = createTar('yahoo_comp.tar.gz'); zip = createZip('yahoo_comp.zip'); urls = [ 'http://dir.yahoo.com/Computers_and_Internet/index.html', 'http://dir.yahoo.com/Computers_and_Internet/Internet/index.html', 'http://dir.yahoo.com/Computers_and_Internet/Internet/WAIS/index.html' ]; for u in urls { copy u into tar keepDirs; copy u into zip keepDirs; } tar.close(); zip.close(); SOAP web service scripting In the times of Judoscript, the SOAP web service was the industry standard for remote invocations before the RESTful API emerged. Judoscript makes it easy to consume SOAP web services. svc = wsdl::'http://coldrooster.com/dhtmldude/mathservice.asmx?WSDL'; println '3 + 2 = ', svc.Add(3, 2); println '3 - 2 = ', svc.Subtract(3, 2); println '3 * 2 = ', svc.Multiply(3, 2); println '3 / 2 = ', svc.Divide(3, 2); Other application features Judoscript