Convert Delphi to Java

Delivering you an intelligent and high quality result in due time!

With 25+ years of experience in software modernization, Ispirer is well qualified to perform comprehensive application migrations between diverse programming languages and platforms. Apart from the extensive expertise, we rely on our proprietary Ispirer Toolkit to streamline and speed up Delphi to Java conversion.

Migrate Delphi to Java

Bulb

Turnkey migration service for
Delphi to Java

Turnkey Delphi to Java migration service by Ispirer professionals includes:

  • Migration of the entire application, including project files, business logic, GUI and database API
  • Team of experts skilled in Delphi and
  • Tailored migration roadmap from assessment through migration and testing to cutover
  • Smart automation with Ispirer Toolkit
  • Assistance in deployment and integration, performance optimization, new feature development

Contact us and we’ll discuss and estimate your Delphi to Java project


Request a quote

Save expense

Ispirer Toolkit customization service

The service is aimed at customizing Ispirer Toolkit and providing you with optimal solution for automated application conversion. The service includes:

  • In-depth analysis of your application
  • Adding new conversion rules to Ispirer Toolkit (customization)
  • Assisstance in Ispirer Toolkit configuration
  • Automated conversion of the codebase, including business logic, GUI, database API, etc using Ispirer Toolkit by your team
  • Timely technical support

Drop us a line and we’ll show you how a tailored version of Ispirer Toolkit can help you modernize your Delphi application


Live demo

Why choose conversion over developing a new app?

Seasoned Team

Same functionality, new application

Migration does not require labor-intensive development of new functionality from scratch. Your application will be converted to a new technology while maintaining the original functionality

Enhanced efficiency

Architecture preserved or modified

By default, automated conversion implies preserving the initial architecture which is easier to maintain. It is also possible to transform the app architecture, for example, from desktop to the web and thus improve accessibility and scalability

Integrate

Legacy System Transformation

Migrating legacy systems to modern architectures or platforms can future-proof your application, making it easier to maintain, update, and extend in the long term

Advanced security

The speed of conversion

Migrating an application is much faster than creating a new one from scratch. Automated migration with Ispirer Toolkit minimizes manual effort and may speed up the delivery by 2-3 times

Growth

Performance and Scalability

Through conversion, you can optimize the application's architecture and infrastructure, improving scalability and performance without the need to rebuild everything

Advanced security

No need for documentation

To perform the conversion, we go by your source code. There is no need to have detailed documentation in place to start the conversion as is the case with development



Turnkey Migration Service

The entire conversion process can be divided into several stages:

  • Preparation. During the preparation stage, the focus lies on planning and preparing applications and infrastructure for migration to a new environment or platform. This involves assessing their current state to gauge compatibility with the target environment and defining the migration strategy, timeline, and required resources. Additionally, identifying potential risks and challenges associated with the migration process and devising mitigation strategies are integral parts of this stage.
  • Assessment. During the assessment phase, the team conducts a thorough analysis of the source code to accurately estimate the migration timeframe and cost. As a first step, we apply Metrics - a set of Ispirer’s proprietary assessment tools tailored to different programming languages. These metrics automatically analyze the source application, gathering essential information and generating a comprehensive report. This report combined with the insights gathered during the expert review of the source code serves as the basis for estimating the delivery time and cost of the migration project.

APP Services general

  • Automated conversion with Ispirer Toolkit. Considering the inherent characteristics of the original technology, Ispirer Toolkit can provide varying default levels of automated code conversion. Importantly, Ispirer experts can iteratively customize the tools to meet the specific properties and patterns of the source code and thus increase the level of automated conversion.
  • Post-conversion refinement. Often an application may contain code segments that are impossible or ineffective to migrate automatically. In such a case, our team of Ispirer experts leverages their extensive knowledge and expertise to meticulously execute the manual migration of the remaining code. Moreover, this stage involves fine-tuning the application to improve its performance in the new environment. This may include optimizing resource allocation, tuning database configurations, and addressing any performance bottlenecks.
  • Functional testing. Functional testing ensures that the migrated application behaves as expected and meets the functional requirements in the new environment. The Ispirer experts run hundreds of tests to ensure that the converted application is reliable and meets user requirements, business objectives, and industry standards.

Looking for Delphi to Java Conversion Services?

Drop us a line and we’ll estimate your project for free!

Request a quote


Ispirer Toolkit Customization Services

Ispirer customization service allows you to get a personal version of the Ispirer Toolkit specifically for your application. With our proprietary tools tailored to your project requirements, you will be able to automate the conversion of your Delphi code to Java with maximum efficiency. A service like this will allow you to ensure a seamless app modernization and reduce manual adjustments to the bare minimum. The engagement model will be as follows:

Related Services

  • Live demo. Our migration experts will demonstrate an example of automated app modernization using Ispirer Toolkit.
  • Proof-of-Concept. A representative scope of Delphi code is migrated using Ispirer Toolkit. You will have an opportunity to evaluate the results of future Delphi to Java modernization after Ispirer Toolkit customization.
  • Ispirer Toolkit customization service. This stage includes adding new conversion rules for Delphi to Java direction to ensure the smooth translation process and high quality result of automated conversion.
  • Conversion with Ispirer Toolkit. Once the tool is customized, you take the matter in your hands and convert a Delphi application using Ispirer Toolkit quickly and efficiently.

High quality

High quality SQL code conversion

Expert system with 20.000+ conversion rules and 100.000+ automation tests.

Flexibility

Flexible modernization

Nimble configuration with 300+ options for effective application conversion.

Free smart assessment

Free smart assessment

Free Assessment Metrics for migration scope and complexity evaluation.

Intuitive and instructive reports

Comprehensive migration analysis

Intuitive and instructive reports for cost-effective post-migration polishing.

Would you like to organize a live demo with the Ispirer team?

Our migration experts will demonstrate an example of automated database migration using Ispirer Toolkit. You will have an opportunity to evaluate the benefits of automated Delphi to Java migration after Ispirer Toolkit customization.

Live demo

Check out the step-by-step video tutorial on how to migrate an application using nGLFly Wizard

Drop us a line, if you have any business inquiries or questions regarding your conversion project. Ispirer experts will demonstrate our solutions and answer any questions you may have!


Conversion Samples of Delphi to Java Swing

Ispirer Toolkit analyzes all object dependencies during the conversion process and provides not only line-by-line conversion, but resolves type conversions as well. In addition, the software understands and transforms the necessary inheritance dependencies. It parses the entire source code, builds an internal tree with all the information about the objects, and uses it in the migration process. For more information review the code samples below.

Variables declaration conversion:

DelphiJava Swing
  1.  
  2. var CanClose: Boolean;
  3. CustNo: Double;
  4. DBPath: string;
  5. Key: Char;
  6. I: Integer;
  7. RSCON: TIniFile;
  8.  
  1.  
  2. boolean CanClose;
  3. Double CustNo;
  4. String DBPath;
  5. char Key;
  6. Wini RSCON;
  7.  

.pas file structure conversion:

DelphiJava Swing
  1.  
  2. unit Splash;
  3.  
  4. interface
  5.  
  6. uses
  7. SysUtils, Windows, Messages, Classes, Graphics, Controls,
  8. Forms, Dialogs, StdCtrls, ExtCtrls;
  9.  
  10. type
  11. TSplashForm = class(TForm)
  12. Panel1: TPanel;
  13. Label3: TLabel;
  14. Bevel1: TBevel;
  15. Label1: TLabel;
  16. Image1: TImage;
  17. end;
  18.  
  19. var
  20. SplashForm: TSplashForm;
  21.  
  22. implementation
  23.  
  24. {$R *.dfm}
  25.  
  26. end.
  27.  
  1.  
  2. package units;
  3. import handlers.TSplashFormHandler;
  4. import org.slf4j.Logger;
  5. import org.slf4j.LoggerFactory;
  6.  
  7. public class Splash {
  8. private static Splash instance;
  9. private static final Logger LOGGER = LoggerFactory.getLogger(Splash.class);
  10. public TSplashFormHandler SplashForm;
  11.  
  12. private Splash() {
  13. }
  14.  
  15. public static synchronized Splash getInstance() {
  16. if(instance == null) {
  17. instance = new Splash();
  18. }
  19. return instance;
  20. }
  21. }
  22.  
  23.  
  24.  
  25. package handlers;
  26. import forms.TSplashForm;
  27. import units.Splash;
  28.  
  29. public class TSplashFormHandler {
  30. public TSplashForm form;
  31.  
  32. public TSplashFormHandler(TSplashForm form) {
  33. this.form = form;
  34. form.setTSplashFormHandler(this);
  35. }
  36. }
  37.  

.dfm file structure conversion:

DelphiJava Swing
  1.  
  2. object SplashForm: TSplashForm
  3. Left = 204
  4. Top = 123
  5. AutoScroll = False
  6. ActiveControl = Panel1
  7. BorderIcons = []
  8. BorderStyle = bsNone
  9. ClientHeight = 178
  10. ClientWidth = 168
  11. Font.Color = clBlack
  12. Font.Height = -11
  13. Font.Name = 'MS Sans Serif'
  14. Font.Style = []
  15. PixelsPerInch = 96
  16. Position = poScreenCenter
  17. TextHeight = 13
  18. object Panel1: TPanel
  19. Left = 0
  20. Top = 0
  21. Width = 168
  22. Height = 178
  23. Align = alClient
  24. BevelInner = bvLowered
  25. Color = clSilver
  26. TabOrder = 0
  27. object Label3: TLabel
  28. Left = 23
  29. Top = 125
  30. Width = 123
  31. Height = 19
  32. Caption = 'Marine Adventures'
  33. Font.Color = clBlack
  34. Font.Height = -16
  35. Font.Name = 'Times New Roman'
  36. Font.Style = [fsItalic, fsUnderline]
  37. ParentFont = False
  38. end
  39. object Bevel1: TBevel
  40. Left = 10
  41. Top = 150
  42. Width = 147
  43. Height = 2
  44. Style = bsRaised
  45. end
  46. object Label1: TLabel
  47. Left = 60
  48. Top = 158
  49. Width = 47
  50. Height = 13
  51. Caption = 'Loading...'
  52. end
  53. object Image1: TImage
  54. Left = 40
  55. Top = 11
  56. Width = 87
  57. Height = 113
  58. Picture.Data = {
  59.   }
  60. end
  61. end
  62. end
  63.  
  1.  
  2. package forms;
  3. import javax.swing.*;
  4. import javax.swing.border.TitledBorder;
  5. import javax.swing.plaf.FontUIResource;
  6. import java.awt.*;
  7. import com.ispirer.sw.controls.TForm;
  8. import com.ispirer.sw.controls.TImage;
  9. import com.ispirer.sw.types.image.PictureUtils;
  10. import handlers.TSplashFormHandler;
  11. import org.apache.commons.lang3.StringUtils;
  12.  
  13. public class TSplashForm extends TForm {
  14. private static final long serialVersionUID = 1L;
  15. private TSplashFormHandler tSplashFormHandler;
  16.  
  17. private JPanel Panel1 = null;
  18. private JLabel Label3 = null;
  19. private JLabel Label1 = null;
  20. private TImage Image1 = null;
  21. public JPanel getPanel1() {
  22. return this.Panel1;
  23. }
  24. public JLabel getLabel3() {
  25. return this.Label3;
  26. }
  27. public JLabel getLabel1() {
  28. return this.Label1;
  29. }
  30. public TImage getImage1() {
  31. return this.Image1;
  32. }
  33. public TSplashForm() {
  34. setUIFont(new FontUIResource("MS Sans Serif", Font.PLAIN, 11));
  35. setDefaultCloseOperation(DISPOSE_ON_CLOSE);
  36. setName("SplashForm");
  37. setBorderStyle(BorderStyle.BS_NONE);
  38. setBounds(204, 123, 168, 178);
  39. setLocationRelativeTo(null);
  40. initTSplashForm();
  41. initLayouts();
  42. }
  43. private void initTSplashForm() {
  44. this.Panel1 = new JPanel() {
  45. @Override
  46. protected void paintComponent(Graphics g) {
  47. super.paintComponent(g);
  48. g.drawLine(10, 150, 157, 150);
  49. }
  50. };
  51. this.Label3 = new JLabel();
  52. this.Label1 = new JLabel();
  53. this.Image1 = new TImage();
  54. //
  55. // Panel1
  56. //
  57. this.Panel1.setName("Panel1");
  58. this.Panel1.setBounds(0, 0, 168, 178);
  59. this.Panel1.setLayout(null);
  60. this.Panel1.setBackground(Color.lightGray);
  61. getContentPane().add(this.Panel1, 0);
  62. //
  63. // Label3
  64. //
  65. this.Label3.setName("Label3");
  66. this.Label3.setForeground(Color.black);
  67. this.Label3.setBounds(23, 125, 123, 19);
  68. this.Label3.setText("<html><u>Marine Adventures</u></html>");
  69. this.Label3.setFont(new Font("Times New Roman", Font.ITALIC, 15));
  70. this.Label3.addPropertyChangeListener("text", labelChangeText);
  71. this.Panel1.add(this.Label3);
  72. //
  73. // Label1
  74. //
  75. this.Label1.setName("Label1");
  76. this.Label1.setBounds(60, 158, 47, 13);
  77. this.Label1.setText("Loading...");
  78. this.Label1.addPropertyChangeListener("text", labelChangeText);
  79. this.Panel1.add(this.Label1);
  80. //
  81. // Image1
  82. //
  83. this.Image1.setName("Image1");
  84. String Image1Data = StringUtils.join("");
  85. this.Image1.setImage(PictureUtils.getTImage(Image1Data));
  86. this.Image1.setBounds(40, 11, 87, 113);
  87. this.Panel1.add(this.Image1);
  88. }
  89. private void initLayouts() {
  90. GroupLayout contentPaneLayout = new GroupLayout(getContentPane());
  91. getContentPane().setLayout(contentPaneLayout);
  92. contentPaneLayout.setHorizontalGroup(contentPaneLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
  93. .addComponent(Panel1, 0, 168, Short.MAX_VALUE));
  94. contentPaneLayout.setVerticalGroup(contentPaneLayout.createParallelGroup(GroupLayout.Alignment.LEADING)
  95. .addComponent(Panel1, 178, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE));
  96. }
  97.  
  98. public void setTSplashFormHandler(TSplashFormHandler tSplashFormHandler) {
  99. this.tSplashFormHandler = tSplashFormHandler;
  100. setActiveControl(this.Panel1);
  101. }
  102. }
  103.  

If statement conversion:

DelphiJava Swing
  1.  
  2. if FromEdit.Text = '' then Result := 0
  3. else Result := StrToDate(FromEdit.Text);
  4.  
  1.  
  2. if(form.getFromEdit().getText() == null && "".equals(form.getFromEdit().getText().trim())) {
  3. result = null;
  4. } else {
  5. result = LocalDateTime.from(LocalDate.parse(form.getFromEdit().getText(), DateTimeFormatter.ofPattern("M/d/yyyy")).atStartOfDay());
  6. }
  7.  

For statement conversion:

DelphiJava Swing
  1.  
  2. for I := 0 to Application.ComponentCount - 1 do
  3. begin
  4. if Application.Components[I] is TForm then
  5. begin
  6. F := TForm(Application.Components[I]);
  7. if (F <> Self) and (F.Visible) then F.Close;
  8. end;
  9. end;
  10.  
  1.  
  2. for(I = 0; I <= Window.getWindows().length - 1; I ++) {
  3. if(Window.getWindows()[I] instanceof TForm) {
  4. F = (TForm) Window.getWindows()[I];
  5. if((F != this.form) && F.isVisible()) {
  6. F.dispose();
  7. }
  8. }
  9. }
  10.  

While statement conversion:

DelphiJava Swing
  1.  
  2. while not Items.EOF do
  3. Items.Delete;
  4.  
  1.  
  2. while(!form.getItems().isEOF()) {
  3. form.getItems().delete();
  4. }
  5.  

Try catch statement conversion:

DelphiJava Swing
  1.  
  2. try
  3. Items.First;
  4. finally
  5. DeletingItems := False;
  6. end;
  7.  
  1.  
  2. try {
  3. form.getItems().first();
  4. }
  5. finally {
  6. DeletingItems = false;
  7. }
  8.  

Download Sample Code

You have just examined only a piece of the Delphi to Java conversion sample. You can download the entire application migration sample for free by filling out the form. Once you get the code sample, you will be able to:

  • Explore how well Ispirer Toolkit migrates the source code to the target technology without downloading it.
  • Analyze and compare the source sample with your code to understand which components of your application can be automatically converted using Ispirer Toolkit.
  • Run, play with and test an application containing nearly 1,000 lines of code.

See for yourself that Ispirer Toolkit can automatically convert not only a single piece of code, but an entire application. Most likely, complex code will require customization of the toolkit, but our experts can add new conversion rules within 3-5 business days. As a result, using Ispirer Toolkit you will get readable and maintainable code of manual conversion quality in the shortest time possible.

Snatch a totally free opportunity to see the high efficiency of Ispirer Toolkit!

Get your sample code
Enter your name.

Enter a valid e-mail address.

Select your country.

Invalid input.

Accelerating our customers’ application modernization journey

The customer received a modernized application in C#, which is a feature-for-feature equivalent to the original Delphi application. Thus getting the ability to easily maintain and enhance the newly migrated code.

December 04, 2018

The company develops state-of-the-art automation systems for operation, disposition, monitoring and control for all industries. The customer needed to reanimate their software by moving from Delphi to C#.

Our customer ia a healthcare organization dedicated to improve funding and clinical performance of hospitals and healthcare systems. The company's requirement was to get the application on the new C# .NET platform.

previous arrow
next arrow
Slider

Why Migrate with Ispirer

Seasoned Team

Seasoned team

Ensuring high security and performance standards is what we do best, thanks to our impressive experience in building reliable and scalable solutions.

Enhanced efficiency

Technology expertise

Having 20+ years of experience our team has gained a wide pool of expertise in various programming languages from the rarest to the most popular ones.

Advanced security

Top-notch data security

We comply with ISO 27001 security management requirements with comprehensive policies and processes, advanced security technology, and skilled professionals.

What Our Customers Say

"The tool is easy to use and maintain and it has also improved a lot in terms of performance. This last point was a huge pain and the solution you gave was key for the project succeed. I would not hesitate to suggest Ispirer migration services to other companies."

"Ispirer has been a great choice for the migration of our dated software, thanks to its very flexible and supportive team. All our requests were handled in an accurate manner, and every single request was performed promptly."

"This approach was very successful avoiding any confusion at the first stage, and achieved high conversion rate in the end. The project was completed successfully, they say they couldn't make it without MnMTK 2017 and excellent extension support from lspirer."

"We had an old Borland Delphi 7.0 project, which was brought back to life. Ispirer had offered us a timely and financially attractive conversion of the application. The work was performed promptly."

"We were impressed with the knowledge, professionality, hard work and enthusiasm of the Ispirer team. Through this Migration Project we have a solid base for further expanding our application."

"I really had a surprise after migrating. The quality of generated code after conversion is very high. The tool is very intuitive and easy to use. I believe that there is no such a good tool as SQLWays to do code migration and I really recommend it."

previous arrow
next arrow
Slider

Get in touch with us!

Have questions about migration from Delphi to Java?

Contact us