多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
[TOC] # 编译 ~~~ javac xx.java ~~~ 编译后会出现xxx.class # 运行 ~~~ java xx ~~~ main函数正常运行,退出后返回值应该是 0 # 编译模式 jdk8其实是解释和编译混合的一种模式(Xmixed), java虚拟机启动的时候,可以指定不同的参数对运行模式进行选择.比如,指定"-Xint",就是告诉jvm只解释执行,不对代码进行编译,这就抛弃了jit可能带来的性能优势. 对应的还有个"-Xcomp"参数,这是告诉jvm关闭解释器,不要解释执行,或者叫做最大优化级别.这并不是最高效的.他会导致jvm启动变慢很多,同时有些jit编译器优化方式:比如分支预测,不进行分析,往往不能进行有效的优化. 新的编译方式AOT(Ahead-of-Time Compilatio),直接把字节码编译为机器码,避免JIT预热等开销. jdk9的jaotc,就可以把某个类或者模块编译成AOT库 ~~~ jaotc --output libHelloWorld.so HelloWorld.class jaotc --output libjava.base.so --module java.base ~~~ 然后启动的时候直接指定就行 ~~~ java -XX:AOTLibrary=./libHelloWorld.so,./libjava.base.so HelloWorld ~~~ 并且分层编译和AOT协作不是二选一的关系. # mainifest.txt 是jar中,描述那个类带有main(). 把class编译到那个文件夹 ~~~ java -d xxx ~~~