Java基础-Java的体系结构
1 前言
到目前为止Java仍然是使用最多的编程语言,随着Java以及Java社区的不断壮大,Java也早已不再是简简单单的一门计算机语言了,它更是一个平台、一种文化、一个社区。
1. 1 Java技术平台
根据不同的技术规范,Java划分为3中结构独立但又相互依赖的技术分支:Java SE(标准版)、Java EE(企业版)、Java ME(精简版)。此外, Java的发展,除了来自互联网的崛起,还有Google选择Java作为Android操作系统,Groovy、Scala、JRuby、Kotlin等都是Java平台的一部分。
Java SE
活跃在桌面领域,主要包含Java API组件。这个版本是Java平台的核心。
Java EE
活跃在企业级领域,主要包含Java API组件、Web组件、事务组件、分布式组件、EJB组件、消息组件;综合这些技术开发人员完全可以构建出一个具备高性能、结构严谨的企业级应用,并且Java EE也是构建SOA架构的首选平台。Java EE是Java SE的扩展。
Java ME
活跃在嵌入式领域,称为精简版是因为JavaME
仅保留了Java API中的部分组件,以及适应设备的一些特有组件。Java ME是Java SE的内伸。
1.2 Java开源文化
Java几乎成为了“开源”的代名词。第三方开源软件和框架。如Tomcat、Struts,MyBatis,Spring等。就连JDK和JVM自身也有不少开源的实现,如openJDK、Harmony。
1.3 Java强大社区
Java的文化造就了Java社区,Java拥有全世界最多的技术拥护者和开源社区支持,有数不清的论坛和资料。所谓,众人拾柴火焰高!
2 Java体系结构的组成
Java技术的核心就是Java虚拟机——所有Java程序都在其上运行,需要Java虚拟机、Java API和Java,class文件的配合,Java程序才能够运行。
2.1 Java编程语言
首先我们理一下一个Java程序从编写到最终执行的过程:
- (1)一个A.java程序源文件执行javac命令后编程成A.class二进制的字节码文件
- (2).class文件会被ClassLoader装载到内存中,同时装载java相关核心类库
- (3)调用字节码解释器或即时编译器(java是解释器和编译器混合执行)
- (4)执行引擎调用操作系统或硬件运行
2.2 字节码
任何编程语言的编译结果满足并包含Java
虚拟机的内部指令集、符号表以及一些其他辅助信息的话,这个编译结果就是一个有效的字节码文件。
字节码的重大作用:为Java跨平台提供了支持。正是因为源代码编译后为字节码文件,而字节码文件相较机器指令,字节码可以解决程序的安全性问题、跨平台移植性问题。而且源码只需一次编译,得到的字节码文件可以在不同的平台上运行。
2.3 Java API
API
(Application Programming Interface)应用程序编程接口,是一些预先定义的类。目的是使开发人员可以直接使用这些已经被打包的类来做具体的应用,节约了程序员大量的时间和精力。
2.4 Java虚拟机
Java虚拟机(Java Virtual Machine简称JVM)是运行所有Java程序的抽象计算机,是Java语言的运行环境,其主要任务为将字节码装载到内部,解释/编译为对应平台上的机器指令执行。
Java虚拟机规范定义了一个抽象的——而非实际的——机器或处理器。这个规范描述了一个指令集,一组寄存器,一个堆栈,一个“垃圾堆”,和一个方法区。一旦一个Java虚拟机在给定的平台上运行,任何Java程序(编译之后的程序,称作字节码)都能在这个平台上运行。Java虚拟机(JVM)可以以一次一条指令的方式来解释字节码(把它映射到实际的处理器指令),或者字节码也可以由实际处理器中称作just-in-time
的编译器进行进一步的编译。
3 总结
笔者是一名Java编程语言的深度使用者,到目前为止,Java仍是世界上的头号编程语言。然而,Java最终将会减弱,就像C++一样,沦为只在特殊情况下使用(或者只是用来支持传统的代码,因为它不能像C++那样和硬件连接)。但是无意中的好处,也是Java真正意外的光彩之处在于它为自己的替代品创造了一条非常畅通的道路,即使Java本身已经达到了无法再发展的程度。未来所有的语言都应该从中学习:要么创建一个可以重构的文化(像Python和Ruby做的那样),要么就让竞争者茁壮成长。
到此这篇关于Java基础-Java的体系结构的文章就介绍到这了,更多相关Java的体系结构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
SpringBoot下使用MyBatis-Puls代码生成器的方法
这篇文章主要介绍了SpringBoot下使用MyBatis-Puls代码生成器的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2020-10-10
最新评论