Java基础概念解析

引言

什么是Java?这个问题即便是问入行已经多年的老Java开发,也不是所有人都能说出所以然。所以整理出了以下的基础概念,为初入Java海洋的人一点指引。本文部分内容引自网络。

JVM、JRE、JDK

Java通过JVM(虚拟机)来达到跨平台。开发者使用JDK开发程序,通过编译器编译后,JVM调用JRE类库组件针对不同的系统环境对编译码进行解释,并执行程序。

 Java源代码---->编译器---->jvm可执行的Java字节码(即虚拟指令)---->jvm---->jvm中解释器----->机器可执行的二进制机器码---->程序运行。

JDK是开发者使用的,里面包含了各种API。JRE是供JVM虚拟机调用的类库。

JRE及JVM是用户使用的,他们不包含编译程序。

在我们安装JDK的时候,目录中已经包含了JRE及JVM。

注意:跨平台的是 Java 程序,不是 JVM。JVM 是用 C/C++ 开发的,是编译后的机器码,不能跨平台,不同平台下需要安装不同版本的 JVM。

由图中可以看出以下几点:

  • JDK=JRE+多种Java开发工具
  • JRE=JVM+各种类库
  • 这三者的关系是一层层的嵌套关系。JDK>JRE>JVM

JVM:

 

JRE(JRE包含JVM):

 

JDK(JDK包含了JVM和JRE):

 

bin:最主要的是编译器(javac.exe) 

include:java和JVM交互用的头文件 

lib:类库 

jre:java运行环境

Tomcat

Tomcat是web 服务器。我们做好的web应用程序需要Tomcat才能展现。而Tomcat又需要运行在系统上,就需要JVM(虚拟机系统)。

  1. 假设tomcat监听8080端口,当一个http请求从主机的8080端口发送过来时,tomcat最先获知。
  2. tomcat将此请求作为任务加入一个队列中,jvm中有若干工作者线程会从这个队列中获取任务。
  3. 假设工作线程A取到了这个任务,那么线程A通过分析请求的url,检查已加载的web.xml配置,来判断此请求应该交给应用的哪个servlet处理(假设应用是用servlet实现的)
  4. 工作线程A调用对应的servlet的方法(service/get/post等),把请求封装成request对象传给servlet
  5. 此时应用开始干活(实际上干活的还是工作线程,只不过执行的是应用中编写的业务逻辑),解析请求参数,处理业务流程,生成response
  6. 工作线程A把response回送给请求的发送端。
  7. 通常情况下,tomcat启动时候使用的jdk的路径默认为环境变量里配置的JAVA_HOME;
  8. 修改默认jdk:我们都知道启动tomcat可以通过运行bin下的startup.bat,startup.bat会调用catalina.bat文件,而catalina.bat会调用setclasspath.bat文件来获取JAVA_HOME和JRE_HOME这两个环境变量的值,因此若要在tomcat启动时指向特定的JDK,则需在setclasspath.bat文件的开头处加上JAVA_HOME和JRE_HOME。
  9. eclipse自带编译工具,只需用jre即可(java项目只能运行在jvm上/运行类库) jdk开发工具包

JavaEE、JavaSE、JavaME

使用较多的是JavaEE,主要做web。JavaSE中也有web相关模块,但是比JavaEE弱。

  • javase: 即J2SE, java标准版, 主要做一般的java应用, 比如, 应用软件/ QQ之类的通信软件等等.
  • javaee: 即J2EE, 主要做企业应用, 比如公司网站, 企业解决方案等;
  • javame: 即J2ME, 主要面向嵌入式等设备应用的开发, 比如手机游戏等

 

IDE-IntelliJ IDEA

主流使用IntelliJ IDEA,分企业版(收费)及社区版(免费)。企业版包含Java EE(Java的企业版)全部内容。

 

项目管理-Maven

之前主流用Ant,但是目前已经被Maven及Gradle取代。其中,Gradle是最新的项目管理软件,但是国内主要还是以Maven为主。Maven可以用来管理、配置、测试和部署项目,拥有生命周期及仓储概念。它将项目本身所有依赖项通过网络下载到仓储。可以通过修改POM配置文件来随时修改本项目的依赖项,而Maven会实时更新仓储。

 

版本管理-Git

目前使用的版本管理软件主要有svn及Git。相比前者,由于Git有本地缓存区的概念,可以轻易建立分支(包括离线建立分支),同时可以离线查看历史记录等。 Git的使用者以及越来越多,Git+Maven已经是比较主流的Java开发选择。

 

 

 

 

参考引用:

http://c.biancheng.net/view/5607.html

http://www.cnblogs.com/wangzhongqiu/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、 面向对象的基本特征。 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是过程抽象,二是数据抽象。 2.继承: 继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法。对象的一个新类可以从现有的类中派生,这个过程称为类继承。新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类)。派生类可以从它的基类那里继承方法和实例变量,并且类可以修改或增加新的方法使之更适合特殊的需要。 3.封装: 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。面向对象计算始于这个基本概念,即现实世界可以被描绘成一系列完全自治、封装的对象,这些对象通过一个受保护的接口访问其他对象。 4. 多态性: 多态性是指允许不同类的对象对同一消息作出响应。多态性包括参数化多态性和包含多态性。多态性语言具有灵活、抽象、行为共享、代码共享的优势, 2、 Java的基本数据类型都有什么?String是基本数据类型吗? 基本数据类型包括int、short、byte、double、boolean、char、long、float String不是基本数据类型,是引用数据类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值