Java Dependency Contracts for dependency inversion
[Provide a clear and concise description of the changes introduced by this PR. Explain what was changed and why it was changed. Link to any related issues or tasks using keywords like Closes #123 or Fixes #456.]