A Pattern Enforcing Compiler (PEC) for Java: Using the compiler

Howard C. Lovatt*, Anthony M. Sloane, Dominic R. Verity

*Corresponding author for this work

Research output: Chapter in Book/Report/Conference proceedingConference proceeding contributionpeer-review

6 Citations (Scopus)


A PEC is a Pattern Enforcing Compiler, which is like a conventional compiler only extended to include the extra checks needed to enforce design patterns. PECs are currently a research project and the PEC written is targeted at the Java programming language. This paper: Describes the PEC Describes how to use the PEC Demonstrates how the PEC combines static testing, dynamic testing (unit testing), and code generation synergistically into one utility Shows that the user of the PEC can write their own design patterns and have the compiler enforce them The PEC is believed to be unique in statically testing, dynamically testing, generating code and being user extendable. The PEC is stable enough for production code and is available for free download under the Lesser GNU General Public License (Lovatt 2004). The PEC makes extensive use of reflection (runtime type identification); both when testing that a class conforms to pattern and also to allow the compiler to be user extendable.

Original languageEnglish
Title of host publicationProceedings of the 2nd Asia-Pacific conference on Conceptual modelling
EditorsSven Hartmann, Markus Stumptner
Place of PublicationSydney, NSW
PublisherAustralian Computer Society
Number of pages10
ISBN (Print)1920682252, 9781920682255
Publication statusPublished - 2005
Event2nd Asia-Pacific Conference on Conceptual Modelling, APCCM - 2005 - Newcastle, Australia
Duration: 30 Jan 20054 Feb 2005


Other2nd Asia-Pacific Conference on Conceptual Modelling, APCCM - 2005


  • Compilers
  • Design patterns
  • Dynamic checking
  • Extendable compiler
  • Pattern Enforcing Compiler
  • PEC
  • Static checking
  • Unit testing


Dive into the research topics of 'A Pattern Enforcing Compiler (PEC) for Java: Using the compiler'. Together they form a unique fingerprint.

Cite this