PL/SQL to Java migration

ENBISYS vision of PL/SQL system redesign

The purpose of this white paper is to highlight advantages of PL/SQL to Java migration process for business.

PL/SQL vs JavaEE. Benefits of Java software redesign

  • No vendor lock
  • The most popular programming language in the world
  • Plenty of robust frameworks and components
  • Enhanced security for your data
  • Easy scaling of your IT Product
  • Better maintainability for your new Java system

Legacy technologies PL/SQL vs modern Java

For more than 25 years PL/SQL programming language has been used for data manipulation inside Oracle database. However, despite several revolutions in IT industry, PL/SQL system did not change over time. Today, most modern software utilize object oriented programming like JavaEE, which allow to split product logic in small highly reusable parts. JavaEE systems allow to set up automated tests very well for each logical piece.

When the system logic is written in Java it's possible to apply continuous code quality measurement. Also, migration to JavaEE leads to transparency and enhanced security.

Due to compliance with large number of standards Java based software can be simply moved from one application server or framework like PL/SQL, to another, and this leads to staying off from vendor lock threats and excess expenses.

Once the decision to migrate from PL/SQL to Java is made, it is possible to implement another database like PostgreSQL, Microsoft SQL or MySQL. Scaling also becomes more transparent with the use of JBoss, Glassfish and WebSphere support clustering. Utilizing JavaEE also leads to lowering the costs since there's no need to buy Oracle licenses. Therefore, scaling on Java is smart in terms of OPEX costs.

Another advantage of migration from PL/SQL to Java is that it is possible to find Java experts in literally every country in the world.

Redesign Application to Java by ENBISYS

Migration from PL/SQL to Java is a set of tasks from translating the syntax of your legacy procedural code to Java object oriented logic. Though sometimes automated translation services are offered, it is recommended to rewrite PL/SQL code applying suitable domain logic for every business specific case..

ENBISYS Java developers have rich experience in designing the system architecture in Java frameworks.

We experience in migration from legacy technologies

  • Redesign of PL/SQL applications for Clients in various verticals
  • Experience in code and databases optimization
  • Agile approach allows us to customize migration to Java for every Client

Our team perform Migration to JavaEE in several steps

  • Domain analysis and functional requirements
  • Non-function requirements analysis to define availability, scalability, performance requirements
  • Comparison with similar legacy application
  • Draft architecture with system layout and components
  • Draft migration to Java plan
  • Set the team
  • Compose migration plan
  • Establish team(s)
  • Iterative code migration

Architecture of Java application. Choice of Microservices

Architecture is the core of every software system. Once designed it is quite complicated to introduce changes. Therefore, when there are preset requirements, architectural approach is the best.

ENBISYS experts advise on optimal architecture for every product.

There are 3 main architecture approaches nowadays:

  • SOA

  • Microservices

  • Event-driven architecture

SOA is an approach when system is built as a set of services. Every service covers particular part of functionality and might have several different APIs for different users. For example you might have billing service and it could provide RestFul JSON API for mobile clients (iOS/Android) and SOAP (Web Services) for 3rd parties systems.

Microservices approach takes SOA to the next level. In SOA all services belong to single information system which shares data (common database). In Microservices approach all services are independent systems. Every microservice has its own database and its own backend. Usually in this approach there is additional orchestration layer between microservices and frontend.

The benefits of Java Microservices are:

  • High system availability / Robust - if malfunction happens only small part of functionality will be temporarily unavailable

  • Highly effective scaling - possible to scale each service considering its usage/load

  • Hot swap in production - upgrade any parts of Java system in production with no downtime

  • Each microservice could be owned by dedicated team with its own release calendar

  • Each microservice could have own technology framework (can mix Java, .Net, Ruby ...)
Approaching the process of migration from legacy technologies, like PL/SQL, ENBISYS takes functional blocks of the system one by one and rewrites each in Java. Then this new Java modified piece is integrated into existing system seamlessly.

This allows end-users to continue using old system while the Client is introducing technological Java updates to running system.

Scalability and performance in Java applications

Migration to Java makes the application layered. From now business logic runs on dedicated server which request from database data via SQL-queries only. It is important to be aware of possible degradation of response time due to:

  • Penalty time in communication between application and database servers via network

  • Inefficient algorithm requests too much unnecessary data

  • Inefficient algorithm too talkie (100 small request per single user operation)
Our programmers are aware of this possible pitfalls and in most cases avoid them. In some cases it turns impossible to avoid response time degradation without changing database scheme. Changing database scheme is expensive part but it is worth to use it for future performance and scalability.

Once migration of functional part to Java is done we execute stress-tests. Stress-tests also know as load testing is a special tests where load to system is increased over time.

During this time period all system parameters are monitored and drawing on the graph. For example we could run stress test simulating from 1 to 100 concurrent users doing random term searching scaling up (ramp-up period) in 10 minutes. We execute the same test on new Java code and old PL/SQL code. After this we compare performance on low and high load as well as resource consumption. Usually Java code is highly optimized and response time decreased in 2-3 times. On some parts we reach 10 times faster response. We compare database resource consumption and there we gain with the same magnitude as in response time.

Therefore, legacy technology migration to Java leads to optimized code and it will be possible to serve 2-3 times more users with the same database hardware and same licenses. Still dedicated application server for Java code is needed. But it is not as expansive as database server.

Java migration allows you to focus on your business goals being sure that your Product is always stable, scalable and maintainable