Most embedded Java software platforms include a Java middleware installed on the client device. It can be optimized using the ahead-of-time compiler (AOTC), which translates the Java bytecode into the machine code before runtime. There are many approaches to AOTC, but a bytecode-to-C AOTC which translates the bytecode into C code and then compile it using an existing optimizing compiler such as gcc would be a practical one. This paper explores a few important design and optimization issues of a bytecode-to-C AOTC, including the compilation strategy for the translated C code, the call interfaces between Java methods, and Javaspecific optimizations by the AOTC that can complement the gcc optimizations. We evaluate these issues with a bytecodeto-C AOTC to understand their performance impact.