1. java已经是编译型语言,因为不编译源程序是没法直接运行的。只不过java是编译成中间的二进制代码,不是最终的机器代码。
2.已经有这种编译器,免费的如gnu的gcj,收费的如Excelsior JET。不过没有太大必要使用,java在运行时也会把中间代码动态优化成本地机器代码,这种优化的结果一般会优于预先编译的结果,因为动态优化可以因地制宜,根据程序运行情况和计算机硬件的状况来动态选择优化策略。
1. 不能
2. JVM
java之所以强大的其中一个重要原因就是不直接编译成最终结果,这样借助JVM的环境,才能实现其跨平台的效果。其实JVM也是在解释Java而已。
如果按照你的想法的话,那java与C++等语言就相差无几了,jave当初的设计理念是适应互联网的编程的需要,因为互联网上存在不同的机器,不但硬件不同,操作系统等也可能不同,如果使得某个针对互联网应用而编写的程序,尤其是web应用等应用一次编写,到处运行的理念。sun公司设计jave编程语言,当初设计构思是:在硬件和操作层用java虚拟机屏蔽各种不同体系的系统,java虚拟机是一个软件实现的统一指令的虚拟机器,并不是硬件意义上的机器,这种机器采用了通用指令,实现由源代码指令到机器指令上的映射,也就是说你编写java的源代码先被翻译成java虚拟机指令(即是.class文件),再由虚拟机执行,虚拟机执行可以看作将虚拟机指令转成相对应的机器指令,这样就实现了对不同系统细节上的屏蔽,基本上实现了一次编写,到处运行的梦想,但是即使这样,java在很多时候,在不同的平台上运行时候,源代码还是要修改的,不过要修改的幅度大为减少,是某种程度上的“通用”语言!!!
不会有人这样做的。其一,当初开发Java语言的时候,肯定是一个团队,而不是一个人。其二,没有任何团队会做这么无聊的事情,这样又花时间,又没有任何的好处。
楼主,不要幻想了,既然你想要直接编译,就去搞C,C++,当然,搞汇编就更直接了,嘿嘿。可能你对Java最熟悉,或者没有学过C,C++之类的。在这里要给你一个建议:不同的语言,不同的优势和用途,不要在一棵树上吊死。