I have a RESTful services developed using Java Spring framework. It's not a huge application, around 12K lines of Java code. Front end is in Angular and DB is No-SQL world.

Recently I came to know that Java SE is no more free for commercial software. I am on Java 8, for my customer getting all Java security updates are critical, hence my customer need to buy the commercial license for Java. According to Java subscription model it would cost $25 per processor per month. If my customer machine has 16 processors then it would cost 25*16*12 month = $4800 per year.

I do not have any constraints of making my RESTful service to be hosted on a particular platform. Windows OS (service can be hosted on IIS) is okay with me. Currently I am using Tomcat on windows to host my Java RESTful service.

Also I do not want to use OpenJDK (as security patches may not be available in timely manner).

There are some 3rd party libraries which I am using in Java code. But their evivalents are available in .Net as well.

With the above mentioned scenario I am thinking of moving to .Net from Java. I believe there are some tools which can help me in migration process.

Front end and DB would remain the same, RESTful service would be migrated to .Net.

Is there any other major advantage of Java over .Net which I should consider before I making the final call to move to .net? Also is there anyone who has already done the migration? What are the recommended tools?

I would appreciate if some software professional give their suggestion which can help me taking a right decision.

If cost is an important constraint for you, I would suggest you to consider also .NET Core, as you could easily host your application on Linux.
– Matteo UgolottiAug 28 '18 at 11:55

lol you can simply use other JVM distributions like OpenJDK, no need to pay Oracle unless you need guaranteed support periods. Figuring out how to do timely JVM updates might be a lot cheaper than porting your code…
– amonAug 28 '18 at 12:02

1

Can you explain why you think you need a subscription? Surely, security updates for the current Java version will be available to everybody?
– nvoigtAug 28 '18 at 12:06

1

If you are considering switching to .NET, have you also considered upgrading your Java version to 9 or 10. The announcement from Oracle is only that Java 8 is "end of life".
– Bart van Ingen SchenauAug 28 '18 at 12:40

As the other comment suggest, please mention why you cannot use openJDK. Also give us a bit of background on why your RESTful service needs to be deployed on your customer site
– gumolAug 28 '18 at 13:24

For some organizations, costs other than licensing or development may be the dominant cost. E.g., Microsoft can probably roll out a .Net project cheaper than a Java project, given it's employee skill and infrastructure, while Oracle can roll out a Java project cheaper than a .Net project for the same reasons.

The current version of Java - Java SE 9 as well as Java SE 8 - is free and available for redistribution for
general purpose computing. Java SE continues to be available under the
Oracle Binary Code License (BCL) free of charge. JRE use for embedded
devices or use of commercial features may require a license fee from
Oracle. Read more about embedded use of Java SE or contact your local
Oracle sales representative to obtain a license.

Then your problem is being on an old and seemingly outdated technology. It will reach it's end of life soon.

While I'm a big fan of .NET and not a proponent of Java normally for reasons of personal preference, I have to say this is not a Java problem. Most software has an "End of life". .NET Framework versions have an "End of life" too. If you were using a .NET Framework version from around the same time as Java 8 (.NET Framework 4.5.1) it would not get patches either, because that, too, has reached it's end of life.

So switching to .NET now would only shove your problem to about 4 years in the future, when the current .NET version you start over with now will be just as outdated as your Java version is now.

The solution is to update your Java version. That should cost a lot less then switching platforms and I'm sure there are clear migration paths.

I am not certainly switching the technologies just to avoid any upgrade. Problem is the cost. Oracle has started monetizing Java, Java 8 is an LTS release. it would be supported upto 2022 assuming I pay the money. Java 8 is not going in end of life phase.
– Atul SurekaAug 29 '18 at 6:25

No, updating from Java 8 is not yet advisable. While it's close to its EOL, the never versions are too. Nearly everyone is waiting for Java 11, which is due this month. Of course, it's good to be prepared by testing with versions 9 and 10, but it seems to be wise sticking with Java 8 in production.
– maaartinusSep 1 '18 at 15:26

@AtulSureka While Oracle stops to release public binary updates, OpenJDK has become the official version and someone will provide binaries.
– maaartinusSep 1 '18 at 15:29