| 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 |

| 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.
|