AI图鉴

AI图鉴首页 › AI 资讯 › 与 Kiro 一起建立可重复的 PHP 至 Java 迁移引擎

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

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

将PHP-to-Java的迁移从一次性的信仰飞跃转变为与基洛可衡量,可重复的过程。 此帖子会通过一个可重复使用的引擎:一个mechani

人工智能

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

当团队将一个成熟的PHP应用程序移动到Java时,你得到了更强大的类型安全,更广泛的库支持,以及更可预测的缩放。 多年来用Laravel,Symfony,或Prociple搭建的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为生成的Spring Boot项目。

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

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

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

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

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

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

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

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

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

当每条路径适合

- 控制与自主:先用基罗通过代码:运行一个应用程序上的技巧,读出生成的Java,并运行测试。 AWS Transform使用同样的方法

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

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

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

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

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

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

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

翻译前的发现

在扫描仪运行之前不要读、猜或手译模型或实体文件。

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

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

平等第一管道

0阶段正在准备:它运行扫描仪并组装存货。 然后,前三个阶段集中了人的专门知识。 第一阶段在 Java 写入前构建了等效的利用率,针对 PHP 原始端口和 Java 端口重放请求/应答对。 牵引装置必须经过工作时的PHP,在故意断开时失败,因为漏掉注射断开的牵引装置是不信任的。 第2阶段是规则手册和漏洞清单(RULEBOOK.md,GAP INVENTORY.md)的种子,第3阶段是根据代表性文件进行压力测试,然后在整个应用程序中进行。

前四个阶段集中了人类的专门知识。 0阶段运行扫描仪并组装存货。 第一阶段在 Java 写入前构建了等效的利用率,针对 PHP 原始端口和 Java 端口重放请求/应答对。 牵引装置必须经过工作时的PHP,在故意断开时失败,因为漏掉注射断开的牵引装置是不信任的。 第2阶段是规则手册和漏洞清单(RULEBOOK.md,GAP INVENTORY.md)的种子,第3阶段是根据代表性文件进行压力测试,然后在整个应用程序中进行。

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

走过:从口语到春靴

laravel-elopet-sample项目是一个工作,有限度的例子:开源 Laravel应用程序的只读切片,其中的Book, Chapter,Page,和用户模型在Java 21上迁移到Spring Boot 3.4.1上,与Maven并存的Memory H2数据库。

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

映射是机械的,可以追溯到清单:一个PHP命名空间变成一个Java软件包,一个Elocent模型变成一个JPA@nentity,有许多,属于关系变成了@OneToMany和@ManyToOne,Elocalent查询范围变成了Spring Data仓库方法。 显示在序列化方面的学科:html、markdown和文本载着@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,和plain 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图鉴首页 · 提交工具 · 商务合作 · 关于本站 · 598 款 AI 工具分类导航 · 每日 AI 热门项目与动态