Java框架的构建方式和方式是什么?

时间:2012-10-11 03:45:30

标签: java compiler-construction frameworks

我知道这个问题有点傻。

我以前从不研究Java源代码的Java程序员,我一直在使用Java(官方)框架(例如javax.swing。,java.util。,java.collection 。* and blah blah)建立一些应用程序。

现在我尝试研究Java源代码(我是黑盒编程范例的受害者)并发现源代码完全用Java编写。现在,我感到困惑的是,Java(在Java源代码中,我在这里有点困惑)使用的框架是什么形成我们正在使用的框架?

真诚地,我希望在Java源代码中看到一些汇编类代码,但实际上并非如此。我觉得我们使用的普通框架(java。,javax。)并不是JVM的最低入口点。必须有一些“低于”的东西。

任何人都可以解释一下吗?

3 个答案:

答案 0 :(得分:3)

大多数Java库(您称之为Framework)都是用Java编写的。解释编译的字节码的JVM大部分都是用C ++实现的,而库确实包含用低级语言(C或C ++)编写的“本机”方法。

方法是用较低级别的语言编写的,原因只有两个:平台依赖性(每个平台上必须有不同的东西)和性能(一直使用并从本机代码中受益的东西)。

最终结果是几乎所有库都与平台无关,并且不必为每个平台重写。非Java代码的范围仅限于HAS特定于平台的内容。

答案 1 :(得分:1)

我不是专家,但......

JVM将Java源代码转换为机器代码。所以这是最低级别,一旦你有了运行Java源代码(JVM)的东西,那么你可以围绕它创建一个框架(在Java中)。

也就是说,仍有一些原生操作系统函数调用 - 抱歉,我对它们了解不多。

FYI .NET是相同的,用.NET编写的框架,其中包含本地调用。

答案 2 :(得分:1)

Java源代码:一些用Java程序语言编写的代码

javac:一个命令行实用程序,用于将Java源代码编译为类文件(包含字节码)

jvm:加载类文件,并在该文件中执行字节码。

字节码:一个指令集,看起来像汇编语言。一条指令的长度是一个字节(这就是它被称为字节码的原因)。

JNI:Java Native Interface(主要由C / C ++编写),一个用于扩展Java程序能力的接口,使用java很难/无法实现,例如一些关于OS的程序。

字节码是这样的:

public static void main(java.lang.String[]);
Code:
    0: ldc           #16                 // String a a \"fsd  fsd\" sfd gfd  \"fs  d\"
    2: astore_1
    3: getstatic     #18                 // Field java/lang/System.out:Ljava/io/PrintStream;
    6: aload_1
    7: invokestatic  #24                 // Method t:(Ljava/lang/String;)Ljava/lang/String;
    10: invokevirtual #28                 // Method java/io/PrintStream.println:(Ljava/lang/String;)V
    13: return

您可以使用命令实用程序javap获取上面的代码。