DelphiからJava EEへの移行
Ispirer MnMTKはDelphiアプリケーションをSpring MVC FrameworkのJavaへ変換することができます。
このデモでIspirer MnMTKによるDelphiからJava EEへの移行を見ることができます:
変換の機能
- Delphiソースコードのビジネスロジック (*.pas)をJavaクラスへ変換
Delphi:
unit Unit4; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm4 = class(TForm) Button1: TButton; Edit1: TEdit; Label1: TLabel; Edit2: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form4: TForm4; implementation {$R *.dfm} procedure TForm4.Button1Click(Sender: TObject); begin Edit1.Text := IntToStr(StrToInt(Edit1.Text) + StrToInt(Edit2.Text)); end; end.
Java:
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import javax.servlet.http.HttpServletRequest; import java.util.logging.Logger; @Controller public class Unit4 { Logger logger = Logger.getGlobal(); @Autowired private TForm4 Form4 = null; @RequestMapping(value="/TForm4",method=RequestMethod.POST, params="Button1") public String Button1Click(HttpServletRequest request, Model model) { this.setPageValues(request); this.Form4.setEdit1Text(String.valueOf( Integer.parseInt(this.Form4.getEdit1Text())+ Integer.parseInt(this.Form4.getEdit2Text()))); this.addModelAttributes(model); return "TForm4"; } public void setPageValues(HttpServletRequest request) { this.Form4.setEdit1Text(request.getParameter("Edit1")); this.Form4.setEdit2Text(request.getParameter("Edit2")); } public void addModelAttributes(Model model) { model.addAttribute("Edit1Text",this.Form4.getEdit1Text()); model.addAttribute("Edit2Text",this.Form4.getEdit2Text()); } }
Pas変換はフォームクラスの自動配線に基づいており、ButtonClickメソッド、setPageValuesおよびaddModelAttrributesを含みます。これはjsp値をクラス表現に設定してそれぞれのページに送信します。
- Delphiフォームのファイル(*.dfm) をJSPおよびJavaのクラスへ変換
Delphi:
object Form4: TForm4 Left = 0 Top = 0 Caption = 'Form4' ClientHeight = 158 ClientWidth = 201 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 24 Top = 107 Width = 46 Height = 13 Caption = 'Summand' end object Button1: TButton Left = 24 Top = 64 Width = 153 Height = 25 Caption = 'Sum' TabOrder = 0 OnClick = Button1Click end object Edit1: TEdit Left = 24 Top = 37 Width = 153 Height = 21 TabOrder = 1 Text = '0' end object Edit2: TEdit Left = 76 Top = 104 Width = 101 Height = 21 TabOrder = 2 Text = '0' end end
Java:
package com.ispirer.controller.demo.Logic; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class TForm4 { private String Edit1Text = null; private String Edit2Text = null; public String getEdit1Text() { return Edit1Text; } public void setEdit1Text(String edit1Text) { Edit1Text = edit1Text; } public String getEdit2Text() { return Edit2Text; } public void setEdit2Text(String edit2Text) { Edit2Text = edit2Text; } @RequestMapping(value = "/TForm4") public String FormCreate(Model model) { this.Edit1Text = "0"; model.addAttribute("Edit1Text",this.Edit1Text); this.Edit2Text = "0"; model.addAttribute("Edit2Text",this.Edit2Text); return “TForm4"; } }
JSP:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@taglib prefix="form" uri="http://www.springframework.org/tags/form"%> <%@taglib prefix="mvc" uri="http://www.springframework.org/tags/form"%> <%@page contentType="text/html;charset=UTF-8" language="java"%> <html> <head> <title>Form4</title> <link rel="stylesheet" type="text/css" href="<c:url value="/resources/css/style.css"/>" /> </head> <body> <div class="layout"> <div class="left"> </div> <div class="content"> <form:form method="post"> <label style="left:24px;top:107px;width:46px;height:13px;">Summand</label> <input type="submit" name="Button1" value="Sum" style="left:24px;top:64px; width:153px;height:25px;"/> <input type="text" name="Edit1" value="${Edit1Text}" style="left:24px;top:37px; width:153px;height:21px;"/> <input type="text" name="Edit2" value="${Edit2Text}" style="left:76px;top:104px; width:101px;height:21px;"/> </form:form> </div> <div class="right"> </div> </div> </body> </html>
Delphi |
|
Java |
|
|
|
Dfmファイルは様々な属性からなっています。このスクリプトの為、Ispirer MnMTKはJSPおよびJavaクラスを生成します。Delphiフォームはコンテンツが含む<div class=”content”> タグと適切なアプリケーションビューの為のデフォルトccsファイルの3列のJSPに変換されます。また、SQLWayは、Delphiコンポーネントのモデルアナログをgetメソッドのクラスのフィールドとして生成します。 フォームの属性はFormCreateメソッドで指定されます。
- Delphiのデータアクセス (BDE、ADO等)をJavaのデータベースアクセスのフレームワーク (JDBC、Hibernate、Torque等)へ変換
Delphi:
end object Form2: TForm2 Left = 0 Top = 0 Width = 156 Height = 198 Caption = 'Test' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object DBGrid1: TDBGrid Left = 32 Top = 8 Width = 81 Height = 120 DataSource = DataSource1 TabOrder = 0 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clWindowText TitleFont.Height = -11 TitleFont.Name = 'Tahoma' TitleFont.Style = [] Columns = < item Expanded = False FieldName = 'col1' Visible = True end> end object ADOConnection1: TADOConnection Connected = True ConnectionString = 'Provider=MSDASQL.1;Persist Security Info=False; User ID=sa;Data S' + 'ource=MSSQL_VMDBSRV002_ETEST' Left = 24 Top = 136 end object ADOQuery1: TADOQuery Active = True Connection = ADOConnection1 CursorType = ctStatic Parameters = <> SQL.Strings = ( 'select col1 from tab1_test') Left = 56 Top = 136 end object DataSource1: TDataSource DataSet = ADOQuery1 Left = 88 Top = 136 end end
Java:
import java.sql.*; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import util.TDBGrid; @Controller public class TForm2 { private TDBGrid DBGrid1 = null; private static String[] connectionString= {"jdbc:odbc:MSSQL_VMDBSRV002_ETEST","sa","" }; public static Connection ADOConnection1() { try { return DriverManager.getConnection( connectionString[0], connectionString[1], connectionString[2]); } catch(SQLException e) { e.printStackTrace(); } return null; } private PreparedStatement ADOQuery1 = null; private String ADOQuery1_SQL_Strings = "select col1 from tab2_test"; private ResultSet DataSource1 = null; public void setADOQuery1(PreparedStatement ADOQuery1) { this.ADOQuery1 = ADOQuery1; } public PreparedStatement getADOQuery1() { return this.ADOQuery1; } public void setADOQuery1_SQL_Strings(String ADOQuery1_SQL_Strings) { this.ADOQuery1_SQL_Strings = ADOQuery1_SQL_Strings; } public String getADOQuery1_SQL_Strings() { return this.ADOQuery1_SQL_Strings; } public void setDataSource1(ResultSet DataSource1) { this.DataSource1 = DataSource1; } public ResultSet getDataSource1() { return this.DataSource1; } public void initDBGrid1(Model model) { this.DBGrid1 = new TDBGrid(this.DataSource1,new String[] { "col1" }); this.DBGrid1.initDBGridModel(); model.addAttribute("DBGrid1",this.DBGrid1.getDBGridModel()); model.addAttribute("DBGrid1ColWidth",new Integer[] { 100 }); } @RequestMapping(value = "/TForm2") public String FormCreate(Model model) { try { this.ADOQuery1 = ADOConnection1().prepareStatement(getADOQuery1_SQL_Strings(), ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); } catch(SQLException e) { e.printStackTrace(); } try { this.DataSource1 = this.ADOQuery1.executeQuery(); } catch(SQLException e) { e.printStackTrace(); } initDBGrid1(model); return "TForm2"; } }
Delphi |
|
Java |
|
|
|
上記は、TADOConnection、TADOQuery、TDataSourceの使用によるIspirer MnMTK DBGrid変換の例です。その結果、SQLWaysはデータベースから詰めるテーブルのJSPを生成します。また、Ispirer MnMTKはデータベーステーブルに従ってHibernate、Torque XMLマップを自動的に生成することができます。
なぜIspirer MnMTKなのか
Ispirer MnMTKは現行のDelphiアプリケーションをJavaへの移行作業を自動化し、移行作業に伴うリスクと必要な内部作業を大幅に削減する事ができます。Ispirer MnMTKはこれらの利点と共にお手頃な価格でデータベースおよびアプリケーションの変換を行う事ができるため、このような移行プロジェクトにとってとても魅力的なツールです。
弊社の変換技術の利点:
- 読み易くて、保守し易いコード
インテリジェントで保守し易いコードを生成します。
- コード変換とリファクタリング
コード変換による、Javaの最善慣行を実現することができます。
- 最新技術
Javaフレームワークと技術の使用 。
- Javaの純粋なコード
変換後のソースの利用に特別なIspirerライブラリーとIPは必要ありません。
SQLWaysは大規模なスクリプトの変換に関して、効果的に実行することができます:
- 自動的な依存関係の解決
ツールは依存ファイルやデータベース等から情報を抽出し、依存関係や競合を自動的に解決することができます。
- コンフィギュレーション
ツールは様々なファイルからの情報を読み出すことができます(SQLWays コンフィギュレーションファイル、 .xmlファイル)。
- 迅速で強力なカスタマイズ
抽象的なレイヤー、再利用可能な変換テンプレート、内部変換言語およびツールにより、迅速なカスタマイズと複雑なコード変換が可能になります。
Delphiのソースコードサンプルと変換の結果をダウンロードできます:
弊社のアプローチ
アセスメント作業は簡単ですぐに移行に要する作業とコストを見積もることができます。お見積に必要な情報は、下記のフォームを参照いただくと揃えることができます:
ISV会社の場合は、Ispirerは大規模のアプリケーションを変換する為、包括的な共同作業モデルを提供しています。
弊社の移行サービスに興味があれば、お問い合わせください。
|