Welcome!

Microservices Expo Authors: Derek Weeks, Elizabeth White, Gopala Krishna Behara, Sridhar Chalasani, Tirumala Khandrika

Related Topics: Microservices Expo

Microservices Expo: Article

Nothing Lost in the Translation

Nothing Lost in the Translation

Martin Fowler, of Extreme Programming fame, states: "Any fool can write code that a computer can understand. Good programmers write code that humans can understand."

While true for every programmer in the business, this maxim also applies to code generators and translators. In this installment of "Web Services @ Work," we interview Federico Zoufaly, CTO and cofounder of ArtinSoft. His company is dedicated to creating code transformation tools that produce results humans can understand, rather than code that is suitable only for machines.

ArtinSoft's latest and most exciting products relate to the translation of Java to C#. To be honest, being a dedicated Java developer occasionally made it challenging to be a dispassionate and objective interviewer. While C# and the .NET Framework are becoming increasingly interesting to me, it's difficult not to have a knee-jerk reaction to things that advance a Microsoft agenda. But it's a brave new world of open standards and cross-language computing, and the best tool a developer can have is an open mind.

By the end of our conversation, I understood that ArtinSoft's products aren't about advancing one corporate agenda over another. Rather, they're about providing developers with choice in languages, libraries, and frameworks. That said, as a Java developer I'll be glad to see an ArtinSoft C# to Java translator when C# has the install base to justify it.

MIKE: Federico, please give us some background on ArtinSoft, how long it's been around, and what the company offers.
FEDERICO: We started ArtinSoft in 1993 and since day one we've been focusing our attention on source code-to-source code translation. We've been in the migration business for over nine years and the basis of our technologies is derived from research in artificial intelligence, specifically in theorem proving.

For instance, when you're proving a theorem in mathematics or in general logic, you have a set of statements that describe a certain reality. Then you start rewriting those statements, preserving equivalence each time in the right process until you reach some conclusion from the original statements. That same technique is what we apply to our source code-to- source code translation technology.

We take the original programming language or the original application, translate it to an intermediate format that we can manipulate, and then perform a lot of rewriting, preserving equivalence, until we reach the normal state of the program in its target language. We then print it with the correct syntax so that it's ready to be consumed by both the computer and the developer.

It's very important to distinguish our technology from normal compilation technology. A normal compiler goes from a certain level of abstraction down to a lower level of abstraction until it reaches the machine level. In our case, one of the main goals of our technology is to make sure that the generated code is understandable and maintainable by the original programmer. This means that we have to make sure the output is of high quality so the programmer can forget about the original source code and continue to evolve the application in the new platform. See Listing 1, a simple JSP to ASP.NET conversion.

MIKE: How did you come to start ArtinSoft and what is your background?
FEDERICO: I was one of the original founders of the company, so I've been working for ArtinSoft since '93. At the time, I was finishing my master's degree at the Costa Rican Technological Institute, and I joined Dr. Carlos Araya, who is the president and founder of the company. He is the one who had the original artificial intelligence ideas that we apply to our technology. So it was three other people and I that started ArtinSoft in '93. Shortly thereafter, another person joined us, providing the commercial background for the company, because the rest of the team was completely technical. Eventually, around '96, we opened the company to some local venture capital.

MIKE: Could you describe the business community in Costa Rica in terms of software development?
FEDERICO: Costa Rica is a small country with less than four million people. There are about 150 software companies right now. I think there are so many software companies in Costa Rica because in 1948 Costa Rica eliminated the army and decided to spend the entire budget on education. So the education level in Costa Rica is very, very good - computer science in particular. Most of the major universities have teachers with PhDs and master's degrees from U.S. and European universities. So the level of faculty education is also very high. At the same time, the business environment here has been good, and that is why software development has been a great success. In 1999 Intel made a big investment down here by building a large plant. They also added to the stability of the country and proved that Costa Rica is an excellent place to develop technology.

MIKE: What were the first practical applications of your conversion technology?
FEDERICO: Our first large, international account was doing research for Oracle, starting in '93. Then we moved on to the translation of Informix 4GL, where our first large customer was ICL of London. For ICL we translated a large Informix 4GL banking application to Java. At the time it was, in our estimation, the biggest Java application ever developed, having 1.8 million lines of Java code. It was a very good proof of concept for both Java and our technology.

MIKE: How did you establish a strong relationship with Microsoft?
FEDERICO: Microsoft was looking for a company that could help them bridge between Visual Basic 6 and Visual Basic .NET. As you may know, Visual Basic .NET is not backward-compatible with Visual Basic 6. Microsoft wanted to move Visual Basic into a first-class language on top of the .NET Framework. In order to add the features that they wanted, it wasn't possible to keep backward compatibility. However they didn't want to leave their install base stranded, so they looked for a company that could develop a migration engine for them. Eventually they chose ArtinSoft. We started to work with Microsoft at the end of '99, and we're still working with them. We have already delivered the Visual Basic .NET Upgrade Wizard, which has been integrated into Visual Studio .NET. We're also developing for Microsoft the Java-language Conversion Assistant, which is a Visual J++- to-C# translation tool. It will be included in the next revision of Visual Studio .NET. For now, the beta version is out and downloadable from the Microsoft Web site. The RTM version is going to probably happen later on this year.

MIKE: Now your latest product is the Microsoft Java-language Conversion Assistant. Could you give us a description of the feature set for that product, what someone could expect when he or she runs it, and what's going to come out the other side?
FEDERICO: We're going to take Visual J++ source code, which is the Java JDK 1.1.4 and is the last one [version] supported by Microsoft, and we're going to turn that into C#. Both the language and all of the object libraries are going to be mapped to C# and the object model for .NET. This we're building for Microsoft. On top of that, ArtinSoft is building the Java-language Conversion Assistant Enterprise Edition that will take all of J2EE and translate that into C# and the .NET Framework, including JSP to ASP.NET translations. So we're going to deliver that on top of the VJ technology for the J2EE platform.

MIKE: Will that be a product that any developer can simply download and run on their projects? How would someone begin to evaluate this product and see if it will work for his or her Java project?
FEDERICO: The Visual J++ product is now downloadable from the Microsoft Web site, and I think that even though it covers the Visual J++ object model instead of the full J2EE model, it's a good example of what the translation technology can do. From there you can start to evaluate our product. Eventually, we're going to license our JLCA Enterprise Edition as a product, so customers can license it, download it and then use it on their project.

MIKE: Do you feel like you get a good sense of every language that you end up either reading from or writing to?
FEDERICO: Yes. Definitely. We have engineers who are language experts in all the aspects of a language, from how to parse it, how to generate it, and what the transformational rules are that we have to apply in order to move from one to the other. We certainly have a lot of expertise on that, and we also use sample applications from real-world customers. We try to always collect a set of applications to also provide us with a feeling on how languages are used in the real world, and we focus on that. Our technology is based on pattern matching, so we try to find the program patterns that exist in real world applications, and that's what we translate in order to move the high-level abstraction from one platform to the other.

MIKE: Excellent. Some people on the IRC channel #java wanted me to ask you to compare and contrast Java and C#.
FEDERICO: Both Java and C# are derived from C++, so they have a common root. In that sense, they're similar enough. But you have to also understand that the language syntax itself is not as important to these languages as the object library that comes with them. So Java and C# are fairly simple languages. But what makes them very powerful is the object library that comes with them. You have all the Java SDK on one side and you have all the .NET CLR on the other side, and mapping those two is the real challenge in the translation business (see Table 1). Even though most of the functionality exists on both platforms, the way in which it is implemented is different. Our task is to match between the two platforms, which is not always an obvious task.

 

MIKE: How do your engineers translate higher-level concepts from Java to C# in a way that preserves these concepts and thoughts?
FEDERICO: They have to study both plat forms and find how to accomplish a certain action in Java and how you would do the same thing in C#. It is not merely a one-to-one mapping, string class to string class. For very basic things, some mappings are very easy to find. For the most advanced features, you have to understand how the Java platform works and how the .NET platform works in order to find the right mapping. Remember, we are not building a compiler, so we want to make sure that the code we generate is understandable and is as close as possible to how it would have been implemented in the first place, by a native C# programmer.

MIKE: What are the market forces behind ArtinSoft releasing the general Java to .NET Conversion Assistant?
FEDERICO: We think that both Java and .NET have a future in the IT community. We actually would say that in a few years from now, the market is going to be split among them. So there are always people who want to move from one to the other, merely because they want to get closer to the .NET platform or merely because a customer has a preference for Java instead of .NET or .NET instead of Java. For instance, a very good scenario is a software company, that builds applications. Perhaps they have their application written in Java right now, but they want the same functionality using a Microsoft platform. They might want that same functionality in .NET. I think .NET is a good alternative to Java. It's a platform that is definitely going to be successful.

MIKE: Now another question that people in #java came up with - are there plans for a .NET to Java converter?
FEDERICO: We at ArtinSoft try to pick our platform based on the market demand. Right now .NET is too new. There is not a lot of code written for the .NET platform yet. Therefore, writing a conversion tool for .NET to Java doesn't really make a lot of sense for us at this time. Eventually, if that becomes a market need, we will certainly consider it.

MIKE: Could you tell us a little more about the WinToWeb tool you launched at TechEd?
FEDERICO: It is a Windows Forms-to-Web Forms conversion assistant. So it takes your client/server Windows Forms applications and moves them to a thin-client approach, or ASP.NET. If you have Visual Basic 6 code, which normally is a client/ server or rich client, you will first move it to .NET using the Upgrade Wizard that is supplied by Microsoft. And then, once you're there, if you want to Web-enable your application, we provide the WinToWeb solution, the Windows Forms-to- Web Forms assistant that actually transforms it to ASP.NET. We launched the beta version at TechEd, and launched a release version early this summer.

MIKE: When will someone be able to download that product and work with it?
FEDERICO: The beta 1 version is available for download right now from our Web site - www.ArtinSoft.com. You can download it now for evaluation.

MIKE: Will the final conversion tool be downloadable?
FEDERICO: The final product is probably going to be downloadable - I don't know - [by] fourth quarter this year. Those are the dates we're looking at right now.

MIKE: Federico, any last thoughts?
FEDERICO: I want to make a point that in the past, migrations have always been a very painful job for IT departments, but with ArtinSoft's technology, we are minimizing the work that has to be done in the migration process. We're providing companies with the freedom to choose where or which technology to use, instead of having to be locked in a particular platform.

MIKE: Thank you, Federico, and best of luck with your upcoming products.

More Stories By Michael A. Sick

Michael Sick is the Founder and President of Serene Software, a Jacksonville, Florida firm specializing in Enterprise Architecture (EA) via IT Strategy, IT Governance, IT Budgeting, Service Oriented Architectures (SOA), and IT Legacy Planning services. With over 15 years of experience, he has served as VP Development, Enterprise Architect and Lead Software Architect, while providing expertise to organizations like BAE, Sun Microsystems, Badcock Furniture, Raytheon (Future Combat Systems), the United States Air Force, USDA, BearingPoint, and other firms. Areas of interest include: SOA, IT budget optimization and planning, cloud and distributed computing, and process optimization.

Comments (0)

Share your thoughts on this story.

Add your comment
You must be signed in to add a comment. Sign-in | Register

In accordance with our Comment Policy, we encourage comments that are on topic, relevant and to-the-point. We will remove comments that include profanity, personal attacks, racial slurs, threats of violence, or other inappropriate material that violates our Terms and Conditions, and will block users who make repeated violations. We ask all readers to expect diversity of opinion and to treat one another with dignity and respect.


@MicroservicesExpo Stories
Some people are directors, managers, and administrators. Others are disrupters. Eddie Webb (@edwardawebb) is an IT Disrupter for Software Development Platforms at Liberty Mutual and was a presenter at the 2016 All Day DevOps conference. His talk, Organically DevOps: Building Quality and Security into the Software Supply Chain at Liberty Mutual, looked at Liberty Mutual's transformation to Continuous Integration, Continuous Delivery, and DevOps. For a large, heavily regulated industry, this task...
DevOps promotes continuous improvement through a culture of collaboration. But in real terms, how do you: Integrate activities across diverse teams and services? Make objective decisions with system-wide visibility? Use feedback loops to enable learning and improvement? With technology insights and real-world examples, in his general session at @DevOpsSummit, at 21st Cloud Expo, Andi Mann, Chief Technology Advocate at Splunk, explored how leading organizations use data-driven DevOps to clos...
The goal of Microservices is to improve software delivery speed and increase system safety as scale increases. Microservices being modular these are faster to change and enables an evolutionary architecture where systems can change, as the business needs change. Microservices can scale elastically and by being service oriented can enable APIs natively. Microservices also reduce implementation and release cycle time and enables continuous delivery. This paper provides a logical overview of the Mi...
The notion of improving operational efficiency is conspicuously absent from the healthcare debate - neither Obamacare nor the newly proposed GOP plan discusses the impact that a step-function improvement in efficiency could have on access to healthcare (through more capacity), quality of healthcare services (through reduced wait times for patients) or cost (through better utilization of scarce, expensive assets).
Our work, both with clients and with tools, has lead us to wonder how it is that organizations are handling compliance issues in the cloud. The big cloud vendors offer compliance for their infrastructure, but the shared responsibility model requires that you take certain steps to meet compliance requirements. Which lead us to start poking around a little more. We wanted to get a picture of what was available, and how it was being used. There is a lot of fluidity in this space, as in all things c...
Gone are the days when application development was the daunting task of the highly skilled developers backed with strong IT skills, low code application development has democratized app development and empowered a new generation of citizen developers. There was a time when app development was in the domain of people with complex coding and technical skills. We called these people by various names like programmers, coders, techies, and they usually worked in a world oblivious of the everyday pri...
The “Digital Era” is forcing us to engage with new methods to build, operate and maintain applications. This transformation also implies an evolution to more and more intelligent applications to better engage with the customers, while creating significant market differentiators. In both cases, the cloud has become a key enabler to embrace this digital revolution. So, moving to the cloud is no longer the question; the new questions are HOW and WHEN. To make this equation even more complex, most ...
Some journey to cloud on a mission, others, a deadline. Change management is useful when migrating to public, private or hybrid cloud environments in either case. For most, stakeholder engagement peaks during the planning and post migration phases of a project. Legacy engagements are fairly direct: projects follow a linear progression of activities (the “waterfall” approach) – change managers and application coders work from the same functional and technical requirements. Enablement and develo...
Admiral Calcote - also known as Lee Calcote (@lcalcote) or the Ginger Geek to his friends - gave a presentation entitled Characterizing and Contrasting Container Orchestrators at the 2016 All Day DevOps conference. Okay, he isn't really an admiral - nor does anyone call him that - but he used the title admiral to describe what container orchestrators do, relating it to an admiral directing a fleet of container ships. You could also say that they are like the conductor of an orchestra, directing...
The past few years have brought a sea change in the way applications are architected, developed, and consumed—increasing both the complexity of testing and the business impact of software failures. How can software testing professionals keep pace with modern application delivery, given the trends that impact both architectures (cloud, microservices, and APIs) and processes (DevOps, agile, and continuous delivery)? This is where continuous testing comes in. D
Modern software design has fundamentally changed how we manage applications, causing many to turn to containers as the new virtual machine for resource management. As container adoption grows beyond stateless applications to stateful workloads, the need for persistent storage is foundational - something customers routinely cite as a top pain point. In his session at @DevOpsSummit at 21st Cloud Expo, Bill Borsari, Head of Systems Engineering at Datera, explored how organizations can reap the bene...
The dynamic nature of the cloud means that change is a constant when it comes to modern cloud-based infrastructure. Delivering modern applications to end users, therefore, is a constantly shifting challenge. Delivery automation helps IT Ops teams ensure that apps are providing an optimal end user experience over hybrid-cloud and multi-cloud environments, no matter what the current state of the infrastructure is. To employ a delivery automation strategy that reflects your business rules, making r...
Gaining visibility in today’s sprawling cloud infrastructure is complex and laborious, involving drilling down into tools offered by various cloud services providers. Enterprise IT organizations need smarter and effective tools at their disposal in order to address this pertinent problem. Gaining a 360 - degree view of the cloud costs requires collection and analysis of the cost data across all cloud infrastructures used inside an enterprise.
SYS-CON Events announced today that Synametrics Technologies will exhibit at SYS-CON's 22nd International Cloud Expo®, which will take place on June 5-7, 2018, at the Javits Center in New York, NY. Synametrics Technologies is a privately held company based in Plainsboro, New Jersey that has been providing solutions for the developer community since 1997. Based on the success of its initial product offerings such as WinSQL, Xeams, SynaMan and Syncrify, Synametrics continues to create and hone in...
Kubernetes is an open source system for automating deployment, scaling, and management of containerized applications. Kubernetes was originally built by Google, leveraging years of experience with managing container workloads, and is now a Cloud Native Compute Foundation (CNCF) project. Kubernetes has been widely adopted by the community, supported on all major public and private cloud providers, and is gaining rapid adoption in enterprises. However, Kubernetes may seem intimidating and complex ...
You know you need the cloud, but you’re hesitant to simply dump everything at Amazon since you know that not all workloads are suitable for cloud. You know that you want the kind of ease of use and scalability that you get with public cloud, but your applications are architected in a way that makes the public cloud a non-starter. You’re looking at private cloud solutions based on hyperconverged infrastructure, but you’re concerned with the limits inherent in those technologies.
For DevOps teams, the concepts behind service-oriented architecture (SOA) are nothing new. A style of software design initially made popular in the 1990s, SOA was an alternative to a monolithic application; essentially a collection of coarse-grained components that communicated with each other. Communication would involve either simple data passing or two or more services coordinating some activity. SOA served as a valid approach to solving many architectural problems faced by businesses, as app...
Many IT organizations have come to learn that leveraging cloud infrastructure is not just unavoidable, it’s one of the most effective paths for IT organizations to become more responsive to business needs. Yet with the cloud comes new challenges, including minimizing downtime, decreasing the cost of operations, and preventing employee burnout to name a few. As companies migrate their processes and procedures to their new reality of a cloud-based infrastructure, an incident management solution...
Cloud Governance means many things to many people. Heck, just the word cloud means different things depending on who you are talking to. While definitions can vary, controlling access to cloud resources is invariably a central piece of any governance program. Enterprise cloud computing has transformed IT. Cloud computing decreases time-to-market, improves agility by allowing businesses to adapt quickly to changing market demands, and, ultimately, drives down costs.
Recent survey done across top 500 fortune companies shows almost 70% of the CIO have either heard about IAC from their infrastructure head or they are on their way to implement IAC. Yet if you look under the hood while some level of automation has been done, most of the infrastructure is still managed in much tradition/legacy way. So, what is Infrastructure as Code? how do you determine if your IT infrastructure is truly automated?