Learn about Devin
Migrations & Modernization
Learn about Devin
Onboard Devin
Collaborate with Devin
Working with Teams
Learn about Devin
Migrations & Modernization
Devin can take away the pain of migrations, helping you move between different frameworks, languages, etc. Use playbooks to easily reuse prompts for large migrations.
Use Devin for…
- Databases migrations (e.g., MySQL to PostgreSQL)
- Moving to different libraries, frameworks, versions, etc
- Codebase restructuring
Example Prompts
## Overview
This playbook provides step-by-step instructions for upgrading a Java 7 project to Java 8.
## What’s Needed From User
- Prompt the user to share the existing Java 7 project if it is not shared.
## Specification
- For a public repository:
- Share the final code changes as a zipped folder with the user.
- Include a README file in the zipped folder with instructions on how to set up and run the upgraded project.
- For a private repository:
- Create a new branch named `java8-upgrade` or a similar relevant name.
- Push the upgraded code to the new branch.
- Inform the user about the availability of the upgraded code on the new branch.
## Procedure
1. Verify if the provided project is indeed on Java 7. If it's already upgraded to Java 8 or a higher version, you can communicate this to the user and exit.
2. Install Java 8 Development Kit (JDK).
3. Update the project's build configuration to use Java 8
- For Maven, update the `maven-compiler-plugin` configuration in `pom.xml`
- For Gradle, update the `sourceCompatibility` and `targetCompatibility` in `build.gradle`
4. Identify and replace deprecated Java 7 APIs with their Java 8 equivalents
5. Analyze the codebase for potential Java 8 language and API enhancements
- Consider using lambda expressions, method references, and streams where applicable
- Evaluate the use of new Java 8 APIs such as `java.time` for date and time handling
- Apply lambda expressions to simplify anonymous inner classes
- Use method references to improve code readability
- Leverage streams for more concise and expressive data processing
6. Update unit tests to cover the refactored code and preserve existing functionality.
7. Run the test suite and verify that all tests pass successfully.
8. Perform thorough manual testing of the application to identify any runtime issues or behavioral changes.
9. Update project documentation to reflect Java 8 usage and changes, including README and code comments. Also, mention how to set up and run the application.
10. Build the project using the updated Java 8 configuration and verify that the application is up and running
## Advice and Tips
- Refer to the Java 8 documentation for detailed information on new features and APIs
I have an old repo used for music generation and processing: https://github.com/vedadehhc/music-generation which was originally written in Java 8.
I want to slowly migrate it into Python 3.11.
For this session, your task is to migrate all the files in src/music to Python.
Some of these classes have dependencies on each other, so make sure you maintain the dependencies in your migrated version.
Start by creating a new branch devin/migrate-python/X where X is a random number and do all your work in that branch.
Then, list each of the files in src/music and for each, create a new Python file where you migrate the contents.
Make sure the maintain the overall structure/separation of the files.
As you migrate, you should also add small tests to each new python file (using name==main convention) to ensure that the code can run.
Example Sessions
Java 7 to Java 8 Upgrade https://preview.devin.ai/sessions/3d4306ab94d24468999097cf7dea908f
Java to Python Migration https://preview.devin.ai/sessions/a24b7b64871c4523ba07e8b1c78c7767
On this page