October 29th, 2024

Announcing Technical Preview of the GitHub Copilot upgrade assistant for Java

Nick Zhu
Senior Program Manager

As AI and LLMs continue to evolve, agentic workflows are rapidly emerging as the next wave of AI-assistance. Agentic workflows allow AI systems to coordinate tasks and make decisions with minimal human input. These systems use autonomous agents in their workflow and can bring enormous benefits as they can create plans, perform individual tasks, employ external tools, interact with users, fix errors, and write code!  

These capabilities allow agentic workflows to address complex, mission-critical, and often tedious tasks in enterprise development cycles. One such challenge is upgrading Java runtimes, frameworks, dependencies, and more. This may range from being relatively straightforward to more complex as API signatures change and deprecations, or multiple dependencies are involved. We have seen enterprises spending days and weeks upgrading runtimes and frameworks in a codebase, which is a huge commitment of resources and time.  

Today, we are excited to announce a limited Technical Preview of the GitHub Copilot upgrade assistant for Java. You can sign-up to join our waitlist here! 

This early preview is an AI-based solution to help you update your Java apps. By installing a Visual Studio Code extension, you start with a local Java project and work with GitHub Copilot to create a strategy for the upgrade, and let it handle most of the upgrade process autonomously.  We look forward to working with you as you try and this capability and help us shape this feature. 

Creating an intelligent plan

In this preview experience, the GitHub Copilot upgrade assistant for Java will analyze your project and work with you to specify things such as parameters like JDK and Maven paths, a feature branch name and more. It will further assess your project for dependencies like Spring Boot and unit test frameworks like JUnit too. You can optionally select to generate a GitHub issue, where a record of the tasks in the proposal and plan will be copied. Once created, the assistant generates a series of tasks or steps, and we think of this as a well-defined strategy for the upgrade that the AI will operate over. 

You can review the tasks that will be performed before starting the plan execution. 

Visualizing every task

When the upgrade begins, you will see a dashboard that acts as the primary information center where you can access real-time details of every task and sub-task. This includes the commands that the agents in the tasks run such as executing tools like OpenRewrite, or see details like the selected OpenRewite recipes, review modified files and error details, observe the step-by-step logs, and more. You can also explore each task, and sub-task in-depth for more detailed information if necessary. It is important, we feel, to be as transrent as possible in everything that this AI assistant is performing. 

While upgrading, you have the option to pause, stop, and resume at any point, or even initiate a new upgrade. Again, the assistant offers both control and transparency to you during the entire upgrade process.  

Automatic error fixing and AI collaboration

Errors or issues always happen. If an error arises during the upgrade, whether introduced as part of the OpenRewrite code transformation process or from other parts of the upgrade process, then the assistant uses another agent and sub-agents to deal with these through a dynamic build/fix AI-loop. Errors will be resolved automatically without your intervention and validated by re-building the project. If the issue persists, the assistant will continue by trying different approaches and reviewing them, and only if determines that it needs assistance, will it ask for human help . The assistant will clearly indicate where your help or intervention is needed. 

Learning from developers

When users are involved and manually correct errors or issues in the upgrade, the assistant and AI, learns from these changes and if applicable, it will apply this learning to future patterns or issues. You’ll be able to see when this occurs as fixes are marked with “Fixed using developer guidance icon. 

Branches, Tasks, Commits and the PR Processes 

During operation the assistant performs local code commits against a new feature branch. This means that all of the code changes are controlled in a manner separate from your day to day work. All commits occur against a specific task in the plan, for example, all code changes resulting from OpenRewrite transformations, or during the dynamic build/fix loop. 

To help understand what occurred, the assistant marks commits based on the action taken. For example, changes made by the OpenRewrite tool, or by AI in the dynamic build/fix loop, or by user intervention. This means that in the review stage, you can focus on specific changes. 

Summarizing the upgrade process 

The summary at the end of upgrade provides you with an overview of key details, including file changes, updated dependencies, and commits in the working branch. The error summary section also shows you how errors were resolved, whether by AI, by you, or with learning guidance. At this stage, we recommend that you run the app to ensure that all tests pass and the app behaves as you expect. Then you have the option to directly merge the change and create a Pull Request!  

Sign up for Technical Preview

Ready to save time for upgrading Java? You can apply for the wait list to the Technical Preview right here. This early access will be limited to a few selected customers just for a while, but we encourage you to sign-up and provide feedback! 

This is the beginning of our efforts to offer AI experiences that assist you and your organization in reducing technical debt and saving time on mission-critical tasks. 

The era of AI is exciting, and we believe this is just the beginning. We are bringing more support for complex workflows to help customers deal with these tasks. Collaboration between artificial intelligence and human will enable us to achieve creative solutions and increase our efficiency, saving thousands of hours in our work.  

Author

Nick Zhu
Senior Program Manager

Developer at heart

0 comments