AI宝库

AI宝库首页 › AI 资讯 › 与 Kiro 一起建立可重复的 PHP 到 Java 迁移引擎

与 Kiro 一起建立可重复的 PHP 到 Java 迁移引擎

来源:AWS ML Blog · 发布时间:10-30 · 由 AI宝库每小时自动聚合

将PHP到Java的迁移从一次性的信仰跳跃转变为可衡量,可重复的过程与基洛。 这个帖子走过一个可重复使用的引擎:一个mechani

人工智能

与 Kiro 一起建立可重复的 PHP 到 Java 迁移引擎

当您的团队将一个成熟的PHP应用程序移动到Java时,会获得更强大的类型安全,更广泛的库支持,以及更可预测的缩放。 多年来用Laravel,Symfony,或"理论"搭建的PHP代码库在不明显的地方携带了商业规则,从口语特征到XML映射文件,因此结构相近的Java端口可以完整地编译,仍然表现不同。

显示这个帖子如何将PHP到Java的迁移从一次性的信仰飞跃转变为使用克洛的可衡量,可重复的过程。 Kiro是一个AI集成开发环境(IDE),它将一个AI agent与你的代码库相配,在循环中运行多步工程任务。 该方法以可重复使用的发动机为中心:共享方法、机械发现扫描仪和八相工作流程。 此引擎将原始的PHP应用程序视为规格并拒绝宣布Java端口正确,直到对等的取用验证。

先决条件

在开始之前,你需要:

- 熟悉PHP(Laravel/口语或同音/口语)。 Java知识(Spring Boot, JPA)帮助您审查生成的输出,但引擎为您生产了平庸的Java,所以您不需要自己在Java中重写应用程序。

- 基罗工作区,可获取技能和指导文件。

- PHP 8.0或更新机器运行发现扫描仪,Java 21与Maven为生成的"春靴"项目。

- 对移徙规划的基本理解(发现、翻译和验证)。

在这篇文章中你会学到什么

你从一个开放的寄存器开始,这样你就可以自己运行引擎而不是读取。 引擎所知道的一切都生活在一小组技能文件里,有了这些文件,你可以用一个以上的方式运行同样的方法。

运行引擎的两种方式:基罗和AWS变形

这里的一切被包装为技能文件:版本的Markdown能力包将迁移方法(php-to-java-migration)和发现扫描仪工作流程(php-model-discovery)编码。 因为知识生活在文档而不是任何一种工具中,所以你可以以两种方式运行同样的方法。

方法 1: Kiro,交互式开发者即时开发

Kiro 带来一个AI agent进入你的编辑器,以一步步地驱动一个迁移。 打开寄存器根作为 Kiro 工作空间,当您要求 Kiro 迁移 PHP 应用程序时,技能会自动激活。 基罗然后用明确的批准门走出八相工作流程,所以你审查发现清单,批准规则书,并在下一个开始前在每个阶段签名。 这是这篇文章中每个例子所用的模式。

方法2:AWS 变换、代理和组合规模

AWS Transform是用于大规模迁移和现代化的AWS代理AI服务,现在它与基罗本土融合。 通过这种整合,您可以将AWS Transform的相同技能文件交给管理交互式基罗会话,因此在翻译前发现,作为裁判的等同利用,以及‘固定回路,而不是代码'适用于自主运行。

当每个路径适合

- 控制与自主:先用克洛通过代码:运行一个应用程序上的技巧,读出生成的Java,并运行测试。 AWS Transform在检查站检讨时

- 规模和新颖性:Kiro一次处理一个应用程序,并适用先天框架。 AWS 时速变形作为并行任务运行许多应用程序。

- 共享反馈回路:两条路径读取相同的技能文件,因此基洛所制作的每个规则书修补都会改进下个AWS Transform运行,反之亦然。

解决方案概览:一个共享的大脑,许多项目

发动机是围绕一个单一的原则组织起来的:一个共享的大脑,许多项目。 要打开它,在本地复制寄存器,然后在基罗打开一个文件夹并选择寄存器根(包含.kiro/的文件夹). Kiro 自动装入技能和引导

如下图所示,工作空间将共享的方法层与使用它的各个项目分开。 顶端是每个项目所借鉴的全球.kiro/层。 它的下方坐落着每个项目文件夹,每个文件夹都有自己的PHP源,Java输出,以及规格子文件夹。

这些相同的共享技能文件可以两种不同的方式运行,如下图所示。 相同的"八相","等同第一"管线可以由基罗(交互,一次一个应用)来驱动,也可以由AWS Transform(代理,以组合规模)来驱动,两者都可以将PHP源转换为等同可验证的Spring Boot Java.

.kiro/下的共享全球层拥有两个技能,即php-模型-发现(扫描仪)和php- to-java-迁移(八相游戏本),外加核心-工作流程。 md 引导文件。 每个project文件夹都持有自己的PHP源,Java输出,和 spec子文件夹在.kiro/specs/下,因此一旦让每个项目继承收益,便会改进方法。

翻译前的发现

在扫描仪运行之前

如下图所示,扫描仪工作在一个没有依赖性的单行道上。 它在源代码上应用了3个发现策略,并发布了一个JSON清单,任何模糊的路由都到一个审查-旗下排队供人类解决。

扫描仪正在发现- models. php,一个单一文件,无依赖的 PHP 命令行工具,不执行目标代码。 它只读取源文本作为符号,所以它与您选择的应用程序相对应,不管其依赖性是否安装了。 它在每次扫描上运行了三种策略:口语模型发现(走出阶级继承链到Illuminate\Database\Elogueent\Model),理论属性检测(#[ORM\实体]属性),和ORM XML映射(外部 *.orm.xml文件). 输出为JSON单列。 一个模型[]阵列携带每个字段,铸造,关系,和能见度规则,每个条目都出现一个旗帜[]阵列。 扫描仪标出模糊而非猜测例如,从运行时表达式所构建的可充值列表会成为一面平版英语旗帜,而该旗帜列表是人类评论队列。

平等第一管道

0阶段正在准备:它运行扫描仪并组装存货。 然后,前三个阶段集中了人的专门知识。 第1阶段在Java写出之前构建了等效的被套用,针对PHP原版和Java端口重放请求/应答对。 牵引装置必须通过工作 PHP,当您故意断接它时失败,因为缺失注射断接的牵引装置是不可信的。 第二阶段是规则手册和漏洞清单的种子(RULEBOOK.md、GAP INVENTORY.md),第三阶段是对照具有代表性的文件进行压力测试,然后在整个应用程序中执行。

前四个阶段集中了人类的专门知识。 0阶段运行扫描仪并组装存货。 第1阶段在Java写出之前构建了等效的被套用,针对PHP原版和Java端口重放请求/应答对。 牵引装置必须通过工作 PHP,当您故意断接它时失败,因为缺失注射断接的牵引装置是不可信的。 第二阶段是规则手册和漏洞清单的种子(RULEBOOK.md、GAP INVENTORY.md),第三阶段是对照具有代表性的文件进行压力测试,然后在整个应用程序中执行。

相机 4-8 主要是自驾回路:第四阶段脚手架工程,第五阶段从出货单翻译出数据模型,第六阶段翻译出I/O层(路由变为控制器,中间软件变为过滤器,验证变为附加说明的数据传输对象),第七阶段在分批中转换出业务逻辑,第八阶段证明对调和削减的对等。 环相通有两条原则。 首先,PHP代码是规格:当裁判同意时会完成端口,或者每次不匹配都会被记录为经批准的更改。 其次,你修补了循环,而不是代码,修正了规则书,并重生而不是手拍。

走过:从口才到春靴

laravel-elopet-sample项目是一个工作上,有界限的例子:开源 Laravel应用程序的只读切片,有"书","章","页"等用户模型被迁移到Java 21上的"Spring Boot" 3.4.1上并有"Maven"和一个"内相"H2数据库。

从PHP到Spring Boot的绘图是机械的和可追踪的,如下图所示。 左图上每个显示条目到右侧的Java构造,生成生成的应用程序切片的分层运行时架构。

映射是机械的,可以追溯到出品:一个PHP命名空间成为了Java软件包,一个口号模型成为了JPA@实体,有许多并且属于关系成为了@OneToMany和@ManyToOne,口号查询范围成为了Spring Data仓库方法。 显示在序列化方面的学科是:html、markdown和text 夹克@JsonIgnore,因为清单在Page的$dden列表中记录了它们,而Book的描述却刻意没有。

坦率地说,37个模型中只有4个被移植,而且最重要的是,从未为这一片块建造过平等带,它称之为“最大的差距 ”。 记录其不足之处本身就是设计的一部分。

开始

完整的迁移引擎可以在PHP-to-Java迁移寄存器样本中找到。

用来:

- 清除存储器并打开其根作为您的 Kiro 工作空间( 打开一个文件夹并选择包含。 kiro/ 的文件夹)。 除了PHP 8.0+外,没有其他东西可以安装,用于扫描仪和用Maven的Java 21.

- 将 PHP 源获取到项目源- php/ 文件夹中。 README将用于对等的准确上游承诺标出,以便任何人都可以复制基线。

- 叫基罗把申请转移 php-to-java-migration技能自动激活,先运行扫描仪,在.kiro/specs/下生成一新光谱,并走出审批门。

- 对于一个代理运行,在相同的技能文件中点出AWS Transform,所以它的agents在您的组合中执行相同的方法。

方法自动检测Laravel,Symfony,CodeIgniter,和平面PHP,并扩展为添加:为新框架添加检测行和参考文献/<框架>至spring.md指南。 因为基罗和AWS Transform读取了相同的文件,所以它们一旦被精炼,就同时升级了两个引擎。

清理

如果您在此过程中部署了样本Spring Boot应用程序:

- 停止运行的Spring Boot应用程序(内膜H2数据库是麻黄的,不需要单独清理)。

- 如果不再需要,从您的工作空间中删除生成的 Java 项目文件夹。

- 发现扫描仪只产生JSON清单文件如果您不打算参考,请从工作目录中删除发现扫描仪的 JSON 清单。

- 没有AWS资源由迁移引擎本身提供,因此没有云资源可以去提供。

结论

我们演示了如何与基罗一起建造一个可重复的PHP到Java的迁移引擎,将大规模重写变成一个可测量的复合过程。 主要原则是:

- 翻译前的发现:一个机械扫描仪对每个模型、领域和关系进行清点,所以你不会猜测结构。

- 在代码前构建判断器:在Java第一行被写入之前定义的对等绳。

- 修复回路,而不是代码:当同一错误出现在文件之间时,修正规则书,并重生而不是手打。

- 一个共享的大脑:该方法一出,在各项目之间分享,并随着每次迁移而得到改进。

这些都不是PHP或Java特有的。 同样的形状也适用于其他迁移,这里的旧系统是唯一完整的规格。 切除样本 PHP 到 Ja

本文由 AI宝库自动抓取并翻译,版权归原作者所有;如需查看原文请点下方链接。

相关 AI 工具

相关免费羊毛

同源资讯

阅读原文(aws.amazon.com)

标题、摘要与正文均来自该信源的公开页面,版权归原作者所有;本站自动聚合与翻译,仅作出处跳转。

← 返回 AI 资讯列表AI工具图鉴首页

返回 AI宝库首页 · 提交工具 · 商务合作 · 关于本站 · 597 款 AI 工具分类导航 · 每日 AI 热门项目与动态