US 7,509,633 B2
System and method for grid-based distribution of Java project compilation
Richard Elderkin Nesbitt, Holly Springs, N.C. (US); Brian Marshall O'Connell, Cary, N.C. (US); and Kevin Edward Vaughan, Fuquay Varina, N.C. (US)
Assigned to International Business Machines Corporation, Armonk, N.Y. (US)
Filed on Dec. 16, 2004, as Appl. No. 11/14,593.
Prior Publication US 2006/0136881 A1, Jun. 22, 2006
Int. Cl. G06F 9/45 (2006.01)
U.S. Cl. 717—140 17 Claims
OG exemplary drawing
 
1. A computer implemented method of compiling a Java project in a multiprocessor environment, the computer performing the steps comprising:
accumulating by automatic means at a central processor location file dependency knowledge for target files in said Java project that have changed since a last compilation. said target files being segmented for respective distribution to respective processor nodes for generation of respective dependency graphs for each target file in said segment. said graphs identifying for each target file dependencies on files not included in said respective segmented lists; and
creating by automatic means independent build filesets based on said dependency knowledge and equitably allocating by automatic means said build filesets to a plurality of compilation nodes for compilation of said target files, there being created from said respective dependency graphs master dependency graphs which are augmented to reflect additional dependencies of files not included on a respective segmented list, each said build fileset having no dependency on files not within the set, each said compilation node being one of a plurality of processor nodes in said multiprocessor environment and being capable of performing a Java compilation, said Java compilation being subject to an automatic dependency determination,
wherein said accumulating step further comprises the steps of:
selecting one of said plurality of processor nodes as a controller node, said controller node serving as said central processor location;
running a build tree scanner on said Java project at said controller node, thereby identifying said target files;
segmenting a list of said target files at said controller node and equitably distributing each segment to a respective one of said processor nodes, each respective processor node being provided synchronized access to every compilable unit in said Java project and being capable of executing a Java dependency scanner;
building a dependency tree at each respective processor node, each said tree comprising dependency graphs for each file in the list segment distributed to the respective processor node, and sending each said dependency tree to said controller node; and
combining at the controller node each said dependency tree into a master dependency tree comprising all of said dependency graphs.