本文目录一览:
javac是什么?
javac是Java编译器,负责将Java源代码转换成字节码文件。 javac 可以隐式编译一些没有在命令行中提及的源文件。用 -verbose 选项可跟踪自动编译。当编译源文件时,编译器常常需要它还没有识别出的类型的有关信息。 javac的特点 javac具有简单性、面向对象、分布性、解释性、可靠、安全、平台无关、可移植性、高性能、多线程、动态性等特点。提供了异常处理机制,程序员可以把错误代码放在一起,这样可以简化错误处理任务,便于恢复。不支持指针,杜绝了内存的非法访问。
JAVA的编译器有哪些?
推荐Jcreator,它对于初学者是个很好的开发工具,又小运行也很快。它要用到JDK,大的IDE有JBuilder、netbean、sun stdio、eclipse。 编译器就是将"一种语言(通常为高级语言)"翻译为"另一种语言(通常为低级语言)"的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables) 高级计算机语言便于人编写,阅读交流,维护。机器语言是计算机能直接解读、运行的。编译器将汇编或高级计算机语言源程序(Source program)作为输入,翻译成目标语言(Target language)机器代码的等价程序。源代码一般为高级语言 (High-level language), 如Pascal、C、C++、Java、汉语编程等或汇编语言,而目标则是机器语言的目标代码(Object code),有时也称作机器代码(Machine code)。 对于C#、VB等高级语言而言,此时编译器完成的功能是把源码(SourceCode)编译成通用中间语言(MSIL/CIL)的字节码(ByteCode)。最后运行的时候通过通用语言运行库的转换,编程最终可以被CPU直接计算的机器码(NativeCode)。
Java进阶:SE6调用编译器的两种方法[2]
三 从内存中编译 JavaCompiler不仅可以编译硬盘上的Java文件,而且还可以编译内存中的Java代码,然后使用reflection来运行它们。我们可以编写一个JavaSourceFromString类,通过这个类可以输入Java源代码。一旦建立这个对象,你可以向其中输入任意的Java代码,然后编译和运行,而且无需向硬盘上写 class文件
import java.lang.reflect.*;
import java.io.*;
import javax.tools.*;
import java.util.*;
import java.net.*;
public class test_pilerapi {
private static void pilerJava() throws Exception {
JavaCompiler piler = ToolProvider.getSystemJavaCompiler();
DiagnosticCollector diagnostics = new DiagnosticCollector();
// 定义一个StringWriter类 用于写Java程序
StringWriter writer = new StringWriter();
PrintWriter out = new PrintWriter(writer);
// 开始写Java程序
out.println("public class HelloWorld {");
out.println("public static void main(String args[]) {");
out.println("System.out.println(\"Hello World\");");
out.println("}");
out.println("}");
out.close();
//为这段代码取个名子 HelloWorld 以便以后使用reflection调用
JavaFileObject file = new JavaSourceFromString("HelloWorld", writer.toString());
Iterable pilationUnits = Arrays.asList(file);
JavaCompiler.CompilationTask task = piler.getTask(null, null, diagnostics, null, null, pilationUnits);
boolean success = task.call();
System.out.println("Success: " + success);
// 如果成功 通过reflection执行这段Java程序
if (success) {
System.out.println("输出");
Class.forName("HelloWorld").getDeclaredMethod("main", new Class[]{String[].class}).invoke(null, new Object[]{null});
System.out.println("输出");
}
}
public static void main(String args[]) throws Exception {
pilerJava();
}
}
// 用于传递源程序的JavaSourceFromString类
class JavaSourceFromString extends SimpleJavaFileObject {
final String code;
JavaSourceFromString(String name, String code) {
super(URI.create("string:///" + name.replace('.', '/') + Kind.SOURCE.extension), Kind.SOURCE);
this.code = code;
}
@Override
public CharSequence getCharContent(boolean ignoreEncodingErrors) {
return code;
}
}
lishixinzhi/Article/program/Java/hx/201311/27240
初学java 用什么编译器?
一 eclipse / myeclipse
当年学习java,最先接触到的就是 eclipse。喔了个噻,当时感觉eclipse好牛啊,有好多先进的功能:
- 可以方便地进行包管理。可视化窗口,创建目录和文件都很方便,移动包,复制包等都可以方便的进行。
- 热键操作。复制保存啥的就不说了,代码提示这个功能还是很不错的,在写着写着,脑子突然短路的时候,可以通过快捷键把脑子快速带回来。
- 代码调试。有时候,写着写着代码,突然间就报错了,不知道哪里错了,咋整,这时候,如果使用编辑器的话,就可以使用 debug模式进行调试了,找出问题所在,解决问题。
- 一些代码管理等插件。在企业中肯定要用到代码同步工具,svn 或者 git ,在编辑器中会提供这样的插件,方便代码的管理。
二 idea
相比 eclipse 和 myeclipse ,idea 的基本功能差不多。
- 包管理:也是有方便的包和资源管理。
- 热键:也是提供热键管理的,而且还很好用。
- 代码调试:debug模式用起来也是很舒服。
- 插件方面:也是支持一些插件的,如 热部署插件等。
三 比较
- 操作:两个软件有不同的快捷键,虽然idea兼容部分eclipse快捷键,但是不建议这样做。
- 资源消耗:idea更能吃内存啊呦喂,电脑配置低的伤不起啊。eclipse要更柔和一点。
- 是否免费:eclipse 是免费的,myeclipse和idea 是要付费的呦。但是嘛,你懂得。
- 专业性:idea 应该是更专业的,有更高的代码更新机制和代码提示功能。但是 eclipse 涉及的范围更广,除了java 和可以编辑其他语言的项目。
四 建议
- 如果电脑配置比较低,建议使用 eclipse ,并且使用较低版本的,这样,电脑不会太吃力。如果配置比较高,比如,16G内存,固态硬盘,那就使用idea吧。
- 没有最好的编辑器,只有最适合自己的编辑器。任何一个编辑器用习惯了,都是很不错的。 希望对您有所帮助!~
Java用什么编译器?
常用的就是Eclipse,My Eclipse,idea这三种,My Eclipse相对于其他两种不是很常用