
Is Java Our Best Choice to Protect Our Code? - clove
I’m an options trader with a strong background in R. My aim is to build a piece of software to be sold to funds and other traders. I was told some things by an ex-programmer friend of mine (he now outsources all his programming and merely manages his businesses) and wanted to check with a larger group whether he’s putting me on the right track.<p>So the general idea is that I need to create an interface for my customers. R doesn’t have a UI system, so I thought of using Python, as I heard it is similar to R. However, my friend said that Python software is easily reverse engineered, meaning my software could be stolen or copied, leaving me with fewer customers and new competitors.<p>He recommended Java for this reason. Specifically, to create a product that secures my backend (lol), he said I must learn Java IDE aka Eclipse and Java SDK. Two questions:<p>Is he right?
How large is the gap between R programming and Java programming?<p>I aim to create an MVP of the product before registering my business and showing the MVP to potential clients. Thus, I would like to estimate the timeline of the project. The actual coding should be fast and simple in R – mainly data input followed by correlation calculations and the output of a metric – but the time-consuming step, I figure, will be applying my R knowledge in the Java paradigm.<p>Thanks for reading this far.
======
setra
At the extreme end if a user runs something on their computer they can extract
the algorithms. The only real way to prevent people from reverse engineering
is running all meaningful code on your own hardware.

Python is particularly easy to reverse engineer because you usually ship the
source code which is then interpreted. They can read what you wrote literally.
If you did a compiled variant this is not as bad.

Java can be reverse engineered as the code is just in time compiled. For
example minecraft modding communities would routinely extract the source code
repack it with new features.

There are always things you can do to make it harder (using a very optimized
binary out of GCC with symbols stripped). But the general rule is, if you
don't want them to have it, don't give it to them. Run it personally and give
them a remote interface.

~~~
setra
As far as java vs R. Java is very common, and has a large number of libraries
for building things like servers, and interfaces. It is probably faster
computation wise as well. However if computation speed is not a major concern,
and you are doing mostly statistic works, then switching to something you are
not familiar with is probably not a good idea. Use the right tool depending on
what you want. There is a reason so many statistics people use R / python, and
not c.

~~~
clove
If R doesn't have the tools to offer a UI, how can I stick to R? Aren't I
forced into a new language?

~~~
setra
I honestly don't know much about the R library system. You could probably make
a GUI in python pretty easily. Then write a basic server program that runs
your R code when you get a processing request. The python app would then call
the server which would run your R script. Depends on the domain of your
project though really.

------
brudgers
After seeing how companies build businesses based on open source software, I
think:

1\. Protecting the business is what matters.

2\. The best way to leverage software is to create so much business value that
reverse engineering your _business_ is cost ineffective.

The poster child is RedHat. It does not sell software really. It sells
solutions. Any one of their customers can run another Linux distro. They
don't.

My advice: build it in R and start selling it (not necessarily in that order).
Maybe a customer or two hires programmers to reverse engineer it. If you're
making so much money you need a wheelbarrow to get it to the bank, it doesn't
matter.

Good luck.

