Aus intoJ
Wechseln zu: Navigation, Suche

Welcome to the intoJ project

The intoJ project (interface tools for Java) is dedicated to the systematic use of interface types in the Java programming language.

The refactoring tools, editors, and views provided by intoJ aim at understanding the current use of interfaces in OO projects, and on extending it in a disciplined manner.

The intoJ project is conducted by a small, but growing research team. Other researchers are invited to join.

intoJ core

The intoJ tools are built around a common type-inference core, ITcore, which covers the complete type system of Java 5 and which is based on the Eclipse type constraint framework. Its API is currently being designed.

Built on ITcore, the following major refactoring tools and views have been implemented or are currently under development:


intoJ refactoring tools

  • Infer Type. The purpose of the Infer Type refactoring is to minimize coupling between classes by replacing the declared types of program elements and type arguments with new, maximally general ones having no unneeded members.
    • Status: Infer Type can be downloaded here.
  • Inject Dependency. The purpose of the Inject Dependency refactoring is to completely decouple classes by removing all mutual references and by moving constructor calls (configuration) to assemblers.
    • Status: Inject Dependency is currently under development.
  • Replace Inheritance With Forwarding/Delegation. The purpose of this refactoring is to replace tight coupling through inheritance with looser coupling through forwarding; to avoid bloated class interfaces.
    • Status: This refactoring is planned.
  • Create Mock Object. The purpose of the Create Mock Object refactoring is to be able to test an object that depends on the behaviour of other objects in isolation, with minimum mocking effort.
    • Status: This refactoring is planned.
  • Infer Name to analyse the use and change of names of declaration elements along assignment chains; to harmonize name with type changes
    • Status: under development

intoJ views, auditors, and editors

  • Type Access Analyser (TAA). The TAA is a visualizer which can be used to identify ill-designed supertype hierarchies; to plan and selectively execute type-related refactorings such as pulling up/pushing down members, extracting interfaces, generalizing types etc.
    • Status: The TAA can be downloaded here.
  • Declared Type Generalization Checker (DTGC) is an auditor that checks code for possible generalizations of declared types and detects the smell of not using suitable type abstractions.
    • Status: DTGC can be downloaded here.
  • Package Dependency Viewer. This viewer can be used to analyze and explore the dependencies between packages; to suggest the introduction of decoupling interfaces.
    • Status: This tool is currently under development.

Older intoJ tools

Before the implementation of the ITcore, our tools were directly based on the Eclipse AST. We have a suite of Eclipse plugins available (the intoJ Suite) which calculates interface-related metrics, displays a graphical view of the source code, and is able to redeclare elements in the source code with interfaces.

More information

If this matter is new to you, we suggest reading some of our Papers.