3 ms·
I evaluated gcj to use in a shareware desktop application in the 2000's. The goal was to compile java + SWT into native binaries for distribution. The goal was
by marktangotango 10y ago
I evaluated gcj to use in a shareware desktop application in the 2000's. The goal was to compile java + SWT into native binaries for distribution. The goal was a slim installer that didn't require the user to futz with installing java, or bunding a jre. Ended up going with Excelsior JET which is a fantastic project.
In the end, the full java spec doesn't lend itself to aot, because if you claim to be "real" java you have to include support for runtime classloading, which means there has to be a bytecode interpreter embedded in there somewhere. My thoughts are now, if you really want a java/c# style aot language, vala is the way forward.
- amyjess 10y ago> My thoughts are now, if you really want a java/c# style aot language, vala is the way forward. What about D?
- my123 10y agoC# fully supports AOT since a while.
- swift 10y agoI'm pretty sure that C# AOT does not eliminate the need for a JIT in the runtime system. Just as one example, how could expression trees be implemented without one?
- pjmlp 10y agoYou cannot use them. In .NET Native you have to explicitly inform the compiler of any kind of reflection behavior you might require.
- zgramana 10y agoNot quite right. Mono has the lovely mkbundle tool which can do what the poster wants: AOT your intermediate/byte code and build a statically linked executable containing your app, the runtime, and all your deps (except for key system dynamic libraries like libc or Security.framework, similar to how go works). No restrictions on reflection, unlike .NET Native (which has slightly different design goals). I've used it many times for just this reason with great results. Plus, the runtime was re-licensed to MIT/X11.
- pjmlp 10y agoMy .NET experience is only on Windows, thanks for the clarification.