最近开始学习Java,学习过程中找到的一些资料和笔记。
1、JAVA SE、JAVA EE和JAVA ME有什么区别?
Java的发展到现在已经不单纯仅仅是一种语言,从更加广泛的范围上来说,Java代表了一个技术体系。在这个体系中,JAVA SE、JAVA EE、JAVA ME则分别代表了不同的方向。
Java SE全称为:Java Standard Edition (J2SE也就是Java SE)标准版
Java SE版本为Java程序提供了最基本的环境,是Java技术的核心和基础。Java EE和Java ME都建立在Java SE的基础之上。
重点学习:集合类、文件操作、I/O流、线程、序列化和GUI窗体编程等内容
Java EE全称为:Java Enterprise Edition (J2EE也就是 Java EE)企业版
Java EE是基于服务器分布式企业应用提供开发和运行环境,是目前Java应用最广泛的部分。Java EE不仅继承了Java SE的许多优点,同时还提供了EJB、JSP、Servlet、XML的全面支持,降低了企业级开发的复杂度。
重点学习:JSP、Servelet、JDBC、EJB以及Struts、Spring、Hibernate等轻量级框架
Java ME全称为:Java Micro Editon (J2ME也就是Java ME)微缩版
Java ME为嵌入式应用提供开发和运行环境
重点学习:配置(Configuration)和简表(Profile)等
2、JAVA语言的运行机制如何?
计算机高级编程语言按照程序的执行方式分为:编译型语言和解释型语言
C、C++)
解释型语言:使用专门的解释器,将源程序代码逐条地解释成特定平台的机器指令,解释一句执行一句(PHP、ASP等)
Java字节码具有平台无关性,所以可以跨平台,只是Java虚拟机需要对应相应平台
Java语言并不属于以上分类,Java是编译型和解释型的综合体
首先,Java采用通用的编译器将源程序编译为与平台无关的字节码文件(class文件)
然后,Java虚拟机(JVM)对字节码文件解释执行
下图为Java代码的具体的执行过程:
3、什么是JVM?有什么作用?工作机制?
定义:
(Java Virtual Machine)意思为Java虚拟机。可在实际计算机上模拟各种计算机功能。有自己完善的硬件架构,例如处理器、堆栈和寄存器等还具有相应的指令系统。
作用:
中类的装载是由类加载器(ClassLoader)和它的子类实现,其负责在运行时查找和装入类文件的类。
、JVM是Java字节码的执行引擎,为Java程序的执行提供必要的支持。
、优化Java字节码,使之转化为更有效率的机器指令。
、JVM屏蔽了与具体操作系统相关的信息,Java程序生成能够在JVM上运行的字节码文件(class文件),JVM负责将每一条要执行的字节码送给解释器,解释器再将相应的字节码转化为对应平台的机器指令并执行,由此实现跨平台。(不同平台,不同的JVM)
工作原理:
JVM在整个JDK中处于最底层,负责与操作系统的交互,用来屏蔽操作系统环境,提供一个完整的操作系统环境。
操作系统中的JVM通过JDK中的java.exe来实现,主要通过以下步骤:
(1)创建JVM装载环境和配置
(2)装载jvm.dll
(3)初始化jvm.dll
(4)调用JNIEnv实例装载并处理class类
(5)运行Java程序
4、什么是JRE(J2RE)?
简介:JRE是Java Runtime Enviroment的简称,及Java运行时环境,是Java程序运行的必要环境集合,主要由:Java虚拟机、Java平台核心类以及若干支持文件组成。
Sun公司的JRE产品包括:Java Runtime Enviroment和Java Plug-in Java Runtim Enviroment两部分,是可以运行、测试和传输应用程序的Java平台。
如果需要在浏览器中运行Java Applet程序,JRE需要辅助软件:Java Plug-in。该软件可以使Java Applet和JavaBeans组件在使用Sun公司的JRE环境的浏览器环境中运行。该软件可以在Navigator和IE中,微软自带的虚拟机对Java环境支持并不完全,最好安装一个Sun公司的JRE或者JDK。
JRE的版本管理:
同一台计算机上安装多个不同版本的JRE并不影响程序的运行,因为控制台使用java.exe工具执行java程序时,操作系统将按照如下顺序查找JRE环境:
(1)先查找当前目录下是否有JRE
(2)再查找父目录下是否有JRE
(3)接着再在环境变量PATH指定的路径中查找JRE
(4)注册表HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Enviroment\查看 CurrentVersion的键值指向哪一个JRE
最常用的是在PATH中查找JRE环境,一般情况下,每一种Java软件在运行之前都会在批处理文件之中临时设置PATH值,然后把自己使用的JRE路径放置在PATH路径的最前端,所以肯定会使用自带的JRE,不会造成版本混乱
JRE的基础类库:
JRE自带的基础类库主要在JRE\lib\rt.jar文件中,该文件包括JAVA 2平台中运行的所有类库,与JRE的版本一致。
程序运行时,ClassLoader查找和加载程序引用到的基类库和其他类库。
基类库:ClassLoader会自动到rt.jar中加载(操作系统通过PATH环境变量定位JRE,再确定基类库的位置)
其他的类库:ClassLoader在环境变量CLASSPATH中指定的路径搜索,按照先来先到的原则搜索,放在CLASSPATH前面的类库优先被搜到
由此可知:在JAVA程序启动之前,先设置好PATH和CLASSPATH的环境变量