JAVA一些基础概念
-
Java
(计算机编程语言)
工作原理
由四方面组成:
API)中的方法来訪问资源系统,把源文件编译生成一种二进制中间码。存储在class文件里,然后再通过执行与操作系统平台环境相相应的Java虚拟机来执行class文件,执行编译产生的字节码,调用class文件里实现的方法来满足程序的Java API调用[6] 。
sdk
(软件开发工具包)
还常常包含演示样例代码、支持性的技术注解或者其它的为基本參考资料澄清疑点的支持文档。
比如,营销公司会免费提供构件SDK
以鼓舞人们使用它,从而会吸引很多其它人因为能免费为其编程而购买其构件。
API
API 的概念,仅仅只是那个时候的 API 是以中断调用的形式(INT 21h)提供的。在 DOS 下跑的应用程序都直接或间接的通过中断调用来使用操作系统功能,比方将 AH 置为 30h后调用INT 21h就能够得到DOS 操作系统的版本。
而在 Windows 中。系统
API 是以函数调用的方式提供的。
相同是取得操作系统的版本。在 Windows 中你所要做的就是调用 GetVersionEx() 函数。
DLL
在windows环境下含有大量
.dll格式的文件。这些文件就是动态链接库文件。事实上也是一种可运行文件格式。跟
.exe 文件不同的是,.dll文件不能直接运行。他们通常由 .exe 在运行时装入,内含有一些资源以及可运行代码等。
事实上 Windows 的三大模块就是以DLL的形式提供的(Kernel32.dll,User32.dll,GDI32.dll),里面就含有了
API函数的运行代码。
为了使用 DLL 中的 API 函数。 必需要有 API 函数的声明(.H)和其导入库(.LIB),导入库能够先这样理解:导入库是为了在 DLL 中找到 API 的入口点而使用的。
而API和 SDK 是开发Windows应用程序所必需的东西,所以其他编程框架和类库都是建立在它们之上的,比方VCL
和MFC,尽管他们比起“SDK 编程”来有着更高的抽象度,但这丝毫最好还是碍我们在须要的时候随时直接调用 API 函数 。
-
jdk
(SunMicrosystems针对Java开发员的产品)
Runtime Envirnment),一些Java工具和Java的核心类库(Java API)。任何Java应用server实质都是内置了某个版本号的JDK。主流的JDK是Sun公司公布的JDK,除了Sun之外,还有非常多公司和组织都开发了自己的JDK,比如。IBM公司开发的JDK。BEA公司的Jrocket。还有GNU组织开发的JDK[13] 。
组成
经常使用的包
-
JRE
Runtime Environment)。JRE是支持Java程序执行的标准环境[14] 。
但因为JDK包括了很多与执行无关的内容,占用的空间较大。因此执行普通的Java程序无须安装JDK。而仅仅须要安装JRE就可以[15] 。
它不包含开发工具(JDK)--
编译器、调试器和其他工具。JRE须要辅助软件--JavaPlug-in--以便在浏览器中执行applet。
假设你仅仅须要执行Java程序或
Applet,下载并安装它就可以。假设你要自行开发Java软件,请下载JDK(JRE和JDK的差别)。在JDK中附带有JRE。注意因为Microsoft对Java的支持不全然,请不要使用IE自带的虚拟机来执行
Applet,务必安装一个JRE或JDK。
-
JVM
规格
这一规格包含操作码和操作数的语法和数值、标识符的数值表示方式、以及Java类文件里的Java对象、常量缓冲池在JVM的存储映象。
这些定义为JVM解释器开发者提供了所需的信息和开发环境。
Java的设计者希望给开发者以随心所欲使用Java的自由。
原理
它是一种基于下层的操作系统和硬件平台并利用软件方法来实现的抽象的计算机。能够在上面运行java的字节码程序。
栈结构
每个栈框架包含下面三类信息:
vars寄存器指向该变量表中的第一个局部变量。
比如:假设解释器要运行iadd(整数加法),首先要从frame寄存器中找到当前运行环境,而后便从运行环境中找到操作数栈,从栈顶弹出两个整数进行加法运算,最后将结果压入栈顶。
碎片回收
解释器在为一个实例分配完存储空间后,便開始记录对该实例所占用的内存区域的使用。一旦对象使用完成,便将其回收到堆中。在Java语言中,除了new语句外没有其它方法为一对象申请和释放内存。对内存进行释放和回收的工作是由Java执行系统承担的。这同意Java执行系统的设计者自己决定碎片回收的方法。
在SUN公司开发的Java解释器和Hot
Java环境中,碎片回收用后台线程的方式来执行。
这不但为执行系统提供了良好的性能,并且使程序设计人员摆脱了自己控制内存使用的风险。
存储区
执行数据
而其它的数据依赖于每个线程,在线程创建时创建。在线程退出时销毁。分别有程序计数器,堆。栈,方法区,执行时常量池。
[3]
体系结构
因为厂商的不同必定导致JVM在实现上的一些不同,然而JVM还是能够实现跨平台的特性。这就要归功于设计JVM时的体系结构了。我们知道,一个JVM实例的行为不光是它自己的事,还涉及到它的子系统、存储区域、数据类型和指令这些部分,它们描写叙述了JVM的一个抽象的内部体系结构,其目的不光规定实现JVM时它内部的体系结构,更重要的是提供了一种方式。用于严格定义实现时的外部行为。每一个JVM都有两种机制。一个是装载具有合适名称的类(类或是接口),叫做类装载子系统。另外的一个负责执行包括在已装载的类或接口中的指令。叫做执行引擎。
每一个JVM又包括方法区、堆、Java栈、程序计数器和本地方法栈这五个部分,这几个部分和类装载机制与执行引擎机制一起组成的体系结构图为:JVM的每一个实例都有一个它自己的方法域和一个堆,执行于JVM内的全部的线程都共享这些区域;当虚拟机装载类文件的时候。它解析当中的二进制数据所包括的类信息。并把它们放到方法域中;当程序执行的时候。JVM把程序初始化的全部对象置于堆上;而每一个线程创建的时候。都会拥有自己的程序计数器和Java栈,当中程序计数器中的值指向下一条即将被执行的指令,线程的Java栈则存储为该线程调用Java方法的状态。本地方法调用的状态被存储在本地方法栈。该方法栈依赖于详细的实现。
-
JSP
(javaserver页面)
Microsystems公司倡导、很多公司參与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。
用JSP开发的Web应用是跨平台的,既能在Linux下执行,也能在其它操作系统上执行。
-
servlet
其主要功能在于交互式地浏览和改动数据。生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口。广义的Servlet是指不论什么实现了这个Servlet接口的类。普通情况下,人们将Servlet理解为后者。
从原理上讲,Servlet能够响应不论什么类型的请求,但绝大多数情况下Servlet仅仅用来扩展基于HTTP协议的Webserver。
-
Applet
语言编写的一些小应用程序,这些程序是直接嵌入到页面中,由支持Java的浏览器(IE 或 Netscape)解释运行能够产生特殊效果的程序。
它能够大大提高Web页面的交互能力和动态运行能力。包括Applet的网页被称为Java-powered页,能够称其为Java支持的网页。
AWT利用用户计算机的GUI元素,能够建立标准的图形用户界面。如窗体、button、滚动栏等等。眼下,在网络上有许多的Applet范例来生动地展现这些功能,读者能够去调阅对应的网页以观看它们的效果。
程序离不开使用它的HTML文件。这个HTML文件里关于Applet的信息至少应包括下面三点:
安全性限制
-
servlet
是用Java编写的server端程序。
其主要功能在于交互式地浏览和改动数据。生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指不论什么实现了这个Servlet接口的类,普通情况下。人们将Servlet理解为后者。
从原理上讲。Servlet能够响应不论什么类型的请求,但绝大多数情况下Servlet仅仅用来扩展基于HTTP协议的Webserver。
applet 是一种当作单独文件跟网页一起发送的小程序,它通经常使用于在client执行,结果得到为用户进行运算或者依据用户互作用定位图形等服务。
然而,在server上执行
Java,这样的程序可使用 Java 编程语言实现。
在通信量大的server上。JavaServlet 的长处在于它们的运行速度更快于 CGI 程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程。这意味着server端处理请求的系统开销将明显减少。
此后。一些其他的基于 Java 的 Web Server 開始支持标准的 Servlet API。Servlet 的主要功能在于交互式地浏览和改动数据,生成动态 Web 内容。这个过程为:
一样。可是,因为 Servlet 执行于 Server 中,它们并不须要一个图形用户界面。从这个角度讲,Servlet 也被称为 FacelessObject。
-
asp
(动态server页面)
来源:百度百科
JAVA一些基础概念的更多相关文章
- Java多线程--基础概念
Java多线程--基础概念 必须知道的几个概念 同步和异步 同步方法一旦开始,调用者必须等到方法调用返回后,才能执行后续行为:而异步方法调用,一旦开始,方法调用就立即返回,调用者不用等待就可以继续执行 ...
- Java并发基础概念
Java并发基础概念 线程和进程 线程和进程都能实现并发,在java编程领域,线程是实现并发的主要方式 每个进程都有独立的运行环境,内存空间.进程的通信需要通过,pipline或者socket 线程共 ...
- Java面试基础概念总结
面向对象软件开发的优点有哪些? 答:开发模块化,更易维护和修改:代码之间可以复用:增强代码的可靠性.灵活性和可理解性. 多态的定义? 答:多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力. ...
- Java注解基础概念总结
注解的概念 注解(Annotation),也叫元数据(Metadata),是Java5的新特性,JDK5引入了Metadata很容易的就能够调用Annotations.注解与类.接口.枚举在同一个层次 ...
- Mina入门:Java NIO基础概念
JDK1.4引入了Java NIO API(Java New IO),Java NIO得到了广泛应用.NIO允许程序进行非阻塞IO操作.java.nio.* 包括以下NIO基本结构: Buffer - ...
- RabbitMQ消息队列入门篇(环境配置+Java实例+基础概念)
一.消息队列使用场景或者其好处 消息队列一般是在项目中,将一些无需即时返回且耗时的操作提取出来,进行了异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量. 在项目启 ...
- Java的基础概念
JDK (Java Development Kit) Java Developer Kit contains tools needed to develop the Java programs, an ...
- java SE 基础概念梳理(一)
(一)First 摘要:Java概述.Java开发环境搭建.程序开发流程 Java概述 Java的应用 开发QQ.迅雷程序(桌面应用软件)开发淘宝.京东(互联网应用软件) Java的擅长 互联网: ...
- [18/11/7] Java的基础概念
java语言的优势是跨平台 ,计算机界的英语,是IT行业的第一大语言 特点是多线程 分布式 健壮性 面向对象 java和JavaScript的关系 雷锋和雷峰塔的关系 或卡巴斯基和巴基斯坦的关系有个基 ...
随机推荐
- 利用HTTP代理录制Jmeter脚本
1 測试计划中加入一个线程组1 2在"工作台"-非測试元件-加入"HTTP代理server" port: 代理server的port,默认8080,可自行改动, ...
- asp.net 站点在Apache下的配置,就这么简单
asp.net 站点在Apache下的配置,就这么简单 # # Virtual Hosts # # If you want to maintain multiple domains/hostnames ...
- C#变量的作用域
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- 44.Node.js Express 框架--web框架
转自:http://www.runoob.com/nodejs/nodejs-express-framework.html Express 简介 Express 是一个简洁而灵活的 node.js W ...
- 秀秀SolarWinds为网络工程师准备的工具
SolarWinds Engineer's Toolset部分功能截图 650) this.width=650;" onclick='window.open("http://blo ...
- AIX 5.3下创建逻辑卷、添加文件系统并挂载
首先创建逻辑卷smit lv ,这里没多大问题就不细述了. 输入要创建的逻辑卷名.所属卷组.分配多少个LP.创建在哪块磁盘上等,另外还可以设置镜像,默认是只有一份镜像的,即不做mirror. 到此LV ...
- class的写法
java中class的写法:1.public class xxx{}2.非public类:public class A{}public class B{}必须保证一个其中一个类名是public并与ja ...
- AMD规范(RequireJS)、CMD规范(SeaJS)、CommonJS(BravoJS)规范的辨析
首先,AMD,CMD,CommonJS都实现了文件模块化. 对于依赖的模块:AMD是提前执行:CMD是延迟执行: AMD是依赖前置,CMD是依赖就近: AMD官方解释:https://github.c ...
- Codeforces Round #196 (Div. 2) 少部分题解
A:sort以后求差值最小 ]; int main() { int n,m; cin>>n>>m; ; i < m ; i++) cin>>a[i]; sor ...
- arp---操作主机的arp缓冲区
简介 arp命令用于操作主机的arp缓冲区,可以用来显示arp缓冲区中的所有条目.删除指定的条目或者添加静态的ip地址与MAC地址对应关系. 选项 -a<主机>:显示arp缓冲区的所有条目 ...