Java 技术体系基础概念

Java 技术体系基础概念

===============================================================================

概述:

===============================================================================

编程语言:

百度百科解释

  • 编程语言俗称“计算机语言”,种类非常的多,总的来说可以分成机器语言、汇编语言、高级语言三大类。电脑每做的一次动作,一个步骤,都是按照已经用计算机语言编好的程序来执行的,程序是计算机要执行的指令的集合,而程序全部都是用我们所掌握的语言来编写的。所以人们要控制计算机一定要通过计算机语言向计算机发出命令。 目前通用的编程语言有两种形式:汇编语言高级语言

级别分类

硬件级:微码编程,汇编语言

系统级:C,C++,...(编译型语言)

应用级:Java, PHP, Python, Ruby, Perl, C#, ...

  • Python:PVM(代码运行环境)

    ·Standard Library (标准库):Web Framework(如:Django, Flask, ...)

  • Java:JVM(运行环境),JDK(开发环境)
  • bash:bash explainer(解释器)

...

程序】:指令+数据

  • 过程式编程:以指令为中心,数据服务于代码;
  • 对象式编程:以数据为中心,指令服务于数据;

    ·类,class;类属性、类方法;

    ·对象,方法(method)

Java:

 1.简介

百度百科解释

  • Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程;
  • Java具有简单性、面向对象、分布式健壮性安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序Web应用程序分布式系统嵌入式系统应用程序等

★发展历程

 2.JDK,JRE,JVM的关系与区别

★JDK:

  • JDK(Java Development Kit) 是Java语言的软件开发工具包(SDK)。
  • JDK是整个JAVA的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具(javac/java/jdb等)和Java基础的类库(即Java API )。

有三种版本

  • SE(J2SE),standard edition,标准版
  • EE(J2EE),enterprise edition,企业版
  • ME(J2ME),micro edition,主要用于移动设备、嵌入式设备上的java应用程序

★JRE

  • 运行JAVA程
  • 序所必须的环境的集合,包含JVM标准实现及Java核心类库。
  • JRE为Java Runtime Environment的简称,JRE(包括Java Plug-in)是Sun的产品,包括两部分:Java Runtime Environment和Java Plug-in。
  • JRE 是可以在其上运行、测试和传输应用程序的Java平台;
  • JRE需要辅助软件--Java Plug-in--以便在浏览器中运行applet(小程序)。
  • 没有JDK的话,无法编译Java程序,但在有JRE环境的系统上可以运行程序。所以当你只需要运行Java程序或Applet,下载并安装JRE即可。如果你要自行开发 Java软件,请下载JDK。

★JVM

  • JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
  • Java语言的一个非常重要的特点就是与平台的无关性。而使用Java虚拟机是实现这一特点的关键。一般的高级语言如果要在不同的平台上运行,至少需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同平台上运行时不需要重新编译。Java语言使用Java虚拟机屏蔽了与具体平台相关的信息,使得Java语言编译程序只需生成在Java虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。Java虚拟机在执行字节码时,把字节码解释成具体平台上的机器指令执行。这就是Java的能够“一次编译,到处运行”的原因。

附图:

附图:

3.Java代码的运行及技术体系

★Java代码的运行

  • *.java(source code) 源代码--> javac --> *.class(bytecode) 类文件(字节码)
  • jvm:class loader(类加载器),加载程序的类文件及依赖到的其它的类文件至执行引擎运行; 整个运行表现为一个jvm进程;
  • jvm  thread;
  • 过程:利用JDK(调用JAVA API)开发JAVA程序后,通过JDK中的编译程序(javac)将文本java文件编译成JAVA字节码,在JRE上运行这些JAVA字节码,JVM解析这些字节码,映射到CPU指令集或OS的系统调用。

Java技术体系:

  • Java编程语言
  • Java Class文件格式
  • Java API:Java编程语言中拥有的类库
  • Java VM:

JVM的核心组件:

  • class loader
  • 执行引擎

JVM运行时区域:

  • 方法区:线程; 用于存储被JVM加载的class信息、常量、静态变量、方法等;
  • 堆:是jvm所管理的内存中占用空间最大的一部分;也是GC管理的主要区域;存储对象;
  • Java栈:线程私有,存储 线程自己的局部变量;
  • PC寄存器(程序计数器):线程私有的内存空间,程序的指令指针;
  • 本地方法栈:

附图:

 4.总结:

★Java 2 SE: JDK

★Java 2 EE:JDK + Servlet, JSP, EJB, JMS, JMX, JavaMail, ...(企业积类库)

  • 商业实现:

    BEA(oracle):WebLogic

    IBM:WebSphere

    Oracle: oc4j

        ...

Java安装

★了解当前的java环境:

  • ~]# java  -version

OpenJDK 

java-VERSION-openjdk:

  • The OpenJDK runtime environment.

java-VERSION-openjdk-headless:

  • The OpenJDK runtime environment without audio and video support.

java-VERSION-openjdk-devel:

  • The OpenJDK development tools.

注意:

  • 多版本并存时,可使用 alternatives命令设定默认使用的版本;

Oracle JDK:

安装相应版本的rpm包;

  • jdk-VERSION-OS-ARCH.rpm   例如:jdk-1.8.0_25-linux-x64.rpm

注意:

安装完成后,要配置JAVA_HOME环境变量,指向java的安装路径;

  • OpenJDK:

    JAVA_HOME=/usr

  • Oracle JDK:

    JAVA_HOME=/usr/java/jdk_VERSION

    export PATH=$JAVA_HOME/bin:$PATH

演示1:Oracle JDK:

 1.下载Orecal官方JDK程序包并安装

[[email protected] JDK]# ls
jdk-7u79-linux-x64.rpm  jdk-8u25-linux-x64.rpm   # 下载的程序包

# 安装1.8版本第25次升级的程序包
[[email protected] JDK]# rpm -ivh jdk-8u25-linux-x64.rpm    
Preparing...                          ################################# [100%]
Updating / installing...
   1:jdk1.8.0_25-2000:1.8.0_25-fcs    ################################# [100%]
Unpacking JAR files...
	rt.jar...
	jsse.jar...
	charsets.jar...
	tools.jar...
	localedata.jar...
	jfxrt.jar...

 2.安装后生成的目录在/usr/java中;

[[email protected] JDK]# cd
[[email protected] ~]# cd /usr/
[[email protected] usr]# ls
bin  etc  games  i686-w64-mingw32  include  java  lib  lib64  libexec  local  sbin  share  src  tmp  x86_64-w64-mingw32
[[email protected] usr]# cd java/
[[email protected] java]# ll
total 4
lrwxrwxrwx 1 root root   16 Dec 11 21:04 default -> /usr/java/latest
drwxr-xr-x 9 root root 4096 Dec 11 21:04 jdk1.8.0_25
lrwxrwxrwx 1 root root   21 Dec 11 21:04 latest -> /usr/java/jdk1.8.0_25  # 执向的是最新版
[[email protected] java]# cd latest/
[[email protected] latest]# ll
total 25784
drwxr-xr-x 2 root root     4096 Dec 11 21:03 bin       # 二进制程序
-rw-r--r-- 1 root root     3244 Sep 18  2014 COPYRIGHT
drwxr-xr-x 4 root root      115 Dec 11 21:03 db
drwxr-xr-x 3 root root      125 Dec 11 21:03 include   # 头文件
-rw-r--r-- 1 root root  5025522 Sep 17  2014 javafx-src.zip
drwxr-xr-x 5 root root     4096 Dec 11 21:03 jre       # 运行环境
drwxr-xr-x 5 root root     4096 Dec 11 21:04 lib
-rw-r--r-- 1 root root       40 Sep 18  2014 LICENSE
drwxr-xr-x 4 root root       44 Dec 11 21:04 man       
-rw-r--r-- 1 root root      159 Sep 18  2014 README.html
-rw-r--r-- 1 root root      525 Sep 18  2014 release
-rw-r--r-- 1 root root 21057306 Sep 18  2014 src.zip
-rw-r--r-- 1 root root   110114 Sep 17  2014 THIRDPARTYLICENSEREADME-JAVAFX.txt
-rw-r--r-- 1 root root   178400 Sep 18  2014 THIRDPARTYLICENSEREADME.txt
[[email protected] latest]# ll jre
total 308
drwxr-xr-x  2 root root   4096 Dec 11 21:03 bin
-rw-r--r--  1 root root   3244 Sep 18  2014 COPYRIGHT
drwxr-xr-x 15 root root   4096 Dec 11 21:04 lib
-rw-r--r--  1 root root     40 Sep 18  2014 LICENSE
drwxr-xr-x  3 root root     20 Dec 11 21:03 plugin # 插件
-rw-r--r--  1 root root     46 Sep 18  2014 README
-rw-r--r--  1 root root 110114 Sep 17  2014 THIRDPARTYLICENSEREADME-JAVAFX.txt
-rw-r--r--  1 root root 178400 Sep 18  2014 THIRDPARTYLICENSEREADME.txt
-rw-r--r--  1 root root    955 Sep 18  2014 Welcome.html

[[email protected] latest]# ls bin
appletviewer  jar        javadoc         javapackager  jconsole  jhat   jmc         jsadebugd  jvisualvm     pack200     rmiregistry  tnameserv  xjc
ControlPanel  jarsigner  javafxpackager  java-rmi.cgi  jcontrol  jinfo  jmc.ini     jstack     keytool       policytool  schemagen    unpack200
extcheck      java  # 主要的程序文件     javah           javaws        jdb       jjs    jps         jstat      native2ascii  rmic        serialver    wsgen
idlj          javac # 编译器     javap           jcmd          jdeps     jmap   jrunscript  jstatd     orbd          rmid        servertool   wsimport

 3.安装完成后,要配置JAVA_HOME环境变量,指向java的安装路径;

# 没有配置环境变量前运行版本号
[[email protected] latest]# bin/java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

[[email protected] latest]# vim /etc/profile.d/java.sh # 配置环境变量
 export JAVA_HOME=/usr/java/latest
 export PATH=$JAVA_HOME/bin:$PATH
[[email protected] ~]# . /etc/profile.d/java.sh  # 重读脚本文件
[[email protected] ~]# java -version             # 直接运行java命令即可
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)


演示2:OpenJDK 

 1.安装及查看程序看路径

[[email protected] ~]# yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64 java-1.8.0-openjdk-headless.x86_64   -y

[[email protected] ~]# rpm -ql java-1.8.0-openjdk
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre/bin/policytool
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre/lib/amd64/libawt_xawt.so
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre/lib/amd64/libjawt.so
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre/lib/amd64/libjsoundalsa.so
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre/lib/amd64/libsplashscreen.so
/usr/share/applications/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64-policytool.desktop
/usr/share/icons/hicolor/16x16/apps/java-1.8.0.png
/usr/share/icons/hicolor/24x24/apps/java-1.8.0.png
/usr/share/icons/hicolor/32x32/apps/java-1.8.0.png
/usr/share/icons/hicolor/48x48/apps/java-1.8.0.png

# 可使用 alternatives命令设定默认使用的版本
[[email protected] ~]# ll /etc/alternatives/java
lrwxrwxrwx 1 root root 70 Dec 11 21:44 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre/bin/java

# 列出程序指向的路径
[[email protected] ~]# alternatives --list
libnssckbi.so.x86_64	auto	/usr/lib64/pkcs11/p11-kit-trust.so
ld	auto	/usr/bin/ld.bfd
print	auto	/usr/bin/lpr.cups
xinputrc	auto	/etc/X11/xinit/xinput.d/ibus.conf
mysqlbug	auto	/usr/lib64/mysql/mysqlbug
cifs-idmap-plugin	auto	/usr/lib64/cifs-utils/cifs_idmap_sss.so
akonadiserverrc	auto	/etc/xdg/akonadi/akonadiserverrc.mysql
mta	auto	/usr/sbin/sendmail.postfix
libwbclient.so.0.12-64	auto	/usr/lib64/samba/wbclient/libwbclient.so.0.12
zabbix-proxy	auto	/usr/sbin/zabbix_proxy_mysql
java	auto	/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre/bin/java
jre_openjdk	auto	/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre
jre_1.8.0	auto	/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/jre
jre_1.8.0_openjdk	auto	/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
javac	auto	/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64/bin/javac
java_sdk_openjdk	auto	/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
java_sdk_1.8.0	auto	/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64
java_sdk_1.8.0_openjdk	auto	/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.65-3.b17.el7.x86_64

[[email protected] ~]# ls -l /bin/java
lrwxrwxrwx 1 root root 22 Dec 11 21:44 /bin/java -> /etc/alternatives/java # 始终指向的是真实路径

[[email protected] ~]# java -version  # 可以直接使用java命令
openjdk version "1.8.0_65"
OpenJDK Runtime Environment (build 1.8.0_65-b17)
OpenJDK 64-Bit Server VM (build 25.65-b01, mixed mode)

2.声明JAVA_HOME,不需要声明环境变量,因为已经在bin环境下了

[[email protected] ~]# vim /etc/profile.d/java.sh
 export JAVA_HOME=/usr
[[email protected] ~]# . /etc/profile.d/java.sh

Java 2 EE:

★CGI: 

Servlet

  • Servlet(Server Applet),全称Java Servlet,是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。
  • Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
  • 服务器上需要一些程序,常常是根据用户输入访问数据库的程序。这些通常是使用公共网关接口(Common Gateway Interface,CGI)应用程序完成的。然而,在服务器上运行 Java,这种程序可使用 Java 编程语言实现。在通信量大的服务器上,JavaServlet 的优点在于它们的执行速度更快于 CGI 程序。各个用户请求被激活成单个程序中的一个线程,而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低。

JSP: Java Server Page

  • JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态页面技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
  • 它实现了Html语法中的java扩展(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
  • Java Servlet是JSP的技术基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

JSP执行过程

Web Container:

  • Servlet container(Servlet+JDK)
  • JSP

☉初现:

  • Java Web Server:JWS
  • ASF:JServ

    Tomcat 3.x

    Tomcat 4.x:Catalina(代码名称)

商业实现:

  • WebSphere, WebLogic, Oc4j, Glassfish, Geronimo, JOnAS, JBoss, ...

开源实现:

  • Tomcat, Jetty, Resin, ...

※Tomcat:

  • Java 2 EE技术体系的不完整实现;(只是构建实现了servlet和jsp类库)

Tomcat:

 1.简介

时间: 2024-10-03 23:00:44

Java 技术体系基础概念的相关文章

java技术体系基础

编程语言分类: 1.系统级:C, C++, go, erlang 2.应用级:C#, Java, Python, Perl, Ruby, php 编程语言的类别: 指令+数据 1.面向过程:以指令为中心,围绕指令组织数据: 2.面向对象:以数据为中心,围绕数据组织指令: 虚拟机类型: 1.java虚拟机:jvm 2.Python虚拟机: pvm 开发动态网站的应用框架: 1.asp .net, jsp 思考与引申: 1.如果需要在不同的平台上都能使用开发好的java程序,需要在不同的平台上都安装

37 java技术体系基础、tomcat核心概念及使用初步、tomcat配置与应用

02 tomcat核心概念及使用初步 配置环境 node1: CentOS 6.7 192.168.1.121 CentOS 6 部署Tomcat [[email protected] ~]# rpm -ivh jdk-7u67-linux-x64.rpm  [[email protected] jdk1.7.0_67]# vim /etc/profile.d/java.sh export JAVA_HOME=/usr/java/latest export PATH=$JAVA_HOME/bin

Java技术体系大全,准备面试的可以参考一下!

1. JAVA技术体系1.1 Java程序员 ·高级特性 反射.泛型.注释符.自动装箱和拆箱.枚举类.可变参数.可变返回类型.增强循环.静态导入 ·核心编程 IO.多线程.实体类.集合类.正则表达式.XML和属性文件 ·图形编程 AWT(Java2D/JavaSound/JMF).Swing.SWT.JFace ·网路编程 Applet.Socket/TCP/UDP.NIO.RMI.CORBA ·Java语法基础 类.抽象类.接口.最终类.静态类.匿名类.内部类.异常类.编码规范 ·Java开发

《深入理解Java虚拟机》第一部分(Java技术体系,Java虚拟机,Java技术趋势)

第一部分 走进Java 1.Java技术体系 Sun官方定义的Java技术体系包括一下几个组成部分: Java程序设语言 各种硬件平台上的Java虚拟机 Class文件格式 Java API类库 第三方Java类库 JDK是用于支持Java程序开发的最小环境,Java程序设计语言.Java虚拟机.JavaAPI类库统称为JDKJRE是支持Java程序运行的标准环境,JavaAPI类库中的JavaSEAPI子集和Java虚拟机统称为JRE 按照Java技术关注的重点业务领域来分,Java技术体系可

JVM(一)-java技术体系

一.java技术体系 1.sun官方所定义的java技术体系包括了如下的几个组成部分:   java程序设计语言 java虚拟机 java API类库   class文件 第三方java类库 2.java技术体系包含的内容如下图所示: (1)JDK:Java Development Kit,包含java程序设计语言.java虚拟机.java API类库,支持java程序开发的最小环境 (2)JRE:Java Runtime Environment(java运行环境),包含java API类库中j

Java加密解密(一)Java加密体系基础

Java加密解密(一)Java加密体系基础 1. JCA(Java Cryptography Architecture) 提供基本的加密框架,如证书,数字签名,消息摘要和密钥对生成器.其主要实现在java.security包中. 2. JCE(Java Cryptography Extension) 在JCA的基础了作了扩展,提供了各种加密算法.消息摘要算法和密钥管理等功能.JDK提供的JCE实现主要在javax.crypto包中.第三方提供的JCE也称为安全提供者.由于出口限制,可能需要一个或

Java 技术体系图

Java 程序员 高级特性 反射.泛型.注释符.自动装箱和拆箱.枚举类.可变 参数.可变返回类型.增强循环.静态导入 核心编程 IO.多线程.实体类. 集合类.正则表达式. XML 和属性文件 图形编程 AWT(Java2D/JavaSound/JMF) .Swing.SWT.JFace 网路编程 Applet.Socket/TCP/UDP.NIO.RMI.CORBA Java 语法基础 类.抽象类.接口.最终类.静态类.匿名类.内部类.异常类.编码规范 Java 开发环境 JDK.JVM.Ec

Java技术体系图

Java程序员高级特性              反射.泛型.注释符.自动装箱和拆箱.枚举类.可变              参数.可变返回类型.增强循环.静态导入        核心编程             IO.多线程.实体类.             集合类.正则表达式.             XML和属性文件             图形编程             AWT(Java2D/JavaSound/JMF).Swing.SWT.JFace        网路编程     

Java技术体系

Java程序员高级特性              反射.泛型.注释符.自动装箱和拆箱.枚举类.可变              参数.可变返回类型.增强循环.静态导入        核心编程             IO.多线程.实体类.             集合类.正则表达式.             XML和属性文件             图形编程             AWT(Java2D/JavaSound/JMF).Swing.SWT.JFace        网路编程