Thanks I’ll look into that, but what benefits do I get using it as an MSI file?
@KonradZuse At first, the end users are more accustomed with MSI files as most native Windows applications are using this format (except on the application stores, see APPX).
Secondly, you can put everything into a single file instead of having to provide an archive that the end user must decompress…, (s)he doesn’t have to find the script or executable in this archive.
Thirdly, you can improve the native desktop integration, the installer can ask the end user whether (s)he wants to have a shortcut on the desktop and/or in the start menu to launch your application, it’s clean. You can even add a menu item to run the uninstall script.
Edit.: There is a Maven plugin for WiX.
Btw, all 3.0 SDK deployment options allow bundling a JRE, you just have to modify the templates and add the JRE manually. The 3.1 SDK deployment will allow bundling a JRE through the GUI.
@KonradZuse we have been using Excelsior JET for a couple of years on a jme 3 application and works okay. JET provides the best way (and only way for Java apps) to protect your source code (it basically becomes C and not Java anymore).
Other tools just wrap a .exe file around a java program that starts the JVM, JET is completly different in that regard (it becomes a 100% native C app which is very very difficult to reverse engineer).
The only issue we found is that JET has a different way to handle memory, so we did run into some out of memory issues that did not occur in java (when you push for the max amount of mem on 32 bit). The latest JET also supports 64 bit so it becomes less of an issue.
Oh and with regards to JavaFX, JET currently only support Java 7 end most of the JavaFX stuff (like intergration with jme) requires Java 8, so that is a problem. They are working on Java 8 support though.
@maximusgrey so you are experienced with that tool? I have questions: is the E-JET Standard Edition enough for game that uses JME? Do I need to compile only my own jar or all the JME’s jars too? If so, do I have the rights to compile JME this way?
- We have always used the professional edition, that gives you better performance, e,g, the JVM is always optimizing your execution runtime. JET/C cannot do this “runtime” so they profile the app in advance and then compile these optimizations into the final product. JET professional does this, standard not. So yes you can use both, pro is only a bit faster (e.g. during startup).
- When using jet you get a wizard where you have to provide ALL jars that are used in your project, so thats including JME and other 3rd party libs. These are then all transformed into C code. You can also select the option to encrypt e.g. hardcoded strings per lib.
- As far as the rights go that depends, most open source libs allow you to compile them, but when asked you must provide the orginal .jar/source code. Also a copyright notice/statement of all used 3rd party libs in your app somewhere is usefull.
Interesting, thanks for this, I’m glad someone else is using it!
I do need Java 8, which might be an issue, but they say that jun is when the Beta for 11 is coming out with 8 support.
The thing is, do we get to upgrade with each major version? I believe I read that you get MINOR updates, but not MAJOR ones? I could be wrong though…
Also, not too sure if you’d share the info, but did you get a “micro-business” license? They apparently give good discounts to small businesses, so I was curious if you were a small business, and if you know(and would be willing to share this info), how much it costs? It seems to be 3k (one time or yearly?) per license for a PRO(which I think is what I will get as I don’t think I need enterprise), so I wonder how much of a discount you get for a license…
I guess I’ll check out their support to see if you can upgrade to 11 from 10 for free or how it works, or else I will wait for 11 beta(or regular) to buy
Also, have you tried using this on mobile, is it supposed to work for mobile?
I guess another question(for everyone) is does converting a JME3/Java project to Android or iOS with RoboVM, or any other compiler/w.e protect the code? I believe Android has their own bytecode, so I’m curious if people can look at the code of android apps and reverse them? What about iOS?
Android is not safe, it has own stuff, but market for pirated apps is so large, taht there are basically one click decompiler around.
Similar for ios a assume.
You only need one little mistake and your whole security is gone.
While they only need to find one problem, and no matter the rest they won.
Then keep in mind that they are most likely a multitude of work hours you are and you basically lost already.
Aynway i used excelsior back in jme2 times for startup speed and must say it is really great at that. Especially if you have very small cmd line applications it shines perfectly.
So then porting our JME3 applications to Android and iOS isn’t a good idea?
If you don’t do it because you’re afraid to be pirated, that’s a wrong reason.
Trust me, having your game pirated is a good sign that it’s a success…
Having your games on mobile platforms is not a matter of good or bad idea in terms of piracy but if the game is fun to play or not. Piracy is a thing that will always happen and it’s a better idea to accept it than fight against it.
As in one previous job I had, my boss wasn’t anti-piracy, but anti-stealing. If you make a great app that is successful, others will want to copy it and release a very good clone clone, so looking at your source code will be the best place to start. Obfuscation allows us developers to make reverse engineering a harder job than it is so that we have a slight time advantage before someone finally de-obfuscates and starts reading the code.
@KonradZuse We did not have a “micro-business” account, so I cannot help you with that. I would suggest that you wait for version JET11 , do the trial and when it al works buy the license.
As for mobile; JET compiles to Windows code, so a windows mobile phone might work?!?, android/ios certainly not.
I want to be as protective as I can.
Thanks, figured I would ask.
Is the beta sufficient enough to get access to the full 11, or should I wait until 11 is released in September? I really need Java 8, so I hope Jun 15 suffices for that!
Well it seems it’s Windows, Mac OS, and soon(even though it’s listed already) Linux.
I’m still curious overall about iOS and Android, and why it’s easy to decompile? Wouldn’t native code be hard to work with, like Native C on Windows, or what is different about it?
iOS and Android apps are as easy/hard to decompile as any other native software. Breaking your code will take any sufficiently advanced programmer a fraction of the time you already spent on this topic.
@KonradZuse Also keep in mind that a challenge might be accepted.
To be honest im already kinda hooked up to see what you release, just to break it, sorry to be so honest.
Yeah but I want to be able to at least give the challenge a hard time, if not stop them completely, as best as I can.
As for what I’m doing currently has nothing to do with public/gaming, so when the time comes for me to release a game, I will let you have your fun and you can teach me how to make it more protected :P.
I guess this is what I get for talking about “secrets” and “cool stuff.” throw in some “magic” and people want to now hax0r my stuff :’(
Oh okay, thanks.
Well isn’t that why we buy/use products to protect our code for those of us who aren’t advanced users of cryptography? Haven’t really spent that long on this topic, but if these special programs can be decompiled in a few hours, then they are essentially useless, unless we are talking about an extremely small portion of the population.
Decompiling takes a few seconds and with the power of google almost anyone can become a hacker these days
Damn Google… :P.
I guess it comes down to what pspeed was saying about the “worth” of the code. It seems people think their code is worth a lot more than it really is, and that a lot of people could care less, or that the code is so bad that it’s not even worth the time to go through it in general?
Plus in the end theft is theft regardless, and that seems to be the case even if we use a licensed source code from GitHub and said it was our own we can get in legal trouble and people aren’t going to want to get involved in that.
I guess all software has to have some sort of license(s) to protect against theft?